SmsCenter/ProcessSocket3.cpp

982 lines
34 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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;
}