1、增加签名校验功能,在TD2Signature表中有的记录才允许发送。
2、CSgip,修改了发送规则,断连时等到连接恢复后再发送短信
This commit is contained in:
parent
b10841b3d1
commit
53133d3841
@ -14,7 +14,7 @@
|
||||
|
||||
|
||||
广州首易信息技术有限公司
|
||||
2024年2月
|
||||
2025年2月
|
||||
|
||||
目录
|
||||
一、引言 4
|
||||
@ -1513,6 +1513,10 @@
|
||||
|-110 |短信内容长度不符合要求 |Sms_Send |
|
||||
|-111 |没有发送短信权限 |Sms_Send |
|
||||
|-112 |目标号码数量不符合要求 |Sms_Send |
|
||||
|-113 |此企业禁止非模板短信 |Sms_Send |
|
||||
|-114 |此用户禁止非模板短信 |Sms_Send |
|
||||
|-115 |此企业禁止客户端短信 |Sms_Send |
|
||||
|-116 |此用户禁止客户端短信 |Sms_Send |
|
||||
|-122 |用户状态异常 |Sms_Send |
|
||||
|-123 |企业状态异常 |Sms_Send |
|
||||
|-124 |用户权限不足 |Sms_Send |
|
||||
|
@ -588,6 +588,10 @@ Method不存在
|
||||
此企业禁止非模板短信
|
||||
-114
|
||||
此用户禁止非模板短信
|
||||
-115
|
||||
此企业禁止客户端短信
|
||||
-116
|
||||
此用户禁止客户端短信
|
||||
-122
|
||||
用户状态异常
|
||||
-123
|
23
FXSend.rc
23
FXSend.rc
@ -100,7 +100,6 @@ BEGIN
|
||||
LTEXT "地址",IDC_STATIC,12,68,17,8
|
||||
LTEXT "用户",IDC_STATIC,12,82,17,8
|
||||
LTEXT "密码",IDC_STATIC,85,82,17,8
|
||||
EDITTEXT IDC_MSG2,170,9,297,172,ES_MULTILINE | ES_READONLY | ES_WANTRETURN
|
||||
PUSHBUTTON "test",IDC_TEST,4,0,25,15
|
||||
EDITTEXT IDC_EDIT1,7,33,147,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
|
||||
EDITTEXT IDC_MSG3,170,198,297,155,ES_MULTILINE | ES_READONLY | ES_WANTRETURN
|
||||
@ -128,12 +127,21 @@ BEGIN
|
||||
LTEXT "Window",IDC_STATIC,12,255,25,8
|
||||
EDITTEXT IDC_DELAY,117,237,24,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
LTEXT "Delay",IDC_STATIC,93,239,21,8
|
||||
CONTROL "强制去签名",IDC_EXCM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,79,288,56,10
|
||||
CONTROL "检测签名",IDC_CHECKCM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,288,48,10
|
||||
CONTROL "显示日志",IDC_SHOWLOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,185,49,10
|
||||
CONTROL "强制去签名",IDC_EXCM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,79,288,56,10
|
||||
CONTROL "半",IDC_EXCM2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,137,288,24,10
|
||||
CONTROL "不处理Ret",IDC_NORET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,301,52,10
|
||||
CONTROL "不处理Report",IDC_NOREPORT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,79,301,64,10
|
||||
CONTROL "半",IDC_EXCM2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,137,288,24,10
|
||||
CONTROL "不处理上行",IDC_NORECV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,315,56,10
|
||||
CONTROL "拼接长短信",IDC_SUPLONGSMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,79,315,56,10
|
||||
CONTROL "除去长信标记",IDC_EXPLONGSMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,328,64,10
|
||||
LTEXT "数据包大小",IDC_STATIC,80,330,41,8
|
||||
EDITTEXT IDC_ONEPACKSMSCOUNT,123,327,24,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "号码不加86",IDC_NO86,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,341,54,10
|
||||
CONTROL "校验报备签名",IDC_VERIFYSIGNNATURE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,79,342,64,10
|
||||
EDITTEXT IDC_MSG2,170,9,297,172,ES_MULTILINE | ES_READONLY | ES_WANTRETURN
|
||||
LTEXT "中国移动",IDC_TDMSG,12,130,145,8
|
||||
CONTROL "显示日志",IDC_SHOWLOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,172,185,49,10
|
||||
PUSHBUTTON "test2",IDC_TEST2,4,16,25,14
|
||||
PUSHBUTTON "清零",IDC_0,134,51,24,12,0,WS_EX_STATICEDGE
|
||||
LTEXT "select",IDC_STATIC,12,270,25,8
|
||||
@ -147,16 +155,9 @@ BEGIN
|
||||
LTEXT "--",IDC_S_ZD_SEND2,143,105,9,8
|
||||
LTEXT "A",IDC_SELECT_DB,107,105,8,8
|
||||
LTEXT "--",IDC_S_ZD_RECV2,143,117,9,8
|
||||
LTEXT "中国移动",IDC_TDMSG,12,130,145,8
|
||||
PUSHBUTTON "运营商设置",IDC_TDSETUP,15,105,56,18
|
||||
CONTROL "拼接长短信",IDC_SUPLONGSMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,79,315,56,10
|
||||
CONTROL "除去长信标记",IDC_EXPLONGSMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,328,64,10
|
||||
LTEXT "数据包大小",IDC_STATIC,80,331,41,8
|
||||
EDITTEXT IDC_ONEPACKSMSCOUNT,123,328,24,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
CONTROL "不处理上行",IDC_NORECV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,315,56,10
|
||||
CONTROL "显示详细日志",IDC_SHOWLOG2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,227,185,64,10
|
||||
LTEXT "Prov",IDC_STATIC,85,68,17,8
|
||||
CONTROL "号码不加86",IDC_NO86,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,341,54,10
|
||||
END
|
||||
|
||||
IDD_TDSETUP DIALOGEX 0, 0, 366, 317
|
||||
|
238
FXSendDlg.cpp
238
FXSendDlg.cpp
@ -83,6 +83,7 @@ CFXSendDlg::CFXSendDlg(CWnd* pParent /*=NULL*/)
|
||||
, m_bNoRecv(FALSE)
|
||||
, m_strDBProvider(_T(""))
|
||||
, m_lCheckReSend(0)
|
||||
, m_bVerifySignature(FALSE)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CFXSendDlg)
|
||||
m_strIP = _T("");
|
||||
@ -297,6 +298,7 @@ void CFXSendDlg::DoDataExchange(CDataExchange* pDX)
|
||||
DDX_Text(pDX, IDC_DBPROVIDER, m_strDBProvider);
|
||||
DDV_MaxChars(pDX, m_strDBProvider, 30);
|
||||
DDX_CBIndex(pDX, IDC_CHECKRESEND, m_lCheckReSend);
|
||||
DDX_Check(pDX, IDC_VERIFYSIGNNATURE, m_bVerifySignature);
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CFXSendDlg, CDialog)
|
||||
@ -399,6 +401,7 @@ BOOL CFXSendDlg::OnInitDialog()
|
||||
m_bCheckBack = m_MCom_Head.bCheckBack;
|
||||
m_bMainReSend = m_MCom_Head.bMainReSend;
|
||||
m_bCheckCM = m_MCom_Head.bCheckCM;
|
||||
m_bVerifySignature = m_MCom_Head.bVerifySignature;
|
||||
m_bExCM = m_MCom_Head.bExCM;
|
||||
m_bExCM2 = m_MCom_Head.bExCM2;
|
||||
m_bNo86 = m_MCom_Head.bNo86;
|
||||
@ -612,6 +615,7 @@ void CFXSendDlg::OnSave()
|
||||
m_MCom_Head.lDelay = m_lDelay;
|
||||
m_MCom_Head.bMainReSend=m_bMainReSend;
|
||||
m_MCom_Head.bCheckCM = m_bCheckCM;
|
||||
m_MCom_Head.bVerifySignature = m_bVerifySignature;
|
||||
m_MCom_Head.bExCM = m_bExCM;
|
||||
m_MCom_Head.bExCM2 = m_bExCM2;
|
||||
m_MCom_Head.bNo86 = m_bNo86;
|
||||
@ -1485,6 +1489,130 @@ try
|
||||
break;
|
||||
}
|
||||
|
||||
if (pDlg->m_MCom_Head.bVerifySignature) //检验报备签名,如果没在运营商报备的签名不能发送,本步骤取出每条短信的签名
|
||||
{
|
||||
for (int i = 0; i < lDelCount; i++)
|
||||
{
|
||||
long lSignatureStart = 0; //签名起始位置
|
||||
CString strSignatureMsg = pMT[i].Msg; //含签名的内容
|
||||
CString strSignature;
|
||||
//判断内容是否为长信
|
||||
if (strSignatureMsg.GetLength() > 7 &&
|
||||
strSignatureMsg.Left(2) == CString(_T("长信")) &&
|
||||
strSignatureMsg.Mid(6, 1) == CString(_T(":")))
|
||||
{
|
||||
|
||||
if (strSignatureMsg.Mid(5, 1) != CString(_T("1"))) //不是长信第一条,需要取长信第一条
|
||||
{
|
||||
BOOL bGetSignatureMsg = false;
|
||||
strSignatureMsg = _T("");
|
||||
//先从已读取的内容中取第一条内容
|
||||
for (int j = 0; j < lDelCount; j++)
|
||||
{
|
||||
if (/*pMT[j].SendNum == pMT[i].SendNum &&*/
|
||||
pMT[j].RecvNum == pMT[i].RecvNum &&
|
||||
pMT[j].Msg.GetLength() > 7 &&
|
||||
pMT[j].Msg.Left(2) == CString(_T("长信")) &&
|
||||
pMT[j].Msg.Mid(6, 1) == CString(_T(":")) &&
|
||||
pMT[j].Msg.Mid(5, 1) == CString(_T("1")) &&
|
||||
pMT[j].Msg.Mid(2, 2) == pMT[i].Msg.Mid(2, 2))
|
||||
{
|
||||
strSignatureMsg = pMT[j].Msg;
|
||||
bGetSignatureMsg = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
//再从发送表的内容中取第一条
|
||||
if (!bGetSignatureMsg)
|
||||
{
|
||||
CSingleLock cl(&pDlg->m_MT_FS_Lock, true);
|
||||
POSITION pos = pDlg->m_MT_FS.GetHeadPosition(); // 获取链表头部位置
|
||||
while (pos != NULL)
|
||||
{
|
||||
FXSend_MT mt = pDlg->m_MT_FS.GetNext(pos); // 获取当前元素并移动位置
|
||||
// 处理 value
|
||||
if (/*mt.SendNum == pMT[i].SendNum &&*/
|
||||
mt.RecvNum == pMT[i].RecvNum &&
|
||||
mt.Msg.GetLength() > 7 &&
|
||||
mt.Msg.Left(2) == CString(_T("长信")) &&
|
||||
mt.Msg.Mid(6, 1) == CString(_T(":")) &&
|
||||
mt.Msg.Mid(5, 1) == CString(_T("1")) &&
|
||||
mt.Msg.Mid(2, 2) == pMT[i].Msg.Mid(2, 2))
|
||||
{
|
||||
strSignatureMsg = mt.Msg;
|
||||
bGetSignatureMsg = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
cl.Unlock();
|
||||
}
|
||||
//再从已发送表的内容中取第一条
|
||||
if (!bGetSignatureMsg)
|
||||
{
|
||||
CSingleLock cl(&pDlg->m_MT_YF_Lock, true);
|
||||
POSITION pos = pDlg->m_MT_YF.GetHeadPosition(); // 获取链表头部位置
|
||||
while (pos != NULL)
|
||||
{
|
||||
FXSend_MT mt = pDlg->m_MT_YF.GetNext(pos); // 获取当前元素并移动位置
|
||||
// 处理 value
|
||||
if (/*mt.SendNum == pMT[i].SendNum &&*/
|
||||
mt.RecvNum == pMT[i].RecvNum &&
|
||||
mt.Msg.GetLength() > 7 &&
|
||||
mt.Msg.Left(2) == CString(_T("长信")) &&
|
||||
mt.Msg.Mid(6, 1) == CString(_T(":")) &&
|
||||
mt.Msg.Mid(5, 1) == CString(_T("1")) &&
|
||||
mt.Msg.Mid(2, 2) == pMT[i].Msg.Mid(2, 2))
|
||||
{
|
||||
strSignatureMsg = mt.Msg;
|
||||
bGetSignatureMsg = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
cl.Unlock();
|
||||
}
|
||||
|
||||
//再从数据库中读取第一条内容
|
||||
if (strSignatureMsg.GetLength() <= 0)
|
||||
{
|
||||
str.Format(_T("select msg from smssend with(nolock) where sendid>%d and sendid<%d and Recvnum='%s' and sendnum='%s' and substring(msg,3,2)='%s' and substring(msg,6,1)='1'"), pMT[i].SendID - 200, pMT[i].SendID + 200, pMT[i].RecvNum, pMT[i].SendNum, pMT[i].Msg.Mid(2, 2));
|
||||
if (AdoRS.Open(str) && !AdoRS.IsEOF())
|
||||
{
|
||||
AdoRS.GetCollect(_T("Msg"), strSignatureMsg);
|
||||
}
|
||||
else
|
||||
{
|
||||
//发送表查不到,需要到已发表查询
|
||||
str.Format(_T("select msg from corpsmsm.dbo.smssend with(nolock) where sendid>%d and sendid<%d and Recvnum='%s' and substring(msg,3,2)='%s' and substring(msg,6,1)='1'"), pMT[i].SendID - 200, pMT[i].SendID + 200, pMT[i].RecvNum, pMT[i].Msg.Mid(2, 2));
|
||||
if (AdoRS.Open(str) && !AdoRS.IsEOF())
|
||||
{
|
||||
AdoRS.GetCollect(_T("Msg"), strSignatureMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//因为是长短信,签名内容先去掉长信标识
|
||||
strSignatureMsg = strSignatureMsg.Mid(7); //取7个字符后的内容
|
||||
}
|
||||
|
||||
//取签名
|
||||
long lSignatureMsgLen = strSignatureMsg.GetLength();
|
||||
if (strSignatureMsg.Left(1) == CString(_T("【"))) //内容是以"【"开头的,开始取签名
|
||||
{
|
||||
for (int i = 1; i < lSignatureMsgLen && i < 21; i++)
|
||||
{
|
||||
if (strSignatureMsg.Mid(i, 1) == "】")
|
||||
{
|
||||
strSignature = strSignatureMsg.Mid(1, i - 1); //取到签名
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (strSignature.GetLength() > 0 && strSignature.GetLength() < 20) //有效签名
|
||||
{
|
||||
pMT[i].strSignature = strSignature;
|
||||
}
|
||||
}
|
||||
}
|
||||
//在send中删除
|
||||
if (!bOnlySubmitMmsFile) //不是提交彩信模板的,取出后需要删除
|
||||
{
|
||||
@ -1513,6 +1641,7 @@ try
|
||||
//判断是否需要换另一个检索方法
|
||||
lSelectType==1?bSelectTimer=true:bSelectNoTimer=true; //记录是否有检索记录
|
||||
|
||||
|
||||
//开始发送,将需要发送的短信加入到发送列表
|
||||
strTemp.Format( _T("发送 正在提交%d条...") , lDelCount );
|
||||
AddLogMsg(Send, strTemp );
|
||||
@ -1810,6 +1939,26 @@ try
|
||||
_tcscpy(szMsg , mt.Msg );
|
||||
#ifndef SMSCENTER_NX
|
||||
long lMsgLen =_tcslen(szMsg);
|
||||
|
||||
if (pDlg->m_MCom_Head.bVerifySignature) //检验报备签名,如果没在运营商报备的签名不能发送
|
||||
{
|
||||
if (!pDlg->VerifySignature(&AdoRS2, &mt, szSendNum2))
|
||||
{
|
||||
lBackStatus = -121;
|
||||
strTemp.Format(_T("发送 %d %s %d,签名校验失败"), mt.CorpID, mt.RecvNum, mt.SendID);
|
||||
AddLogMsg(Send, strTemp);
|
||||
|
||||
mt.Status = 11; //发送失败
|
||||
mt.RecvStatus.Format(_T("TJ-签%d"), lBackStatus);
|
||||
mt.SendTime = COleDateTime::GetCurrentTime();
|
||||
b = pDlg->WriteSendRetToCorpSmsM(&AdoRS2, &mt);
|
||||
if (!b) //数据库异常
|
||||
{
|
||||
bSql = false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ( pDlg->m_MCom_Head.bCheckCM )
|
||||
{
|
||||
/*
|
||||
@ -6317,6 +6466,95 @@ void CFXSendDlg::GetCurrentPath(TCHAR * pPath)
|
||||
pPath[j+1]=0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
typedef struct _TD2SignatureSmsNum
|
||||
{
|
||||
long lSignatureID;
|
||||
CString strSmsNum;
|
||||
}TD2SignatureSmsNum;
|
||||
|
||||
typedef CList<TD2SignatureSmsNum, TD2SignatureSmsNum&> CTD2SignatureSmsNum;
|
||||
|
||||
|
||||
BOOL CFXSendDlg::VerifySignature(CAdoRecordSet* pAdoRS, FXSend_MT* pMT, TCHAR * pSrcNum)
|
||||
{
|
||||
BOOL bVerfitySignature = false;
|
||||
CString str;
|
||||
CString strSignatrue = pMT->strSignature;
|
||||
|
||||
if (strSignatrue.GetLength() < 1) //签名小于1的校验不通过
|
||||
{
|
||||
return bVerfitySignature;
|
||||
}
|
||||
|
||||
CTD2SignatureSmsNum SmsNumList;
|
||||
|
||||
long lMinSmsNumLen = 21; //最小的端口号长度
|
||||
long lSmsNumCount = 0;
|
||||
str.Format(_T("select top 100 * from TD2Signature with(nolock) where Signature='%s' and status=2 and TDID=%d order by SignatureID desc"), SQLStr(strSignatrue), m_MCom_Head.lSendFCS );
|
||||
pAdoRS->Open(str);
|
||||
for (int i = 0; i < 100 && !pAdoRS->IsEOF(); i++)
|
||||
{
|
||||
TD2SignatureSmsNum smsNum;
|
||||
pAdoRS->GetCollect(_T("SmsNum"), smsNum.strSmsNum); //取端口号
|
||||
pAdoRS->GetCollect(_T("SignatureID"), smsNum.lSignatureID); //取ID
|
||||
SmsNumList.AddTail(smsNum);
|
||||
|
||||
if (smsNum.strSmsNum.GetAllocLength() < lMinSmsNumLen) //取最小的长度
|
||||
lMinSmsNumLen = smsNum.strSmsNum.GetAllocLength();
|
||||
pAdoRS->MoveNext();
|
||||
lSmsNumCount++;
|
||||
}
|
||||
|
||||
if (lSmsNumCount <= 0)
|
||||
{
|
||||
return bVerfitySignature;
|
||||
}
|
||||
|
||||
CString strSendNum = pMT->SendNum;
|
||||
int iSendNumLen = strSendNum.GetLength();
|
||||
|
||||
for (int j = iSendNumLen; j >= 2 && j >= lMinSmsNumLen; j--) //发送号码从长到短匹配
|
||||
{
|
||||
CString strSendNum2 = strSendNum.Left(j);
|
||||
|
||||
POSITION pos = SmsNumList.GetHeadPosition(); // 获取链表头部位置
|
||||
while (pos != NULL)
|
||||
{
|
||||
TD2SignatureSmsNum mt = SmsNumList.GetNext(pos); // 获取当前元素并移动位置
|
||||
|
||||
if (strSendNum2 == mt.strSmsNum)
|
||||
{
|
||||
bVerfitySignature = true;
|
||||
pMT->SendNum = mt.strSmsNum; //更改发送号码
|
||||
_tcscpy(pSrcNum, mt.strSmsNum);//更改发送号码
|
||||
|
||||
//计数增加1
|
||||
str.Format(_T("update TD2Signature set SendCount=SendCount+1 where SignatureID=%d"), mt.lSignatureID);
|
||||
pAdoRS->Open(str);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (bVerfitySignature) //匹配上签名
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!bVerfitySignature && SmsNumList.GetCount() > 0)
|
||||
{
|
||||
TD2SignatureSmsNum mt = SmsNumList.GetHead(); // 取第一条记录
|
||||
bVerfitySignature = true;
|
||||
pMT->SendNum = mt.strSmsNum; //更改发送号码
|
||||
_tcscpy(pSrcNum, mt.strSmsNum);//更改发送号码
|
||||
|
||||
//计数增加1
|
||||
str.Format(_T("update TD2Signature set SendCount=SendCount+1 where SignatureID=%d"), mt.lSignatureID);
|
||||
pAdoRS->Open(str);
|
||||
}
|
||||
|
||||
return bVerfitySignature;
|
||||
}
|
||||
long CFXSendDlg::WriteSendRetToCorpSmsM(CAdoRecordSet * pAdoRS,FXSend_MT * pMT)
|
||||
{
|
||||
CString str;
|
||||
|
@ -470,6 +470,7 @@ public:
|
||||
BOOL FS_Add(FXSend_MT mt);
|
||||
BOOL FS_Get(FXSend_MT & mt);
|
||||
static CString SQLStr(CString & str);
|
||||
BOOL VerifySignature(CAdoRecordSet* pAdoRS, FXSend_MT* pMT, TCHAR* pSrcNum);
|
||||
long WriteSendRetToCorpSmsM(CAdoRecordSet * pAdoRS,FXSend_MT * pMT);
|
||||
long WriteSendRetToCorpSmsM2(CAdoRecordSet * pAdoRS,FXSend_MT * pMT,CString & strValues);
|
||||
long WriteSendRetToCorpSmsM_XY(CAdoRecordSet * pAdoRS,FXSend_MT * pMT);
|
||||
@ -674,6 +675,7 @@ public:
|
||||
afx_msg void OnCbnSelchangeCheckresend();
|
||||
int m_lCheckReSend;
|
||||
static CStringA UnicodeToString(TCHAR * pMsg);
|
||||
BOOL m_bVerifySignature;
|
||||
};
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
|
@ -128,6 +128,7 @@ namespace MobsetApi {
|
||||
m_lReqReturn = ns1__Sms_USCORESendResponse->Count;
|
||||
return SOAP_OK;
|
||||
}
|
||||
BOOL bTemplateSms = false;
|
||||
if (ns1__Template_USCORESendSms != nullptr) //模板短信转发的,将参数转移过来
|
||||
{
|
||||
ns1__Sms_USCORESend->soap = ns1__Template_USCORESendSms->soap;
|
||||
@ -140,6 +141,8 @@ namespace MobsetApi {
|
||||
ns1__Sms_USCORESend->LongSms = 1; //默认为长短信
|
||||
ns1__Sms_USCORESend->MobileList = ns1__Template_USCORESendSms->MobileList;
|
||||
ns1__Sms_USCORESend->Content = NULL;
|
||||
|
||||
bTemplateSms = true;
|
||||
}
|
||||
|
||||
CFXSendDlg* pDlg = (CFXSendDlg*)m_pParam;
|
||||
@ -254,14 +257,14 @@ namespace MobsetApi {
|
||||
return SOAP_OK;
|
||||
}
|
||||
|
||||
if (userPro.dwCorpSDK & SDK_PROHIBITNONTEMPLATE) //禁止非模板短信
|
||||
if (!bTemplateSms && (userPro.dwCorpSDK & SDK_PROHIBITNONTEMPLATE) ) //如果是非模板短信,并且禁止非模板短信
|
||||
{
|
||||
*ns1__Sms_USCORESendResponse->ErrMsg = L"此企业禁止非模板短信";
|
||||
ns1__Sms_USCORESendResponse->Count = -113;
|
||||
m_lReqReturn = ns1__Sms_USCORESendResponse->Count;
|
||||
return SOAP_OK;
|
||||
}
|
||||
if (userPro.dwSDK & SDK_PROHIBITNONTEMPLATE) //禁止非模板短信
|
||||
if (!bTemplateSms && (userPro.dwSDK & SDK_PROHIBITNONTEMPLATE) ) //如果是非模板短信,并且禁止非模板短信
|
||||
{
|
||||
*ns1__Sms_USCORESendResponse->ErrMsg = L"此用户禁止非模板短信";
|
||||
ns1__Sms_USCORESendResponse->Count = -114;
|
||||
@ -2817,6 +2820,7 @@ namespace MobsetApi {
|
||||
CFXSendDlg* pDlg = (CFXSendDlg*)m_pParam;
|
||||
|
||||
|
||||
BOOL bTemplateSms = false;
|
||||
long lCorpID = ns1__Mms_USCORESend->CorpID;
|
||||
m_lReqCorpID = lCorpID;
|
||||
CString strLoginName;
|
||||
@ -2886,6 +2890,22 @@ namespace MobsetApi {
|
||||
m_lReqReturn = ns1__Mms_USCORESendResponse->Count;
|
||||
return SOAP_OK;
|
||||
}
|
||||
|
||||
if (!bTemplateSms && (userPro.dwCorpSDK & SDK_PROHIBITNONTEMPLATE)) //如果是非模板短信,并且禁止非模板短信
|
||||
{
|
||||
*ns1__Mms_USCORESendResponse->ErrMsg = L"此企业禁止非模板短信";
|
||||
ns1__Mms_USCORESendResponse->Count = -113;
|
||||
m_lReqReturn = ns1__Mms_USCORESendResponse->Count;
|
||||
return SOAP_OK;
|
||||
}
|
||||
if (!bTemplateSms && (userPro.dwSDK & SDK_PROHIBITNONTEMPLATE)) //如果是非模板短信,并且禁止非模板短信
|
||||
{
|
||||
*ns1__Mms_USCORESendResponse->ErrMsg = L"此用户禁止非模板短信";
|
||||
ns1__Mms_USCORESendResponse->Count = -114;
|
||||
m_lReqReturn = ns1__Mms_USCORESendResponse->Count;
|
||||
return SOAP_OK;
|
||||
}
|
||||
|
||||
CString str;
|
||||
BOOL bAtTime = false;
|
||||
CString strTimer = _T("NULL");
|
||||
|
@ -475,8 +475,12 @@ DWORD WINAPI CSgip::SocketSend(LPVOID lParam)
|
||||
CSgip* pNet = (CSgip*)lParam;
|
||||
while (!pNet->m_bQuitThread)
|
||||
{
|
||||
//发送短信
|
||||
long lCount = pNet->Back_Send();
|
||||
long lCount = 0;
|
||||
if (pNet->m_bConnect && pNet->m_bLoginSgip == 0)
|
||||
{
|
||||
//发送短信
|
||||
long lCount = pNet->Back_Send();
|
||||
}
|
||||
if (lCount > 0)
|
||||
Sleep_Lu(1);
|
||||
else
|
||||
|
@ -50,7 +50,7 @@ BOOL CSmsSend::OnInitDialog()
|
||||
|
||||
|
||||
m_strMobile=_T("13922455188");
|
||||
m_strMsg=_T("测试短信,祝你工作顺利。此短信免费,不用回复,如果打扰,请见谅![广州首易]");
|
||||
m_strMsg=_T("【广州首易】本次操作验证码是:723623,5分钟有效,如非本人操作请忽略。");
|
||||
|
||||
UpdateData(false);
|
||||
|
||||
|
4
StdAfx.h
4
StdAfx.h
@ -131,7 +131,8 @@ typedef struct _MobileCom_Head
|
||||
long lSendFCS;
|
||||
long lReport;
|
||||
long lDelay;
|
||||
TCHAR szWindow[128];
|
||||
TCHAR szWindow[126];
|
||||
BOOL bVerifySignature;
|
||||
BOOL bMainReSend;
|
||||
BOOL bAllNum;
|
||||
BOOL bCheckCM;
|
||||
@ -342,6 +343,7 @@ typedef struct _FXSend_MT
|
||||
BOOL bLongSms;
|
||||
long lLongSmsRand;
|
||||
BOOL bOnlySubmitMmsFile;
|
||||
CString strSignature;
|
||||
}FXSend_MT;
|
||||
|
||||
typedef CList<FXSend_MT , FXSend_MT&> CFXSend_MT;
|
||||
|
@ -64,6 +64,8 @@
|
||||
#define IDC_EXCM 1028
|
||||
#define IDC_CHECKCM 1029
|
||||
#define IDC_SUBNUM 1030
|
||||
#define IDC_CHECKCM2 1030
|
||||
#define IDC_VERIFYSIGNNATURE 1030
|
||||
#define IDC_CMPP 1031
|
||||
#define IDC_CMPP_EXCHANGENUM 1032
|
||||
#define IDC_CMPP_PORT 1033
|
||||
|
Loading…
Reference in New Issue
Block a user