📄 mydatabase.cpp
字号:
pPI->szParam1=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"p2");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pPI->szParam2=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"channel");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pPI->nChannel=(int)var.lVal;
var=pRs->GetCollect(L"sedflag");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pPI->nSedFlag=(int)var.lVal;
// pPI->nType=(int)(long)pRs->GetCollect(L"type");
// pPI->szName=(LPTSTR)_bstr_t(pRs->GetCollect(L"name"));
// pPI->szSQL=(LPTSTR)_bstr_t(pRs->GetCollect(L"sql"));
// pPI->szPushType=(LPTSTR)_bstr_t(pRs->GetCollect(L"pushtype"));
// pPI->szTime1=(LPTSTR)_bstr_t(pRs->GetCollect(L"t1"));
// pPI->szTime2=(LPTSTR)_bstr_t(pRs->GetCollect(L"t2"));
// pPI->szParam1=(LPTSTR)_bstr_t(pRs->GetCollect(L"p1"));
// pPI->szParam2=(LPTSTR)_bstr_t(pRs->GetCollect(L"p2"));
// pPI->nChannel=(int)(long)pRs->GetCollect(L"channel");
// pPI->nSedFlag=(int)(long)pRs->GetCollect(L"sedflag");
break;
case 8: // MISC信息
{
MISCMSG mm;
var=pRs->GetCollect(L"feetype");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
mm.szFeeType=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"subid");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
mm.szSubID=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"content");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
mm.szContent=(LPTSTR)_bstr_t(var);
// mm.szFeeType=(LPTSTR)_bstr_t(pRs->GetCollect(L"feetype"));
// mm.szSubID=(LPTSTR)_bstr_t(pRs->GetCollect(L"subid"));
// mm.szContent=(LPTSTR)_bstr_t(pRs->GetCollect(L"content"));
pList->push_back(mm);
}
break;
case 1: // 返回语
{
OUTPUTMSG msg;
var=pRs->GetCollect(L"type");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
msg.nType=var.lVal;
var=pRs->GetCollect(L"feecode");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
msg.szFeeCode=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"feetype");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
msg.szFeeType=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"content");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
msg.szMsg=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"sendno");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
msg.szSendNo=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"subid");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
msg.szSubID=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"msgtype");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
msg.nMsgType=var.lVal;
// msg.nType=(int)(long)pRs->GetCollect(L"type");
// msg.szFeeCode=(LPTSTR)_bstr_t(pRs->GetCollect(L"feecode"));
// msg.szFeeType=(LPTSTR)_bstr_t(pRs->GetCollect(L"feetype"));
// msg.szMsg=(LPTSTR)_bstr_t(pRs->GetCollect(L"content"));
// msg.szSendNo=(LPTSTR)_bstr_t(pRs->GetCollect(L"sendno"));
// msg.szSubID=(LPTSTR)_bstr_t(pRs->GetCollect(L"subid"));
pMsgList->push_back(msg);
}
break;
case -3: // 转发信息
var=pRs->GetCollect(L"ip");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pSI->szIP=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"port");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pSI->nPort=var.lVal;
// pSI->szIP=(LPTSTR)_bstr_t(pRs->GetCollect(L"ip"));
// pSI->nPort=(int)(long)pRs->GetCollect(L"port");
if (pRs->GetState()==adStateOpen)
pRs->Close();
return -3;
break;
case 2: // 转发信息
var=pRs->GetCollect(L"serviceip");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pSI->szIP=(LPTSTR)_bstr_t(var);
var=pRs->GetCollect(L"serviceport");
if (var.vt!=VT_NULL && var.vt!=VT_EMPTY)
pSI->nPort=var.lVal;
// pSI->szIP=(LPTSTR)_bstr_t(pRs->GetCollect(L"serviceip"));
// pSI->nPort=(int)(long)pRs->GetCollect(L"serviceport");
break;
default:
return nRec;
break;
}
pRs->MoveNext();
}
long lRec=0;
pRs=pRs->NextRecordset((VARIANT*)lRec);
}
}
catch (_com_error& e)
{
m_bOpenned=FALSE;
theData.WriteLog((LPTSTR)e.Description(), "sp_custom_getinfo");
return -2;
}
catch (...)
{
theData.WriteLog("Unknown error occured", "sp_custom_getinfo");
return -2;
}
return 0;
}
BOOL CMyDatabase::IsUnicomPhone(LPCTSTR pszMobile)
{
bool bRet=true;
if (!m_bOpenned)
{
CloseDB();
OpenDB();
}
// 从数据库中提取用户
try
{
CString strSQL,strTemp;
_variant_t vV;
_RecordsetPtr pRsd=NULL;
_CommandPtr pCmd=NULL;
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->ActiveConnection=m_pConn;
pCmd->CommandType = adCmdStoredProc;
pCmd->CommandText = L"sp_8000_Unicom";
pCmd->Parameters->Refresh();
pCmd->Parameters->GetItem(1l)->PutValue(pszMobile);
pCmd->Execute(NULL, NULL, adCmdStoredProc);
int nRet=(int)(long)pCmd->Parameters->GetItem(0l)->GetValue();
if (nRet==0)
return TRUE;
}
catch (_com_error& e)
{
CString strLog;
m_bOpenned=FALSE;
strLog.Format("Failed to sp_8000_Unicom with %s, Description:%s",pszMobile,(LPTSTR)e.Description());
theData.WriteLog(strLog,"-U");
}
catch(...)
{
CString strLog;
m_bOpenned=FALSE;
strLog.Format("Failed call stored procedure sp_8000_Unicom %s with unknown error",pszMobile);
theData.WriteLog(strLog,"-U");
}
return FALSE;
}
int CMyDatabase::CancelAll(LPCTSTR pszMobile,LPOUTPUTMSGLIST pList)
{
// 返回用户定制列表
CString strList;
vector<SUBSCRIBEITEM> items;
vector<SUBSCRIBEITEM>::iterator it;
CString stTemp="00000";
int iRet0=GetUserCustomList(pszMobile,strList,stTemp);
switch(iRet0)
{
case 0:
if(C0000Thread::ParseSubscribeItem(strList,items)>0)
{
for(it=items.begin();it!=items.end();it++)
{
int r=CancelOneSubscribeByCode(pszMobile, (*it).pszPushType, (*it).lCustomNo,(*it).pszColName,(*it).pszTypeCode,(*it).lType,pList);
if(r==-3)
return -8 ;
if(r==-4)
return -7 ;
if (0!=r)
return -999;
}
}
else
return -6;
break;
case -7:
return -7;
case -8:
return -8;
/* default:
return -10;*/
default:
return -999;
}
return 0;
}
int CMyDatabase::GetUserCustomList(LPCTSTR pszMobile, CString &strList,CString &strMsg)
{
// Added by Phips Xue(pxue@gwcom.com.cn) Jul.24 2001
// To delete specified customization for a specified
// mobile user.
// return TRUE if succeed and FALSE if failed.
_CommandPtr pCommand=NULL;
_variant_t varNull,vV;
int iRet=-1;
varNull.vt=VT_NULL;
if (!m_bOpenned)
{
CloseDB();
OpenDB();
}
try{
TESTHR(pCommand.CreateInstance(__uuidof(Command)));
pCommand->ActiveConnection=m_pConn;
pCommand->CommandType=adCmdStoredProc;
pCommand->CommandTimeout=60;
pCommand->CommandText=L"sp_custom_search_all_uni";
pCommand->Parameters->Refresh();
pCommand->Parameters->GetItem(1l)->PutValue(_bstr_t(pszMobile));
pCommand->Parameters->GetItem(3l)->PutValue(_bstr_t(strMsg));
pCommand->Parameters->GetItem(2l)->PutValue(varNull);
pCommand->Parameters->GetItem(2l)->PutDirection(adParamOutput);
pCommand->Execute(NULL, NULL,adExecuteNoRecords);
vV=pCommand->Parameters->GetItem(0l)->GetValue();
vV.ChangeType(VT_INT);
iRet=vV.intVal;
if(iRet==0||iRet==1)
{
vV=pCommand->Parameters->GetItem(2l)->GetValue();
vV.ChangeType(VT_BSTR);
strList=vV.bstrVal;
vV=pCommand->Parameters->GetItem(3l)->GetValue();
vV.ChangeType(VT_BSTR);
strMsg=vV.bstrVal;
}
return iRet;
}catch(_com_error& e)
{
CString strLog;
strLog.Format("GetUserCustomList(%s)失败!ERROR=%s", pszMobile, (LPTSTR)e.Description());
theData.WriteLog(strLog);
return -999;
}catch(...)
{
CString strLog;
strLog.Format("GetUserCustomList(%s)失败!ERROR=未知",pszMobile);
theData.WriteLog(strLog);
return -999;
}
}
// 使用sp_usercustom_delete_asid退定老产品
int CMyDatabase::CancelOneSubscribeBy_USP(LPCTSTR pszMobile,LPCTSTR pszPushType,ULONG lCustomNo)
{
_CommandPtr pCommand=NULL;
_variant_t varNull,vV;
int iRet=-1;
varNull.vt=VT_NULL;
if(!m_bOpenned)
{
CloseDB();
OpenDB();
}
try{
TESTHR(pCommand.CreateInstance(__uuidof(Command)));
pCommand->ActiveConnection=m_pConn;
pCommand->CommandType=adCmdStoredProc;
pCommand->CommandText=L"sp_usercustom_delete_asid";
pCommand->Parameters->Refresh();
pCommand->Parameters->GetItem(1l)->PutValue(_bstr_t(pszPushType));
pCommand->Parameters->GetItem(2l)->PutValue((long)lCustomNo);
pCommand->Parameters->GetItem(3l)->PutValue(7L);
pCommand->Parameters->GetItem(4l)->PutValue(varNull);
pCommand->Execute(NULL, NULL,adExecuteNoRecords);
vV=pCommand->Parameters->GetItem(0l)->GetValue();
vV.ChangeType(VT_INT);
iRet=vV.intVal;
return iRet;
}catch(_com_error& e)
{
CString strTemp;
strTemp.Format("CancelOneSubscribeByCode(%s)失败!ERROR=%s", pszMobile, (LPTSTR)e.Description());
theData.WriteLog(strTemp);
return -999;
}catch(...)
{
CString strTemp;
strTemp.Format("CancelOneSubscribeByCode(%s)失败!ERROR=未知",pszMobile);
theData.WriteLog(strTemp);
return -999;
}
}
// 返回值:
// -999 失败
// 0 成功
// -3 已注销
// -4 用户不存在
int CMyDatabase::CancelOneSubscribeByCode(LPCTSTR pszMobile,LPCTSTR pszPushType,ULONG lCustomNo,LPCTSTR pszColName,LPCTSTR pszTypeCode,ULONG lType,LPOUTPUTMSGLIST pList)
{
// search the 0000Convert Table
PRODUCTINFO pPI; // product info
OUTPUTMSGLIST mmlist; // misc msg
list<OUTPUTMSG>::iterator mm;
// 根据栏目名称转换成对应的Cmd(00000cmdTrans)
int ret =Get00000ProductInfo(pszMobile,pszPushType,pszTypeCode,lType,&pPI,&mmlist);
int ret2;
if(ret==0)//转换成功
{
if(pPI.nType==1)//老产品,可以统一用sp_usercustom_delete_asid完成退定
{
ret2 = CancelOneSubscribeBy_USP(pszMobile,pszPushType,lCustomNo) ;
if(ret2==-3)
ret2=-4;//不存在
else if(ret2!=0)
ret2 = -999 ;
else
;
}
else
{
_ConnectionPtr pConn;
if (!OpenDB(pPI.szSQL, pConn))
ret2=-999;
else
{
ret2 = DeleteCustom(pConn, pszMobile,pPI.szSQL,(long)7) ;
if(ret2!=-3&&ret2!=-4&&ret2!=0)
ret2 = -999 ;
CloseDB(pConn);
}
}
if(ret2==0)
{
// 退定成功,复制mmlist到plist
for (mm=mmlist.begin(); mm!=mmlist.end(); ++mm)
{
pList->push_back((*mm));
}
}
}
else if(ret == -2|| ret==-4)
{
ret2 = CancelOneSubscribeBy_USP(pszMobile,pszPushType,lCustomNo) ;
if(ret2==-3)
ret2=-4;//不存在
else if(ret2!=0)
ret2 = -999 ;
else
;
}
else
{
return -999;
}
return ret2 ;
}
int CMyDatabase::IsValidCity(CString& szCity)
{
if (!m_bOpenned)
{
CloseDB();
if (!OpenDB())
return -2;
}
int nRet=0;
CString szLog;
try
{
CString szCmd;
_CommandPtr pCmd;
TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->ActiveConnection=m_pConn;
pCmd->CommandText=L"sp_custom_isvalidTQcity";
pCmd->CommandType=adCmdStoredProc;
pCmd->Parameters->Refresh();
pCmd->Parameters->GetItem(1l)->PutValue(_bstr_t(szCity));
pCmd->Execute(NULL, NULL, adCmdStoredProc);
nRet = (int)(long)pCmd->Parameters->GetItem(0l)->GetValue();
if (nRet==0)
{
_variant_t var=pCmd->Parameters->GetItem(1l)->GetValue();
if (var.vt!=VT_NULL&&var.vt!=VT_EMPTY)
szCity=(LPTSTR)_bstr_t(var);
}
}
catch (_com_error& e)
{
m_bOpenned=FALSE;
szLog.Format("判断城市区号失败!ERROR=%s", (LPTSTR)e.Description());
theData.WriteLog(szLog, "-db");
return -2;
}
catch (...)
{
szLog.Format("判断城市区号失败!ERROR=%s", "未知错误");
theData.WriteLog(szLog, "-db");
return -2;
}
return nRet;
}
bool CMyDatabase::Is1860Allowed(LPCTSTR pszMobile)
{
_CommandPtr pCommand=NULL;
_variant_t varNull,vV;
int iRet=-1;
varNull.vt=VT_NULL;
if(!m_bOpenned)
{
CloseDB();
OpenDB();
}
try{
TESTHR(pCommand.CreateInstance(__uuidof(Command)));
pCommand->ActiveConnection=m_pConn;
pCommand->CommandType=adCmdStoredProc;
pCommand->CommandText=L"sp_custom_isprivilege";
pCommand->Parameters->Refresh();
pCommand->Parameters->GetItem(1l)->PutValue(_bstr_t(pszMobile));
pCommand->Execute(NULL, NULL,adExecuteNoRecords);
vV=pCommand->Parameters->GetItem(0l)->GetValue();
vV.ChangeType(VT_INT);
iRet=vV.intVal;
if (iRet==1)
return true;
}catch(_com_error& e)
{
CString strTemp;
strTemp.Format("sp_custom_isprivilege(%s)失败!ERROR=%s", pszMobile, (LPTSTR)e.Description());
theData.WriteLog(strTemp);
return false;
}catch(...)
{
CString strTemp;
strTemp.Format("sp_custom_isprivilege(%s)失败!ERROR=未知",pszMobile);
theData.WriteLog(strTemp);
return false;
}
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -