Commit a39f9aedeba7533aaa180742ca5a3d83317a2109
1 parent
e6beff82
feat<central_clearing_system>:完成下单流程、打印和菜单配置,未联调
Showing
26 changed files
with
826 additions
and
209 deletions
central_clearing_system/Config/menu_res_auth_cfg.json
@@ -3,10 +3,22 @@ | @@ -3,10 +3,22 @@ | ||
3 | {"res_id":10001, "auth_id":100001, "icon":"trade.ico", "index":[0, 0]}, | 3 | {"res_id":10001, "auth_id":100001, "icon":"trade.ico", "index":[0, 0]}, |
4 | {"res_id":10002, "auth_id":100002, "icon":"place_an_order.ico", "index":[0, 1]}, | 4 | {"res_id":10002, "auth_id":100002, "icon":"place_an_order.ico", "index":[0, 1]}, |
5 | {"res_id":10003, "auth_id":100003, "icon":"statement_manage.ico", "index":[0, 2]}, | 5 | {"res_id":10003, "auth_id":100003, "icon":"statement_manage.ico", "index":[0, 2]}, |
6 | - {"res_id":10004, "auth_id":100004, "icon":"order_manage.ico", "index":[0, 3]}, | ||
7 | {"res_id":2, "auth_id":1010, "icon":"", "index":[1]}, | 6 | {"res_id":2, "auth_id":1010, "icon":"", "index":[1]}, |
8 | {"res_id":20001, "auth_id":101001, "icon":"user_manage.ico", "index":[1, 0]}, | 7 | {"res_id":20001, "auth_id":101001, "icon":"user_manage.ico", "index":[1, 0]}, |
9 | {"res_id":20002, "auth_id":101002, "icon":"role_manage.ico", "index":[1, 1]}, | 8 | {"res_id":20002, "auth_id":101002, "icon":"role_manage.ico", "index":[1, 1]}, |
9 | + {"res_id":20003, "auth_id":101002, "icon":"role_manage.ico", "index":[1, 1]}, | ||
10 | + {"res_id":30001, "auth_id":103001, "icon":"role_manage.ico", "index":[2]}, | ||
11 | + {"res_id":4, "auth_id":1020, "icon":"", "index":[3]}, | ||
12 | + {"res_id":40001, "auth_id":102001, "icon":"user_manage.ico", "index":[3, 0]}, | ||
13 | + {"res_id":40002, "auth_id":102002, "icon":"user_manage.ico", "index":[3, 1]}, | ||
14 | + {"res_id":40003, "auth_id":102003, "icon":"user_manage.ico", "index":[3, 2]}, | ||
15 | + {"res_id":40004, "auth_id":102004, "icon":"user_manage.ico", "index":[3, 3]}, | ||
16 | + {"res_id":40005, "auth_id":102005, "icon":"user_manage.ico", "index":[3, 4]}, | ||
17 | + {"res_id":5, "auth_id":1040, "icon":"", "index":[4]}, | ||
18 | + {"res_id":50001, "auth_id":104001, "icon":"user_manage.ico", "index":[4, 0]}, | ||
19 | + {"res_id":50002, "auth_id":104002, "icon":"user_manage.ico", "index":[4, 1]}, | ||
20 | + {"res_id":50003, "auth_id":104003, "icon":"user_manage.ico", "index":[4, 2]}, | ||
21 | + {"res_id":50004, "auth_id":104004, "icon":"user_manage.ico", "index":[4, 3]}, | ||
10 | {"res_id":11001, "auth_id":0, "icon":"exit.ico", "index":[]}, | 22 | {"res_id":11001, "auth_id":0, "icon":"exit.ico", "index":[]}, |
11 | {"res_id":11002, "auth_id":0, "icon":"modify_account_pwd.ico", "index":[]} | 23 | {"res_id":11002, "auth_id":0, "icon":"modify_account_pwd.ico", "index":[]} |
12 | ] | 24 | ] |
13 | \ No newline at end of file | 25 | \ No newline at end of file |
central_clearing_system/Config/menu_res_auth_cfg.json-- deleted
100644 → 0
1 | -[ | ||
2 | - {"res_id":1, "auth_id":1000, "icon":"", "index":[0]}, | ||
3 | - {"res_id":10001, "auth_id":100001, "icon":"about.ico", "index":[0, 0]}, | ||
4 | - {"res_id":10002, "auth_id":100002, "icon":"about.ico", "index":[0, 1]}, | ||
5 | - {"res_id":10003, "auth_id":100003, "icon":"about.ico", "index":[0, 2]}, | ||
6 | - {"res_id":10004, "auth_id":100004, "icon":"about.ico", "index":[0, 3]}, | ||
7 | - {"res_id":2, "auth_id":1010, "icon":"", "index":[1]}, | ||
8 | - {"res_id":20001, "auth_id":101001, "icon":"about.ico", "index":[1, 0]}, | ||
9 | - {"res_id":20002, "auth_id":101002, "icon":"about.ico", "index":[1, 1]}, | ||
10 | - {"res_id":20003, "auth_id":101003, "icon":"about.ico", "index":[1, 2]} | ||
11 | -] | ||
12 | \ No newline at end of file | 0 | \ No newline at end of file |
central_clearing_system/Config/menu_res_auth_cfg.json--- deleted
100644 → 0
1 | -[ | ||
2 | - {"res_id":1, "auth_id":1000, "icon":"", "index":[0]}, | ||
3 | - {"res_id":10001, "auth_id":100001, "icon":"trade.ico", "index":[0, 0]}, | ||
4 | - {"res_id":10002, "auth_id":100002, "icon":"place_an_order.ico", "index":[0, 1]}, | ||
5 | - {"res_id":10003, "auth_id":100003, "icon":"statement_manage.ico", "index":[0, 2]}, | ||
6 | - {"res_id":10004, "auth_id":100004, "icon":"order_manage.ico", "index":[0, 3]}, | ||
7 | - {"res_id":2, "auth_id":1010, "icon":"", "index":[1]}, | ||
8 | - {"res_id":20001, "auth_id":101001, "icon":"user_manage.ico", "index":[1, 0]}, | ||
9 | - {"res_id":20002, "auth_id":101002, "icon":"role_manage.ico", "index":[1, 1]} | ||
10 | -] | ||
11 | \ No newline at end of file | 0 | \ No newline at end of file |
central_clearing_system/Config/url_cfg.json
1 | { | 1 | { |
2 | "protocol": "http", | 2 | "protocol": "http", |
3 | - "host": "shop.esc.diligrp.com", | 3 | + "host": "xtrade.esc.diligrp.com", |
4 | "port": 80, | 4 | "port": 80, |
5 | "main_path": "/iset/oauth/clientInitMain.iset", | 5 | "main_path": "/iset/oauth/clientInitMain.iset", |
6 | "login_path": "/iset/oauth/login.auth", | 6 | "login_path": "/iset/oauth/login.auth", |
@@ -8,5 +8,10 @@ | @@ -8,5 +8,10 @@ | ||
8 | "menu_auth_path":"/iset/oauth/loadUserPermission.iset", | 8 | "menu_auth_path":"/iset/oauth/loadUserPermission.iset", |
9 | "user_msg_count_path":"", | 9 | "user_msg_count_path":"", |
10 | "user_msg_path":"", | 10 | "user_msg_path":"", |
11 | - "modify_pwd_path":"/iset/oauth/initChangePwd.iset" | 11 | + "modify_pwd_path":"/iset/oauth/initChangePwd.iset", |
12 | + "get_card_name_path":"/iset/product/buyerQuery.iset", | ||
13 | + "get_seller_card_path":"/iset/product/sellerQuery.iset", | ||
14 | + "get_product_name_path":"/iset/product/productQuery.iset", | ||
15 | + "submit_orders_path":"/iset/product/submitStatement.iset", | ||
16 | + "finish_order_path":"/iset/product/finishStatement.iset" | ||
12 | } | 17 | } |
13 | \ No newline at end of file | 18 | \ No newline at end of file |
central_clearing_system/Config/url_cfg.json--- deleted
100644 → 0
1 | -{ | ||
2 | - "protocol": "http", | ||
3 | - "host": "card.esc.diligrp.com", | ||
4 | - "port": 0, | ||
5 | - "main_path": "/user/clientInitMain.page", | ||
6 | - "login_path": "/counter/authorizeCounter.auth", | ||
7 | - "logout_path": "/user/doLogout.auth", | ||
8 | - "menu_auth_path":"/counter/loadPermission.do", | ||
9 | - "user_msg_count_path":"/message/countUserMessage.do", | ||
10 | - "user_msg_path":"/message/userMessageInit.page", | ||
11 | - "modify_pwd_path":"/employee/client/initModifyPassword.page" | ||
12 | -} | ||
13 | \ No newline at end of file | 0 | \ No newline at end of file |
central_clearing_system/ETradeClient.rc
@@ -77,17 +77,33 @@ IDR_MAINFRAME ICON "res\\ETradeClient.ico" | @@ -77,17 +77,33 @@ IDR_MAINFRAME ICON "res\\ETradeClient.ico" | ||
77 | 77 | ||
78 | IDR_MAINFRAME MENU | 78 | IDR_MAINFRAME MENU |
79 | BEGIN | 79 | BEGIN |
80 | - POPUP "中央结算(&Z)" | 80 | + POPUP "中央结算" |
81 | BEGIN | 81 | BEGIN |
82 | - MENUITEM "缴费(&J)", ID_PAY_FEE | ||
83 | - MENUITEM "下单(&X)", ID_ORDER | ||
84 | - MENUITEM "结算单管理(&S)", ID_STATEMENT_MANAGE | ||
85 | - MENUITEM "订单管理(&D)", ID_ORDERFORM_MANAGE | 82 | + MENUITEM "下单", ID_ORDER |
83 | + MENUITEM "结算单管理", ID_STATEMENT_MANAGE | ||
84 | + MENUITEM "订单管理", ID_ORDERFORM_MANAGE | ||
86 | END | 85 | END |
87 | - POPUP "系统设置(&A)" | 86 | + POPUP "登记分发" |
88 | BEGIN | 87 | BEGIN |
89 | - MENUITEM "用户管理(&B)", ID_USER_MANAGE | ||
90 | - MENUITEM "角色管理(&C)", ID_ROLE_MANAGE | 88 | + MENUITEM "商品登记", ID_COMM_REGIST |
89 | + MENUITEM "商品分发", ID_COMM_DISTRIB | ||
90 | + MENUITEM "查询管理", ID_QUERY_MANAGE | ||
91 | + END | ||
92 | + MENUITEM "特殊处理", ID_SPECIAL_HANDLE | ||
93 | + POPUP "基础资料" | ||
94 | + BEGIN | ||
95 | + MENUITEM "扣点规则", ID_POINT_RULE | ||
96 | + MENUITEM "品类管理", ID_CATEGORY_RULE | ||
97 | + MENUITEM "免密协议", ID_AGREEMENT | ||
98 | + MENUITEM "代卖货管理", ID_TAPE_HANDLE | ||
99 | + MENUITEM "赊销授信管理", ID_CREDIT | ||
100 | + END | ||
101 | + POPUP "系统设置" | ||
102 | + BEGIN | ||
103 | + MENUITEM "用户管理", ID_USER_MANAGE | ||
104 | + MENUITEM "角色管理", ID_ROLE_MANAGE | ||
105 | + MENUITEM "参数设置", ID_PARAM_SET | ||
106 | + MENUITEM "操作日志", ID_LOG | ||
91 | END | 107 | END |
92 | END | 108 | END |
93 | 109 | ||
@@ -130,10 +146,11 @@ END | @@ -130,10 +146,11 @@ END | ||
130 | 146 | ||
131 | IDR_ACCELERATOR_ORDER ACCELERATORS | 147 | IDR_ACCELERATOR_ORDER ACCELERATORS |
132 | BEGIN | 148 | BEGIN |
149 | + VK_DOWN, ID_ACCELERATOR_DOWN, VIRTKEY, NOINVERT | ||
133 | VK_RETURN, ID_ACCELERATOR_ENTER, VIRTKEY, NOINVERT | 150 | VK_RETURN, ID_ACCELERATOR_ENTER, VIRTKEY, NOINVERT |
134 | VK_TAB, ID_ACCELERATOR_TAB, VIRTKEY, NOINVERT | 151 | VK_TAB, ID_ACCELERATOR_TAB, VIRTKEY, NOINVERT |
135 | VK_UP, ID_ACCELERATOR_UP, VIRTKEY, NOINVERT | 152 | VK_UP, ID_ACCELERATOR_UP, VIRTKEY, NOINVERT |
136 | - VK_DOWN, ID_ACCELERATOR_DOWN, VIRTKEY, NOINVERT | 153 | + VK_F11, ID_ACCELERATOR_F11, VIRTKEY, NOINVERT |
137 | END | 154 | END |
138 | 155 | ||
139 | 156 | ||
@@ -243,9 +260,10 @@ BEGIN | @@ -243,9 +260,10 @@ BEGIN | ||
243 | LTEXT "密 码:",IDC_PAY_STATIC_PASSWORD,18,50,31,8 | 260 | LTEXT "密 码:",IDC_PAY_STATIC_PASSWORD,18,50,31,8 |
244 | EDITTEXT IDC_PAY_EDIT_PASSWORD,56,46,40,14,ES_MULTILINE | ES_AUTOHSCROLL | 261 | EDITTEXT IDC_PAY_EDIT_PASSWORD,56,46,40,14,ES_MULTILINE | ES_AUTOHSCROLL |
245 | PUSHBUTTON "输入密码(&A)",IDC_PAY_BUTTON_PASSWORD,151,51,71,18 | 262 | PUSHBUTTON "输入密码(&A)",IDC_PAY_BUTTON_PASSWORD,151,51,71,18 |
246 | - PUSHBUTTON "关闭(&S)",IDC_PAY_BUTTON_CLOSE,155,95,67,17 | ||
247 | - PUSHBUTTON "付款(&F)",IDC_PAY_BUTTON_PAY,72,95,67,17 | 263 | + PUSHBUTTON "关闭(&S)",IDC_PAY_BUTTON_CLOSE,155,94,67,17 |
264 | + PUSHBUTTON "付款(&F)",IDC_PAY_BUTTON_PAY,72,94,67,17 | ||
248 | LTEXT "",IDC_PAY_STATIC_REAL_MONEY,65,20,57,8 | 265 | LTEXT "",IDC_PAY_STATIC_REAL_MONEY,65,20,57,8 |
266 | + LTEXT "",IDC_STATIC_ERROR_MSG,68,71,8,8 | ||
249 | END | 267 | END |
250 | 268 | ||
251 | 269 | ||
@@ -330,7 +348,7 @@ BEGIN | @@ -330,7 +348,7 @@ BEGIN | ||
330 | LEFTMARGIN, 7 | 348 | LEFTMARGIN, 7 |
331 | RIGHTMARGIN, 222 | 349 | RIGHTMARGIN, 222 |
332 | TOPMARGIN, 7 | 350 | TOPMARGIN, 7 |
333 | - BOTTOMMARGIN, 112 | 351 | + BOTTOMMARGIN, 111 |
334 | END | 352 | END |
335 | END | 353 | END |
336 | #endif // APSTUDIO_INVOKED | 354 | #endif // APSTUDIO_INVOKED |
central_clearing_system/ETradeClient/browser/async_js_callback_handler.cpp
@@ -50,6 +50,7 @@ namespace HW | @@ -50,6 +50,7 @@ namespace HW | ||
50 | static const std::string JSON_VAL_FILEID_PIN_PAD = "11"; | 50 | static const std::string JSON_VAL_FILEID_PIN_PAD = "11"; |
51 | static const std::string JSON_VAL_FILEID_BANK_CARD_NUM = "20"; | 51 | static const std::string JSON_VAL_FILEID_BANK_CARD_NUM = "20"; |
52 | static const std::string JSON_VAL_FILEID_DILI_CARD_AND_BANK = "30"; | 52 | static const std::string JSON_VAL_FILEID_DILI_CARD_AND_BANK = "30"; |
53 | + static const std::string JSON_VAL_FILEID_ORDER = "40"; | ||
53 | 54 | ||
54 | struct HWRequest | 55 | struct HWRequest |
55 | { | 56 | { |
@@ -104,8 +105,7 @@ namespace HW | @@ -104,8 +105,7 @@ namespace HW | ||
104 | m_hw_cmd_map.insert(JSON_VAL_CMD_WRITE + JSON_VAL_FILEID_DILI_CARD_SERVICE_INFO, new WriteDILICardServiceInfoCmd()); | 105 | m_hw_cmd_map.insert(JSON_VAL_CMD_WRITE + JSON_VAL_FILEID_DILI_CARD_SERVICE_INFO, new WriteDILICardServiceInfoCmd()); |
105 | m_hw_cmd_map.insert(JSON_VAL_CMD_READ + JSON_VAL_FILEID_BANK_CARD_NUM, new ReadBankCardNumCmd()); | 106 | m_hw_cmd_map.insert(JSON_VAL_CMD_READ + JSON_VAL_FILEID_BANK_CARD_NUM, new ReadBankCardNumCmd()); |
106 | m_hw_cmd_map.insert(JSON_VAL_CMD_READ + JSON_VAL_FILEID_DILI_CARD_AND_BANK, new ReadDILIAndBankCardNumCmd()); | 107 | m_hw_cmd_map.insert(JSON_VAL_CMD_READ + JSON_VAL_FILEID_DILI_CARD_AND_BANK, new ReadDILIAndBankCardNumCmd()); |
107 | - | ||
108 | - m_hw_cmd_map.insert(std::string(JSON_VAL_CMD_PRINT), new StylusPrinterCmd()); | 108 | + m_hw_cmd_map.insert(JSON_VAL_CMD_PRINT + JSON_VAL_FILEID_ORDER, new StylusPrinterCmd()); |
109 | } | 109 | } |
110 | std::string HandleRequest(const std::string& request_json) | 110 | std::string HandleRequest(const std::string& request_json) |
111 | { | 111 | { |
central_clearing_system/ETradeClient/hardware/hardware_cmd.cpp
@@ -1546,7 +1546,7 @@ bool StylusPrinterCmd::ParseInput(std::string &input, std::vector<OrderInfo> &or | @@ -1546,7 +1546,7 @@ bool StylusPrinterCmd::ParseInput(std::string &input, std::vector<OrderInfo> &or | ||
1546 | BOOST_FOREACH(PT::ptree::value_type &v, products_ptree) | 1546 | BOOST_FOREACH(PT::ptree::value_type &v, products_ptree) |
1547 | { | 1547 | { |
1548 | CommInfo comm_info; | 1548 | CommInfo comm_info; |
1549 | - comm_info.comm_id = v.second.get<std::string>(JSON_TAG_ORDER_ID).c_str(); | 1549 | + comm_info.comm_id = v.second.get<long>(JSON_TAG_ORDER_ID); |
1550 | comm_info.comm_name = v.second.get<std::string>(JSON_TAG_PRODUCT_NAME).c_str(); | 1550 | comm_info.comm_name = v.second.get<std::string>(JSON_TAG_PRODUCT_NAME).c_str(); |
1551 | comm_info.price = v.second.get<std::string>(JSON_TAG_PRICE).c_str(); | 1551 | comm_info.price = v.second.get<std::string>(JSON_TAG_PRICE).c_str(); |
1552 | comm_info.count = v.second.get<std::string>(JSON_TAG_AMOUNT).c_str(); | 1552 | comm_info.count = v.second.get<std::string>(JSON_TAG_AMOUNT).c_str(); |
central_clearing_system/ETradeClient/hardware/hardware_cmd.h
@@ -101,7 +101,7 @@ class StylusPrinterCmd : public HardwareCmd | @@ -101,7 +101,7 @@ class StylusPrinterCmd : public HardwareCmd | ||
101 | { | 101 | { |
102 | struct CommInfo | 102 | struct CommInfo |
103 | { | 103 | { |
104 | - CString comm_id; | 104 | + long comm_id; |
105 | CString comm_name; | 105 | CString comm_name; |
106 | CString price; | 106 | CString price; |
107 | CString count; | 107 | CString count; |
central_clearing_system/ETradeClient/mfc_ui/ETradeClient.cpp
@@ -192,15 +192,15 @@ BOOL CETradeClientApp::InitInstance() | @@ -192,15 +192,15 @@ BOOL CETradeClientApp::InitInstance() | ||
192 | SetRegistryKey(APP_ID); | 192 | SetRegistryKey(APP_ID); |
193 | 193 | ||
194 | //for test | 194 | //for test |
195 | - PlaceOrderDlg dlg; | ||
196 | - if (dlg.DoModal()) | 195 | + //PlaceOrderDlg dlg; |
196 | + /*if (dlg.DoModal()) | ||
197 | { | 197 | { |
198 | - return FALSE; | ||
199 | - } | 198 | + return FALSE; |
199 | + }*/ | ||
200 | // | 200 | // |
201 | 201 | ||
202 | // First, do login job. | 202 | // First, do login job. |
203 | - if (!CLoginDialog(L"欢迎使用中央结算系统!").Launch()) | 203 | + if (!CLoginDialog(L"欢迎使用综合业务系统!").Launch()) |
204 | { | 204 | { |
205 | LOG_TRACE(L"登录系统未完成,程序关闭。"); | 205 | LOG_TRACE(L"登录系统未完成,程序关闭。"); |
206 | return FALSE; | 206 | return FALSE; |
central_clearing_system/ETradeClient/mfc_ui/GridCellBase.cpp
@@ -77,7 +77,8 @@ void CGridCellBase::Reset() | @@ -77,7 +77,8 @@ void CGridCellBase::Reset() | ||
77 | m_MergeCellID.row=-1; | 77 | m_MergeCellID.row=-1; |
78 | m_MergeCellID.col=-1; | 78 | m_MergeCellID.col=-1; |
79 | 79 | ||
80 | - | 80 | + product_id.clear(); |
81 | + data_id = 0; | ||
81 | } | 82 | } |
82 | //Used for merge cells,remove const | 83 | //Used for merge cells,remove const |
83 | //by Huang Wei | 84 | //by Huang Wei |
central_clearing_system/ETradeClient/mfc_ui/GridCellBase.h
@@ -74,7 +74,7 @@ typedef struct _GV_ITEM { | @@ -74,7 +74,7 @@ typedef struct _GV_ITEM { | ||
74 | // Each cell contains one of these. Fields "row" and "column" are not stored since we | 74 | // Each cell contains one of these. Fields "row" and "column" are not stored since we |
75 | // will usually have acces to them in other ways, and they are an extra 8 bytes per | 75 | // will usually have acces to them in other ways, and they are an extra 8 bytes per |
76 | // cell that is probably unnecessary. | 76 | // cell that is probably unnecessary. |
77 | - | 77 | +#include <string> |
78 | class CGridCellBase : public CObject | 78 | class CGridCellBase : public CObject |
79 | { | 79 | { |
80 | friend class CGridCtrl; | 80 | friend class CGridCtrl; |
@@ -85,6 +85,7 @@ public: | @@ -85,6 +85,7 @@ public: | ||
85 | CGridCellBase(); | 85 | CGridCellBase(); |
86 | virtual ~CGridCellBase(); | 86 | virtual ~CGridCellBase(); |
87 | 87 | ||
88 | + | ||
88 | // Attributes | 89 | // Attributes |
89 | public: | 90 | public: |
90 | virtual void SetText(LPCTSTR /* szText */) = 0 ; | 91 | virtual void SetText(LPCTSTR /* szText */) = 0 ; |
@@ -180,6 +181,12 @@ private: | @@ -180,6 +181,12 @@ private: | ||
180 | bool m_IsMergeWithOthers; | 181 | bool m_IsMergeWithOthers; |
181 | CCellID m_MergeCellID; | 182 | CCellID m_MergeCellID; |
182 | bool m_Hide; | 183 | bool m_Hide; |
184 | + | ||
185 | +public: | ||
186 | + //为了业务,为了部落,为了该死的product_id | ||
187 | + std::string product_id; | ||
188 | + int data_id; | ||
189 | + // | ||
183 | }; | 190 | }; |
184 | 191 | ||
185 | //{{AFX_INSERT_LOCATION}} | 192 | //{{AFX_INSERT_LOCATION}} |
central_clearing_system/ETradeClient/mfc_ui/GridCtrl.cpp
@@ -118,6 +118,8 @@ | @@ -118,6 +118,8 @@ | ||
118 | #include <afxadv.h> // For CSharedFile | 118 | #include <afxadv.h> // For CSharedFile |
119 | #include <afxconv.h> // For LPTSTR -> LPSTR macros | 119 | #include <afxconv.h> // For LPTSTR -> LPSTR macros |
120 | 120 | ||
121 | +#include "Resource.h" | ||
122 | + | ||
121 | #ifdef _DEBUG | 123 | #ifdef _DEBUG |
122 | #define new DEBUG_NEW | 124 | #define new DEBUG_NEW |
123 | #undef THIS_FILE | 125 | #undef THIS_FILE |
@@ -379,6 +381,12 @@ BOOL CGridCtrl::Initialise() | @@ -379,6 +381,12 @@ BOOL CGridCtrl::Initialise() | ||
379 | return TRUE; | 381 | return TRUE; |
380 | } | 382 | } |
381 | 383 | ||
384 | +#include "../utility/win_msg_define.h" | ||
385 | +void CGridCtrl::DeleteComm() | ||
386 | +{ | ||
387 | + ::SendMessage(GetParent()->GetSafeHwnd(), WM_ORDER_DELETE_ORDER, NULL, NULL); | ||
388 | +} | ||
389 | + | ||
382 | // creates the control - use like any other window create control | 390 | // creates the control - use like any other window create control |
383 | BOOL CGridCtrl::Create(const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwStyle) | 391 | BOOL CGridCtrl::Create(const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwStyle) |
384 | { | 392 | { |
@@ -553,6 +561,7 @@ BEGIN_MESSAGE_MAP(CGridCtrl, CWnd) | @@ -553,6 +561,7 @@ BEGIN_MESSAGE_MAP(CGridCtrl, CWnd) | ||
553 | ON_MESSAGE(WM_GETFONT, OnGetFont) | 561 | ON_MESSAGE(WM_GETFONT, OnGetFont) |
554 | ON_MESSAGE(WM_IME_CHAR, OnImeChar) | 562 | ON_MESSAGE(WM_IME_CHAR, OnImeChar) |
555 | ON_NOTIFY(GVN_ENDLABELEDIT, IDC_INPLACE_CONTROL, OnEndInPlaceEdit) | 563 | ON_NOTIFY(GVN_ENDLABELEDIT, IDC_INPLACE_CONTROL, OnEndInPlaceEdit) |
564 | + ON_COMMAND(ID_POPMENU_DELETE, &CGridCtrl::DeleteComm) | ||
556 | END_MESSAGE_MAP() | 565 | END_MESSAGE_MAP() |
557 | 566 | ||
558 | 567 | ||
@@ -4616,7 +4625,7 @@ BOOL CGridCtrl::GetItem(GV_ITEM* pItem) | @@ -4616,7 +4625,7 @@ BOOL CGridCtrl::GetItem(GV_ITEM* pItem) | ||
4616 | return TRUE; | 4625 | return TRUE; |
4617 | } | 4626 | } |
4618 | 4627 | ||
4619 | -BOOL CGridCtrl::SetItemText(int nRow, int nCol, LPCTSTR str) | 4628 | +BOOL CGridCtrl::SetItemText(int nRow, int nCol, LPCTSTR str, int data_id, std::string product_id) |
4620 | { | 4629 | { |
4621 | if (GetVirtualMode()) | 4630 | if (GetVirtualMode()) |
4622 | return FALSE; | 4631 | return FALSE; |
@@ -4626,6 +4635,10 @@ BOOL CGridCtrl::SetItemText(int nRow, int nCol, LPCTSTR str) | @@ -4626,6 +4635,10 @@ BOOL CGridCtrl::SetItemText(int nRow, int nCol, LPCTSTR str) | ||
4626 | return FALSE; | 4635 | return FALSE; |
4627 | 4636 | ||
4628 | pCell->SetText(str); | 4637 | pCell->SetText(str); |
4638 | + //ΪÁ˸ÃËÀµÄϵ¥ÒµÎñ | ||
4639 | + pCell->product_id = product_id; | ||
4640 | + pCell->data_id = data_id; | ||
4641 | + // | ||
4629 | 4642 | ||
4630 | SetModified(TRUE, nRow, nCol); | 4643 | SetModified(TRUE, nRow, nCol); |
4631 | return TRUE; | 4644 | return TRUE; |
@@ -6550,6 +6563,17 @@ void CGridCtrl::OnRButtonUp(UINT nFlags, CPoint point) | @@ -6550,6 +6563,17 @@ void CGridCtrl::OnRButtonUp(UINT nFlags, CPoint point) | ||
6550 | pCell->OnRClick( GetPointClicked( FocusCell.row, FocusCell.col, point) ); | 6563 | pCell->OnRClick( GetPointClicked( FocusCell.row, FocusCell.col, point) ); |
6551 | 6564 | ||
6552 | SendMessageToParent(FocusCell.row, FocusCell.col, NM_RCLICK); | 6565 | SendMessageToParent(FocusCell.row, FocusCell.col, NM_RCLICK); |
6566 | + | ||
6567 | + if (FocusCell.col > 1 && FocusCell.row > 0) | ||
6568 | + { | ||
6569 | + CPoint pt; | ||
6570 | + ::GetCursorPos(&pt); | ||
6571 | + CMenu menu; | ||
6572 | + menu.LoadMenu(IDR_MENU1); | ||
6573 | + CMenu* mu = menu.GetSubMenu(0); | ||
6574 | + mu->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this, NULL); | ||
6575 | + } | ||
6576 | + | ||
6553 | } | 6577 | } |
6554 | } | 6578 | } |
6555 | #endif | 6579 | #endif |
central_clearing_system/ETradeClient/mfc_ui/GridCtrl.h
@@ -33,6 +33,8 @@ | @@ -33,6 +33,8 @@ | ||
33 | #include "GridCell.h" | 33 | #include "GridCell.h" |
34 | #include <afxtempl.h> | 34 | #include <afxtempl.h> |
35 | 35 | ||
36 | +#include <string> | ||
37 | + | ||
36 | 38 | ||
37 | /////////////////////////////////////////////////////////////////////////////////// | 39 | /////////////////////////////////////////////////////////////////////////////////// |
38 | // Defines - these determine the features (and the final size) of the final code | 40 | // Defines - these determine the features (and the final size) of the final code |
@@ -364,7 +366,7 @@ public: | @@ -364,7 +366,7 @@ public: | ||
364 | 366 | ||
365 | BOOL SetItem(const GV_ITEM* pItem); | 367 | BOOL SetItem(const GV_ITEM* pItem); |
366 | BOOL GetItem(GV_ITEM* pItem); | 368 | BOOL GetItem(GV_ITEM* pItem); |
367 | - BOOL SetItemText(int nRow, int nCol, LPCTSTR str); | 369 | + BOOL SetItemText(int nRow, int nCol, LPCTSTR str, int data_id = 0, std::string product_id = ""); |
368 | // The following was virtual. If you want to override, use | 370 | // The following was virtual. If you want to override, use |
369 | // CGridCellBase-derived class's GetText() to accomplish same thing | 371 | // CGridCellBase-derived class's GetText() to accomplish same thing |
370 | CString GetItemText(int nRow, int nCol) const; | 372 | CString GetItemText(int nRow, int nCol) const; |
@@ -798,6 +800,8 @@ protected: | @@ -798,6 +800,8 @@ protected: | ||
798 | MOUSE_PREPARE_DRAG, MOUSE_DRAGGING | 800 | MOUSE_PREPARE_DRAG, MOUSE_DRAGGING |
799 | #endif | 801 | #endif |
800 | }; | 802 | }; |
803 | + | ||
804 | + afx_msg void DeleteComm(); | ||
801 | }; | 805 | }; |
802 | 806 | ||
803 | // Returns the default cell implementation for the given grid region | 807 | // Returns the default cell implementation for the given grid region |
central_clearing_system/ETradeClient/mfc_ui/MainFrm.cpp
@@ -58,8 +58,9 @@ namespace | @@ -58,8 +58,9 @@ namespace | ||
58 | 58 | ||
59 | static std::vector<TBBUTTON> kQuickAccessBtn = | 59 | static std::vector<TBBUTTON> kQuickAccessBtn = |
60 | { | 60 | { |
61 | - { 0, ID_PAY_FEE, TBSTATE_ENABLED, BTNS_BUTTON, 0, 0 }, | ||
62 | - { 1, ID_ORDER, TBSTATE_ENABLED, BTNS_BUTTON, 0, 0 } | 61 | + { 0, ID_ORDER, TBSTATE_ENABLED, BTNS_BUTTON, 0, 0 }, |
62 | + { 1, ID_COMM_REGIST, TBSTATE_ENABLED, BTNS_BUTTON, 0, 0 }, | ||
63 | + { 2, ID_COMM_DISTRIB, TBSTATE_ENABLED, BTNS_BUTTON, 0, 0 } | ||
63 | }; | 64 | }; |
64 | } // namespace | 65 | } // namespace |
65 | 66 | ||
@@ -80,7 +81,7 @@ BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) | @@ -80,7 +81,7 @@ BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) | ||
80 | ON_COMMAND(ID_MODIFY_PASSWORD, OnModifyPwd) | 81 | ON_COMMAND(ID_MODIFY_PASSWORD, OnModifyPwd) |
81 | ON_UPDATE_COMMAND_UI(USER_MESSAGE, &CMainFrame::OnUpdateToolBarMsgCount) | 82 | ON_UPDATE_COMMAND_UI(USER_MESSAGE, &CMainFrame::OnUpdateToolBarMsgCount) |
82 | 83 | ||
83 | - ON_COMMAND_RANGE(ID_PAY_FEE, ID_RIGHT_MANAGE, OnMenuBtnClicked) | 84 | + ON_COMMAND_RANGE(ID_ORDER, ID_LOG, OnMenuBtnClicked) |
84 | ON_COMMAND_RANGE(RELOAD, USER_ACCOUNT, OnToolBarBtnClicked) | 85 | ON_COMMAND_RANGE(RELOAD, USER_ACCOUNT, OnToolBarBtnClicked) |
85 | 86 | ||
86 | ON_MESSAGE(WM_CEF_SESSION_EXPIRED, OnSessionExpired) | 87 | ON_MESSAGE(WM_CEF_SESSION_EXPIRED, OnSessionExpired) |
@@ -315,8 +316,10 @@ void CMainFrame::OnMenuBtnClicked(UINT btn_id) | @@ -315,8 +316,10 @@ void CMainFrame::OnMenuBtnClicked(UINT btn_id) | ||
315 | PlaceOrderDlg dlg; | 316 | PlaceOrderDlg dlg; |
316 | dlg.DoModal(); | 317 | dlg.DoModal(); |
317 | } | 318 | } |
318 | - | ||
319 | - m_view.Browser().NavigateTo(MenuUrl(btn_id)); | 319 | + else |
320 | + { | ||
321 | + m_view.Browser().NavigateTo(MenuUrl(btn_id)); | ||
322 | + } | ||
320 | } | 323 | } |
321 | 324 | ||
322 | void CMainFrame::OnToolbarDropDown(NMHDR* pNMHDR, LRESULT* pResult) | 325 | void CMainFrame::OnToolbarDropDown(NMHDR* pNMHDR, LRESULT* pResult) |
central_clearing_system/ETradeClient/mfc_ui/etrade_edit_control.cpp
@@ -132,11 +132,11 @@ bool CEditBox::CheckCardNum(CString num) | @@ -132,11 +132,11 @@ bool CEditBox::CheckCardNum(CString num) | ||
132 | 132 | ||
133 | do | 133 | do |
134 | { | 134 | { |
135 | - if (num.GetLength() > 12) | 135 | + /*if (num.GetLength() > 12) |
136 | { | 136 | { |
137 | - result = false; | ||
138 | - break; | ||
139 | - } | 137 | + result = false; |
138 | + break; | ||
139 | + }*/ | ||
140 | 140 | ||
141 | if (num.SpanIncluding(L"0123456789") != num) | 141 | if (num.SpanIncluding(L"0123456789") != num) |
142 | { | 142 | { |
central_clearing_system/ETradeClient/mfc_ui/pay_dlg.cpp
@@ -7,15 +7,30 @@ | @@ -7,15 +7,30 @@ | ||
7 | #include "afxdialogex.h" | 7 | #include "afxdialogex.h" |
8 | #include "etradeclient/hardware/hardware_cmd.h" | 8 | #include "etradeclient/hardware/hardware_cmd.h" |
9 | #include "etradeclient/boost_patch/property_tree/json_parser.hpp" | 9 | #include "etradeclient/boost_patch/property_tree/json_parser.hpp" |
10 | +#include "ETradeClient/utility/win_msg_define.h" | ||
11 | +#include "ETradeClient/utility/logging.h" | ||
12 | +#include "etradeclient/utility/url_config.h" | ||
13 | +#include "etradeclient/utility/application_config.h" | ||
14 | +#include "etradeclient/browser/session.h" | ||
15 | +#include "ETradeClient/utility/string_converter.h" | ||
16 | +#include "ETradeClient/utility/win_msg_define.h" | ||
17 | +#include <vector> | ||
18 | +#include "pay_dlg.h" | ||
19 | +#include "etradeclient/hardware/hardware_cmd.h" | ||
20 | +#include "ETradeClient/utility/logging.h" | ||
21 | +#include <sstream> | ||
22 | + | ||
10 | 23 | ||
11 | // PayDlg 对话框 | 24 | // PayDlg 对话框 |
12 | 25 | ||
13 | IMPLEMENT_DYNAMIC(PayDlg, CDialogEx) | 26 | IMPLEMENT_DYNAMIC(PayDlg, CDialogEx) |
14 | 27 | ||
15 | -PayDlg::PayDlg(CWnd* pParent /*=NULL*/) | 28 | +PayDlg::PayDlg(long statement_id, CString total_money, int card_type, CWnd* pParent /*=NULL*/) |
16 | : CDialogEx(PayDlg::IDD, pParent) | 29 | : CDialogEx(PayDlg::IDD, pParent) |
17 | { | 30 | { |
18 | - | 31 | + statement_id_ = statement_id; |
32 | + total_money_ = total_money; | ||
33 | + card_type_ = card_type; | ||
19 | } | 34 | } |
20 | 35 | ||
21 | PayDlg::~PayDlg() | 36 | PayDlg::~PayDlg() |
@@ -32,12 +47,14 @@ void PayDlg::DoDataExchange(CDataExchange* pDX) | @@ -32,12 +47,14 @@ void PayDlg::DoDataExchange(CDataExchange* pDX) | ||
32 | DDX_Control(pDX, IDC_PAY_BUTTON_PAY, pay_button_); | 47 | DDX_Control(pDX, IDC_PAY_BUTTON_PAY, pay_button_); |
33 | DDX_Control(pDX, IDC_PAY_BUTTON_CLOSE, close_button_); | 48 | DDX_Control(pDX, IDC_PAY_BUTTON_CLOSE, close_button_); |
34 | DDX_Control(pDX, IDC_PAY_BUTTON_PASSWORD, password_button_); | 49 | DDX_Control(pDX, IDC_PAY_BUTTON_PASSWORD, password_button_); |
50 | + DDX_Control(pDX, IDC_STATIC_ERROR_MSG, error_msg_static_); | ||
35 | } | 51 | } |
36 | 52 | ||
37 | 53 | ||
38 | BEGIN_MESSAGE_MAP(PayDlg, CDialogEx) | 54 | BEGIN_MESSAGE_MAP(PayDlg, CDialogEx) |
39 | ON_BN_CLICKED(IDC_PAY_BUTTON_CLOSE, &PayDlg::OnBnClickedPayButtonClose) | 55 | ON_BN_CLICKED(IDC_PAY_BUTTON_CLOSE, &PayDlg::OnBnClickedPayButtonClose) |
40 | ON_BN_CLICKED(IDC_PAY_BUTTON_PAY, &PayDlg::OnBnClickedPayButtonPay) | 56 | ON_BN_CLICKED(IDC_PAY_BUTTON_PAY, &PayDlg::OnBnClickedPayButtonPay) |
57 | + ON_WM_CTLCOLOR() | ||
41 | END_MESSAGE_MAP() | 58 | END_MESSAGE_MAP() |
42 | 59 | ||
43 | 60 | ||
@@ -50,6 +67,20 @@ BOOL PayDlg::OnInitDialog() | @@ -50,6 +67,20 @@ BOOL PayDlg::OnInitDialog() | ||
50 | 67 | ||
51 | SetCtrlPos(); | 68 | SetCtrlPos(); |
52 | 69 | ||
70 | + real_money_static_.SetWindowText(total_money_); | ||
71 | + if (card_type_ == 30) | ||
72 | + { | ||
73 | + password_static_.ShowWindow(SW_HIDE); | ||
74 | + password_edit_.ShowWindow(SW_HIDE); | ||
75 | + password_button_.ShowWindow(SW_HIDE); | ||
76 | + } | ||
77 | + else | ||
78 | + { | ||
79 | + password_static_.ShowWindow(SW_SHOW); | ||
80 | + password_edit_.ShowWindow(SW_SHOW); | ||
81 | + password_button_.ShowWindow(SW_SHOW); | ||
82 | + } | ||
83 | + | ||
53 | return TRUE; // return TRUE unless you set the focus to a control | 84 | return TRUE; // return TRUE unless you set the focus to a control |
54 | // 异常: OCX 属性页应返回 FALSE | 85 | // 异常: OCX 属性页应返回 FALSE |
55 | } | 86 | } |
@@ -88,7 +119,13 @@ void PayDlg::SetCtrlPos() | @@ -88,7 +119,13 @@ void PayDlg::SetCtrlPos() | ||
88 | 119 | ||
89 | CRect dlg_rect; | 120 | CRect dlg_rect; |
90 | GetClientRect(&dlg_rect); | 121 | GetClientRect(&dlg_rect); |
91 | - ctrl_rect.bottom = dlg_rect.bottom; | 122 | + |
123 | + ctrl_rect.left = 30; | ||
124 | + ctrl_rect.right = dlg_rect.right - 30; | ||
125 | + error_msg_static_.MoveWindow(&ctrl_rect); | ||
126 | + | ||
127 | + | ||
128 | + ctrl_rect.bottom = dlg_rect.bottom - 20; | ||
92 | ctrl_rect.top = ctrl_rect.bottom - ButtonHeight; | 129 | ctrl_rect.top = ctrl_rect.bottom - ButtonHeight; |
93 | ctrl_rect.right = dlg_rect.right - 100; | 130 | ctrl_rect.right = dlg_rect.right - 100; |
94 | ctrl_rect.left = ctrl_rect.right - ButtonWidth; | 131 | ctrl_rect.left = ctrl_rect.right - ButtonWidth; |
@@ -114,7 +151,102 @@ void PayDlg::OnBnClickedPayButtonClose() | @@ -114,7 +151,102 @@ void PayDlg::OnBnClickedPayButtonClose() | ||
114 | 151 | ||
115 | void PayDlg::OnBnClickedPayButtonPay() | 152 | void PayDlg::OnBnClickedPayButtonPay() |
116 | { | 153 | { |
154 | + std::string statement_data; | ||
155 | + do | ||
156 | + { | ||
157 | + CString error_msg; | ||
158 | + const uint32_t kHTTPOK = 200; | ||
159 | + WinHttp win_http; | ||
160 | + auto& url_cfg = URLConfig::Instance(); | ||
161 | + win_http.ConnectHost(url_cfg.Host(), url_cfg.Port(), url_cfg.IsHttps()); | ||
162 | + std::string url = url_cfg.GetSubmitOrdersPath(); | ||
163 | + auto& request = win_http.OpenRequest(WinHttp::Method::POST, url); | ||
164 | + | ||
165 | + CString pass_word; | ||
166 | + password_edit_.GetWindowText(pass_word); | ||
167 | + | ||
168 | + std::ostringstream os; | ||
169 | + os << statement_id_; | ||
170 | + std::string statement_id_str; | ||
171 | + std::istringstream is(os.str()); | ||
172 | + is >> statement_id_str; | ||
173 | + | ||
174 | + std::string post_data = "{\"statementId\":" + statement_id_str + "\"password\":\"" + wstr_2_str(pass_word) + "\"}"; | ||
175 | + | ||
176 | + request.SetPostData(post_data); | ||
177 | + if (url_cfg.IsHttps()) | ||
178 | + { | ||
179 | + auto& app_cfg = ApplicationConfig::Instance(); | ||
180 | + request.SetClientCertificate(app_cfg.ClientCertStore(), app_cfg.ClientCertSubject()); | ||
181 | + } | ||
182 | + request.SetCookies(Session::Instance().Cookies()); | ||
183 | + request.Send(); | ||
184 | + uint32_t status_code = request.GetResponseStatus(); | ||
185 | + if (kHTTPOK != status_code) | ||
186 | + { | ||
187 | + std::string err_msg = "网络请求错误! 错误码: " + std::to_string(status_code); | ||
188 | + LOG_ERROR(str_2_wstr(err_msg.c_str())); | ||
189 | + error_msg = err_msg.c_str(); | ||
190 | + break; | ||
191 | + } | ||
192 | + std::string response_body = request.ReadResponseBody(); | ||
193 | + if (response_body.empty()) | ||
194 | + { | ||
195 | + LOG_ERROR(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
196 | + error_msg = CString(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
197 | + break; | ||
198 | + } | ||
199 | + | ||
200 | + namespace PT = boost::property_tree; | ||
201 | + bool card_res = false; | ||
202 | + try //Parse the configuration file | ||
203 | + { | ||
204 | + PT::ptree ptree; | ||
205 | + std::stringstream ss; | ||
206 | + ss << response_body; | ||
207 | + PT::read_json(ss, ptree); | ||
208 | + if (ptree.get<int>("code") == 0) | ||
209 | + { | ||
210 | + statement_data = ptree.get<std::string>("data"); | ||
211 | + } | ||
212 | + else | ||
213 | + { | ||
214 | + error_msg = ptree.get<std::string>("message").c_str(); | ||
215 | + break; | ||
216 | + } | ||
217 | + | ||
218 | + } | ||
219 | + catch (...) | ||
220 | + { | ||
221 | + LOG_ERROR(L"解析服务器返回的登录结果信息时出错!请确认返回数据不为空,返回的数据格式为正确的Json格式!"); | ||
222 | + error_msg = CString(L"解析服务器返回的登录结果信息时出错!请确认返回数据不为空,返回的数据格式为正确的Json格式!"); | ||
223 | + break; | ||
224 | + } | ||
225 | + } while (0); | ||
226 | + | ||
117 | auto printer_device = StylusPrinterCmd(); | 227 | auto printer_device = StylusPrinterCmd(); |
118 | - | ||
119 | - HardwareCmd::Reply reply = printer_device.Execute("{\"title\":\"长春结地利算单\",\"orders\":[{\"statementId\":\"123456\",\"tradeTime\":\"2018/10/10\",\"buyerName\":\"大熊\",\"sellerName\":\"卖家大熊\",\"userName\":\"结算员大熊\",\"totalMoney\":\"11001.91\",\"products\":[{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"55.5\",\"amount\":\"500\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"}]},{\"statementId\":\"123456\",\"tradeTime\":\"2018/10/10\",\"buyerName\":\"大熊\",\"sellerName\":\"卖家大熊\",\"userName\":\"结算员大熊\",\"totalMoney\":\"11001.91\",\"products\":[{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"55.5\",\"amount\":\"500\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"},{\"orderId\":1000,\"productName\":\"商品名称大熊\",\"price\":\"2753\",\"amount\":\"752\",\"money\":\"1021.01\"}]}]}"); | 228 | + HardwareCmd::Reply reply = printer_device.Execute(statement_data); |
229 | + | ||
230 | + CDialogEx::OnCancel(); | ||
231 | +} | ||
232 | + | ||
233 | +void PayDlg::SetErrorMsg(CString error) | ||
234 | +{ | ||
235 | + error_msg_static_.SetWindowTextW(error); | ||
236 | +} | ||
237 | + | ||
238 | + | ||
239 | +HBRUSH PayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) | ||
240 | +{ | ||
241 | + HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); | ||
242 | + | ||
243 | + if (nCtlColor == CTLCOLOR_STATIC) | ||
244 | + { | ||
245 | + if (IDC_STATIC_ERROR_MSG == pWnd->GetDlgCtrlID()) | ||
246 | + { | ||
247 | + pDC->SetTextColor(RGB(200, 0, 0)); | ||
248 | + } | ||
249 | + } | ||
250 | + | ||
251 | + return hbr; | ||
120 | } | 252 | } |
central_clearing_system/ETradeClient/mfc_ui/pay_dlg.h
@@ -9,7 +9,7 @@ class PayDlg : public CDialogEx | @@ -9,7 +9,7 @@ class PayDlg : public CDialogEx | ||
9 | DECLARE_DYNAMIC(PayDlg) | 9 | DECLARE_DYNAMIC(PayDlg) |
10 | 10 | ||
11 | public: | 11 | public: |
12 | - PayDlg(CWnd* pParent = NULL); // 标准构造函数 | 12 | + PayDlg(long statement_id, CString total_money, int card_type, CWnd* pParent = NULL); // 标准构造函数 |
13 | virtual ~PayDlg(); | 13 | virtual ~PayDlg(); |
14 | 14 | ||
15 | // 对话框数据 | 15 | // 对话框数据 |
@@ -21,15 +21,25 @@ protected: | @@ -21,15 +21,25 @@ protected: | ||
21 | DECLARE_MESSAGE_MAP() | 21 | DECLARE_MESSAGE_MAP() |
22 | public: | 22 | public: |
23 | virtual BOOL OnInitDialog(); | 23 | virtual BOOL OnInitDialog(); |
24 | + afx_msg void OnBnClickedPayButtonClose(); | ||
25 | + afx_msg void OnBnClickedPayButtonPay(); | ||
26 | + afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); | ||
27 | + | ||
28 | +private: | ||
29 | + void SetCtrlPos(); | ||
30 | + void SetErrorMsg(CString error); | ||
31 | + | ||
32 | +private: | ||
24 | CStatic total_money_static_; | 33 | CStatic total_money_static_; |
25 | CStatic real_money_static_; | 34 | CStatic real_money_static_; |
26 | CStatic password_static_; | 35 | CStatic password_static_; |
27 | CEdit password_edit_; | 36 | CEdit password_edit_; |
28 | CButton pay_button_; | 37 | CButton pay_button_; |
29 | CButton close_button_; | 38 | CButton close_button_; |
30 | - | ||
31 | - void SetCtrlPos(); | ||
32 | - afx_msg void OnBnClickedPayButtonClose(); | ||
33 | CButton password_button_; | 39 | CButton password_button_; |
34 | - afx_msg void OnBnClickedPayButtonPay(); | 40 | + CStatic error_msg_static_; |
41 | + | ||
42 | + long statement_id_; | ||
43 | + CString total_money_; | ||
44 | + int card_type_; | ||
35 | }; | 45 | }; |
central_clearing_system/ETradeClient/mfc_ui/place_order_dlg.cpp
@@ -23,10 +23,11 @@ | @@ -23,10 +23,11 @@ | ||
23 | IMPLEMENT_DYNAMIC(PlaceOrderDlg, CDialogEx) | 23 | IMPLEMENT_DYNAMIC(PlaceOrderDlg, CDialogEx) |
24 | 24 | ||
25 | PlaceOrderDlg::PlaceOrderDlg(CWnd* pParent /*=NULL*/) | 25 | PlaceOrderDlg::PlaceOrderDlg(CWnd* pParent /*=NULL*/) |
26 | - : CDialogEx(PlaceOrderDlg::IDD, pParent) | 26 | +: CDialogEx(PlaceOrderDlg::IDD, pParent) |
27 | { | 27 | { |
28 | line_pen_.CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); | 28 | line_pen_.CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); |
29 | edit_brush_.CreateSolidBrush(RGB(245, 247, 250)); | 29 | edit_brush_.CreateSolidBrush(RGB(245, 247, 250)); |
30 | + comm_id_index_ = 1; | ||
30 | } | 31 | } |
31 | 32 | ||
32 | PlaceOrderDlg::~PlaceOrderDlg() | 33 | PlaceOrderDlg::~PlaceOrderDlg() |
@@ -74,8 +75,10 @@ BEGIN_MESSAGE_MAP(PlaceOrderDlg, CDialogEx) | @@ -74,8 +75,10 @@ BEGIN_MESSAGE_MAP(PlaceOrderDlg, CDialogEx) | ||
74 | ON_MESSAGE(WM_ORDER_KILL_FOCUS, &PlaceOrderDlg::OnEditKillFocus) | 75 | ON_MESSAGE(WM_ORDER_KILL_FOCUS, &PlaceOrderDlg::OnEditKillFocus) |
75 | ON_COMMAND(ID_ACCELERATOR_DOWN, &PlaceOrderDlg::OnAcceleratorDown) | 76 | ON_COMMAND(ID_ACCELERATOR_DOWN, &PlaceOrderDlg::OnAcceleratorDown) |
76 | ON_COMMAND(ID_ACCELERATOR_UP, &PlaceOrderDlg::OnAcceleratorUp) | 77 | ON_COMMAND(ID_ACCELERATOR_UP, &PlaceOrderDlg::OnAcceleratorUp) |
78 | + ON_COMMAND(ID_ACCELERATOR_F11, &PlaceOrderDlg::OnBnClickedButtonSwipCard) | ||
77 | ON_WM_SETFOCUS() | 79 | ON_WM_SETFOCUS() |
78 | ON_BN_CLICKED(IDC_BUTTON_SWIP_CARD, &PlaceOrderDlg::OnBnClickedButtonSwipCard) | 80 | ON_BN_CLICKED(IDC_BUTTON_SWIP_CARD, &PlaceOrderDlg::OnBnClickedButtonSwipCard) |
81 | + ON_MESSAGE(WM_ORDER_DELETE_ORDER, &PlaceOrderDlg::DeleteComm) | ||
79 | END_MESSAGE_MAP() | 82 | END_MESSAGE_MAP() |
80 | 83 | ||
81 | 84 | ||
@@ -239,7 +242,7 @@ void PlaceOrderDlg::SetCtrlPos() | @@ -239,7 +242,7 @@ void PlaceOrderDlg::SetCtrlPos() | ||
239 | 242 | ||
240 | CRect dlg_rect; | 243 | CRect dlg_rect; |
241 | GetClientRect(&dlg_rect); | 244 | GetClientRect(&dlg_rect); |
242 | - ctrl_rect.top += 10; | 245 | + //ctrl_rect.top += 10; |
243 | ctrl_rect.left = ctrl_rect.right + 30; | 246 | ctrl_rect.left = ctrl_rect.right + 30; |
244 | ctrl_rect.right = dlg_rect.right; | 247 | ctrl_rect.right = dlg_rect.right; |
245 | error_static_.MoveWindow(&ctrl_rect); | 248 | error_static_.MoveWindow(&ctrl_rect); |
@@ -259,9 +262,10 @@ void PlaceOrderDlg::SetCtrlPos() | @@ -259,9 +262,10 @@ void PlaceOrderDlg::SetCtrlPos() | ||
259 | total_money_static_.MoveWindow(&ctrl_rect); | 262 | total_money_static_.MoveWindow(&ctrl_rect); |
260 | 263 | ||
261 | ctrl_rect.left = ctrl_rect.right; | 264 | ctrl_rect.left = ctrl_rect.right; |
262 | - ctrl_rect.right = dlg_rect.right; | 265 | + ctrl_rect.right = dlg_rect.right - 10 - ButtonWidth - 5; |
263 | total_real_money_static_.MoveWindow(&ctrl_rect); | 266 | total_real_money_static_.MoveWindow(&ctrl_rect); |
264 | 267 | ||
268 | + ctrl_rect.top -= 5; | ||
265 | ctrl_rect.right = dlg_rect.right - 10; | 269 | ctrl_rect.right = dlg_rect.right - 10; |
266 | ctrl_rect.left = ctrl_rect.right - ButtonWidth; | 270 | ctrl_rect.left = ctrl_rect.right - ButtonWidth; |
267 | pay_button_.MoveWindow(&ctrl_rect); | 271 | pay_button_.MoveWindow(&ctrl_rect); |
@@ -352,12 +356,154 @@ HBRUSH PlaceOrderDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) | @@ -352,12 +356,154 @@ HBRUSH PlaceOrderDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) | ||
352 | 356 | ||
353 | void PlaceOrderDlg::OnBnClickedButtonPay() | 357 | void PlaceOrderDlg::OnBnClickedButtonPay() |
354 | { | 358 | { |
355 | - PayDlg pay_dlg; | ||
356 | - pay_dlg.DoModal(); | 359 | + int row_count = product_list_.GetRowCount(); |
360 | + if (row_count == 0) | ||
361 | + { | ||
362 | + SetErrorMsg(CString(L"订单信息为空!")); | ||
363 | + return; | ||
364 | + } | ||
365 | + | ||
366 | + struct Comm | ||
367 | + { | ||
368 | + std::string product_id; | ||
369 | + std::string price; | ||
370 | + std::string amount; | ||
371 | + std::string unit; | ||
372 | + std::string weight; | ||
373 | + }; | ||
374 | + struct Order | ||
375 | + { | ||
376 | + std::string seller_card; | ||
377 | + std::vector<Comm> comm_vec; | ||
378 | + }; | ||
379 | + std::vector<Order> orders_list; | ||
380 | + Order current_order; | ||
381 | + for (int row = 0; row < row_count; ++row) | ||
382 | + { | ||
383 | + std::string card = wstr_2_str(product_list_.GetItemText(row, 0)); | ||
384 | + if (card.compare(current_order.seller_card) != 0) | ||
385 | + { | ||
386 | + orders_list.push_back(current_order); | ||
387 | + current_order.comm_vec.clear(); | ||
388 | + current_order.seller_card = card; | ||
389 | + } | ||
390 | + | ||
391 | + Comm comm_info; | ||
392 | + CGridCellBase* product_cell = product_list_.GetCell(row, 2); | ||
393 | + comm_info.product_id == product_cell->product_id; | ||
394 | + comm_info.price = wstr_2_str(product_list_.GetItemText(row, 3)); | ||
395 | + comm_info.amount = wstr_2_str(product_list_.GetItemText(row, 4)); | ||
396 | + comm_info.unit = product_list_.GetItemText(row, 5).Compare(L"斤") == 0 ? "1" : "2"; | ||
397 | + comm_info.weight = wstr_2_str(product_list_.GetItemText(row, 6)); | ||
398 | + | ||
399 | + current_order.comm_vec.push_back(comm_info); | ||
400 | + } | ||
401 | + | ||
402 | + CString buyer_card; | ||
403 | + buyer_card_edit_.GetWindowText(buyer_card); | ||
404 | + | ||
405 | + CString error_msg; | ||
406 | + long statement_id = 0; | ||
407 | + std::string total_money; | ||
408 | + do | ||
409 | + { | ||
410 | + const uint32_t kHTTPOK = 200; | ||
411 | + WinHttp win_http; | ||
412 | + auto& url_cfg = URLConfig::Instance(); | ||
413 | + win_http.ConnectHost(url_cfg.Host(), url_cfg.Port(), url_cfg.IsHttps()); | ||
414 | + std::string url = url_cfg.GetSubmitOrdersPath(); | ||
415 | + auto& request = win_http.OpenRequest(WinHttp::Method::POST, url); | ||
416 | + | ||
417 | + std::string post_data = "{\"paymentType\":1,\"cardNo\":\"" + wstr_2_str(buyer_card) + "\",\"orders\":["; | ||
418 | + for (auto iter_order : orders_list) | ||
419 | + { | ||
420 | + post_data += "{\"cardNo\":\"" + iter_order.seller_card + "\",\"products\":["; | ||
421 | + for (auto iter_product : iter_order.comm_vec) | ||
422 | + { | ||
423 | + post_data += "{\"productId\":" + iter_product.product_id + ",\"price\":\"" + iter_product.price + "\",\"amount\":\"" + iter_product.amount + \ | ||
424 | + "\",\"unit\":" + iter_product.unit + ",\"weight\":\"" + iter_product.weight + "\"},"; | ||
425 | + } | ||
426 | + post_data.erase(post_data.end() - 1); | ||
427 | + post_data += "]},"; | ||
428 | + } | ||
429 | + post_data.erase(post_data.end() - 1); | ||
430 | + post_data += "]}"; | ||
431 | + | ||
432 | + | ||
433 | + request.SetPostData(post_data); | ||
434 | + if (url_cfg.IsHttps()) | ||
435 | + { | ||
436 | + auto& app_cfg = ApplicationConfig::Instance(); | ||
437 | + request.SetClientCertificate(app_cfg.ClientCertStore(), app_cfg.ClientCertSubject()); | ||
438 | + } | ||
439 | + request.SetCookies(Session::Instance().Cookies()); | ||
440 | + request.Send(); | ||
441 | + uint32_t status_code = request.GetResponseStatus(); | ||
442 | + if (kHTTPOK != status_code) | ||
443 | + { | ||
444 | + std::string err_msg = "网络请求错误! 错误码: " + std::to_string(status_code); | ||
445 | + LOG_ERROR(str_2_wstr(err_msg.c_str())); | ||
446 | + error_msg = err_msg.c_str(); | ||
447 | + break; | ||
448 | + } | ||
449 | + std::string response_body = request.ReadResponseBody(); | ||
450 | + if (response_body.empty()) | ||
451 | + { | ||
452 | + LOG_ERROR(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
453 | + error_msg = CString(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
454 | + break; | ||
455 | + } | ||
456 | + | ||
457 | + namespace PT = boost::property_tree; | ||
458 | + bool card_res = false; | ||
459 | + try //Parse the configuration file | ||
460 | + { | ||
461 | + PT::ptree ptree; | ||
462 | + std::stringstream ss; | ||
463 | + ss << response_body; | ||
464 | + PT::read_json(ss, ptree); | ||
465 | + if (ptree.get<int>("code") == 0) | ||
466 | + { | ||
467 | + PT::ptree statement_data = ptree.get_child("data"); | ||
468 | + statement_id = statement_data.get<long>("statementId"); | ||
469 | + total_money = statement_data.get<std::string>("totalMoney"); | ||
470 | + } | ||
471 | + else | ||
472 | + { | ||
473 | + error_msg = ptree.get<std::string>("message").c_str(); | ||
474 | + break; | ||
475 | + } | ||
476 | + | ||
477 | + } | ||
478 | + catch (...) | ||
479 | + { | ||
480 | + LOG_ERROR(L"解析服务器返回的登录结果信息时出错!请确认返回数据不为空,返回的数据格式为正确的Json格式!"); | ||
481 | + error_msg = CString(L"解析服务器返回的登录结果信息时出错!请确认返回数据不为空,返回的数据格式为正确的Json格式!"); | ||
482 | + break; | ||
483 | + } | ||
484 | + } while (0); | ||
485 | + | ||
486 | + if (!error_msg.IsEmpty()) | ||
487 | + { | ||
488 | + SetErrorMsg(error_msg); | ||
489 | + } | ||
490 | + else | ||
491 | + { | ||
492 | + EmptyCtrl(); | ||
493 | + SetCtrlInitData(); | ||
494 | + InitList(); | ||
495 | + comm_id_index_; | ||
496 | + comm_vec_.clear(); | ||
497 | + | ||
498 | + PayDlg pay_dlg(statement_id, CString(total_money.c_str()), buyer_card_type_); | ||
499 | + pay_dlg.DoModal(); | ||
500 | + } | ||
357 | } | 501 | } |
358 | 502 | ||
359 | void PlaceOrderDlg::InitList() | 503 | void PlaceOrderDlg::InitList() |
360 | { | 504 | { |
505 | + product_list_.DeleteAllItems(); | ||
506 | + | ||
361 | product_list_.InsertColumn(L"货主卡号"); | 507 | product_list_.InsertColumn(L"货主卡号"); |
362 | product_list_.InsertColumn(L"货主姓名"); | 508 | product_list_.InsertColumn(L"货主姓名"); |
363 | product_list_.InsertColumn(L"商品名称"); | 509 | product_list_.InsertColumn(L"商品名称"); |
@@ -388,6 +534,7 @@ void PlaceOrderDlg::InitList() | @@ -388,6 +534,7 @@ void PlaceOrderDlg::InitList() | ||
388 | product_list_.SetListMode(TRUE); | 534 | product_list_.SetListMode(TRUE); |
389 | product_list_.SetSingleColSelection(TRUE); | 535 | product_list_.SetSingleColSelection(TRUE); |
390 | product_list_.SetSingleRowSelection(FALSE); | 536 | product_list_.SetSingleRowSelection(FALSE); |
537 | + product_list_.SetFixedRowSelection(true); | ||
391 | 538 | ||
392 | product_list_.SetRowResize(FALSE); | 539 | product_list_.SetRowResize(FALSE); |
393 | product_list_.SetColumnResize(FALSE); | 540 | product_list_.SetColumnResize(FALSE); |
@@ -411,6 +558,13 @@ void PlaceOrderDlg::OnAcceleratorTab() | @@ -411,6 +558,13 @@ void PlaceOrderDlg::OnAcceleratorTab() | ||
411 | { | 558 | { |
412 | 559 | ||
413 | } | 560 | } |
561 | + | ||
562 | +int PlaceOrderDlg::GetCommIndex() | ||
563 | +{ | ||
564 | + ++comm_id_index_; | ||
565 | + return comm_id_index_; | ||
566 | +} | ||
567 | + | ||
414 | void PlaceOrderDlg::OnAcceleratorEnter() | 568 | void PlaceOrderDlg::OnAcceleratorEnter() |
415 | { | 569 | { |
416 | OnEditKillFocus(IDC_EDIT_CARD, NULL); | 570 | OnEditKillFocus(IDC_EDIT_CARD, NULL); |
@@ -420,6 +574,8 @@ void PlaceOrderDlg::OnAcceleratorEnter() | @@ -420,6 +574,8 @@ void PlaceOrderDlg::OnAcceleratorEnter() | ||
420 | OnEditKillFocus(IDC_EDIT_PRICE, NULL); | 574 | OnEditKillFocus(IDC_EDIT_PRICE, NULL); |
421 | OnEditKillFocus(IDC_EDIT_COUNT, NULL); | 575 | OnEditKillFocus(IDC_EDIT_COUNT, NULL); |
422 | 576 | ||
577 | + card_edit_.SetFocus(); | ||
578 | + | ||
423 | do | 579 | do |
424 | { | 580 | { |
425 | if (card_edit_.IsEditRed() || comm_num_edit_.IsEditRed() || | 581 | if (card_edit_.IsEditRed() || comm_num_edit_.IsEditRed() || |
@@ -434,30 +590,49 @@ void PlaceOrderDlg::OnAcceleratorEnter() | @@ -434,30 +590,49 @@ void PlaceOrderDlg::OnAcceleratorEnter() | ||
434 | CString text; | 590 | CString text; |
435 | double price = 0, count = 0; | 591 | double price = 0, count = 0; |
436 | card_edit_.GetWindowText(text); | 592 | card_edit_.GetWindowText(text); |
437 | - product_list_.SetItemText(row_index, 0, text); | 593 | + CommInfo comm; |
594 | + comm.comm_id = GetCommIndex(); | ||
595 | + comm.seller_card = text; | ||
596 | + product_list_.SetItemText(row_index, 0, text, comm.comm_id); | ||
438 | text.Empty(); | 597 | text.Empty(); |
598 | + | ||
439 | name_edit_.GetWindowText(text); | 599 | name_edit_.GetWindowText(text); |
440 | - product_list_.SetItemText(row_index, 1, text); | 600 | + comm.seller_name = text; |
601 | + product_list_.SetItemText(row_index, 1, text, comm.comm_id); | ||
441 | text.Empty(); | 602 | text.Empty(); |
603 | + | ||
442 | comm_name_edit_.GetWindowText(text); | 604 | comm_name_edit_.GetWindowText(text); |
443 | - product_list_.SetItemText(row_index, 2, text); | 605 | + comm.comm_name = text; |
606 | + product_list_.SetItemText(row_index, 2, text, comm.comm_id, wstr_2_str(product_id_)); | ||
444 | text.Empty(); | 607 | text.Empty(); |
608 | + | ||
445 | price_edit_.GetWindowText(text); | 609 | price_edit_.GetWindowText(text); |
446 | price = _ttof(text); | 610 | price = _ttof(text); |
447 | - product_list_.SetItemText(row_index, 3, text); | 611 | + comm.price = text; |
612 | + product_list_.SetItemText(row_index, 3, text, comm.comm_id); | ||
448 | text.Empty(); | 613 | text.Empty(); |
614 | + | ||
449 | count_edit_.GetWindowText(text); | 615 | count_edit_.GetWindowText(text); |
450 | count = _ttof(text); | 616 | count = _ttof(text); |
451 | - product_list_.SetItemText(row_index, 4, text); | 617 | + comm.count = text; |
618 | + product_list_.SetItemText(row_index, 4, text, comm.comm_id); | ||
452 | text.Empty(); | 619 | text.Empty(); |
620 | + | ||
453 | real_unit_static.GetWindowText(text); | 621 | real_unit_static.GetWindowText(text); |
454 | - product_list_.SetItemText(row_index, 5, text); | 622 | + comm.unit = text; |
623 | + product_list_.SetItemText(row_index, 5, text, comm.comm_id); | ||
455 | text.Empty(); | 624 | text.Empty(); |
625 | + | ||
456 | heavy_edit_.GetWindowText(text); | 626 | heavy_edit_.GetWindowText(text); |
457 | - product_list_.SetItemText(row_index, 6, text); | 627 | + comm.weight = text; |
628 | + product_list_.SetItemText(row_index, 6, text, comm.comm_id); | ||
458 | text.Empty(); | 629 | text.Empty(); |
630 | + | ||
459 | text.Format(_T("%.1f"), price * count); | 631 | text.Format(_T("%.1f"), price * count); |
460 | - product_list_.SetItemText(row_index, 7, text); | 632 | + comm.total_money = text; |
633 | + product_list_.SetItemText(row_index, 7, text, comm.comm_id); | ||
634 | + | ||
635 | + comm_vec_.push_back(comm); | ||
461 | 636 | ||
462 | for (int index = 0; index < 8; ++index) | 637 | for (int index = 0; index < 8; ++index) |
463 | { | 638 | { |
@@ -470,7 +645,7 @@ void PlaceOrderDlg::OnAcceleratorEnter() | @@ -470,7 +645,7 @@ void PlaceOrderDlg::OnAcceleratorEnter() | ||
470 | CString subtotal; | 645 | CString subtotal; |
471 | double total_price = 0; | 646 | double total_price = 0; |
472 | int list_count = product_list_.GetRowCount(); | 647 | int list_count = product_list_.GetRowCount(); |
473 | - for (int index = 1; index <= count; ++index) | 648 | + for (int index = 1; index <= list_count; ++index) |
474 | { | 649 | { |
475 | subtotal = product_list_.GetItemText(index, 7); | 650 | subtotal = product_list_.GetItemText(index, 7); |
476 | total_price += _ttof(subtotal); | 651 | total_price += _ttof(subtotal); |
@@ -482,6 +657,15 @@ void PlaceOrderDlg::OnAcceleratorEnter() | @@ -482,6 +657,15 @@ void PlaceOrderDlg::OnAcceleratorEnter() | ||
482 | 657 | ||
483 | } while (0); | 658 | } while (0); |
484 | 659 | ||
660 | + if (product_list_.GetRowCount() > 1) | ||
661 | + { | ||
662 | + pay_button_.EnableWindow(TRUE); | ||
663 | + } | ||
664 | + else | ||
665 | + { | ||
666 | + pay_button_.EnableWindow(FALSE); | ||
667 | + } | ||
668 | + | ||
485 | UpdateWindow(); | 669 | UpdateWindow(); |
486 | } | 670 | } |
487 | 671 | ||
@@ -491,7 +675,7 @@ void PlaceOrderDlg::SetCtrlInitData() | @@ -491,7 +675,7 @@ void PlaceOrderDlg::SetCtrlInitData() | ||
491 | EnableCtrl(false); | 675 | EnableCtrl(false); |
492 | 676 | ||
493 | card_edit_.SetWindowTextW(L"8888"); | 677 | card_edit_.SetWindowTextW(L"8888"); |
494 | - | 678 | + |
495 | card_edit_.SetCheck(CardNumType); | 679 | card_edit_.SetCheck(CardNumType); |
496 | comm_num_edit_.SetCheck(CommNumType); | 680 | comm_num_edit_.SetCheck(CommNumType); |
497 | unit_edit_.SetCheck(UnitType); | 681 | unit_edit_.SetCheck(UnitType); |
@@ -502,6 +686,7 @@ void PlaceOrderDlg::SetCtrlInitData() | @@ -502,6 +686,7 @@ void PlaceOrderDlg::SetCtrlInitData() | ||
502 | card_edit_.SetFocus(); | 686 | card_edit_.SetFocus(); |
503 | card_edit_.SetSel(4, 4); | 687 | card_edit_.SetSel(4, 4); |
504 | heavy_edit_.EnableWindow(FALSE); | 688 | heavy_edit_.EnableWindow(FALSE); |
689 | + pay_button_.EnableWindow(FALSE); | ||
505 | } | 690 | } |
506 | 691 | ||
507 | void PlaceOrderDlg::SetErrorMsg(CString &error) | 692 | void PlaceOrderDlg::SetErrorMsg(CString &error) |
@@ -521,13 +706,13 @@ LRESULT PlaceOrderDlg::OnEditKillFocus(WPARAM wParam, LPARAM lParam) | @@ -521,13 +706,13 @@ LRESULT PlaceOrderDlg::OnEditKillFocus(WPARAM wParam, LPARAM lParam) | ||
521 | case IDC_EDIT_CARD: | 706 | case IDC_EDIT_CARD: |
522 | { | 707 | { |
523 | CString name; | 708 | CString name; |
524 | - if (text.GetLength() < 12) | 709 | + /*if (text.GetLength() < 12) |
525 | { | 710 | { |
526 | - card_edit_.SetEditRed(true); | ||
527 | - break; | ||
528 | - } | 711 | + card_edit_.SetEditRed(true); |
712 | + break; | ||
713 | + }*/ | ||
529 | 714 | ||
530 | - bool result = GetCardName(text, name); | 715 | + bool result = GetCardName(text, name, 2); |
531 | if (result) | 716 | if (result) |
532 | { | 717 | { |
533 | name_edit_.SetWindowText(name); | 718 | name_edit_.SetWindowText(name); |
@@ -549,8 +734,9 @@ LRESULT PlaceOrderDlg::OnEditKillFocus(WPARAM wParam, LPARAM lParam) | @@ -549,8 +734,9 @@ LRESULT PlaceOrderDlg::OnEditKillFocus(WPARAM wParam, LPARAM lParam) | ||
549 | comm_num_edit_.SetEditRed(true); | 734 | comm_num_edit_.SetEditRed(true); |
550 | break; | 735 | break; |
551 | } | 736 | } |
552 | - | ||
553 | - bool result = GetCardName(text, name); | 737 | + CString buyer_card; |
738 | + buyer_card_edit_.GetWindowText(buyer_card); | ||
739 | + bool result = GetCommName(text, buyer_card, name, product_id_); | ||
554 | if (result) | 740 | if (result) |
555 | { | 741 | { |
556 | name_edit_.SetWindowText(name); | 742 | name_edit_.SetWindowText(name); |
@@ -619,49 +805,156 @@ LRESULT PlaceOrderDlg::OnEditKillFocus(WPARAM wParam, LPARAM lParam) | @@ -619,49 +805,156 @@ LRESULT PlaceOrderDlg::OnEditKillFocus(WPARAM wParam, LPARAM lParam) | ||
619 | } | 805 | } |
620 | 806 | ||
621 | 807 | ||
622 | -bool PlaceOrderDlg::GetCardName(CString &num, CString &name) | 808 | +bool PlaceOrderDlg::GetCardName(CString &num, CString &name, int type) |
623 | { | 809 | { |
624 | - //for test | ||
625 | - return true; | ||
626 | - // | ||
627 | - | ||
628 | - | ||
629 | bool result = true; | 810 | bool result = true; |
630 | 811 | ||
631 | - CString sLog; | 812 | + LOG_TRACE(_T("获取卡片姓名!")); |
813 | + do | ||
814 | + { | ||
815 | + const uint32_t kHTTPOK = 200; | ||
816 | + WinHttp win_http; | ||
817 | + auto& url_cfg = URLConfig::Instance(); | ||
818 | + win_http.ConnectHost(url_cfg.Host(), url_cfg.Port(), url_cfg.IsHttps()); | ||
819 | + std::string path = type == 1 ? url_cfg.GetCardNamePath() : url_cfg.GetSellerCardPath(); | ||
820 | + std::string url = path + "?cardNo=" + wstr_2_str(num); | ||
821 | + auto& request = win_http.OpenRequest(WinHttp::Method::POST, url); | ||
822 | + if (url_cfg.IsHttps()) | ||
823 | + { | ||
824 | + auto& app_cfg = ApplicationConfig::Instance(); | ||
825 | + request.SetClientCertificate(app_cfg.ClientCertStore(), app_cfg.ClientCertSubject()); | ||
826 | + } | ||
827 | + request.SetCookies(Session::Instance().Cookies()); | ||
828 | + request.Send(); | ||
829 | + uint32_t status_code = request.GetResponseStatus(); | ||
830 | + if (kHTTPOK != status_code) | ||
831 | + { | ||
832 | + std::string err_msg = "网络请求错误! 错误码: " + std::to_string(status_code); | ||
833 | + LOG_ERROR(str_2_wstr(err_msg.c_str())); | ||
834 | + name = CString(L"网络请求错误!"); | ||
835 | + result = false; | ||
836 | + break; | ||
837 | + } | ||
838 | + std::string response_body = request.ReadResponseBody(); | ||
839 | + if (response_body.empty()) | ||
840 | + { | ||
841 | + LOG_ERROR(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
842 | + name = CString(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
843 | + result = false; | ||
844 | + break; | ||
845 | + } | ||
632 | 846 | ||
633 | - LOG_TRACE(_T("获取开卡人姓名!")); | 847 | + namespace PT = boost::property_tree; |
848 | + bool card_res = false; | ||
849 | + try //Parse the configuration file | ||
850 | + { | ||
851 | + PT::ptree ptree; | ||
852 | + std::stringstream ss; | ||
853 | + ss << response_body; | ||
854 | + PT::read_json(ss, ptree); | ||
855 | + std::string res = ptree.get<std::string>("code"); | ||
856 | + card_res = res.compare(0) == 0 ? true : false; | ||
857 | + if (!card_res) | ||
858 | + { | ||
859 | + PT::ptree card_data = ptree.get_child("data"); | ||
860 | + name = card_data.get<std::string>("name").c_str(); | ||
861 | + buyer_card_type_ = card_data.get<int>("category"); | ||
862 | + } | ||
863 | + else | ||
864 | + { | ||
865 | + std::string error_msg = ptree.get<std::string>("message"); | ||
866 | + name = CString(error_msg.c_str()); | ||
867 | + result = false; | ||
868 | + break; | ||
869 | + } | ||
634 | 870 | ||
635 | - const uint32_t kHTTPOK = 200; | ||
636 | - WinHttp win_http; | ||
637 | - auto& url_cfg = URLConfig::Instance(); | ||
638 | - win_http.ConnectHost(url_cfg.Host(), url_cfg.Port(), url_cfg.IsHttps()); | ||
639 | - auto& request = win_http.OpenRequest(WinHttp::Method::GET, url_cfg.GetCardNamePath()); | ||
640 | - if (url_cfg.IsHttps()) | ||
641 | - { | ||
642 | - auto& app_cfg = ApplicationConfig::Instance(); | ||
643 | - request.SetClientCertificate(app_cfg.ClientCertStore(), app_cfg.ClientCertSubject()); | ||
644 | - } | ||
645 | - request.SetCookies(Session::Instance().Cookies()); | ||
646 | - request.Send(); | ||
647 | - uint32_t status_code = request.GetResponseStatus(); | ||
648 | - if (kHTTPOK != status_code) | ||
649 | - { | ||
650 | - std::string err_msg = "网络请求错误! 错误码: " + std::to_string(status_code); | ||
651 | - LOG_ERROR(str_2_wstr(err_msg.c_str())); | ||
652 | - } | ||
653 | - std::string response_body = request.ReadResponseBody(); | ||
654 | - if (response_body.empty()) | ||
655 | - { | ||
656 | - LOG_ERROR(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
657 | - } | 871 | + } |
872 | + catch (...) | ||
873 | + { | ||
874 | + LOG_ERROR(L"解析服务器返回的登录结果信息时出错!请确认返回数据不为空,返回的数据格式为正确的Json格式!"); | ||
875 | + name = CString(L"解析服务器返回的登录结果信息时出错!请确认返回数据不为空,返回的数据格式为正确的Json格式!"); | ||
876 | + result = false; | ||
877 | + break; | ||
878 | + } | ||
879 | + } while (0); | ||
658 | 880 | ||
659 | return result; | 881 | return result; |
660 | } | 882 | } |
661 | 883 | ||
662 | -bool PlaceOrderDlg::GetCommName(CString &num, CString &name) | 884 | +bool PlaceOrderDlg::GetCommName(CString &num, CString& card, CString &name, CString &product_id) |
663 | { | 885 | { |
664 | - return true; | 886 | + bool result = true; |
887 | + | ||
888 | + LOG_TRACE(_T("获取商品名称!")); | ||
889 | + do | ||
890 | + { | ||
891 | + const uint32_t kHTTPOK = 200; | ||
892 | + WinHttp win_http; | ||
893 | + auto& url_cfg = URLConfig::Instance(); | ||
894 | + win_http.ConnectHost(url_cfg.Host(), url_cfg.Port(), url_cfg.IsHttps()); | ||
895 | + std::string url = url_cfg.GetCommNamePath() + "?cardNo=" + wstr_2_str(card) + "&shortCode=" + wstr_2_str(num); | ||
896 | + auto& request = win_http.OpenRequest(WinHttp::Method::POST, url); | ||
897 | + if (url_cfg.IsHttps()) | ||
898 | + { | ||
899 | + auto& app_cfg = ApplicationConfig::Instance(); | ||
900 | + request.SetClientCertificate(app_cfg.ClientCertStore(), app_cfg.ClientCertSubject()); | ||
901 | + } | ||
902 | + request.SetCookies(Session::Instance().Cookies()); | ||
903 | + request.Send(); | ||
904 | + uint32_t status_code = request.GetResponseStatus(); | ||
905 | + if (kHTTPOK != status_code) | ||
906 | + { | ||
907 | + std::string err_msg = "网络请求错误! 错误码: " + std::to_string(status_code); | ||
908 | + LOG_ERROR(str_2_wstr(err_msg.c_str())); | ||
909 | + name = CString(L"网络请求错误!"); | ||
910 | + result = false; | ||
911 | + break; | ||
912 | + } | ||
913 | + std::string response_body = request.ReadResponseBody(); | ||
914 | + if (response_body.empty()) | ||
915 | + { | ||
916 | + LOG_ERROR(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
917 | + name = CString(L"获取服务器响应数据失败,请确保网络连接正常!"); | ||
918 | + result = false; | ||
919 | + break; | ||
920 | + } | ||
921 | + | ||
922 | + namespace PT = boost::property_tree; | ||
923 | + bool card_res = false; | ||
924 | + try //Parse the configuration file | ||
925 | + { | ||
926 | + PT::ptree ptree; | ||
927 | + std::stringstream ss; | ||
928 | + ss << response_body; | ||
929 | + PT::read_json(ss, ptree); | ||
930 | + std::string res = ptree.get<std::string>("code"); | ||
931 | + card_res = res.compare(0) == 0 ? true : false; | ||
932 | + if (!card_res) | ||
933 | + { | ||
934 | + PT::ptree card_data = ptree.get_child("data"); | ||
935 | + name = ptree.get<std::string>("productName").c_str(); | ||
936 | + long id = ptree.get<long>("id"); | ||
937 | + product_id.Format(L"%ld", id); | ||
938 | + } | ||
939 | + else | ||
940 | + { | ||
941 | + std::string error_msg = ptree.get<std::string>("message"); | ||
942 | + name = CString(error_msg.c_str()); | ||
943 | + result = false; | ||
944 | + break; | ||
945 | + } | ||
946 | + | ||
947 | + } | ||
948 | + catch (...) | ||
949 | + { | ||
950 | + LOG_ERROR(L"解析服务器返回的登录结果信息时出错!请确认返回数据不为空,返回的数据格式为正确的Json格式!"); | ||
951 | + name = CString(L"解析服务器返回的登录结果信息时出错!请确认返回数据不为空,返回的数据格式为正确的Json格式!"); | ||
952 | + result = false; | ||
953 | + break; | ||
954 | + } | ||
955 | + } while (0); | ||
956 | + | ||
957 | + return result; | ||
665 | } | 958 | } |
666 | 959 | ||
667 | void PlaceOrderDlg::OnAcceleratorDown() | 960 | void PlaceOrderDlg::OnAcceleratorDown() |
@@ -822,12 +1115,19 @@ void PlaceOrderDlg::EmptyCtrl() | @@ -822,12 +1115,19 @@ void PlaceOrderDlg::EmptyCtrl() | ||
822 | price_edit_.SetWindowText(L""); | 1115 | price_edit_.SetWindowText(L""); |
823 | count_edit_.SetWindowText(L""); | 1116 | count_edit_.SetWindowText(L""); |
824 | 1117 | ||
825 | - card_edit_.SetFocus(); | 1118 | + buyer_card_edit_.SetWindowTextW(L""); |
1119 | + buyer_name_edit_.SetWindowTextW(L""); | ||
1120 | + total_real_money_static_.SetWindowTextW(L"0.00"); | ||
1121 | + | ||
826 | card_edit_.SetSel(4, 4); | 1122 | card_edit_.SetSel(4, 4); |
827 | } | 1123 | } |
828 | 1124 | ||
829 | void PlaceOrderDlg::OnBnClickedButtonSwipCard() | 1125 | void PlaceOrderDlg::OnBnClickedButtonSwipCard() |
830 | { | 1126 | { |
1127 | + EmptyCtrl(); | ||
1128 | + InitList(); | ||
1129 | + pay_button_.EnableWindow(FALSE); | ||
1130 | + | ||
831 | auto dili_card_device = ReadDILIAndBankCardNumCmd(); | 1131 | auto dili_card_device = ReadDILIAndBankCardNumCmd(); |
832 | HardwareCmd::Reply reply = dili_card_device.Execute(""); | 1132 | HardwareCmd::Reply reply = dili_card_device.Execute(""); |
833 | 1133 | ||
@@ -836,7 +1136,31 @@ void PlaceOrderDlg::OnBnClickedButtonSwipCard() | @@ -836,7 +1136,31 @@ void PlaceOrderDlg::OnBnClickedButtonSwipCard() | ||
836 | { | 1136 | { |
837 | if (reply.error_code.compare("") != 0) | 1137 | if (reply.error_code.compare("") != 0) |
838 | { | 1138 | { |
839 | - err_msg = "卡片异常!"; | 1139 | + if (reply.error_code.compare("300") == 0) |
1140 | + { | ||
1141 | + err_msg = "打开CPU卡读卡器失败"; | ||
1142 | + } | ||
1143 | + else if (reply.error_code.compare("301") == 0) | ||
1144 | + { | ||
1145 | + err_msg = "无法找到卡片,请放卡到读卡器上(或重新放置卡片)"; | ||
1146 | + } | ||
1147 | + else if (reply.error_code.compare("304") == 0) | ||
1148 | + { | ||
1149 | + err_msg = "读取卡片基本信息失败"; | ||
1150 | + } | ||
1151 | + else if (reply.error_code.compare("501") == 0) | ||
1152 | + { | ||
1153 | + err_msg = "读取银行卡卡号失败"; | ||
1154 | + } | ||
1155 | + else | ||
1156 | + { | ||
1157 | + err_msg = "读卡失败"; | ||
1158 | + } | ||
1159 | + std::wstring log = L"下单时读取买家卡失败,错误码:" + str_2_wstr(reply.error_code); | ||
1160 | + LOG_ERROR(log); | ||
1161 | + | ||
1162 | + buyer_card_edit_.SetWindowText(L""); | ||
1163 | + buyer_name_edit_.SetWindowText(L""); | ||
840 | break; | 1164 | break; |
841 | } | 1165 | } |
842 | 1166 | ||
@@ -846,13 +1170,15 @@ void PlaceOrderDlg::OnBnClickedButtonSwipCard() | @@ -846,13 +1170,15 @@ void PlaceOrderDlg::OnBnClickedButtonSwipCard() | ||
846 | boost::property_tree::ptree card_type_node = reply.data.get_child("type"); | 1170 | boost::property_tree::ptree card_type_node = reply.data.get_child("type"); |
847 | std::string card_type = card_type_node.data(); | 1171 | std::string card_type = card_type_node.data(); |
848 | 1172 | ||
849 | - if (!GetCardInfo(str_2_wstr(card_num).c_str(), err_msg)) | 1173 | + CString card_name; |
1174 | + if (!GetCardName(CString(card_num.c_str()), card_name, 1)) | ||
850 | { | 1175 | { |
1176 | + err_msg = card_name; | ||
851 | break; | 1177 | break; |
852 | } | 1178 | } |
853 | 1179 | ||
854 | - buyer_card_edit_.SetWindowText(card_info_.card_num); | ||
855 | - buyer_name_edit_.SetWindowText(card_info_.card_name); | 1180 | + buyer_card_edit_.SetWindowText(CString(card_num.c_str())); |
1181 | + buyer_name_edit_.SetWindowText(card_name); | ||
856 | 1182 | ||
857 | EnableCtrl(true); | 1183 | EnableCtrl(true); |
858 | 1184 | ||
@@ -862,6 +1188,11 @@ void PlaceOrderDlg::OnBnClickedButtonSwipCard() | @@ -862,6 +1188,11 @@ void PlaceOrderDlg::OnBnClickedButtonSwipCard() | ||
862 | { | 1188 | { |
863 | SetErrorMsg(err_msg); | 1189 | SetErrorMsg(err_msg); |
864 | } | 1190 | } |
1191 | + else | ||
1192 | + { | ||
1193 | + SetErrorMsg(CString(L"")); | ||
1194 | + } | ||
1195 | + | ||
865 | 1196 | ||
866 | } | 1197 | } |
867 | 1198 | ||
@@ -886,8 +1217,64 @@ void PlaceOrderDlg::EnableCtrl(bool is_enable) | @@ -886,8 +1217,64 @@ void PlaceOrderDlg::EnableCtrl(bool is_enable) | ||
886 | } | 1217 | } |
887 | } | 1218 | } |
888 | 1219 | ||
889 | -bool PlaceOrderDlg::GetCardInfo(CString num, CString &err_msg) | 1220 | +afx_msg LRESULT PlaceOrderDlg::DeleteComm(WPARAM wParam, LPARAM lParam) |
890 | { | 1221 | { |
891 | - return true; | ||
892 | -} | 1222 | + CCellID select_cell = product_list_.GetFocusCell(); |
1223 | + int delete_comm_id = product_list_.GetCell(select_cell)->data_id; | ||
1224 | + for (std::vector<CommInfo>::iterator iter = comm_vec_.begin(); iter != comm_vec_.end(); ++iter) | ||
1225 | + { | ||
1226 | + if (iter->comm_id == delete_comm_id) | ||
1227 | + { | ||
1228 | + comm_vec_.erase(iter); | ||
1229 | + break; | ||
1230 | + } | ||
1231 | + } | ||
1232 | + | ||
1233 | + product_list_.DeleteAllItems(); | ||
893 | 1234 | ||
1235 | + InitList(); | ||
1236 | + | ||
1237 | + for (int index = 0; index != comm_vec_.size(); ++index) | ||
1238 | + { | ||
1239 | + int row_index = product_list_.InsertRow(L"", -1); | ||
1240 | + product_list_.SetItemText(row_index, 0, comm_vec_[index].seller_card, comm_vec_[index].comm_id); | ||
1241 | + product_list_.SetItemText(row_index, 1, comm_vec_[index].seller_name, comm_vec_[index].comm_id); | ||
1242 | + product_list_.SetItemText(row_index, 2, comm_vec_[index].comm_name, comm_vec_[index].comm_id); | ||
1243 | + product_list_.SetItemText(row_index, 3, comm_vec_[index].price, comm_vec_[index].comm_id); | ||
1244 | + product_list_.SetItemText(row_index, 4, comm_vec_[index].count, comm_vec_[index].comm_id); | ||
1245 | + product_list_.SetItemText(row_index, 5, comm_vec_[index].unit, comm_vec_[index].comm_id); | ||
1246 | + product_list_.SetItemText(row_index, 6, comm_vec_[index].weight, comm_vec_[index].comm_id); | ||
1247 | + product_list_.SetItemText(row_index, 7, comm_vec_[index].total_money, comm_vec_[index].comm_id); | ||
1248 | + for (int index = 0; index < 8; ++index) | ||
1249 | + { | ||
1250 | + product_list_.SetItemFormat(row_index, index, DT_CENTER | DT_VCENTER | DT_SINGLELINE); | ||
1251 | + } | ||
1252 | + } | ||
1253 | + | ||
1254 | + SortList(); | ||
1255 | + | ||
1256 | + CString subtotal; | ||
1257 | + double total_price = 0; | ||
1258 | + int list_count = product_list_.GetRowCount(); | ||
1259 | + for (int index = 1; index <= list_count; ++index) | ||
1260 | + { | ||
1261 | + subtotal = product_list_.GetItemText(index, 7); | ||
1262 | + total_price += _ttof(subtotal); | ||
1263 | + } | ||
1264 | + | ||
1265 | + CString total_price_s; | ||
1266 | + total_price_s.Format(L"%.2f", total_price); | ||
1267 | + total_real_money_static_.SetWindowText(total_price_s); | ||
1268 | + | ||
1269 | + if (product_list_.GetRowCount() > 1) | ||
1270 | + { | ||
1271 | + pay_button_.EnableWindow(TRUE); | ||
1272 | + } | ||
1273 | + else | ||
1274 | + { | ||
1275 | + pay_button_.EnableWindow(FALSE); | ||
1276 | + } | ||
1277 | + | ||
1278 | + product_list_.Invalidate(TRUE); | ||
1279 | + return 0; | ||
1280 | +} |
central_clearing_system/ETradeClient/mfc_ui/place_order_dlg.h
@@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
7 | #include "../utility/win_http.h" | 7 | #include "../utility/win_http.h" |
8 | #include "etrade_edit_control.h" | 8 | #include "etrade_edit_control.h" |
9 | #include <string> | 9 | #include <string> |
10 | - | 10 | +#include "CellRange.h" |
11 | +#include "GridCell.h" | ||
12 | +#include <vector> | ||
11 | 13 | ||
12 | // PlaceOrderDlg 对话框 | 14 | // PlaceOrderDlg 对话框 |
13 | 15 | ||
@@ -15,6 +17,26 @@ class PlaceOrderDlg : public CDialogEx | @@ -15,6 +17,26 @@ class PlaceOrderDlg : public CDialogEx | ||
15 | { | 17 | { |
16 | DECLARE_DYNAMIC(PlaceOrderDlg) | 18 | DECLARE_DYNAMIC(PlaceOrderDlg) |
17 | 19 | ||
20 | + struct CardInfo | ||
21 | + { | ||
22 | + CString card_num; | ||
23 | + CString card_name; | ||
24 | + CString card_type; | ||
25 | + }; | ||
26 | + | ||
27 | + struct CommInfo | ||
28 | + { | ||
29 | + int comm_id; | ||
30 | + CString seller_card; | ||
31 | + CString seller_name; | ||
32 | + CString comm_name; | ||
33 | + CString price; | ||
34 | + CString count; | ||
35 | + CString unit; | ||
36 | + CString weight; | ||
37 | + CString total_money; | ||
38 | + }; | ||
39 | + | ||
18 | public: | 40 | public: |
19 | PlaceOrderDlg(CWnd* pParent = NULL); // 标准构造函数 | 41 | PlaceOrderDlg(CWnd* pParent = NULL); // 标准构造函数 |
20 | virtual ~PlaceOrderDlg(); | 42 | virtual ~PlaceOrderDlg(); |
@@ -26,6 +48,16 @@ public: | @@ -26,6 +48,16 @@ public: | ||
26 | virtual BOOL PreCreateWindow(CREATESTRUCT& cs); | 48 | virtual BOOL PreCreateWindow(CREATESTRUCT& cs); |
27 | afx_msg void OnPaint(); | 49 | afx_msg void OnPaint(); |
28 | afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); | 50 | afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); |
51 | + afx_msg void OnBnClickedButtonPay(); | ||
52 | + virtual BOOL PreTranslateMessage(MSG* pMsg); | ||
53 | + afx_msg void OnAcceleratorTab(); | ||
54 | + afx_msg void OnAcceleratorEnter(); | ||
55 | + afx_msg LRESULT OnEditKillFocus(WPARAM wParam, LPARAM lParam); | ||
56 | + afx_msg void OnAcceleratorDown(); | ||
57 | + afx_msg void OnAcceleratorUp(); | ||
58 | + afx_msg void OnSetFocus(CWnd* pOldWnd); | ||
59 | + afx_msg void OnBnClickedButtonSwipCard(); | ||
60 | + afx_msg LRESULT DeleteComm(WPARAM wParam, LPARAM lParam); | ||
29 | 61 | ||
30 | // 对话框数据 | 62 | // 对话框数据 |
31 | enum { IDD = IDD_DIALOG_PLACE_ORDER }; | 63 | enum { IDD = IDD_DIALOG_PLACE_ORDER }; |
@@ -35,12 +67,23 @@ protected: | @@ -35,12 +67,23 @@ protected: | ||
35 | 67 | ||
36 | DECLARE_MESSAGE_MAP() | 68 | DECLARE_MESSAGE_MAP() |
37 | 69 | ||
38 | - | ||
39 | private: | 70 | private: |
40 | void SetCtrlPos(); | 71 | void SetCtrlPos(); |
41 | void SetCtrlInitData(); | 72 | void SetCtrlInitData(); |
42 | void InitList(); | 73 | void InitList(); |
43 | -public: | 74 | + void SortList(); |
75 | + void EmptyCtrl(); | ||
76 | + void EnableCtrl(bool is_enable); | ||
77 | + | ||
78 | + int GetCommIndex(); | ||
79 | + | ||
80 | + bool GetUserName(CString &name); | ||
81 | + void SetErrorMsg(CString &error); | ||
82 | + bool GetCardName(CString &num, CString &name, int type); //type =1是买家,2是买家 | ||
83 | + bool GetCommName(CString &num, CString& card, CString &name, CString &product_id); | ||
84 | + | ||
85 | + | ||
86 | +private: | ||
44 | CStatic owner_static_; | 87 | CStatic owner_static_; |
45 | CEditBox card_edit_; | 88 | CEditBox card_edit_; |
46 | CEdit name_edit_; | 89 | CEdit name_edit_; |
@@ -58,59 +101,23 @@ public: | @@ -58,59 +101,23 @@ public: | ||
58 | CEditBox count_edit_; | 101 | CEditBox count_edit_; |
59 | CButton pay_button_; | 102 | CButton pay_button_; |
60 | CGridCtrl product_list_; | 103 | CGridCtrl product_list_; |
61 | - | ||
62 | - CPen line_pen_; | ||
63 | - CPoint line_point_[3]; | ||
64 | - | ||
65 | - CBrush edit_brush_; | ||
66 | -public: | ||
67 | - afx_msg void OnBnClickedButtonPay(); | ||
68 | -private: | ||
69 | CStatic total_money_static_; | 104 | CStatic total_money_static_; |
70 | CStatic total_real_money_static_; | 105 | CStatic total_real_money_static_; |
71 | - | ||
72 | - HACCEL acce_; | ||
73 | - | ||
74 | - bool GetUserName(CString &name); | ||
75 | - bool GetCommName(CString &name); | ||
76 | -public: | ||
77 | - virtual BOOL PreTranslateMessage(MSG* pMsg); | ||
78 | - afx_msg void OnAcceleratorTab(); | ||
79 | - afx_msg void OnAcceleratorEnter(); | ||
80 | - | ||
81 | - void SetErrorMsg(CString &error); | ||
82 | CStatic error_static_; | 106 | CStatic error_static_; |
83 | - | ||
84 | - afx_msg LRESULT OnEditKillFocus(WPARAM wParam, LPARAM lParam); | ||
85 | - | ||
86 | - bool GetCardName(CString &num, CString &name); | ||
87 | - bool GetCommName(CString &num, CString &name); | ||
88 | - | ||
89 | - struct CardInfo | ||
90 | - { | ||
91 | - CString card_num; | ||
92 | - CString card_name; | ||
93 | - CString card_type; | ||
94 | - }; | ||
95 | - | ||
96 | - CardInfo card_info_; | ||
97 | - bool GetCardInfo(CString num, CString &err_msg); | ||
98 | - | ||
99 | - afx_msg void OnAcceleratorDown(); | ||
100 | - afx_msg void OnAcceleratorUp(); | ||
101 | - afx_msg void OnSetFocus(CWnd* pOldWnd); | ||
102 | - | ||
103 | - void SortList(); | ||
104 | - | ||
105 | - void EmptyCtrl(); | ||
106 | CStatic buyer_static_; | 107 | CStatic buyer_static_; |
107 | CEditBox buyer_card_edit_; | 108 | CEditBox buyer_card_edit_; |
108 | CEditBox buyer_name_edit_; | 109 | CEditBox buyer_name_edit_; |
109 | CButton swip_card_button_; | 110 | CButton swip_card_button_; |
110 | - afx_msg void OnBnClickedButtonSwipCard(); | ||
111 | 111 | ||
112 | - //std::string card_num_; | ||
113 | - //std::string card_type_; | 112 | + CPen line_pen_; |
113 | + CPoint line_point_[3]; | ||
114 | + CBrush edit_brush_; | ||
114 | 115 | ||
115 | - void EnableCtrl(bool is_enable); | 116 | + HACCEL acce_; |
117 | + | ||
118 | + CString product_id_; | ||
119 | + int buyer_card_type_; | ||
120 | + | ||
121 | + std::vector<CommInfo> comm_vec_; | ||
122 | + int comm_id_index_; | ||
116 | }; | 123 | }; |
central_clearing_system/ETradeClient/utility/menu_res_auth_mgr.cpp
@@ -141,9 +141,6 @@ void MenuResAuthMgr::DoUpdateAuth(const std::string& auth_data) | @@ -141,9 +141,6 @@ void MenuResAuthMgr::DoUpdateAuth(const std::string& auth_data) | ||
141 | auth_item.id = elem.second.get<uint32_t>("code"); | 141 | auth_item.id = elem.second.get<uint32_t>("code"); |
142 | auth_item.url_path = elem.second.get<std::string>("path"); | 142 | auth_item.url_path = elem.second.get<std::string>("path"); |
143 | auth_item.remark = str_2_wstr(elem.second.get<std::string>("name")); | 143 | auth_item.remark = str_2_wstr(elem.second.get<std::string>("name")); |
144 | - /*auth_item.id = elem.second.get<uint32_t>("id"); | ||
145 | - auth_item.url_path = elem.second.get<std::string>("url_path"); | ||
146 | - auth_item.remark = str_2_wstr(elem.second.get<std::string>("remark"));*/ | ||
147 | menu_auth_items.emplace_back(auth_item); | 144 | menu_auth_items.emplace_back(auth_item); |
148 | } | 145 | } |
149 | } | 146 | } |
central_clearing_system/ETradeClient/utility/url_config.cpp
@@ -61,8 +61,11 @@ URLConfig::URLConfig() | @@ -61,8 +61,11 @@ URLConfig::URLConfig() | ||
61 | m_user_msg_count_path = ptree.get<std::string>("user_msg_count_path"); | 61 | m_user_msg_count_path = ptree.get<std::string>("user_msg_count_path"); |
62 | m_user_msg_path = ptree.get<std::string>("user_msg_path"); | 62 | m_user_msg_path = ptree.get<std::string>("user_msg_path"); |
63 | m_modify_pwd_path = ptree.get<std::string>("modify_pwd_path"); | 63 | m_modify_pwd_path = ptree.get<std::string>("modify_pwd_path"); |
64 | - m_get_card_name_path = ptree.get<std::string>("get_card_name"); | ||
65 | - | 64 | + m_get_card_name_path = ptree.get<std::string>("get_card_name_path"); |
65 | + m_get_seller_card_path = ptree.get<std::string>("get_seller_card_path"); | ||
66 | + m_get_product_path = ptree.get<std::string>("get_product_name_path"); | ||
67 | + m_submit_orders_path = ptree.get<std::string>("submit_orders_path"); | ||
68 | + m_finish_order_path = ptree.get<std::string>("finish_order_path"); | ||
66 | } | 69 | } |
67 | catch (...) // Catch the exception in order for logging. | 70 | catch (...) // Catch the exception in order for logging. |
68 | { | 71 | { |
@@ -94,6 +97,9 @@ void URLConfig::ModifyCfg(bool is_https, uint16_t port) | @@ -94,6 +97,9 @@ void URLConfig::ModifyCfg(bool is_https, uint16_t port) | ||
94 | root.put("user_msg_path", m_user_msg_path); | 97 | root.put("user_msg_path", m_user_msg_path); |
95 | root.put("modify_pwd_path", m_modify_pwd_path); | 98 | root.put("modify_pwd_path", m_modify_pwd_path); |
96 | root.put("get_card_name_path", m_get_card_name_path); | 99 | root.put("get_card_name_path", m_get_card_name_path); |
100 | + root.put("get_product_name_path", m_get_product_path); | ||
101 | + root.put("submit_orders_path", m_submit_orders_path); | ||
102 | + root.put("finish_order_path", m_finish_order_path); | ||
97 | PT::write_json(ss, root, true); | 103 | PT::write_json(ss, root, true); |
98 | } | 104 | } |
99 | catch (...) // Catch the exception in order for logging. | 105 | catch (...) // Catch the exception in order for logging. |
@@ -173,4 +179,16 @@ std::string URLConfig::PwdModificationPath() const | @@ -173,4 +179,16 @@ std::string URLConfig::PwdModificationPath() const | ||
173 | std::string URLConfig::GetCardNamePath() const | 179 | std::string URLConfig::GetCardNamePath() const |
174 | { | 180 | { |
175 | return m_get_card_name_path; | 181 | return m_get_card_name_path; |
182 | +} | ||
183 | +std::string URLConfig::GetCommNamePath() const | ||
184 | +{ | ||
185 | + return m_get_product_path; | ||
186 | +} | ||
187 | +std::string URLConfig::GetSubmitOrdersPath() const | ||
188 | +{ | ||
189 | + return m_submit_orders_path; | ||
190 | +} | ||
191 | +std::string URLConfig::GetSellerCardPath() const | ||
192 | +{ | ||
193 | + return m_get_seller_path; | ||
176 | } | 194 | } |
177 | \ No newline at end of file | 195 | \ No newline at end of file |
central_clearing_system/ETradeClient/utility/url_config.h
@@ -30,6 +30,9 @@ public: | @@ -30,6 +30,9 @@ public: | ||
30 | std::string UserMsgPath() const; | 30 | std::string UserMsgPath() const; |
31 | std::string PwdModificationPath() const; | 31 | std::string PwdModificationPath() const; |
32 | std::string GetCardNamePath() const; | 32 | std::string GetCardNamePath() const; |
33 | + std::string GetCommNamePath() const; | ||
34 | + std::string GetSubmitOrdersPath() const; | ||
35 | + std::string GetSellerCardPath() const; | ||
33 | private: | 36 | private: |
34 | URLConfig(); | 37 | URLConfig(); |
35 | URLConfig(const URLConfig&); | 38 | URLConfig(const URLConfig&); |
@@ -47,5 +50,10 @@ private: | @@ -47,5 +50,10 @@ private: | ||
47 | std::string m_user_msg_path; | 50 | std::string m_user_msg_path; |
48 | std::string m_modify_pwd_path; | 51 | std::string m_modify_pwd_path; |
49 | std::string m_get_card_name_path; | 52 | std::string m_get_card_name_path; |
53 | + std::string m_get_seller_card_path; | ||
54 | + std::string m_get_seller_path; | ||
55 | + std::string m_get_product_path; | ||
56 | + std::string m_submit_orders_path; | ||
57 | + std::string m_finish_order_path; | ||
50 | }; | 58 | }; |
51 | #endif // ETRADECLIENT_UTILITY_URL_CONFIG_H_INCLUDED | 59 | #endif // ETRADECLIENT_UTILITY_URL_CONFIG_H_INCLUDED |
central_clearing_system/ETradeClient/utility/win_msg_define.h
@@ -23,6 +23,7 @@ | @@ -23,6 +23,7 @@ | ||
23 | #define WM_CEF_MSG_VIEW_CLOSE_BROWSER (WM_USER + 117) | 23 | #define WM_CEF_MSG_VIEW_CLOSE_BROWSER (WM_USER + 117) |
24 | #define WM_CRASH_CLOSE (WM_USER + 118) | 24 | #define WM_CRASH_CLOSE (WM_USER + 118) |
25 | #define WM_ORDER_KILL_FOCUS (WM_USER + 119) | 25 | #define WM_ORDER_KILL_FOCUS (WM_USER + 119) |
26 | +#define WM_ORDER_DELETE_ORDER (WM_USER + 120) | ||
26 | 27 | ||
27 | #define WM_CEF_JS_CAMMAND_CLOSE_WND (WM_USER + 301) | 28 | #define WM_CEF_JS_CAMMAND_CLOSE_WND (WM_USER + 301) |
28 | #define WM_CEF_JS_CAMMAND_USER_RELOGIN (WM_USER + 302) | 29 | #define WM_CEF_JS_CAMMAND_USER_RELOGIN (WM_USER + 302) |
central_clearing_system/Resource.h
@@ -68,33 +68,49 @@ | @@ -68,33 +68,49 @@ | ||
68 | #define IDC_PAY_BUTTON_CLOSE 1051 | 68 | #define IDC_PAY_BUTTON_CLOSE 1051 |
69 | #define IDC_PAY_BUTTON_PAY 1052 | 69 | #define IDC_PAY_BUTTON_PAY 1052 |
70 | #define IDC_PAY_STATIC_REAL_MONEY 1053 | 70 | #define IDC_PAY_STATIC_REAL_MONEY 1053 |
71 | -#define ID_PAY_FEE 10001 | ||
72 | -#define ID_ORDER 10002 | ||
73 | -#define ID_STATEMENT_MANAGE 10003 | ||
74 | -#define ID_ORDERFORM_MANAGE 10004 | 71 | +#define IDC_STATIC_ERROR_MSG 1054 |
72 | + | ||
73 | +#define ID_ORDER 10001 | ||
74 | +#define ID_STATEMENT_MANAGE 10002 | ||
75 | +#define ID_ORDERFORM_MANAGE 10003 | ||
76 | + | ||
75 | #define ID_EXIT 11001 | 77 | #define ID_EXIT 11001 |
76 | #define ID_MODIFY_PASSWORD 11002 | 78 | #define ID_MODIFY_PASSWORD 11002 |
77 | -#define ID_USER_MANAGE 20001 | ||
78 | -#define ID_ROLE_MANAGE 20002 | ||
79 | -#define ID_RIGHT_MANAGE 20003 | ||
80 | -#define ID_32845 32845 | 79 | + |
80 | +#define ID_COMM_REGIST 20001 | ||
81 | +#define ID_COMM_DISTRIB 20002 | ||
82 | +#define ID_QUERY_MANAGE 20003 | ||
83 | + | ||
84 | +#define ID_SPECIAL_HANDLE 30001 | ||
85 | + | ||
86 | +#define ID_POINT_RULE 40001 | ||
87 | +#define ID_CATEGORY_RULE 40002 | ||
88 | +#define ID_AGREEMENT 40003 | ||
89 | +#define ID_TAPE_HANDLE 40004 | ||
90 | +#define ID_CREDIT 40005 | ||
91 | + | ||
92 | +#define ID_USER_MANAGE 50001 | ||
93 | +#define ID_ROLE_MANAGE 50002 | ||
94 | +#define ID_PARAM_SET 50003 | ||
95 | +#define ID_LOG 50004 | ||
96 | + | ||
81 | #define ID_MENU_DELETE 32846 | 97 | #define ID_MENU_DELETE 32846 |
82 | -#define ID_32847 32847 | ||
83 | #define ID_POPMENU_LIST 32848 | 98 | #define ID_POPMENU_LIST 32848 |
84 | -#define ID_32849 32849 | ||
85 | #define ID_POPMENU_DELETE 32850 | 99 | #define ID_POPMENU_DELETE 32850 |
86 | #define ID_ACCELERATOR_TAB 32851 | 100 | #define ID_ACCELERATOR_TAB 32851 |
87 | #define ID_ACCELERATOR_ENTER 32852 | 101 | #define ID_ACCELERATOR_ENTER 32852 |
88 | #define ID_ACCELERATOR_UP 32854 | 102 | #define ID_ACCELERATOR_UP 32854 |
89 | #define ID_ACCELERATOR_DOWN 32855 | 103 | #define ID_ACCELERATOR_DOWN 32855 |
104 | +#define ID_ACCELERATOR_F11 32857 | ||
105 | + | ||
90 | 106 | ||
91 | // Next default values for new objects | 107 | // Next default values for new objects |
92 | // | 108 | // |
93 | #ifdef APSTUDIO_INVOKED | 109 | #ifdef APSTUDIO_INVOKED |
94 | #ifndef APSTUDIO_READONLY_SYMBOLS | 110 | #ifndef APSTUDIO_READONLY_SYMBOLS |
95 | #define _APS_NEXT_RESOURCE_VALUE 332 | 111 | #define _APS_NEXT_RESOURCE_VALUE 332 |
96 | -#define _APS_NEXT_COMMAND_VALUE 32857 | ||
97 | -#define _APS_NEXT_CONTROL_VALUE 1054 | 112 | +#define _APS_NEXT_COMMAND_VALUE 32883 |
113 | +#define _APS_NEXT_CONTROL_VALUE 1055 | ||
98 | #define _APS_NEXT_SYMED_VALUE 311 | 114 | #define _APS_NEXT_SYMED_VALUE 311 |
99 | #endif | 115 | #endif |
100 | #endif | 116 | #endif |
central_clearing_system/out/Win32/Debug.zip
0 → 100644
No preview for this file type