|
|
@@ -1,4 +1,4 @@
|
|
|
-#include "../pch/pch.h"
|
|
|
+#include "../pch/pch.h"
|
|
|
#include "CLoginWnd.h"
|
|
|
#include "CUpdateWnd.h"
|
|
|
|
|
|
@@ -6,11 +6,11 @@
|
|
|
|
|
|
void CLoginWnd::Init()
|
|
|
{
|
|
|
- //刷新版本号
|
|
|
+ //刷新版本号
|
|
|
CLabelUI* version = static_cast<CLabelUI*>(m_pm.FindControl(_T("login_version")));
|
|
|
- version->SetText((L"智铺子收银系统 " + CLewaimaiString::UTF8ToUnicode(CSystem::GetVersion())).c_str());
|
|
|
+ version->SetText((L"智铺子收银系统 " + CLewaimaiString::UTF8ToUnicode(CSystem::GetVersion())).c_str());
|
|
|
|
|
|
- //初始化下拉框的用户名
|
|
|
+ //鍒濆�鍖栦笅鎷夋�鐨勭敤鎴峰悕
|
|
|
CComboUI* pCom = static_cast<CComboUI*>(m_pm.FindControl(_T("accountcombo")));
|
|
|
|
|
|
std::map<string, string> users = CSetting::getUsers();
|
|
|
@@ -38,7 +38,7 @@ void CLoginWnd::Init()
|
|
|
|
|
|
if (CSetting::GetParam("setting_is_auto_login") == "1")
|
|
|
{
|
|
|
- //自动登录开启了,记住密码一定要开启
|
|
|
+ //自动登录开启了,记住密码一定要开启
|
|
|
pAuto->Selected(true, false);
|
|
|
pRemember->Selected(true, false);
|
|
|
}
|
|
|
@@ -144,7 +144,7 @@ LRESULT CLoginWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHand
|
|
|
styleValue &= ~WS_CAPTION;
|
|
|
::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
|
|
|
|
|
|
- // 把自己的窗口句柄与窗口绘制管理器挂接在一起
|
|
|
+ // 把自己的窗口句柄与窗口绘制管理器挂接在一起
|
|
|
m_pm.Init(m_hWnd);
|
|
|
m_pm.AddPreMessageFilter(this);
|
|
|
|
|
|
@@ -153,10 +153,10 @@ LRESULT CLoginWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHand
|
|
|
CControlUI* pRoot = builder.Create(_T("login.xml"), (UINT)0, NULL, &m_pm);
|
|
|
ASSERT(pRoot && "Failed to parse XML");
|
|
|
|
|
|
- // 把这些控件绘制到本窗口上
|
|
|
+ // 鎶婅繖浜涙帶浠剁粯鍒跺埌鏈�獥鍙d笂
|
|
|
m_pm.AttachDialog(pRoot);
|
|
|
|
|
|
- // 把自己加入到CPaintManagerUI的m_aNotifiers数组中,用于处理Notify函数
|
|
|
+ // 鎶婅嚜宸卞姞鍏ュ埌CPaintManagerUI鐨刴_aNotifiers鏁扮粍涓�紝鐢ㄤ簬澶勭悊Notify鍑芥暟
|
|
|
m_pm.AddNotifier(this);
|
|
|
|
|
|
Init();
|
|
|
@@ -171,7 +171,7 @@ LRESULT CLoginWnd::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandl
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- *这个是窗口被销毁的时候调用的
|
|
|
+ *杩欎釜鏄�獥鍙h�閿€姣佺殑鏃跺€欒皟鐢ㄧ殑
|
|
|
**/
|
|
|
LRESULT CLoginWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
|
{
|
|
|
@@ -195,7 +195,7 @@ LRESULT CLoginWnd::OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b
|
|
|
|
|
|
LRESULT CLoginWnd::OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
|
{
|
|
|
- //在这里设置焦点才有用
|
|
|
+ //鍦ㄨ繖閲岃�缃�劍鐐规墠鏈夌敤
|
|
|
CEditUI* pAccountEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
|
|
|
if (pAccountEdit)
|
|
|
{
|
|
|
@@ -312,7 +312,7 @@ LRESULT CLoginWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool&
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //这里如果不把焦点设置为窗口,登录的时候会显示输入框(好像是个bug?获得焦点的控件无法隐藏?)
|
|
|
+ //杩欓噷濡傛灉涓嶆妸鐒︾偣璁剧疆涓虹獥鍙o紝鐧诲綍鐨勬椂鍊欎細鏄剧ず杈撳叆妗嗭紙濂藉儚鏄�釜bug锛熻幏寰楃劍鐐圭殑鎺т欢鏃犳硶闅愯棌锛燂級
|
|
|
SetFocus(this->GetHWND());
|
|
|
|
|
|
this->StartLogin();
|
|
|
@@ -339,7 +339,7 @@ LRESULT CLoginWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool&
|
|
|
}
|
|
|
else if (uMsg == WM_NEED_UPDATE)
|
|
|
{
|
|
|
- //说明需要升级了
|
|
|
+ //璇存槑闇€瑕佸崌绾т簡
|
|
|
|
|
|
ShowUpdate();
|
|
|
|
|
|
@@ -361,7 +361,7 @@ LRESULT CLoginWnd::MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, bool&
|
|
|
|
|
|
void CLoginWnd::StartLogin()
|
|
|
{
|
|
|
- //隐藏密码输入框,显示进度条
|
|
|
+ //隐藏密码输入框,显示进度条
|
|
|
CVerticalLayoutUI* pInput = static_cast<CVerticalLayoutUI*>(m_pm.FindControl(_T("login_input")));
|
|
|
pInput->SetVisible(false);
|
|
|
|
|
|
@@ -374,7 +374,7 @@ void CLoginWnd::StartLogin()
|
|
|
CLabelUI* pLoginResultLabel = static_cast<CLabelUI*>(m_pm.FindControl(_T("loginresult")));
|
|
|
pLoginResultLabel->SetVisible(false);
|
|
|
|
|
|
- //开启一个线程,开始处理登录
|
|
|
+ //开启一个线程,开始处理登录
|
|
|
std::thread(&CLoginWnd::HandleLogin, this).detach();
|
|
|
}
|
|
|
|
|
|
@@ -382,14 +382,14 @@ void CLoginWnd::HandleLogin()
|
|
|
{
|
|
|
CLabelUI* pLoginResultLabel = static_cast<CLabelUI*>(m_pm.FindControl(_T("loginresult")));
|
|
|
|
|
|
- //真正登录前,先检测是否有需要更新
|
|
|
+ //真正登录前,先检测是否有需要更新
|
|
|
std::map<string, string> params;
|
|
|
|
|
|
std::string response;
|
|
|
bool ret = CZhipuziHttpClient::RequestPingtaiNew("/version/getwindowsposversion", params, response);
|
|
|
if (!ret)
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("网络请求出错");
|
|
|
+ m_wsLoginErrMsg = _T("缃戠粶璇锋眰鍑洪敊");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return;
|
|
|
@@ -400,7 +400,7 @@ void CLoginWnd::HandleLogin()
|
|
|
|
|
|
if (document.HasParseError())
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("服务器返回数据格式错误");
|
|
|
+ m_wsLoginErrMsg = _T("服务器返回数据格式错误");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return;
|
|
|
@@ -409,7 +409,7 @@ void CLoginWnd::HandleLogin()
|
|
|
{
|
|
|
if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("服务器返回数据格式错误");
|
|
|
+ m_wsLoginErrMsg = _T("服务器返回数据格式错误");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return;
|
|
|
@@ -433,13 +433,13 @@ void CLoginWnd::HandleLogin()
|
|
|
|
|
|
if (newest_version > CSystem::GetVersion())
|
|
|
{
|
|
|
- //说明有新版本,要更新
|
|
|
+ //璇存槑鏈夋柊鐗堟湰锛岃�鏇存柊
|
|
|
PostMessage(WM_NEED_UPDATE);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //判断账号密码是否正确
|
|
|
+ //鍒ゆ柇璐﹀彿瀵嗙爜鏄�惁姝g‘
|
|
|
std::wstring account, password;
|
|
|
CEditUI* pAccountEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
|
|
|
if(pAccountEdit)
|
|
|
@@ -453,8 +453,8 @@ void CLoginWnd::HandleLogin()
|
|
|
password = pPasswordEdit->GetText().GetData();
|
|
|
}
|
|
|
|
|
|
- //把第1个中文冒号替换成英文冒号
|
|
|
- CLewaimaiString::Replace(account, _T(":"), _T(":"), 1);
|
|
|
+ //鎶婄�1涓�腑鏂囧啋鍙锋浛鎹㈡垚鑻辨枃鍐掑彿
|
|
|
+ CLewaimaiString::Replace(account, _T(":"), _T(":"), 1);
|
|
|
|
|
|
//LOG_INFO("account:" << account.c_str() << ", password:" << password.c_str());
|
|
|
|
|
|
@@ -466,7 +466,7 @@ void CLoginWnd::HandleLogin()
|
|
|
|
|
|
if (s_account.compare("") == 0)
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("用户名不能为空");
|
|
|
+ m_wsLoginErrMsg = _T("用户名不能为空");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return;
|
|
|
@@ -474,7 +474,7 @@ void CLoginWnd::HandleLogin()
|
|
|
|
|
|
if (s_password.compare("") == 0)
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("密码不能为空");
|
|
|
+ m_wsLoginErrMsg = _T("瀵嗙爜涓嶈兘涓虹┖");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return;
|
|
|
@@ -487,6 +487,15 @@ void CLoginWnd::HandleLogin()
|
|
|
|
|
|
if(res)
|
|
|
{
|
|
|
+ //判断当前shop_id是否为0,如果为0说明是主账号还没有绑定店铺,那么就跳转进行店铺绑定
|
|
|
+ if (CShopinfo::m_shopinfo.m_is_shop == "0")
|
|
|
+ {
|
|
|
+ m_wsLoginErrMsg = _T("涓昏处鍙锋湭缁戝畾搴楅摵");
|
|
|
+ PostMessage(WM_LOGIN_ERROR);
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
CCheckBoxUI* pAuto = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_auto_login")));
|
|
|
CCheckBoxUI* pRemember = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("login_remember_password")));
|
|
|
|
|
|
@@ -495,7 +504,7 @@ void CLoginWnd::HandleLogin()
|
|
|
CSetting::SetParam("setting_is_auto_login", "1", false);
|
|
|
CSetting::SetParam("setting_is_remember_password", "1", false);
|
|
|
|
|
|
- //相当于开启自动登录,默认就是开启了记住密码了
|
|
|
+ //相当于开启自动登录,默认就是开启了记住密码了
|
|
|
CSetting::SetUser(s_account, s_password, true);
|
|
|
}
|
|
|
else
|
|
|
@@ -522,28 +531,37 @@ void CLoginWnd::HandleLogin()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //在这里设置完参数后,统一保存到数据库
|
|
|
+ //鍦ㄨ繖閲岃�缃�畬鍙傛暟鍚庯紝缁熶竴淇濆瓨鍒版暟鎹�簱
|
|
|
CSetting::SetParam("last_login_username", s_account, true);
|
|
|
|
|
|
- //把用户名和密码保存起来
|
|
|
+ //把用户名和密码保存起来
|
|
|
CSetting::SetLoginInfo(s_account, s_password);
|
|
|
|
|
|
- //发送一个消息,更新界面状态
|
|
|
+ //发送一个消息,更新界面状态
|
|
|
PostMessage(WM_LOGIN_START_INIT_DATA);
|
|
|
|
|
|
- //然后进行服务器数据的同步,同步完成了才切换到收银系统主页面
|
|
|
+ //然后进行服务器数据的同步,同步完成了才切换到收银系统主页面
|
|
|
bool ret = this->HandleInitData();
|
|
|
- if (ret)
|
|
|
+ if (!ret)
|
|
|
{
|
|
|
- PostMessage(WM_LOGIN_SUCCESS);
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
+ //鑾峰彇搴楅摵淇℃伅
|
|
|
+ ret = this->GetShopinfo();
|
|
|
+ if (!ret)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ PostMessage(WM_LOGIN_SUCCESS);
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //登录失败了
|
|
|
- m_wsLoginErrMsg = std::wstring(_T("登录失败:") + CLewaimaiString::UTF8ToUnicode(errmsg));
|
|
|
+ //登录失败了
|
|
|
+ m_wsLoginErrMsg = std::wstring(_T("登录失败:") + CLewaimaiString::UTF8ToUnicode(errmsg));
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return;
|
|
|
@@ -559,7 +577,7 @@ void CLoginWnd::ShowLoginSuccess()
|
|
|
}
|
|
|
|
|
|
pFrame->SetIcon(IDI_ICON_DUILIB);
|
|
|
- pFrame->Create(NULL, _T("智铺子收银系统"), UI_WNDSTYLE_FRAME, 0L, 0, 0, 1024, 768);
|
|
|
+ pFrame->Create(NULL, _T("智铺子收银系统"), UI_WNDSTYLE_FRAME, 0L, 0, 0, 1024, 768);
|
|
|
pFrame->CenterWindow();
|
|
|
|
|
|
::ShowWindow(*pFrame, SW_SHOWMAXIMIZED);
|
|
|
@@ -599,7 +617,7 @@ void CLoginWnd::ShowUpdate()
|
|
|
pFrame->InitData(url, filename);
|
|
|
|
|
|
pFrame->SetIcon(IDI_ICON_DUILIB);
|
|
|
- pFrame->Create(NULL, _T("自动更新"), UI_WNDSTYLE_DIALOG, 0, 0, 0, 0, 0, NULL);
|
|
|
+ pFrame->Create(NULL, _T("鑷�姩鏇存柊"), UI_WNDSTYLE_DIALOG, 0, 0, 0, 0, 0, NULL);
|
|
|
pFrame->CenterWindow();
|
|
|
|
|
|
::ShowWindow(*pFrame, SW_SHOWNORMAL);
|
|
|
@@ -609,7 +627,7 @@ void CLoginWnd::ShowUpdate()
|
|
|
|
|
|
void CLoginWnd::ShowLoginAgainOut()
|
|
|
{
|
|
|
- //这种模式是本人强制挤下线了
|
|
|
+ //这种模式是本人强制挤下线了
|
|
|
CMessageboxWnd* pMessagebox = new CMessageboxWnd;
|
|
|
pMessagebox->Create(m_hWnd, _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
|
|
|
pMessagebox->SetIcon(IDI_ICON_DUILIB);
|
|
|
@@ -637,7 +655,7 @@ bool CLoginWnd::HandleInitData()
|
|
|
bool ret = CZhipuziHttpClient::Request("/goods/getallgoods", params, response);
|
|
|
if (!ret)
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("网络请求出错");
|
|
|
+ m_wsLoginErrMsg = _T("缃戠粶璇锋眰鍑洪敊");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return false;
|
|
|
@@ -648,45 +666,45 @@ bool CLoginWnd::HandleInitData()
|
|
|
|
|
|
if (document.HasParseError())
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("服务器返回数据格式错误");
|
|
|
+ m_wsLoginErrMsg = _T("服务器返回数据格式错误");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- //获得数据成功
|
|
|
+ //鑾峰緱鏁版嵁鎴愬姛
|
|
|
rapidjson::Value& data = document["data"];
|
|
|
|
|
|
CSqlite3 sqlite;
|
|
|
|
|
|
- //先处理商品的
|
|
|
+ //鍏堝�鐞嗗晢鍝佺殑
|
|
|
rapidjson::Value& v_goods_rows = data["goods_rows"];
|
|
|
ret = sqlite.InitFoodData(v_goods_rows);
|
|
|
if (!ret)
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("商品数据库数据同步失败!");
|
|
|
+ m_wsLoginErrMsg = _T("鍟嗗搧鏁版嵁搴撴暟鎹�悓姝ュけ璐ワ紒");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- //再处理商品分类的
|
|
|
+ //鍐嶅�鐞嗗晢鍝佸垎绫荤殑
|
|
|
rapidjson::Value& v_types_lv1_ids = data["types_lv1_ids"];
|
|
|
ret = sqlite.InitFoodtypeData(v_types_lv1_ids);
|
|
|
if (!ret)
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("商品分类数据库数据同步失败!");
|
|
|
+ m_wsLoginErrMsg = _T("鍟嗗搧鍒嗙被鏁版嵁搴撴暟鎹�悓姝ュけ璐ワ紒");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- //再处理商品套餐的
|
|
|
+ //鍐嶅�鐞嗗晢鍝佸�椁愮殑
|
|
|
rapidjson::Value& v_food_package = data["food_package"];
|
|
|
ret = sqlite.InitFoodpackageData(v_food_package);
|
|
|
if (!ret)
|
|
|
{
|
|
|
- m_wsLoginErrMsg = _T("商品套餐数据库数据同步失败!");
|
|
|
+ m_wsLoginErrMsg = _T("鍟嗗搧濂楅�鏁版嵁搴撴暟鎹�悓姝ュけ璐ワ紒");
|
|
|
PostMessage(WM_LOGIN_ERROR);
|
|
|
|
|
|
return false;
|
|
|
@@ -694,3 +712,37 @@ bool CLoginWnd::HandleInitData()
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+bool CLoginWnd::GetShopinfo()
|
|
|
+{
|
|
|
+ std::map<string, string> params;
|
|
|
+
|
|
|
+ std::string response;
|
|
|
+ bool ret = CZhipuziHttpClient::Request("/shop/getoneshopinfo", params, response);
|
|
|
+ if (!ret)
|
|
|
+ {
|
|
|
+ m_wsLoginErrMsg = _T("缃戠粶璇锋眰鍑洪敊");
|
|
|
+ PostMessage(WM_LOGIN_ERROR);
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ rapidjson::Document document;
|
|
|
+ document.Parse(response.c_str());
|
|
|
+
|
|
|
+ if (document.HasParseError())
|
|
|
+ {
|
|
|
+ m_wsLoginErrMsg = _T("服务器返回数据格式错误");
|
|
|
+ PostMessage(WM_LOGIN_ERROR);
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ //鑾峰緱鏁版嵁鎴愬姛
|
|
|
+ rapidjson::Value& data = document["data"];
|
|
|
+
|
|
|
+ //把获取到的数据保存起来
|
|
|
+ CShopinfo::m_shopinfo.InitShopinfoByGetshopinfo(data);
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|