CHuiyuanPageUI.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. #include "../pch/pch.h"
  2. #include "CHuiyuanPageUI.h"
  3. #include "../wnd/CHuiyuanChongzhiWnd.h"
  4. CHuiyuanPageUI::CHuiyuanPageUI()
  5. {
  6. }
  7. CHuiyuanPageUI::~CHuiyuanPageUI()
  8. {
  9. }
  10. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
  11. void CHuiyuanPageUI::InitShow()
  12. {
  13. CEditUI* pFukuanEdit = static_cast<CEditUI*>(this->FindSubControl(_T("huiyuan_page_shoujihao_edit")));
  14. pFukuanEdit->SetFocus();
  15. }
  16. //处理按钮点击类事件
  17. void CHuiyuanPageUI::HandleClickMsg(TNotifyUI& msg)
  18. {
  19. CDuiString name = msg.pSender->GetName();
  20. if (name == _T("huiiyuan_page_sousuo_btn"))
  21. {
  22. StartHuiyuanSousuo();
  23. }
  24. else if (name == L"huiiyuan_page_chongzhi_btn")
  25. {
  26. StartHuiyuanChongzhi();
  27. }
  28. }
  29. //处理option切换事件
  30. void CHuiyuanPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
  31. {
  32. }
  33. //处理下拉框、radio的切换事件
  34. void CHuiyuanPageUI::HandleItemSelectMsg(TNotifyUI& msg)
  35. {
  36. }
  37. //处理编辑框输入内容改变事件
  38. void CHuiyuanPageUI::HandleTextChangedMsg(TNotifyUI& msg)
  39. {
  40. DuiLib::CDuiString senderName = msg.pSender->GetName();
  41. if (senderName == L"huiyuan_page_shoujihao_edit")
  42. {
  43. //只能输入数字,其他的全部删除
  44. CEditUI* m_pEdit = static_cast<CEditUI*>(this->FindSubControl(_T("huiyuan_page_shoujihao_edit")));
  45. if (!m_pEdit->GetText().IsEmpty())
  46. {
  47. wstring ws_Value = m_pEdit->GetText();
  48. string strValue = CLewaimaiString::UnicodeToUTF8(ws_Value);
  49. for (size_t nIndex = 0; nIndex < strValue.length(); nIndex++)
  50. {
  51. unsigned char tmp = strValue.at(nIndex);
  52. if (tmp > 57 || tmp < 48)
  53. {
  54. //ASCII码不是数字的都过滤掉
  55. strValue = strValue.substr(0, nIndex);
  56. m_pEdit->SetText(CLewaimaiString::UTF8ToUnicode(strValue).c_str());
  57. m_pEdit->SetSel(strValue.length(), strValue.length());//重设给光标设置位置
  58. break;
  59. }
  60. }
  61. }
  62. }
  63. }
  64. //处理扫码枪捕捉到的扫码信息
  65. void CHuiyuanPageUI::HandleTextCapture(std::string content)
  66. {
  67. if (m_is_show_modal_wnd == true)
  68. {
  69. m_curModalWnd->HandleTextCapture(content);
  70. }
  71. }
  72. void CHuiyuanPageUI::StartHuiyuanSousuo()
  73. {
  74. if (m_is_handle == true)
  75. {
  76. return;
  77. }
  78. CEditUI* m_pEdit = static_cast<CEditUI*>(this->FindSubControl(_T("huiyuan_page_shoujihao_edit")));
  79. std::wstring ws_phone = m_pEdit->GetText();
  80. if (ws_phone.length() != 11)
  81. {
  82. //手机号格式错误
  83. ShowError(L"手机号格式不对!");
  84. }
  85. //手机号格式正确,开始处理
  86. m_is_handle = true;
  87. m_phone = CLewaimaiString::UnicodeToUTF8(ws_phone);
  88. std::map<string, string> params;
  89. params["phone"] = m_phone;
  90. std::string response;
  91. bool ret = CZhipuziHttpClient::Request("/member/membercheckbyphone", params, response);
  92. if (!ret)
  93. {
  94. ShowError(L"网络请求出错");
  95. m_is_handle = false;
  96. return;
  97. }
  98. rapidjson::Document document;
  99. document.Parse(response.c_str());
  100. if (document.HasParseError())
  101. {
  102. ShowError(L"服务器返回数据格式错误");
  103. m_is_handle = false;
  104. return;
  105. }
  106. else
  107. {
  108. if (!document.HasMember("errcode") || !document.HasMember("errmsg"))
  109. {
  110. ShowError(L"服务器返回数据格式错误");
  111. m_is_handle = false;
  112. return;
  113. }
  114. rapidjson::Value& v_errcode = document["errcode"];
  115. int errcode = v_errcode.GetInt();
  116. if (errcode != 0)
  117. {
  118. std::string errmsg = CLewaimaiString::UnicodeToUTF8(L"搜索结果:") + string(document["errmsg"].GetString());
  119. std::wstring m_errorInfo = CLewaimaiString::UTF8ToUnicode(errmsg);
  120. ShowError(m_errorInfo);
  121. m_is_handle = false;
  122. return;
  123. }
  124. rapidjson::Value& data = document["data"];
  125. rapidjson::Value& rows = data["rows"];
  126. if (rows.Size() < 1)
  127. {
  128. ShowError(L"会员信息为空");
  129. m_is_handle = false;
  130. return;
  131. }
  132. rapidjson::Value& rowinfo = rows[0];
  133. std::string member_name = rowinfo["name"].GetString();
  134. std::string phone = rowinfo["phone"].GetString();
  135. std::string sex = rowinfo["sex"].GetString();
  136. std::string birthday = rowinfo["birthday"].GetString();
  137. std::string balance = rowinfo["balance"].GetString();
  138. std::string member_level_name = rowinfo["member_level_name"].GetString();
  139. m_member_id = rowinfo["id"].GetString();
  140. m_balance = balance;
  141. m_member_card_no = rowinfo["card_no"].GetString();
  142. this->FindSubControl(L"huiyuan_name")->SetText((L"会员姓名:" + CLewaimaiString::UTF8ToUnicode(member_name)).c_str());
  143. this->FindSubControl(L"huiyuan_phone")->SetText((L"电话:" + CLewaimaiString::UTF8ToUnicode(phone)).c_str());
  144. this->FindSubControl(L"huiyuan_sex")->SetText((L"性别:" + CLewaimaiString::UTF8ToUnicode(sex)).c_str());
  145. this->FindSubControl(L"huiyuan_birthday")->SetText((L"生日:" + CLewaimaiString::UTF8ToUnicode(birthday)).c_str());
  146. this->FindSubControl(L"huiyuan_levelname")->SetText((L"会员级别:" + CLewaimaiString::UTF8ToUnicode(member_level_name)).c_str());
  147. this->FindSubControl(L"huiyuan_yue")->SetText((L"当前余额:" + CLewaimaiString::UTF8ToUnicode(balance)).c_str());
  148. this->FindSubControl(L"huiyuan_info_layout")->SetVisible(true);
  149. this->FindSubControl(L"huiyuan_page_no_layout")->SetVisible(false);
  150. m_is_handle = false;
  151. }
  152. }
  153. void CHuiyuanPageUI::ShowError(std::wstring err)
  154. {
  155. CLabelUI* m_pLabel= static_cast<CLabelUI*>(this->FindSubControl(_T("errorinfo")));
  156. m_pLabel->SetText(err.c_str());
  157. m_pLabel->SetVisible(true);
  158. this->FindSubControl(L"huiyuan_info_layout")->SetVisible(false);
  159. this->FindSubControl(L"huiyuan_page_no_layout")->SetVisible(true);
  160. }
  161. void CHuiyuanPageUI::StartHuiyuanChongzhi()
  162. {
  163. if (m_is_show_modal_wnd == true)
  164. {
  165. return;
  166. }
  167. CHuiyuanChongzhiWnd* pShoukuanWnd = new CHuiyuanChongzhiWnd();
  168. if (pShoukuanWnd != NULL)
  169. {
  170. m_is_show_modal_wnd = true;
  171. m_curModalWnd = pShoukuanWnd;
  172. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  173. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  174. pShoukuanWnd->CenterWindow();
  175. pShoukuanWnd->SetCurBalance(m_balance);
  176. pShoukuanWnd->m_member_id = m_member_id;
  177. pShoukuanWnd->m_member_card_no = m_member_card_no;
  178. UINT ret = pShoukuanWnd->ShowModal();
  179. if (ret == IDOK)
  180. {
  181. }
  182. m_is_show_modal_wnd = false;
  183. delete pShoukuanWnd;
  184. }
  185. }