Explorar o código

修正内容;

sat23 %!s(int64=4) %!d(string=hai) anos
pai
achega
2b688918b5

+ 149 - 29
CTSManager/CTSManager/Database.cpp

@@ -139,6 +139,7 @@ BOOL CDatabase::ExcuteSQL(std::string sql)
 	return TRUE;
 }
 
+#if DEPRECATED
 BOOL CDatabase::InserProvider(const STProvider& provider)
 {
 	CHECKDB;
@@ -249,6 +250,7 @@ BOOL CDatabase::QueryProvider(std::vector<STProvider>& vtProvider)
 
 	return TRUE;
 }
+#endif
 
 BOOL CDatabase::InserSoc(const STSOC& soc)
 {
@@ -269,10 +271,16 @@ BOOL CDatabase::InserSoc(const STSOC& soc)
 	MYSQL_BIND bind[3];
 	TCHAR szQuery[MAX_PATH] = { 0 };
 	strcpy_s(szQuery, _T("INSERT INTO soc(name, provider, note) VALUES(?,?,?);"));
+	BOOL bResult = FALSE;
 	//初始化stmt
 	stmt = mysql_stmt_init(m_pConn);
+	if (!stmt)
+		return FALSE;
+
 	//预处理语句
-	mysql_stmt_prepare(stmt, szQuery, strlen(szQuery));
+	if (mysql_stmt_prepare(stmt, szQuery, strlen(szQuery)))
+		goto over;
+	
 	//初始化参数
 	bind[0].buffer_type = MYSQL_TYPE_VARCHAR;
 	bind[0].buffer = (void*)soc.name.c_str();
@@ -290,17 +298,22 @@ BOOL CDatabase::InserSoc(const STSOC& soc)
 	bind[2].is_null = 0;
 
 	//绑定参数123
-	mysql_stmt_bind_param(stmt, bind);
+	if (mysql_stmt_bind_param(stmt, bind))
+		goto over;
+
 	//执行预处理mysql语句
-	if (0 != mysql_stmt_execute(stmt))
-	{
+	if (!mysql_stmt_execute(stmt))
+		bResult = TRUE;
+
+over:
+	mysql_stmt_close(stmt);
+
 #ifdef _DEBUG
+	if ( !bResult )
 		TRACE1(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
 #endif
-		return FALSE;
-	}
 
-	return TRUE;
+	return bResult;
 #endif
 }
 
@@ -325,18 +338,19 @@ BOOL CDatabase::InserSoc(std::string name, std::string provider, std::string not
 	TCHAR szQuery[MAX_PATH] = { 0 };
 	strcpy_s(szQuery, _T("INSERT INTO soc(name, provider, note) VALUES(?,?,?);"));
 	//初始化stmt
+	BOOL bResult = FALSE;
 	stmt = mysql_stmt_init(m_pConn);
 	if (!stmt)
 		return FALSE;
 
 	//预处理语句
 	if (mysql_stmt_prepare(stmt, szQuery, strlen(szQuery)))
-		return FALSE;
+		goto over;
 
 	// 字段数量是否匹配;
 	int param_count = mysql_stmt_param_count(stmt);
 	if (param_count != 3)
-		return FALSE;
+		goto over;
 
 	//初始化参数
 	memset(bind, 0, sizeof(bind));
@@ -356,33 +370,27 @@ BOOL CDatabase::InserSoc(std::string name, std::string provider, std::string not
 	bind[2].is_null = 0;
 
 	//绑定参数123
-	if (0 != mysql_stmt_bind_param(stmt, bind))
-	{
-#ifdef _DEBUG
-		TRACE1(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
-#endif
-		return FALSE;
-	}
+	if (mysql_stmt_bind_param(stmt, bind))
+		goto over;
 	
 	//执行预处理mysql语句
-	if (0 != mysql_stmt_execute(stmt))
-	{
-#ifdef _DEBUG
-		TRACE1(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
-#endif
-		return FALSE;
-	}
+	if (mysql_stmt_execute(stmt))
+		goto over;
 
 	// 影响的行数;
 	int affected_rows = mysql_stmt_affected_rows(stmt);
-	if (affected_rows != 1)
-		return FALSE;
+	if (affected_rows == 1)
+		bResult = TRUE;
 
-	// Close the statement;
-	if (mysql_stmt_close(stmt))
-		return FALSE;
+over:
+	mysql_stmt_close(stmt);
 
-	return TRUE;
+#ifdef _DEBUG
+	if (!bResult)
+		TRACE1(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
+#endif
+
+	return bResult;
 #endif
 }
 
@@ -821,6 +829,118 @@ BOOL CDatabase::QueryServer(std::vector<STServer>& vtServer)
 	return TRUE;
 }
 
+BOOL CDatabase::InsertUser(const STUser& user)
+{
+	CHECKDB;
+	TCHAR szSql[MAX_PATH] = { 0 };
+	_stprintf_s(szSql, INSER_USER, user.user.c_str(), user.password.c_str(), user.permission.c_str());
+	if (0 != mysql_query(m_pConn, szSql)) {
+#ifdef _DEBUG
+		TRACE1(_T("InsertUser error=%s\n"), m_pError ? m_pError : "");
+#endif
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+BOOL CDatabase::InsertUser(std::string user, std::string password, std::string permission)
+{
+	CHECKDB;
+	TCHAR szSql[MAX_PATH] = { 0 };
+	_stprintf_s(szSql, INSER_USER, user.c_str(), password.c_str(), permission.c_str());
+	if (0 != mysql_query(m_pConn, szSql)) {
+#ifdef _DEBUG
+		TRACE1(_T("InsertUser error=%s\n"), m_pError ? m_pError : "");
+#endif
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+BOOL CDatabase::DeleteUser(std::string user)
+{
+	CHECKDB;
+	TCHAR szSql[MAX_PATH] = { 0 };
+	_stprintf_s(szSql, DEL_USER, user.c_str());
+	if (0 != mysql_query(m_pConn, szSql)) {
+#ifdef _DEBUG
+		TRACE1(_T("DeleteUser error=%s\n"), m_pError ? m_pError : "");
+#endif
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+BOOL CDatabase::UpdateUser(std::string user, const STUser& stUser)
+{
+	CHECKDB;
+	TCHAR szSql[MAX_PATH] = { 0 };
+	_stprintf_s(szSql, MOD_USER, stUser.user.c_str(), stUser.password.c_str(), stUser.permission.c_str(), user.c_str());
+	if (0 != mysql_query(m_pConn, szSql)) {
+#ifdef _DEBUG
+		TRACE1(_T("UpdateUser error=%s\n"), m_pError ? m_pError : "");
+#endif
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+BOOL CDatabase::QueryUser(std::vector<STUser>& vtUser)
+{
+	CHECKDB;
+	if (0 != mysql_query(m_pConn, QUERY_USER)) {
+#ifdef _DEBUG
+		TRACE1(_T("QueryUser error=%s\n"), m_pError ? m_pError : "");
+#endif
+		return FALSE;
+	}
+
+	// 获取表数据;
+	MYSQL_RES* pData = mysql_store_result(m_pConn);
+	if (pData == NULL) {
+#ifdef _DEBUG
+		TRACE1(_T("QueryUser error=%s\n"), m_pError ? m_pError : "");
+#endif
+		return FALSE;
+	}
+
+#ifdef _DEBUG
+	// 统计表字段;
+	unsigned int nLen = mysql_num_fields(pData);
+	// 字段长度是否一致;
+	if (nLen != 3) {
+		mysql_free_result(pData);
+		return FALSE;
+	}
+
+	// 打印出字段名称;
+	TCHAR szLog[MAX_PATH] = { 0 };
+	for (int i = 0; i < nLen; i++) {
+		_stprintf_s(szLog, _T("字段名称:%s\n"), mysql_fetch_field(pData)->name);
+		OutputDebugString(szLog);
+	}
+#endif
+
+	// 遍历数据;
+	MYSQL_ROW row;
+	while ((row = mysql_fetch_row(pData)) != NULL) {
+		STUser stUser;
+		stUser.user = row[0];
+		stUser.password = row[1];
+		stUser.permission = row[2];
+		vtUser.push_back(stUser);
+	}
+
+	// 释放内存;
+	mysql_free_result(pData);
+
+	return TRUE;
+}
+
 // 示例;
 void test(MYSQL* mysql)
 {

+ 19 - 0
CTSManager/CTSManager/Database.h

@@ -54,7 +54,9 @@ private:
 		return m_spImage;
 	}
 public:
+	// 设置二进制字段值;
 	BOOL SetBinaryField(std::string strCondition, void* pDataIn, int nDataLen);
+	// 获取二进制字段值;
 	BOOL GetBinaryField(std::string strCondition, void** lpDataOut, unsigned long &nDataLen);
 
 	// 初始化连接;
@@ -62,12 +64,14 @@ public:
 	// 执行语句;
 	BOOL ExcuteSQL(std::string sql);
 
+#if DEPRECATED
 	// 供应商表;
 	BOOL InserProvider(const STProvider& provider);
 	BOOL InserProvider(std::string name, std::string note);
 	BOOL DeleteProvider(std::string name);
 	BOOL UpdateProvider(std::string name, const STProvider &provider);
 	BOOL QueryProvider(std::vector<STProvider>& vtProvider);
+#endif
 
 	// 机芯表;
 	BOOL InserSoc(const STSOC& soc);
@@ -99,6 +103,21 @@ public:
 	BOOL DeleteServer(std::string name);
 	BOOL UpdateServer(std::string name, const STServer& Server);
 	BOOL QueryServer(std::vector<STServer>& vtServer);
+
+	// 用户表;
+	BOOL InsertUser(const STUser &user);
+	BOOL InsertUser(std::string user, std::string password, std::string permission);
+	BOOL DeleteUser(std::string user);
+	BOOL UpdateUser(std::string user, const STUser& stUser);
+	BOOL QueryUser(std::vector<STUser>& vtUser);
+
+	// 分支表;
+
+	// 季度品牌表;
+	BOOL InsertQBrand(const STQbrand& QBrand);
+	BOOL DeleteQBrand(std::string soc, std::string quarter, std::string brand);
+	BOOL UpdateQBrand(std::string soc, std::string quarter, std::string brand, STQbrand &QBrand);
+	BOOL QueryQBrand(std::vector<STQbrand>& vtQBrand);
 };
 
 #endif

+ 3 - 6
CTSManager/CTSManager/EnBitmap.h

@@ -24,8 +24,7 @@ public:
 	static HBITMAP LoadImageResource(UINT uIDRes, LPCTSTR szResourceType, HMODULE hInst = NULL, COLORREF crBack = 0);
 	static BOOL GetResource(LPCTSTR lpName, LPCTSTR lpType, HMODULE hInst, void* pResource, int& nBufSize);
 	static IPicture* LoadFromBuffer(BYTE* pBuff, int nSize);
-	HRGN BitmapToRegion(COLORREF cTransparentColor = 0,
-		COLORREF cTolerance = 0x101010);
+	HRGN BitmapToRegion(COLORREF cTransparentColor = 0,COLORREF cTolerance = 0x101010);
 	BOOL Draw(CDC* pDC, LPRECT r);
 	BOOL DrawImage(CEnBitmap& bmp, int nX, int nY, int nCol, int nRow);
 	void TransparentBlt(CDC& dc, CRect rc, UINT crTransparent);
@@ -59,11 +58,9 @@ public:
 		return (((b * 11) + (g * 59) + (r * 30)) / 100);
 	}
 	void DrawGreyScale(CDC* pDC);
-	void DitherBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth,
-		int nHeight, HBITMAP hbm, int nXSrc, int nYSrc);
+	void DitherBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth,int nHeight, HBITMAP hbm, int nXSrc, int nYSrc);
 	HPALETTE CreateReservedPalette(CDC* pDC);
-	void FadeColorToGrayScale(CDC* pDC, int xDest, int yDest, int nLoops,
-		int nDelay);
+	void FadeColorToGrayScale(CDC* pDC, int xDest, int yDest, int nLoops,int nDelay);
 	HRGN InflateRegion(HRGN hRgn, int nXInflate, int nYInflate);
 	HRGN CreateRegionExt(DWORD nCount, CONST RGNDATA* pRgnData);
 	BOOL StretchDraw(CDC* pDC, LPRECT r, LPRECT sr);

+ 2 - 1
CTSManager/CTSManager/pch.h

@@ -14,7 +14,8 @@
 #include <string>
 #include <vector>
 
-
+// 弃用函数;
+#define DEPRECATED 0
 // 隐藏菜单栏;
 #define HIDE_MENU_BAR 1
 // 启用显示文件/类;

+ 23 - 8
CTSManager/CTSManager/table.h

@@ -12,9 +12,9 @@
 #define INSER_SERVER _T("INSERT INTO `server` (`name`,`ip`,`type`,`user`,`password`,`note`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s');")
 #define INSER_BRANCH _T("INSERT INTO `branch` (`name` ,`quarter`,`address`,`provider`,`chip`,`type`,`status`,`note`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');")
 #define INSER_USER _T("INSERT INTO `user` (`user`,`password`,`permission`) VALUES ('%s', '%s', '%s');")
-#define INSER_QBRANCH _T("INSERT INTO `qbranch` \
-(`brand`,`quarter`,`whitelist`,`version`,`oemkey`,`approved`,`approveddate`,`fingerprint`,`builddate`,`gtvs`,`ftpdir`,`codedir`,`note`)\
- VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');")
+#define INSER_QBRANCH _T("INSERT INTO `qbrand` \
+(`soc`,`brand`,`quarter`,`whitelist`,`version`,`oemkey`,`approved`,`approveddate`,`fingerprint`,`builddate`,`gtvs`,`ftpdir`,`codedir`,`note`)\
+ VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');")
 #define INSER_LOG _T("INSERT INTO `log` (`user`,`datetime`,`content`) VALUES ('%s', 'datetime', '%s');")
 
 // 删除数据;
@@ -23,6 +23,9 @@
 #define DEL_BRAND _T("DELETE FROM `brand` WHERE `name` = '%s';")
 #define DEL_QUARTER _T("DELETE FROM `quarter` where `name` = '%s';")
 #define DEL_SERVER _T("DELETE FROM `server` where `name` = '%s';")
+#define DEL_USER _T("DELETE FROM `user` where `user` = '%s';")
+#define DEL_QBRAND _T("DELETE FROM `qbrand` where `soc` = '%s', `brand`='%s',`quarter`='%s';")
+
 
 // 更新数据;
 #define MOD_PROVIDER _T("UPDATE `provider` SET `name`='%s',`note`='%s' WHERE `name`='%s';")
@@ -30,19 +33,25 @@
 #define MOD_BRAND _T("UPDATE `brand` SET `name`='%s',`note`='%s' WHERE `name`='%s';")
 #define MOD_QUARTER _T("UPDATE `quarter` SET `name`='%s', `scp` = '%s' ,`note`='%s' WHERE `name`='%s';")
 #define MOD_SERVER _T("UPDATE `server` SET `name`='%s', `ip` = '%s', `type`='%s', `user`='%s', `password`='%s', `note`='%s' WHERE `name`='%s';")
+#define MOD_USER _T("UPDATE `user` SET `user`='%s', `password` = '%s', `permission`='%s' WHERE `user`='%s';")
+#define MOD_QBRAND _T("")
 
 // 查询数据;
 #define QUERY_PROVIDER _T("SELECT `name`, `note` FROM `provider`;")
 #define QUERY_SOC _T("SELECT `name`, `provider`, `note` FROM `soc`;")
 #define QUERY_BRAND _T("SELECT `name`, `note` FROM `brand`;")
 #define QUERY_QUARTER _T("SELECT `name`,`scp`, `note` FROM `quarter`;")
-#define QUERY_SERVER _T("SELECT `name`, `ip`, `type`, `user`, `password`, `note`;")
+#define QUERY_SERVER _T("SELECT `name`, `ip`, `type`, `user`, `password`, `note` FROM `server`;")
+#define QUERY_USER _T("SELECT `user`, `password`, `permission` FROM `user`;")
+#define QUERY_QBRAND _T("")
 
+#if DEPRECATED
 // 供应商表;
 typedef struct {
 	std::string name;						// 供应商名称;
 	std::string note;						// 供应商备注;
 }STProvider, *pSTProvider;
+#endif
 
 typedef struct {
 	std::string name;						// 机芯名称;
@@ -61,6 +70,7 @@ typedef struct {
 typedef struct {
 	std::string name;						// 品牌名称;
 	std::string note;						// 品牌备注;
+	void* pLogo = NULL;						// 最新的logo;
 }STBrand, *pSTBrand;
 
 // 服务器表;
@@ -88,12 +98,13 @@ typedef struct {
 // 用户表(权限表);
 typedef struct {
 	std::string user;						// 用户账号;
-	std::string passwrod;					// 用户密码;
+	std::string password;					// 用户密码;
 	std::string permission;					// 用户权限;
 }STUser, *pSTUser;
 
 // 季度品牌表;
 typedef struct {
+	std::string soc;						// 机芯;
 	std::string brand;						// 季度品牌名称;
 	std::string quarter;					// 季度;
 	std::string whitelist;					// 白名单状态;
@@ -102,9 +113,13 @@ typedef struct {
 	std::string approved;					// 认证状态;
 	std::string approveddate;				// 认证通过日期;
 	// 图片不在此显示;
-	char* pLogo;							// logo;
-	char* pPic1;
-	char* pPic2;		
+	void* pLogo = NULL;							// logo;
+	void* pPic1 = NULL;
+	void* pPic2 = NULL;		
+	std::string fav_cfg;
+	std::string apps_cfg;
+	std::string local_cfg;
+	std::string pre_apk;
 	std::string fingerprint;				// 该季度品牌fingerprint;
 	std::string builddate;					// 编译日期;
 	std::string gtvs;						// gtvs版本;