zhangyang vor 4 Jahren
Ursprung
Commit
e1a5838ece

Datei-Diff unterdrückt, da er zu groß ist
+ 147 - 162
bin/Win32/Debug/zhipuzi_pos_windows/skin/shangpin_create_page.xml


+ 24 - 7
zhipuzi_pos_windows/page/CShangpinCreatePageUI.cpp

@@ -4,6 +4,8 @@
 #include "../control/ControlEx.h"
 #include "../control/ControlEx.h"
 
 
 #include "../tool/CSqlite3.h"
 #include "../tool/CSqlite3.h"
+#include "../tool/CFoodHandle.h"
+#include "../wnd/CMainWnd.h"
 
 
 CShangpinCreatePageUI::CShangpinCreatePageUI()
 CShangpinCreatePageUI::CShangpinCreatePageUI()
 {
 {
@@ -50,6 +52,8 @@ void CShangpinCreatePageUI::InitShow()
 		}
 		}
 
 
 		nTypeNum++;
 		nTypeNum++;
+
+		m_foodtype_id_map[it->name] = it->id;
 	}
 	}
 
 
 	com_fenlei->SetInternVisible(true);
 	com_fenlei->SetInternVisible(true);
@@ -521,24 +525,27 @@ void CShangpinCreatePageUI::HandleSave()
 
 
 	if (m_status == 0)
 	if (m_status == 0)
 	{
 	{
-		params["goods_status"] = "OPEN";
+		params["goods_status"] = "NORMAL";
 	}
 	}
 	else
 	else
 	{
 	{
 		params["goods_status"] = "CLOSED";
 		params["goods_status"] = "CLOSED";
 	}
 	}
 
 
-	params["type_lv1_id"] = "";
+	params["type_lv1_id"] = m_foodtype_id_map[m_fenlei];
 
 
 	if (m_kucuntype == 0)
 	if (m_kucuntype == 0)
 	{
 	{
-		params["stock_status"] = "1";
+		params["stock_status"] = "OPEN";
 	}
 	}
 	else
 	else
 	{
 	{
-		params["stock_status"] = "0";
+		params["stock_status"] = "CLOSED";
 	}
 	}
 
 
+	params["open_autostock"] = "0";
+	params["stock_warning"] = "0";
+
 	params["unit"] = m_danwei;
 	params["unit"] = m_danwei;
 
 
 	if (m_is_dabao_fei)
 	if (m_is_dabao_fei)
@@ -564,6 +571,8 @@ void CShangpinCreatePageUI::HandleSave()
 		params["is_weight"] = "0";
 		params["is_weight"] = "0";
 	}
 	}
 
 
+	params["goods_img"] = "";
+
 	std::string response;
 	std::string response;
 
 
 	std::string url = "/goods/addgoods";
 	std::string url = "/goods/addgoods";
@@ -585,7 +594,7 @@ void CShangpinCreatePageUI::HandleSave()
 		return;
 		return;
 	}
 	}
 
 
-	if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
+	if (!document.HasMember("errcode") || !document.HasMember("errmsg"))
 	{
 	{
 		ShowError(L"服务器错误");
 		ShowError(L"服务器错误");
 		return;
 		return;
@@ -595,17 +604,25 @@ void CShangpinCreatePageUI::HandleSave()
 	int errcode = v_errcode.GetInt();
 	int errcode = v_errcode.GetInt();
 	if (errcode != 0)
 	if (errcode != 0)
 	{
 	{
-		ShowError(L"服务器错误");
+		std::string v_errmsg = document["errmsg"].GetString();
+
+		ShowError(CLewaimaiString::UTF8ToUnicode(v_errmsg));
 		return;
 		return;
 	}
 	}
 
 
 	rapidjson::Value& data = document["data"];
 	rapidjson::Value& data = document["data"];
 
 
+	std::string id = data["id"].GetString();
+
+	//走到这里说明商品保存成功了,接着把商品的数据更新到数据库
+	CFoodHandle::GetInstance()->UpdateOneFood(id);
 
 
+	//然后返回到商品页面
+	m_pMainWnd->SwitchPage(CMainWnd::SHANGPIN);
 }
 }
 
 
 void CShangpinCreatePageUI::ShowError(std::wstring msg)
 void CShangpinCreatePageUI::ShowError(std::wstring msg)
 {
 {
 	CLabelUI* pResult = static_cast<CLabelUI*>(this->FindSubControl(L"shangpin_create_page_save_result"));
 	CLabelUI* pResult = static_cast<CLabelUI*>(this->FindSubControl(L"shangpin_create_page_save_result"));
-	pResult->SetText(L"正在保存商品...");
+	pResult->SetText(msg.c_str());
 }
 }

+ 2 - 0
zhipuzi_pos_windows/page/CShangpinCreatePageUI.h

@@ -90,4 +90,6 @@ private:
 
 
 	//µ±Ç°¿Ø¼þµÄʵ¼Ê¿í¶È
 	//µ±Ç°¿Ø¼þµÄʵ¼Ê¿í¶È
 	int m_nPageWidth;
 	int m_nPageWidth;
+
+	std::map<std::string, std::string> m_foodtype_id_map;
 };
 };

+ 96 - 0
zhipuzi_pos_windows/tool/CFoodHandle.cpp

@@ -0,0 +1,96 @@
+#include "../pch/pch.h"
+#include "CFoodHandle.h"
+
+#include "CSqlite3.h"
+
+CFoodHandle::CFoodHandle()
+{
+
+}
+
+bool CFoodHandle::InitAllFood()
+{
+	std::map<string, string> params;
+
+	std::string response;
+	bool ret = CZhipuziHttpClient::GetInstance()->Request("/goods/getallgoods", params, response);
+	if (!ret)
+	{
+		return false;
+	}
+
+	rapidjson::Document document;
+	document.Parse(response.c_str());
+
+	if (document.HasParseError())
+	{
+		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)
+	{
+		return false;
+	}
+
+	//再处理商品分类的
+	rapidjson::Value& v_types_lv1_ids = data["types_lv1_ids"];
+	ret = sqlite.InitFoodtypeData(v_types_lv1_ids);
+	if (!ret)
+	{
+		return false;
+	}
+
+	//再处理商品套餐的
+	rapidjson::Value& v_food_package = data["food_package"];
+	ret = sqlite.InitFoodpackageData(v_food_package);
+	if (!ret)
+	{
+		return false;
+	}
+
+	return true;
+}
+
+bool CFoodHandle::UpdateOneFood(std::string food_id)
+{
+	std::map<string, string> params;
+	params["goods_id"] = food_id;
+
+	std::string response;
+	bool ret = CZhipuziHttpClient::GetInstance()->Request("/goods/getgoodsinfo", params, response);
+	if (!ret)
+	{
+		return false;
+	}
+
+	rapidjson::Document document;
+	document.Parse(response.c_str());
+
+	if (document.HasParseError())
+	{
+		return false;
+	}
+
+	//获得数据成功
+	rapidjson::Value& data = document["data"];
+
+	CSqlite3 sqlite;
+
+	//先处理商品的
+	rapidjson::Value& v_goods_rows = data["goods_rows"];
+	ret = sqlite.UpdateOneFood(v_goods_rows);
+	if (!ret)
+	{
+		return false;
+	}
+
+	return true;
+}

+ 20 - 0
zhipuzi_pos_windows/tool/CFoodHandle.h

@@ -0,0 +1,20 @@
+#pragma once
+
+class CFoodHandle
+{
+public:
+	static CFoodHandle* GetInstance()
+	{
+		static CFoodHandle instance;
+
+		return &instance;
+	}
+
+	bool InitAllFood();
+
+	bool UpdateOneFood(std::string food_id);
+
+private:
+	CFoodHandle();	
+};
+

+ 80 - 0
zhipuzi_pos_windows/tool/CSqlite3.cpp

@@ -966,6 +966,86 @@ bool CSqlite3::InitFoodpackageData(rapidjson::Value& foodpackagerows)
 	return true;
 	return true;
 }
 }
 
 
+bool CSqlite3::UpdateOneFood(rapidjson::Value& foodrows)
+{
+	this->ExeSQl("begin;");
+
+	rapidjson::Value& foodinfo = foodrows;
+
+	std::string id = foodinfo["goods_id"].GetString();
+	std::string shop_id = foodinfo["shop_id"].GetString();
+	std::string name = foodinfo["goods_name"].GetString();
+	std::string price = foodinfo["goods_price"].GetString();
+	std::string tag = foodinfo["goods_tag"].GetString();
+	std::string status = foodinfo["goods_status"].GetString();
+	std::string type_id = foodinfo["type_lv1_id"].GetString();
+	std::string is_dabao = foodinfo["is_dabao"].GetString();
+	std::string dabao_money = foodinfo["dabao_money"].GetString();
+	std::string is_nature = foodinfo["is_nature"].GetString();
+
+	std::string nature;	
+	if (is_nature == "1")
+	{
+		nature = CLewaimaiJson::JsonToString(foodinfo["nature"]);
+	}
+	else
+	{
+		nature = "";
+	}
+
+	std::string autostocknum = foodinfo["autostocknum"].GetString();
+	std::string goods_img = foodinfo["goods_img"].GetString();
+	std::string unit = foodinfo["unit"].GetString();
+	std::string barcode = foodinfo["barcode"].GetString();
+	std::string member_price_used = foodinfo["member_price_used"].GetString();
+	std::string member_price = foodinfo["member_price"].GetString();
+	std::string buying_price = foodinfo["buying_price"].GetString();
+	std::string stock = to_string(foodinfo["stock"].GetDouble());
+	std::string stockvalid = "1";
+	std::string stock_warning = foodinfo["stock_warning"].GetString();
+	std::string is_shouyinji_show = foodinfo["is_shouyinji_show"].GetString();
+	std::string expiration_date = foodinfo["expiration_date"].GetString();
+	std::string is_weight = foodinfo["is_weight"].GetString();
+	std::string member_price_json = foodinfo["member_price_json"].GetString();
+
+	std::string weight_plu_code;
+	if (foodinfo["weight_plu_code"].IsString())
+	{
+		weight_plu_code = foodinfo["weight_plu_code"].GetString();
+	}
+	else
+	{
+		weight_plu_code = "";
+	}
+
+	std::string weight_food_code;
+	if (foodinfo["weight_food_code"].IsString())
+	{
+		weight_food_code = foodinfo["weight_food_code"].GetString();
+	}
+	else
+	{
+		weight_food_code = "";
+	}
+
+	//²åÈëÒ»¸öÉÌÆ·Êý¾Ý
+	std::string sql = "INSERT INTO pos_food (id,shop_id,name,price,tag,status,type_id,is_dabao,dabao_money,is_nature,nature,autostocknum,goods_img,unit,barcode,member_price_used,member_price, \
+		buying_price,stock,stockvalid,stock_warning,is_shouyinji_show,expiration_date,is_weight,member_price_json,weight_plu_code,weight_food_code) VALUES ('" + id + "' ,'" + shop_id + "','" \
+		+ name + "', '" + price + "', '" + tag + "', '" + status + "', '" + type_id + "', '" + is_dabao + "', '" + dabao_money + "', '" + is_nature + "', '" + nature + "', '" \
+		+ autostocknum + "', '" + goods_img + "', '" + unit + "', '" + barcode + "', '" + member_price_used + "', '" + member_price + "', '" + buying_price + "', '" + stock + "', '" \
+		+ stockvalid + "', '" + stock_warning + "', '" + is_shouyinji_show + "', '" + expiration_date + "','" + is_weight + "','" + member_price_json + "','" + weight_plu_code + "','" + weight_food_code + "')";
+
+	bool ret = this->ExeSQl(sql);
+	if (!ret)
+	{
+		return false;
+	}
+
+	this->ExeSQl("commit;");
+
+	return true;
+}
+
 bool CSqlite3::ExeSQl(std::string sql)
 bool CSqlite3::ExeSQl(std::string sql)
 {
 {
 	char *zErrMsg = 0;
 	char *zErrMsg = 0;

+ 2 - 0
zhipuzi_pos_windows/tool/CSqlite3.h

@@ -34,6 +34,8 @@ public:
 	bool InitFoodtypeData(rapidjson::Value& foodtyperows);
 	bool InitFoodtypeData(rapidjson::Value& foodtyperows);
 	bool InitFoodpackageData(rapidjson::Value& foodpackagerows);
 	bool InitFoodpackageData(rapidjson::Value& foodpackagerows);
 
 
+	bool UpdateOneFood(rapidjson::Value& foodrows);
+
 	//»ñÈ¡ÌײÍÉÌÆ·µÄÊýÁ¿
 	//»ñÈ¡ÌײÍÉÌÆ·µÄÊýÁ¿
 	int GetFoodpackageNum();
 	int GetFoodpackageNum();
 
 

+ 4 - 67
zhipuzi_pos_windows/wnd/CLoginWnd.cpp

@@ -3,6 +3,7 @@
 #include "CUpdateWnd.h"
 #include "CUpdateWnd.h"
 
 
 #include "CMessageboxWnd.h"
 #include "CMessageboxWnd.h"
+#include "../tool/CFoodHandle.h"
 
 
 void CLoginWnd::Init()
 void CLoginWnd::Init()
 {
 {
@@ -544,9 +545,11 @@ void CLoginWnd::HandleLogin()
 		PostMessage(WM_LOGIN_START_INIT_DATA);
 		PostMessage(WM_LOGIN_START_INIT_DATA);
 
 
 		//然后进行服务器数据的同步,同步完成了才切换到收银系统主页面
 		//然后进行服务器数据的同步,同步完成了才切换到收银系统主页面
-		bool ret = this->HandleInitData();
+		bool ret = CFoodHandle::GetInstance()->InitAllFood();
 		if (!ret)
 		if (!ret)
 		{
 		{
+			m_wsLoginErrMsg = _T("同步云端商品数据失败!");
+			PostMessage(WM_LOGIN_ERROR);
 			return;
 			return;
 		}
 		}
 
 
@@ -650,72 +653,6 @@ void CLoginWnd::ShowInitData()
 	pIniting->SetVisible(true);
 	pIniting->SetVisible(true);
 }
 }
 
 
-bool CLoginWnd::HandleInitData()
-{
-	std::map<string, string> params;
-
-	std::string response;
-	bool ret = CZhipuziHttpClient::GetInstance()->Request("/goods/getallgoods", 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"];
-
-	CSqlite3 sqlite;
-
-	//先处理商品的
-	rapidjson::Value& v_goods_rows = data["goods_rows"];
-	ret = sqlite.InitFoodData(v_goods_rows);
-	if (!ret)
-	{
-		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("商品分类数据库数据同步失败!");
-		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("商品套餐数据库数据同步失败!");
-		PostMessage(WM_LOGIN_ERROR);
-
-		return false;
-	}
-
-	return true;
-}
-
 bool CLoginWnd::GetShopinfo()
 bool CLoginWnd::GetShopinfo()
 {
 {
 	std::map<string, string> params;
 	std::map<string, string> params;

+ 0 - 3
zhipuzi_pos_windows/wnd/CLoginWnd.h

@@ -75,9 +75,6 @@ public:
 	//登录的工作线程
 	//登录的工作线程
 	void HandleLogin();
 	void HandleLogin();
 
 
-	//处理服务器数据同步工作,把服务器数据存在本地数据库(商品数据等)
-	bool HandleInitData();
-
 	//获取店铺信息(例如支付方式、打印二维码等等)
 	//获取店铺信息(例如支付方式、打印二维码等等)
 	bool GetShopinfo();
 	bool GetShopinfo();
 
 

+ 2 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj

@@ -227,6 +227,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     </PostBuildEvent>
     </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemGroup>
   <ItemGroup>
+    <ClInclude Include="tool\CFoodHandle.h" />
     <ClInclude Include="page\CShangpinCreatePageUI.h" />
     <ClInclude Include="page\CShangpinCreatePageUI.h" />
     <ClInclude Include="page\CSaomashouyinPageUI.h" />
     <ClInclude Include="page\CSaomashouyinPageUI.h" />
     <ClInclude Include="page\CCaigouPageUI.h" />
     <ClInclude Include="page\CCaigouPageUI.h" />
@@ -320,6 +321,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     <ClInclude Include="helper\CSystem.h" />
     <ClInclude Include="helper\CSystem.h" />
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
+    <ClCompile Include="tool\CFoodHandle.cpp" />
     <ClCompile Include="page\CShangpinCreatePageUI.cpp" />
     <ClCompile Include="page\CShangpinCreatePageUI.cpp" />
     <ClCompile Include="page\CSaomashouyinPageUI.cpp" />
     <ClCompile Include="page\CSaomashouyinPageUI.cpp" />
     <ClCompile Include="page\CCaigouPageUI.cpp" />
     <ClCompile Include="page\CCaigouPageUI.cpp" />

+ 6 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj.filters

@@ -288,6 +288,9 @@
     <ClInclude Include="page\CShangpinCreatePageUI.h">
     <ClInclude Include="page\CShangpinCreatePageUI.h">
       <Filter>头文件</Filter>
       <Filter>头文件</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="tool\CFoodHandle.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClCompile Include="pch\pch.cpp">
     <ClCompile Include="pch\pch.cpp">
@@ -536,6 +539,9 @@
     <ClCompile Include="page\CShangpinCreatePageUI.cpp">
     <ClCompile Include="page\CShangpinCreatePageUI.cpp">
       <Filter>源文件</Filter>
       <Filter>源文件</Filter>
     </ClCompile>
     </ClCompile>
+    <ClCompile Include="tool\CFoodHandle.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <Image Include="resource\zhipuzi.ico">
     <Image Include="resource\zhipuzi.ico">