// ProcessSocket3.cpp : implementation file // #include "stdafx.h" #include "SmsCenter.h" #include "ProcessSocket.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CProcessSocket #include "SmsCenterDlg.h" #include "..\public\pop3\pop3.h" #include "..\public\ProxySocket\CBase64Coding.hpp" #include "..\public\AutoBuffer\AutoBuffer.h" #include "..\public\md53\MD5_L.h" #include "..\public\mailclient\SMTPClient.h" long CProcessSocket::Process_TDSet_Signature_See(REQ_TD2Signature_See* pSee) { try { if (!(m_ulPurview & PURVIEW_LIST)) //没有权限修改资料 { ANS_TD2Signature_See* pSeeRet = new ANS_TD2Signature_See; //权限不够,什么也不返回 memset(pSeeRet, 0, sizeof(ANS_TD2Signature_See)); pSeeRet->req = *pSee; pSeeRet->lCount = -1; _tcscpy(pSeeRet->szErrMsg, _T("查询权限异常1")); SendFrame(SMSFUNC_TD2SIGNATURETITLE_SEE, (BYTE*)pSeeRet, sizeof(ANS_TD2Signature_See)); //发送返回 return 1; } CString str; CString strWhere = _T(" 1=1 "); if (pSee->lSignatureID > 0) //查询单一签名数据ID { str.Format(_T(" and SignatureID=%d"), pSee->lSignatureID); strWhere.Append(str); } if (pSee->iTDID > 0) //查询单一通道ID { str.Format(_T(" and TDID=%d"), pSee->iTDID); strWhere.Append(str); } if (pSee->lCorpID > 0) //查询单一企业ID { str.Format(_T(" and CorpID=%d"),pSee->lCorpID); strWhere.Append(str); } if (_tcslen(pSee->szKey) > 0) //关键字查询企业 { str.Format(_T(" and ( signature like '%%%%%s%%%%' or corpanyname like '%%%%%s%%%%' or smsnum like '%%%%%s%%%%' )"), pSee->szKey, pSee->szKey, pSee->szKey); strWhere.Append(str); } if (pSee->lStatus > 0) //查询单一状态 { str.Format(_T(" and status=%d"), pSee->lStatus-1); strWhere.Append(str); } if (pSee->lOperType > 0) //查询单一操作类型 { str.Format(_T(" and opertype=%d"), pSee->lOperType - 1); strWhere.Append(str); } if (pSee->bAddTime) //添加时间 { str.Format(_T(" and AddTime>='%04d%02d%02d %02d:%02d:%02d' and AddTime<='%04d%02d%02d %02d:%02d:%02d'"), pSee->tAddTimeBegin.wYear, pSee->tAddTimeBegin.wMonth, pSee->tAddTimeBegin.wDay, pSee->tAddTimeBegin.wHour, pSee->tAddTimeBegin.wMinute, pSee->tAddTimeBegin.wSecond, pSee->tAddTimeEnd.wYear, pSee->tAddTimeEnd.wMonth, pSee->tAddTimeEnd.wDay, pSee->tAddTimeEnd.wHour, pSee->tAddTimeEnd.wMinute, pSee->tAddTimeEnd.wSecond ); strWhere.Append(str); } if (pSee->bModifyTime) //更新时间 { str.Format(_T(" and UploadTime>='%04d%02d%02d %02d:%02d:%02d' and UploadTime<='%04d%02d%02d %02d:%02d:%02d'"), pSee->tModifyTimeBegin.wYear, pSee->tModifyTimeBegin.wMonth, pSee->tModifyTimeBegin.wDay, pSee->tModifyTimeBegin.wHour, pSee->tModifyTimeBegin.wMinute, pSee->tModifyTimeBegin.wSecond, pSee->tModifyTimeEnd.wYear, pSee->tModifyTimeEnd.wMonth, pSee->tModifyTimeEnd.wDay, pSee->tModifyTimeEnd.wHour, pSee->tModifyTimeEnd.wMinute, pSee->tModifyTimeEnd.wSecond); strWhere.Append(str); } if (pSee->bAuditTime) //审核时间 { str.Format(_T(" and AuditTime>='%04d%02d%02d %02d:%02d:%02d' and AuditTime<='%04d%02d%02d %02d:%02d:%02d'"), pSee->tAuditTimeBegin.wYear, pSee->tAuditTimeBegin.wMonth, pSee->tAuditTimeBegin.wDay, pSee->tAuditTimeBegin.wHour, pSee->tAuditTimeBegin.wMinute, pSee->tAuditTimeBegin.wSecond, pSee->tAuditTimeEnd.wYear, pSee->tAuditTimeEnd.wMonth, pSee->tAuditTimeEnd.wDay, pSee->tAuditTimeEnd.wHour, pSee->tAuditTimeEnd.wMinute, pSee->tAuditTimeEnd.wSecond); strWhere.Append(str); } m_bCheckTimeOut = false; //不允许检测超时时间 str.Format(_T("select * from TD2Signature with(nolock) where %s"), strWhere); BOOL b = m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if (lCount < 0) lCount = 0; m_AdoRS.MoveFirst(); //移动第一条记录 //计算页数 long lPageRecords = LISTPAGE_RECORD; long lPageMax = lCount / lPageRecords; if (lPageMax * lPageRecords != lCount) lPageMax++; long lAllCount = 0; for (int j = 0; j < lPageMax; j++) { //lFrameCount,计算当前页的记录数 long lFrameCount = lPageRecords; if (lFrameCount * (j + 1) > lCount) lFrameCount = lCount - lFrameCount * j; long lSize = sizeof(ANS_TD2Signature_See) + sizeof(ANS_TD2Signature_Data) * lFrameCount; BYTE* pData = new BYTE[lSize]; memset(pData, 0, lSize); ANS_TD2Signature_See* pListRet = (ANS_TD2Signature_See*)pData; ANS_TD2Signature_Data* pListDataRet = (ANS_TD2Signature_Data*)(pData + sizeof(ANS_TD2Signature_See)); pListRet->lCount = lFrameCount; pListRet->lPageAll = lPageMax; pListRet->lPageCount = j + 1; COleDateTime t; long lTempCount = 0; while (!m_AdoRS.IsEOF() && lTempCount < lFrameCount) { m_AdoRS.GetCollect(_T("SignatureID"), pListDataRet->iSignatureID); m_AdoRS.GetCollect(_T("Status"), pListDataRet->iStatus); m_AdoRS.GetCollect(_T("TDID"), pListDataRet->iTDID); m_AdoRS.GetCollect(_T("Signature"), pListDataRet->szSignature); m_AdoRS.GetCollect(_T("SmsNum"), pListDataRet->szSmsNum); m_AdoRS.GetCollect(_T("CorpID"), pListDataRet->iCorpID); m_AdoRS.GetCollect(_T("UserID"), pListDataRet->iUserID); m_AdoRS.GetCollect(_T("SendCount"), pListDataRet->iSendCount); m_AdoRS.GetCollect(_T("AddTime"), pListDataRet->tAddTime); m_AdoRS.GetCollect(_T("OperType"), pListDataRet->iOperType); m_AdoRS.GetCollect(_T("UploadTime"), pListDataRet->tUploadTime); m_AdoRS.GetCollect(_T("AuditTime"), pListDataRet->tAuditTime); m_AdoRS.GetCollect(_T("MainSmsNum"), pListDataRet->szMainSmsNum); m_AdoRS.GetCollect(_T("CorpanyName"), pListDataRet->szCorpanyName); m_AdoRS.GetCollect(_T("CorpanyNum"), pListDataRet->szCorpanyNum); m_AdoRS.GetCollect(_T("Provvince"), pListDataRet->szProvvince); m_AdoRS.GetCollect(_T("City"), pListDataRet->szCity); m_AdoRS.GetCollect(_T("LegalName"), pListDataRet->szLegalName); m_AdoRS.GetCollect(_T("LegalCertType"), pListDataRet->szLegalCertType); m_AdoRS.GetCollect(_T("LegalCertID"), pListDataRet->szLegalCertID); m_AdoRS.GetCollect(_T("AgencyName"), pListDataRet->szAgencyName); m_AdoRS.GetCollect(_T("AgencyCertType"), pListDataRet->szAgencyCertType); m_AdoRS.GetCollect(_T("AgencyCertID"), pListDataRet->szAgencyCertID); m_AdoRS.GetCollect(_T("PortUsage"), pListDataRet->szPortUsage); m_AdoRS.GetCollect(_T("PortType"), pListDataRet->szPortType); m_AdoRS.GetCollect(_T("PortUsageCategory"), pListDataRet->szPortUsageCategory); m_AdoRS.GetCollect(_T("SignatureSource"), pListDataRet->szSignatureSource); m_AdoRS.GetCollect(_T("LocationServerRoom"), pListDataRet->szLocationServerRoom); m_AdoRS.GetCollect(_T("ContentTemplate"), pListDataRet->szContentTemplate); m_AdoRS.GetCollect(_T("fileId"), pListDataRet->szfileId); m_AdoRS.GetCollect(_T("errData"), pListDataRet->szerrData); m_AdoRS.GetCollect(_T("errType"), pListDataRet->szerrType); m_AdoRS.GetCollect(_T("BZ"), pListDataRet->szBZ); m_AdoRS.MoveNext(); pListDataRet++; lTempCount++; lAllCount++; } SendFrame(SMSFUNC_TD2SIGNATURE_SEE, (BYTE*)pData, lSize); //发送返回 } if (lAllCount <= 0) //什么也找不到的返回 { ANS_TD2Signature_See* pSeeRet = new ANS_TD2Signature_See; //权限不够,什么也不返回 memset(pSeeRet, 0, sizeof(ANS_TD2Signature_See)); pSeeRet->lCount = 0; _tcscpy(pSeeRet->szErrMsg, _T("查询成功,没有记录")); pSeeRet->lPageCount = 0; pSeeRet->lPageAll = 0; SendFrame(SMSFUNC_TD2SIGNATURE_SEE, (BYTE*)pSeeRet, sizeof(ANS_TD2Signature_See)); //发送返回 } m_bCheckTimeOut = true; //允许检测超时时间 return 1; } catch (...) { LOG_APPERROR(_T("T")); return 0; } return 0; } long CProcessSocket::Process_TDSet_SignatureTitle_See(REQ_TD2SignatureTitle_See* pSee) { try { ANS_TD2SignatureTitle_See* pSeeRet = new ANS_TD2SignatureTitle_See; //权限不够,什么也不返回 memset(pSeeRet, 0, sizeof(ANS_TD2SignatureTitle_See)); pSeeRet->req = *pSee; if (!(m_ulPurview & PURVIEW_LIST)) //没有权限修改资料 { pSeeRet->lCount = -1; _tcscpy(pSeeRet->szErrMsg, _T("查询权限异常1")); SendFrame(SMSFUNC_TD2SIGNATURETITLE_SEE, (BYTE*)pSeeRet, sizeof(ANS_TD2SignatureTitle_See)); //发送返回 return 1; } CString str; str.Format(_T("select * from TD2 with(nolock) where len(SignatureTitle)>0 order by tdid")); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if (lCount <= 0) { pSeeRet->lCount = 0; _tcscpy(pSeeRet->szErrMsg, _T("查询成功,没记录")); SendFrame(SMSFUNC_TD2SIGNATURETITLE_SEE, (BYTE*)pSeeRet, sizeof(ANS_TD2SignatureTitle_See)); //发送返回 return 1; } long lSize = sizeof(ANS_TD2SignatureTitle_See) + sizeof(ANS_TD2SignatureTitle_Data) * lCount; BYTE* pData = new BYTE[lSize]; memset(pData, 0, lSize); ANS_TD2SignatureTitle_See* pRet = (ANS_TD2SignatureTitle_See*)pData; ANS_TD2SignatureTitle_Data* pRetData = (ANS_TD2SignatureTitle_Data*)(pData + sizeof(ANS_TD2SignatureTitle_See)); *pRet = *pSeeRet; delete pSeeRet; //删除之前新增的返回头数据 for (int i = 0; i < lCount && !m_AdoRS.IsEOF(); i++) { m_AdoRS.GetCollect(_T("TDID"), pRetData->iTDID); m_AdoRS.GetCollect(_T("SignatureTitle"), pRetData->szSignatureTitle); m_AdoRS.GetCollect(_T("SignatureNum"), pRetData->szSmsNum); m_AdoRS.MoveNext(); pRetData++; } pRet->lCount = i; //返回记录数 _tcscpy(pRet->szErrMsg, _T("查询成功")); SendFrame(SMSFUNC_TD2SIGNATURETITLE_SEE, (BYTE*)pData, lSize); //发送返回 return 1; } catch (...) { LOG_APPERROR(_T("T")); return 0; } return 0; } long CProcessSocket::Process_TDSet_Signature_Modify(REQ_TD2Signature_Modify* pModify) { try { CString str; ANS_TD2Signature_Modify* pModifyRet = new ANS_TD2Signature_Modify; //权限不够,什么也不返回 memset(pModifyRet, 0, sizeof(ANS_TD2Signature_Modify)); pModifyRet->req = *pModify; if (!(m_ulPurview & PURVIEW_LIST)) //没有权限修改资料 { pModifyRet->iErrCode = -1; _tcscpy(pModifyRet->szErrMsg, _T("权限异常1")); SendFrame(SMSFUNC_TD2SIGNATURE_MODIFY, (BYTE*)pModifyRet, sizeof(ANS_TD2Signature_Modify)); //发送返回 return 1; } ANS_TD2Signature_Data* pData = (ANS_TD2Signature_Data*)((BYTE*)pModify + sizeof(REQ_TD2Signature_Modify)); pModifyRet->iCount = pModify->iCount; int iAllCover=0; int iAllAdd = 0; int iAllDel = 0; int iAllIgnore = 0; int iAllFail = 0; for (int i = 0; i < pModify->iCount; i++) { CString strSignature = pData[i].szSignature; CString strSmsNum = pData[i].szSmsNum; CString strBZ; CString strOldSignature; BOOL bExist = false; int iCover = 0; int iAdd = 0; int iDel = 0; int iIgnore = 0; int iError = 0; BOOL bGetNewPort = false; int iStatus = pData[i].iStatus; BOOL bSql = true; if (strSmsNum.GetLength() > 0) { //第一步,先查询端口号是否存在 if (pModify->iOperType == 0)//新增 str.Format(_T("select * from TD2Signature where SmsNum='%s' and TDID=%d order by SignatureID desc"), strSmsNum, pModify->iTDID); if (pModify->iOperType == 1)//修改 str.Format(_T("select * from TD2Signature where SignatureID<>%d and SmsNum='%s' and TDID=%d order by SignatureID desc"), pData->iSignatureID, strSmsNum, pModify->iTDID); if (strSmsNum.GetLength() > 0 && m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { bExist = true; if (pData[i].iOperType == 2) ////操作类型:0-新增,1-修改,2-删除 { iDel = 1; } //int iConflict; //冲突处理如0-已存在-覆盖;1-如已存在-仍然新增;2-如已存在-忽略;3-如已存在-换端口申请; switch (pModify->iConflict) { case 0: //覆盖 iCover = 1; break; case 2: iAdd = 1; //新增 bGetNewPort = true; //换新端口号 break; case 3: iAdd = 1; //仍然新增 bGetNewPort = false; //换新端口号 break; default: //1-忽略 iIgnore = 1; break; } if (iCover == 1) //属于覆盖,需要记录原信息 { //增加备注信息 int lOldStatus = 0; m_AdoRS.GetCollect(_T("SignatureID"), pData[i].iSignatureID); m_AdoRS.GetCollect(_T("Status"), lOldStatus); m_AdoRS.GetCollect(_T("Signature"), strOldSignature); m_AdoRS.GetCollect(_T("BZ"), strBZ); str.Format(_T("原状态:%d,原签名:%s "), lOldStatus, strOldSignature); strBZ.Append(str); } } else { if (pModify->iOperType == 0)//新增 iAdd = 1; //没找到端口记录,属于新增 if (pModify->iOperType == 1)//修改 iCover = 1; } } else { if (pModify->iConflict == 2) //换新端口 { iAdd = 1; //新增 bGetNewPort = true; //换新端口号 } } if (bGetNewPort) //生成新端口号 { //生成了新端口号,状态肯定是待上传 iStatus = 0; ////状态,0-待上报;1-已上报;2-已审核通过;3-已审核未通过;4-已删除 CString strNewSmsNum; //生成新端口号 str.Format(_T("select * from TD2 with(nolock) where TDID=%d"), pModify->iTDID); if (m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect(_T("SignatureNum"), strNewSmsNum); if (strNewSmsNum.GetLength() >= 6) { #ifdef SMSCENTER_ONE strNewSmsNum.Append(_T("1550000")); #endif #ifdef SMSCENTER_THREE strNewSmsNum.Append(_T("3550000")); #endif CString strLeftSmsNum = strNewSmsNum.Left(10); str.Format(_T("select top 1 * from TD2Signature where TDID=%d and left(smsnum,10)='%s' order by smsnum desc"), pModify->iTDID, strLeftSmsNum); if (m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect(_T("SmsNum"), strNewSmsNum); } LONGLONG llSmsNum = _ttoll(strNewSmsNum); llSmsNum++; strNewSmsNum.Format(_T("%lld"), llSmsNum); } } if (strNewSmsNum.GetLength() >= 10) { _tcscpy(pData[i].szSmsNum, strNewSmsNum); strSmsNum = strNewSmsNum; //新端口号 } else { iError = 1; } } if (strSmsNum.GetLength() <= 0) //没有端口号的有问题 { iError = 1; } if (iError == 0 && iIgnore == 0) //上面没出错并且没有忽略,继续 { CString strStatus; CString strTDID; CString strOperType; CString strAuditTime = _T("NULL"); if (pData[i].iOperType == 2) //如果操作是删除,并且是上传已审核记录,则状态为4-已删除 { if (iStatus == 2) { iStatus = 4;////状态,0-待上报;1-已上报;2-已审核通过;3-已审核未通过;4-已删除 strAuditTime = _T("GetDate()"); //审核时间为上传记录时间 } } strStatus.Format(_T("%d"), iStatus); strTDID.Format(_T("%d"), pData[i].iTDID); strOperType.Format(_T("%d"), pData[i].iOperType); if (iAdd == 1) { //添加记录 str.Format(_T("insert into TD2Signature (Status,TDID,Signature,SmsNum,CorpID,UserID,OperType,AuditTime,MainSmsNum,CorpanyName,CorpanyNum,Provvince,City,LegalName,LegalCertType,LegalCertID,AgencyName,AgencyCertType,AgencyCertID,PortUsage,PortType,PortUsageCategory,SignatureSource,LocationServerRoom,ContentTemplate,BZ,OperUser) " \ "values(% d, % d, '%s', '%s', % d, % d, % d, % s, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s')"), iStatus, pData[i].iTDID, SqlStr(strSignature), SqlStr(strSmsNum), 0, 0, //corpID,UserID pData[i].iOperType, strAuditTime, SqlStr(pData[i].szMainSmsNum), SqlStr(pData[i].szCorpanyName), SqlStr(pData[i].szCorpanyNum), SqlStr(pData[i].szProvvince), SqlStr(pData[i].szCity), SqlStr(pData[i].szLegalName), SqlStr(pData[i].szLegalCertType), SqlStr(pData[i].szLegalCertID), SqlStr(pData[i].szAgencyName), SqlStr(pData[i].szAgencyCertType), SqlStr(pData[i].szAgencyCertID), SqlStr(pData[i].szPortUsage), SqlStr(pData[i].szPortType), SqlStr(pData[i].szPortUsageCategory), SqlStr(pData[i].szSignatureSource), SqlStr(pData[i].szLocationServerRoom), SqlStr(pData[i].szContentTemplate), SqlStr(strBZ), SqlStr(m_szLoginName)); if (m_AdoRS.Open(str)) //执行成功,取ID值 { str= _T("SELECT SCOPE_IDENTITY()"); bSql = m_AdoRS.Open(str); if (bSql) { m_AdoRS.GetCollect((long)0, pData[i].iSignatureID); } } else { bSql = false; } } else { //修改记录 CString strSignatureID; strSignatureID.Format(_T("%d"), pData[i].iSignatureID); str = CString("update TD2Signature set ") + CString("Status='") + strStatus + CString("',") + CString("TDID=") + strTDID + CString(",") + CString("Signature='") + SqlStr(strSignature) + CString("',") + CString("SmsNum='") + SqlStr(strSmsNum) + CString("',") + CString("CorpID='") + CString(_T("0")) + CString("',") + CString("UserID='") + CString(_T("0")) + CString("',") + CString("OperType='") + strOperType + CString("',") + CString("AuditTime=") + strAuditTime + CString(",") + CString("MainSmsNum='") + SqlStr(pData[i].szMainSmsNum) + CString("',") + CString("CorpanyName='") + SqlStr(pData[i].szCorpanyName) + CString("',") + CString("CorpanyNum='") + SqlStr(pData[i].szCorpanyNum) + CString("',") + CString("Provvince='") + SqlStr(pData[i].szProvvince) + CString("',") + CString("City='") + SqlStr(pData[i].szCity) + CString("',") + CString("LegalName='") + SqlStr(pData[i].szLegalName) + CString("',") + CString("LegalCertType='") + SqlStr(pData[i].szLegalCertType) + CString("',") + CString("LegalCertID='") + SqlStr(pData[i].szLegalCertID) + CString("',") + CString("AgencyName='") + SqlStr(pData[i].szAgencyName) + CString("',") + CString("AgencyCertType='") + SqlStr(pData[i].szAgencyCertType) + CString("',") + CString("AgencyCertID='") + SqlStr(pData[i].szAgencyCertID) + CString("',") + CString("PortUsage='") + SqlStr(pData[i].szPortUsage) + CString("',") + CString("PortType='") + SqlStr(pData[i].szPortType) + CString("',") + CString("PortUsageCategory='") + SqlStr(pData[i].szPortUsageCategory) + CString("',") + CString("SignatureSource='") + SqlStr(pData[i].szSignatureSource) + CString("',") + CString("LocationServerRoom='") + SqlStr(pData[i].szLocationServerRoom) + CString("',") + CString("ContentTemplate='") + SqlStr(pData[i].szContentTemplate) + CString("',") + CString("BZ='") + SqlStr(strBZ) + CString("', ") + CString("OperUser='") + SqlStr(m_szLoginName) + CString("' ") + CString("where SignatureID=") + strSignatureID; bSql = m_AdoRS.Open(str); } if (!bSql) //执行失败 { iCover = 0; // iAdd = 0; iDel = 0; iError = 1; } } if (iIgnore == 1 || iError == 1) { pData[i].iSignatureID = 0; //不成功标志 } iAllCover = iAllCover + iCover; iAllAdd = iAllAdd + iAdd; iAllDel = iAllDel + iDel; iAllIgnore = iAllIgnore + iIgnore; iAllFail = iAllCover + iError; } long lSize = sizeof(ANS_TD2Signature_Modify) + sizeof(ANS_TD2Signature_Data) * pModify->iCount;// pUploadRet->iCount; //暂时不返回具体数据 BYTE* pDataRet = new BYTE[lSize]; memset(pDataRet, 0, lSize); ANS_TD2Signature_Modify* pRet = (ANS_TD2Signature_Modify*)pDataRet; ANS_TD2Signature_Data* pRetData = (ANS_TD2Signature_Data*)(pDataRet + sizeof(ANS_TD2Signature_Modify)); memcpy((BYTE*)pRetData, (BYTE*)pData, sizeof(ANS_TD2Signature_Data)* pModify->iCount); //复制数据 *pRet = *pModifyRet; delete pModifyRet; //删除之前新增的返回头数据 /* for (int i = 0; i < lCount && !m_AdoRS.IsEOF(); i++) { m_AdoRS.GetCollect(_T("TDID"), pRetData->iTDID); m_AdoRS.GetCollect(_T("AccessPort"), pRetData->szSmsNum); m_AdoRS.GetCollect(_T("SignatureTitle"), pRetData->szSignatureTitle); m_AdoRS.MoveNext(); pRetData++; } */ pRet->iErrCode = 0; //返回错误代码 _stprintf(pRet->szErrMsg, _T("处理成功\r\n添加记录:%d条\r\n修改记录:%d条\r\n忽略记录:%d条\r\n错误记录:%d\r\n"), iAllAdd, iAllCover, iAllIgnore, iAllFail); SendFrame(SMSFUNC_TD2SIGNATURE_MODIFY, (BYTE*)pDataRet, lSize); //发送返回 return 1; } catch (...) { LOG_APPERROR(_T("T")); return 0; } return 0; } long CProcessSocket::Process_TDSet_Signature_ModifyStatus(REQ_TD2Signature_ModifyStatus* pModify) { try { if (!(m_ulPurview & PURVIEW_LIST)) //没有权限修改资料 { ANS_TD2Signature_ModifyStatus* pSeeRet = new ANS_TD2Signature_ModifyStatus; //权限不够,什么也不返回 memset(pSeeRet, 0, sizeof(ANS_TD2Signature_ModifyStatus)); pSeeRet->lCount = -1; _tcscpy(pSeeRet->szErrMsg, _T("查询权限异常1")); SendFrame(SMSFUNC_TD2SIGNATURE_MODIFYSTATUS, (BYTE*)pSeeRet, sizeof(ANS_TD2Signature_ModifyStatus)); //发送返回 return 1; } ANS_TD2Signature_ModifyStatus_Data* pReqData = (ANS_TD2Signature_ModifyStatus_Data*)( ((BYTE*)pModify) + sizeof(REQ_TD2Signature_ModifyStatus)); long lSize = sizeof(ANS_TD2Signature_ModifyStatus) + sizeof(ANS_TD2Signature_ModifyStatus_Data) * pModify->lCount; BYTE* pData = new BYTE[lSize]; memset(pData, 0, lSize); ANS_TD2Signature_ModifyStatus* pRet = (ANS_TD2Signature_ModifyStatus*)pData; ANS_TD2Signature_ModifyStatus_Data* pRetData = (ANS_TD2Signature_ModifyStatus_Data*)(pData + sizeof(ANS_TD2Signature_ModifyStatus)); CString str; for (int i = 0; i < pModify->lCount; i++) { long lCount1 = 0; str.Format(_T("update TD2Signature set Status=%d, UploadTime=GetDate(), OperUser='%s' where SignatureID=%d"), pReqData->iNewStatus, SqlStr(this->m_szLoginName),pReqData->iSignatureID); if (m_AdoRS2.GetConnection()->Execute(str, lCount1) && lCount1>0) //if (m_AdoRS.Open(str)) { pRetData->iItem = pReqData->iItem; pRetData->iNewStatus = pReqData->iNewStatus; pRetData->iSignatureID = pReqData->iSignatureID; } pReqData++; pRetData++; } pRet->lCount = i; //返回记录数 _tcscpy(pRet->szErrMsg, _T("查询成功")); pRet->iNewStatus = pModify->iNewStatus; pRet->iTDID = pModify->iTDID; pRet->lPageAll = pModify->lPageAll; pRet->lPageCount = pModify->lPageCount; SendFrame(SMSFUNC_TD2SIGNATURE_MODIFYSTATUS, (BYTE*)pData, lSize); //发送返回 return 1; } catch (...) { LOG_APPERROR(_T("T")); return 0; } return 0; } long CProcessSocket::Process_TDSet_Signature_GetMaxSmsNum(REQ_TD2Signature_GetMaxSmsNum* pGet) { try { ANS_TD2Signature_GetMaxSmsNum* pGetRet = new ANS_TD2Signature_GetMaxSmsNum; //权限不够,什么也不返回 memset(pGetRet, 0, sizeof(ANS_TD2Signature_GetMaxSmsNum)); if (!(m_ulPurview & PURVIEW_LIST)) //没有权限修改资料 { pGetRet->iErrCode = -1; _tcscpy(pGetRet->szErrMsg, _T("查询权限异常1")); SendFrame(SMSFUNC_TD2SIGNATURE_GETMAXSMSNUM, (BYTE*)pGetRet, sizeof(ANS_TD2Signature_GetMaxSmsNum)); //发送返回 return 1; } CString str; str.Format(_T("select * from TD2 with(nolock) where TDID=%d"), pGet->iTDID); if (!m_AdoRS.Open(str) || m_AdoRS.IsEOF()) { pGetRet->iErrCode = -2; _tcscpy(pGetRet->szErrMsg, _T("通道ID不存在")); SendFrame(SMSFUNC_TD2SIGNATURE_GETMAXSMSNUM, (BYTE*)pGetRet, sizeof(ANS_TD2Signature_GetMaxSmsNum)); //发送返回 return 1; } CString strNewSmsNum; m_AdoRS.GetCollect(_T("SignatureNum"), strNewSmsNum); m_AdoRS.GetCollect(_T("SignatureTitle"), pGetRet->szSignatureTitle); _tcscpy(pGetRet->szSmsNum, strNewSmsNum); if (strNewSmsNum.GetLength() < 6) { pGetRet->iErrCode = -3; _tcscpy(pGetRet->szErrMsg, _T("未正确配置通道号码")); SendFrame(SMSFUNC_TD2SIGNATURE_GETMAXSMSNUM, (BYTE*)pGetRet, sizeof(ANS_TD2Signature_GetMaxSmsNum)); //发送返回 return 1; } #ifdef SMSCENTER_ONE strNewSmsNum.Append(_T("1550000")); #endif #ifdef SMSCENTER_THREE strNewSmsNum.Append(_T("3550000")); #endif CString strLeftSmsNum = strNewSmsNum.Left(10); str.Format(_T("select top 1 * from TD2Signature where TDID=%d and left(smsnum,10)='%s' order by smsnum desc"), pGet->iTDID, strLeftSmsNum); if (m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect(_T("SmsNum"), strNewSmsNum); } LONGLONG llSmsNum = _ttoll(strNewSmsNum); llSmsNum++; str.Format(_T("%lld"), llSmsNum); if (str.GetLength() < 10) { pGetRet->iErrCode = -4; _tcscpy(pGetRet->szErrMsg, _T("生成新的端口号错误")); SendFrame(SMSFUNC_TD2SIGNATURE_GETMAXSMSNUM, (BYTE*)pGetRet, sizeof(ANS_TD2Signature_GetMaxSmsNum)); //发送返回 return 1; } pGetRet->iTDID = pGet->iTDID; pGetRet->iErrCode = 0; _tcscpy(pGetRet->szErrMsg, _T("取新端口号成功")); _tcscpy(pGetRet->szMaxSmsNum, str); SendFrame(SMSFUNC_TD2SIGNATURE_GETMAXSMSNUM, (BYTE*)pGetRet, sizeof(ANS_TD2Signature_GetMaxSmsNum)); //发送返回 return 1; } catch (...) { LOG_APPERROR(_T("T")); return 0; } return 0; } long CProcessSocket::Process_TDSet_Signature_Upload(REQ_TD2Signature_Upload* pUpload) { try { CString str; ANS_TD2Signature_Upload* pUploadRet = new ANS_TD2Signature_Upload; //权限不够,什么也不返回 memset(pUploadRet, 0, sizeof(ANS_TD2Signature_Upload)); pUploadRet->iTDID = pUpload->iTDID; pUploadRet->iType = pUpload->iType; pUploadRet->iConflict = pUpload->iConflict; pUploadRet->iAutoPort = pUpload->iAutoPort; pUploadRet->iAllCount = pUpload->iAllCount; pUploadRet->iUpCount = pUpload->iUpCount + pUpload->iCount; //已上传数量增加 pUploadRet->iCount = pUpload->iCount; pUploadRet->iCover = pUpload->iCover; pUploadRet->iAdd = pUpload->iAdd; pUploadRet->iDel = pUpload->iDel; pUploadRet->iIgnore = pUpload->iIgnore; pUploadRet->iFail = pUpload->iFail; if (!(m_ulPurview & PURVIEW_LIST)) //没有权限修改资料 { pUploadRet->iStatus = -1; _tcscpy(pUploadRet->szErrMsg, _T("权限异常1")); SendFrame(SMSFUNC_TD2SIGNATURE_UPLOAD, (BYTE*)pUploadRet, sizeof(ANS_TD2Signature_Upload)); //发送返回 return 1; } ANS_TD2Signature_Data* pData = (ANS_TD2Signature_Data*)((BYTE*)pUpload + sizeof(REQ_TD2Signature_Upload)); for (int i = 0; i < pUploadRet->iCount; i++) { CString strSignature = pData[i].szSignature; CString strSmsNum = pData[i].szSmsNum; CString strBZ; CString strOldSignature; BOOL bExist = false; int iCover = 0; int iAdd = 0; int iDel = 0; int iIgnore = 0; int iError = 0; BOOL bGetNewPort = false; int iStatus = 0; //第一步,先查询端口号是否存在 str.Format(_T("select * from TD2Signature where SmsNum='%s' and TDID=%d order by SignatureID desc"), strSmsNum, pUploadRet->iTDID); if (strSmsNum.GetLength() > 0 && m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { bExist = true; if (pData[i].iOperType == 2) ////操作类型:0-新增,1-修改,2-删除 { iDel = 1; } //int iConflict; //冲突处理如0-已存在-覆盖;1-如已存在-仍然新增;2-如已存在-忽略;3-如已存在-换端口申请; switch (pUploadRet->iConflict) { case 0: //覆盖 iCover = 1; break; case 1: //新增 iAdd = 1; break; case 3: iAdd = 1; //新增 bGetNewPort = true; //换新端口号 break; default: //忽略 iIgnore = 1; break; } if (iCover == 1) //属于覆盖,需要记录原信息 { //增加备注信息 int lOldStatus = 0; m_AdoRS.GetCollect(_T("SignatureID"), pData[i].iSignatureID); m_AdoRS.GetCollect(_T("Status"), lOldStatus); m_AdoRS.GetCollect(_T("Signature"), strOldSignature); m_AdoRS.GetCollect(_T("BZ"), strBZ); str.Format(_T("原状态:%d,原签名:%s "), lOldStatus, strOldSignature); strBZ.Append(str); } } else { iAdd = 1; //没找到端口记录,属于新增 } if (pUploadRet->iType == 0) //0-需要报备,1为已报备,只上传 { iStatus = 0; ////状态,0-待上报;1-已上报;2-已审核通过;3-已审核未通过;4-已删除 if (pUploadRet->iAutoPort && _tcslen(pData[i].szSmsNum) <= 0) //自动生成新端口号,并且端口号为空 { bGetNewPort = true; //换新端口号 } } else { iStatus = 2; ////状态,0-待上报;1-已上报;2-已审核通过;3-已审核未通过;4-已删除 } if (bGetNewPort) //生成新端口号 { //生成了新端口号,状态肯定是待上传 iStatus = 0; ////状态,0-待上报;1-已上报;2-已审核通过;3-已审核未通过;4-已删除 CString strNewSmsNum; //生成新端口号 str.Format(_T("select * from TD2 with(nolock) where TDID=%d"), pUploadRet->iTDID); if (m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect(_T("SignatureNum"), strNewSmsNum); if (strNewSmsNum.GetLength() >= 6) { #ifdef SMSCENTER_ONE strNewSmsNum.Append(_T("1550000")); #endif #ifdef SMSCENTER_THREE strNewSmsNum.Append(_T("3550000")); #endif CString strLeftSmsNum = strNewSmsNum.Left(10); str.Format(_T("select top 1 * from TD2Signature where TDID=%d and left(smsnum,10)='%s' order by smsnum desc"), pUploadRet->iTDID, strLeftSmsNum); if (m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect(_T("SmsNum"), strNewSmsNum); } LONGLONG llSmsNum = _ttoll(strNewSmsNum); llSmsNum++; strNewSmsNum.Format(_T("%lld"), llSmsNum); } } if (strNewSmsNum.GetLength() >= 10) { _tcscpy(pData[i].szSmsNum, strNewSmsNum); strSmsNum = strNewSmsNum; //新端口号 } else { iError = 1; } } if (strSmsNum.GetLength() <= 0) //没有端口号的有问题 { iError = 1; } if (iError == 0 && iIgnore == 0) //上面没出错并且没有忽略,继续 { CString strStatus; CString strTDID; CString strOperType; CString strAuditTime = _T("NULL"); if (pData[i].iOperType == 2) //如果操作是删除,并且是上传已审核记录,则状态为4-已删除 { if (iStatus == 2) { iStatus = 4;////状态,0-待上报;1-已上报;2-已审核通过;3-已审核未通过;4-已删除 strAuditTime = _T("GetDate()"); //审核时间为上传记录时间 } } strStatus.Format(_T("%d"), iStatus); strTDID.Format(_T("%d"), pData[i].iTDID); strOperType.Format(_T("%d"), pData[i].iOperType); if (iAdd == 1) { //添加记录 str.Format(_T("insert into TD2Signature (Status,TDID,Signature,SmsNum,CorpID,UserID,OperType,AuditTime,MainSmsNum,CorpanyName,CorpanyNum,Provvince,City,LegalName,LegalCertType,LegalCertID,AgencyName,AgencyCertType,AgencyCertID,PortUsage,PortType,PortUsageCategory,SignatureSource,LocationServerRoom,ContentTemplate,BZ,OperUser) " \ "values(% d, % d, '%s', '%s', % d, % d, % d, % s, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s')"), iStatus, pData[i].iTDID, SqlStr(strSignature), SqlStr(strSmsNum), 0, 0, //corpID,UserID pData[i].iOperType, strAuditTime, SqlStr(pData[i].szMainSmsNum), SqlStr(pData[i].szCorpanyName), SqlStr(pData[i].szCorpanyNum), SqlStr(pData[i].szProvvince), SqlStr(pData[i].szCity), SqlStr(pData[i].szLegalName), SqlStr(pData[i].szLegalCertType), SqlStr(pData[i].szLegalCertID), SqlStr(pData[i].szAgencyName), SqlStr(pData[i].szAgencyCertType), SqlStr(pData[i].szAgencyCertID), SqlStr(pData[i].szPortUsage), SqlStr(pData[i].szPortType), SqlStr(pData[i].szPortUsageCategory), SqlStr(pData[i].szSignatureSource), SqlStr(pData[i].szLocationServerRoom), SqlStr(pData[i].szContentTemplate), SqlStr(strBZ), SqlStr(m_szLoginName) ); } else { //修改记录 CString strSignatureID; strSignatureID.Format(_T("%d"), pData[i].iSignatureID); str = CString("update TD2Signature set ") + CString("Status='") + strStatus + CString("',") + CString("TDID=") + strTDID + CString(",") + CString("Signature='") + SqlStr(strSignature) + CString("',") + CString("SmsNum='") + SqlStr(strSmsNum) + CString("',") + CString("CorpID='") + CString(_T("0")) + CString("',") + CString("UserID='") + CString(_T("0")) + CString("',") + CString("OperType='") + strOperType + CString("',") + CString("AuditTime=") + strAuditTime + CString(",") + CString("MainSmsNum='") + SqlStr(pData[i].szMainSmsNum) + CString("',") + CString("CorpanyName='") + SqlStr(pData[i].szCorpanyName) + CString("',") + CString("CorpanyNum='") + SqlStr(pData[i].szCorpanyNum) + CString("',") + CString("Provvince='") + SqlStr(pData[i].szProvvince) + CString("',") + CString("City='") + SqlStr(pData[i].szCity) + CString("',") + CString("LegalName='") + SqlStr(pData[i].szLegalName) + CString("',") + CString("LegalCertType='") + SqlStr(pData[i].szLegalCertType) + CString("',") + CString("LegalCertID='") + SqlStr(pData[i].szLegalCertID) + CString("',") + CString("AgencyName='") + SqlStr(pData[i].szAgencyName) + CString("',") + CString("AgencyCertType='") + SqlStr(pData[i].szAgencyCertType) + CString("',") + CString("AgencyCertID='") + SqlStr(pData[i].szAgencyCertID) + CString("',") + CString("PortUsage='") + SqlStr(pData[i].szPortUsage) + CString("',") + CString("PortType='") + SqlStr(pData[i].szPortType) + CString("',") + CString("PortUsageCategory='") + SqlStr(pData[i].szPortUsageCategory) + CString("',") + CString("SignatureSource='") + SqlStr(pData[i].szSignatureSource) + CString("',") + CString("LocationServerRoom='") + SqlStr(pData[i].szLocationServerRoom) + CString("',") + CString("ContentTemplate='") + SqlStr(pData[i].szContentTemplate) + CString("',") + CString("BZ='") + SqlStr(strBZ) + CString("', ") + CString("OperUser='") + SqlStr(m_szLoginName) + CString("' ") + CString("where SignatureID=") + strSignatureID; } if (!m_AdoRS.Open(str)) //执行失败 { iCover = 0; // iAdd = 0; iDel = 0; iError = 1; } } pUploadRet->iCover = pUploadRet->iCover + iCover; pUploadRet->iAdd = pUploadRet->iAdd + iAdd; pUploadRet->iDel = pUploadRet->iDel + iDel; pUploadRet->iIgnore = pUploadRet->iIgnore + iIgnore; pUploadRet->iFail = pUploadRet->iFail + iError; } long lSize = sizeof(ANS_TD2Signature_Upload) + sizeof(ANS_TD2Signature_Data) * 0;// pUploadRet->iCount; //暂时不返回具体数据 BYTE* pDataRet = new BYTE[lSize]; memset(pDataRet, 0, lSize); ANS_TD2Signature_Upload* pRet = (ANS_TD2Signature_Upload*)pDataRet; ANS_TD2Signature_Data* pRetData = (ANS_TD2Signature_Data*)(pDataRet + sizeof(ANS_TD2Signature_Upload)); *pRet = *pUploadRet; delete pUploadRet; //删除之前新增的返回头数据 /* for (int i = 0; i < lCount && !m_AdoRS.IsEOF(); i++) { m_AdoRS.GetCollect(_T("TDID"), pRetData->iTDID); m_AdoRS.GetCollect(_T("AccessPort"), pRetData->szSmsNum); m_AdoRS.GetCollect(_T("SignatureTitle"), pRetData->szSignatureTitle); m_AdoRS.MoveNext(); pRetData++; } */ pRet->iStatus = 0; //返回记录数 _tcscpy(pRet->szErrMsg, _T("上传成功")); SendFrame(SMSFUNC_TD2SIGNATURE_UPLOAD, (BYTE*)pDataRet, lSize); //发送返回 return 1; } catch (...) { LOG_APPERROR(_T("T")); return 0; } return 0; }