// ProcessSocket2.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" long CProcessSocket::Process_GAddress2_See(REQ_GAddress2_See *pSee) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_SEE) ) //没有权限查看用户记录 { ANS_GAddress2_See * pSeeRet = new ANS_GAddress2_See; //权限不够,什么也不返回 memset( pSeeRet , 0 , sizeof(ANS_GAddress2_See) ); pSeeRet->lCount = 0; pSeeRet->lPageCount = 0; pSeeRet->lPageAll = 0; SendFrame( SMSFUNC_GADDRESS2_SEE , (BYTE*)pSeeRet , sizeof(ANS_GAddress2_See) ); //发送返回 return 1; } CString strSelect; if ( pSee->bMoveGAddress == TRUE ) //进行通迅录转移工作 { //将所有的数据转移到公用通迅录 strSelect.Format(_T("insert into corpsmsa.dbo.gaddress (CorpID,UserType,GroupID,Name,NickName,Sex,Birthday,Job,Tel,Fax,Email,Mobile,QQ,CreateUser,CreateTime,BZ ) select CorpID,UserType,GroupID,Name,NickName,Sex,Birthday,Job,Tel,Fax,Email,Mobile,QQ,CreateUser,CreateTime,BZ from users where corpid=%d") , pSee->lCorpID ); m_AdoRS.Open(strSelect); //删除所有为纯通迅录的数据,保留登录帐号及用户组 strSelect.Format(_T("delete from users where corpid=%d and Purviewtype=%d") , pSee->lCorpID,PURVIEWTYPE_ADDRESS); m_AdoRS.Open(strSelect); ANS_GAddress2_See * pSeeRet = new ANS_GAddress2_See; //权限不够,什么也不返回 memset( pSeeRet , 0 , sizeof(ANS_GAddress2_See) ); pSeeRet->lCount = -101; //进行数据转移工作 pSeeRet->lPageCount = 0; pSeeRet->lPageAll = 0; SendFrame( SMSFUNC_GADDRESS2_SEE , (BYTE*)pSeeRet , sizeof(ANS_GAddress2_See) ); //发送返回 return 1; } //先判断是否需要做通讯录转移 strSelect.Format( _T("select count(*) as abc from users where corpid=%d and Purviewtype=%d") , pSee->lCorpID , PURVIEWTYPE_ADDRESS); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { long lTemp=0; m_AdoRS.GetCollect(_T("abc") , lTemp ); m_AdoRS.Close(); if ( lTemp>0 ) //用户表中存在地址本 { lTemp=0; strSelect.Format( _T("select count(*) as abc from corpsmsa.dbo.gaddress where corpid=%d") , pSee->lCorpID); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("abc") , lTemp ); m_AdoRS.Close(); } if ( lTemp<=0 ) //用户表中有地址本,但公用通讯录中没有地址本,需要进行转移工作 { ANS_GAddress2_See * pSeeRet = new ANS_GAddress2_See; //权限不够,什么也不返回 memset( pSeeRet , 0 , sizeof(ANS_GAddress2_See) ); pSeeRet->lCount = -100; //需要进行数据转移工作 pSeeRet->lPageCount = 0; pSeeRet->lPageAll = 0; SendFrame( SMSFUNC_GADDRESS2_SEE , (BYTE*)pSeeRet , sizeof(ANS_GAddress2_See) ); //发送返回 return 1; } } } strSelect.Format( _T("select * from corpsmsa.dbo.gaddress where CorpID=%d") , pSee->lCorpID); CString strMainGroupID; long m_lMainGroupID=-1; if ( m_lAccessGroup>0 ) //只允许操作某个组 { CString strSelect2; strSelect2.Format( _T("select * from corpsmsa.dbo.gaddress where UserID=%d") , m_lAccessGroup); if ( m_AdoRS.Open( strSelect2 ) && !m_AdoRS.IsEOF() ) { m_lMainGroupID = m_lAccessGroup; m_AdoRS.GetCollect(_T("GroupID") , strMainGroupID ); strSelect.Format( _T("select * from corpsmsa.dbo.gaddress where CorpID=%d AND GroupID like '%s%%'") , pSee->lCorpID,strMainGroupID); } else { ANS_GAddress2_See * pSeeRet = new ANS_GAddress2_See; //权限不够,什么也不返回 memset( pSeeRet , 0 , sizeof(ANS_GAddress2_See) ); pSeeRet->lCount = -200; //需要进行数据转移工作 pSeeRet->lPageCount = 0; pSeeRet->lPageAll = 0; SendFrame( SMSFUNC_GADDRESS2_SEE , (BYTE*)pSeeRet , sizeof(ANS_GAddress2_See) ); //发送返回 return 1; } } BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; if ( lCount > 0 ) m_AdoRS.MoveFirst(); //移动第一条记录 //计算页数 long lPageMax = lCount/PAGE_RECORD; if ( lPageMax*PAGE_RECORD != lCount ) lPageMax ++; for ( int i=0 ; i< lPageMax ; i++ ) { //lFrameCount,计算当前页的记录数 long lFrameCount = PAGE_RECORD; if ( lFrameCount*(i+1) > lCount ) lFrameCount = lCount - lFrameCount*i; long lSize = sizeof(ANS_GAddress2_See) + sizeof(ANS_GAddress2_SeeData)*lFrameCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GAddress2_See * pUserRet = (ANS_GAddress2_See *)pData; ANS_GAddress2_SeeData * pUserDataRet = (ANS_GAddress2_SeeData *)(pData+sizeof(ANS_GAddress2_See)); pUserRet->lCount = lFrameCount; pUserRet->lPageAll = lPageMax; pUserRet->lPageCount = i+1; pUserRet->lMainGroupID = m_lMainGroupID; _tcscpy(pUserRet->szMainGroupID , strMainGroupID ); COleDateTime t; long lTempCount = 0; while( lCount>0 && !m_AdoRS.IsEOF() && lTempCountlUserID); m_AdoRS.GetCollect( _T("CorpID") , pUserDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserType") , pUserDataRet->szUserType); m_AdoRS.GetCollect( _T("GroupID") , pUserDataRet->szGroupID); m_AdoRS.GetCollect( _T("Name") , pUserDataRet->szName); m_AdoRS.GetCollect( _T("NickName") , pUserDataRet->szNickName); m_AdoRS.GetCollect( _T("Sex") , pUserDataRet->szSex); m_AdoRS.GetCollect( _T("Birthday"), t); t.GetAsSystemTime(pUserDataRet->tBirthday); m_AdoRS.GetCollect( _T("LTD") , pUserDataRet->szLTD); m_AdoRS.GetCollect( _T("Job") , pUserDataRet->szJob); m_AdoRS.GetCollect( _T("Addr") , pUserDataRet->szAddr); m_AdoRS.GetCollect( _T("Tel") , pUserDataRet->szTel); m_AdoRS.GetCollect( _T("Fax") , pUserDataRet->szFax); m_AdoRS.GetCollect( _T("Email") , pUserDataRet->szEmail); m_AdoRS.GetCollect( _T("Mobile") , pUserDataRet->szMobile); m_AdoRS.GetCollect( _T("QQ") , pUserDataRet->szQQ); m_AdoRS.GetCollect( _T("CreateUser") , pUserDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime"), t); t.GetAsSystemTime(pUserDataRet->tCreateTime); m_AdoRS.GetCollect( _T("BZ") , pUserDataRet->szBZ); m_AdoRS.MoveNext(); pUserDataRet ++; lTempCount ++; } SendFrame( SMSFUNC_GADDRESS2_SEE , (BYTE*)pData , lSize ); //发送返回 } if ( lPageMax <= 0 ) //没有找到记录的返回 { ANS_GAddress2_See * pSeeRet = new ANS_GAddress2_See; //权限不够,什么也不返回 memset( (BYTE*)pSeeRet , 0 , sizeof(ANS_GAddress2_See) ); pSeeRet->lCount = 0; pSeeRet->lPageCount = 0; pSeeRet->lPageAll = 0; SendFrame( SMSFUNC_GADDRESS2_SEE , (BYTE*)pSeeRet , sizeof(ANS_GAddress2_See) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GAddress2_Modify(REQ_GAddress2_Modify *pModify) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_MODIFY) ) //没有权限修改资料 { ANS_GAddress2_Modify * pModifyRet = new ANS_GAddress2_Modify; //权限不够,什么也不返回 pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = -1; //权限不足 SendFrame( SMSFUNC_GADDRESS2_MODIFY , (BYTE*)pModifyRet , sizeof(ANS_GAddress2_Modify) ); //发送返回 return 1; } ANS_GAddress2_SeeData * pData = (ANS_GAddress2_SeeData *)((BYTE*)pModify+sizeof(REQ_GAddress2_Modify)); CString strSelect; CString strSMSUsed; CString strPurviewType; CString strPurview; CString strBirthday; CString strUserID; COleDateTime tTemp(pData->tBirthday); if ( tTemp.GetStatus() == COleDateTime::valid ) //if ( pData->tBirthday.wYear<1990 && pData->tBirthday.wYear>2020 ) strBirthday.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tBirthday.wYear,pData->tBirthday.wMonth,pData->tBirthday.wDay,pData->tBirthday.wHour,pData->tBirthday.wMinute,pData->tBirthday.wSecond); else strBirthday = _T("NULL"); strUserID.Format( _T("%d") , pData->lUserID); strSelect = CString("update corpsmsa.dbo.gaddress set ") + CString("Name='") + CString(pData->szName) + CString("',") + CString("NickName='") + CString(pData->szNickName) + CString("',") + CString("Sex='") + CString(pData->szSex) + CString("',") + CString("Birthday=") + strBirthday + CString(",") + CString("LTD='") + CString(pData->szLTD) + CString("',") + CString("Job='") + CString(pData->szJob) + CString("',") + CString("Addr='") + CString(pData->szAddr) + CString("',") + CString("Tel='") + CString(pData->szTel) + CString("',") + CString("Fax='") + CString(pData->szFax) + CString("',") + CString("Mobile='") + CString(pData->szMobile) + CString("',") + CString("Email='") + CString(pData->szEmail) + CString("',") + CString("QQ='") + CString(pData->szQQ) + CString("',") + CString("BZ='") + CString(pData->szBZ) + CString("' ") + CString("where UserID=") + strUserID ; BOOL b = m_AdoRS.Open( strSelect ); if ( b ) { long lSize = sizeof(ANS_GAddress2_Modify) + sizeof(ANS_GAddress2_SeeData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_GAddress2_Modify * pModifyRet = (ANS_GAddress2_Modify *)pDataRet; ANS_GAddress2_SeeData * pModifyDataRet = (ANS_GAddress2_SeeData *)(pDataRet+sizeof(ANS_GAddress2_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pData; SendFrame( SMSFUNC_GADDRESS2_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_GAddress2_Modify * pModifyRet = new ANS_GAddress2_Modify; //权限不够,什么也不返回 pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 0; //修改失败 SendFrame( SMSFUNC_GADDRESS2_MODIFY , (BYTE*)pModifyRet , sizeof(ANS_GAddress2_Modify) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GAddress2_Add(REQ_GAddress2_Add *pAdd) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_ADD) ) //没有权限修改资料 { ANS_GAddress2_Add * pAddRet = new ANS_GAddress2_Add; //权限不够,什么也不返回 pAddRet->lCount = -1; //权限不足 SendFrame( SMSFUNC_GADDRESS2_ADD , (BYTE*)pAddRet , sizeof(ANS_GAddress2_Add) ); //发送返回 return 1; } ANS_GAddress2_SeeData * pData = (ANS_GAddress2_SeeData *)((BYTE*)pAdd+sizeof(REQ_GAddress2_Add)); CString strSelect; CString strCorpID; CString strSMSUsed; CString strBirthday; CString strCreateTime; strCorpID.Format( _T("%d") , m_lCorpID ); COleDateTime tTemp(pData->tBirthday); if ( tTemp.GetStatus() == COleDateTime::valid ) //if ( pData->tBirthday.wYear<1990 && pData->tBirthday.wYear>2020 ) strBirthday.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tBirthday.wYear,pData->tBirthday.wMonth,pData->tBirthday.wDay,pData->tBirthday.wHour,pData->tBirthday.wMinute,pData->tBirthday.wSecond); else strBirthday = _T("NULL"); COleDateTime tTemp2(pData->tCreateTime); if ( tTemp2.GetStatus() == COleDateTime::valid ) //if ( pData->tBirthday.wYear<1990 && pData->tBirthday.wYear>2020 ) strCreateTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tCreateTime.wYear,pData->tCreateTime.wMonth,pData->tCreateTime.wDay,pData->tCreateTime.wHour,pData->tCreateTime.wMinute,pData->tCreateTime.wSecond); else strCreateTime = _T("NULL"); strSelect = CString("insert into corpsmsa.dbo.gaddress (CorpID,UserType,GroupID,Name,NickName,Sex,Birthday,LTD,Job,Addr,Tel,Fax,Mobile,Email,QQ,CreateUser,CreateTime,BZ) values(") + strCorpID + CString(",") + CString("'1',") + CString(" '") + CString(pData->szGroupID) + CString("',") + CString(" '") + CString(pData->szName) + CString("',") + CString(" '") + CString(pData->szNickName) + CString("',") + CString(" '") + CString(pData->szSex) + CString("',") + strBirthday + CString(",") + CString(" '") + CString(pData->szLTD) + CString("',") + CString(" '") + CString(pData->szJob) + CString("',") + CString(" '") + CString(pData->szAddr) + CString("',") + CString(" '") + CString(pData->szTel) + CString("',") + CString(" '") + CString(pData->szFax) + CString("',") + CString(" '") + CString(pData->szMobile) + CString("',") + CString(" '") + CString(pData->szEmail) + CString("',") + CString(" '") + CString(pData->szQQ) + CString("',") + CString(" '") + CString(m_szLoginName) + CString("',") + //创建人 strCreateTime + CString(",") + //创建时间 CString(" '") + CString(pData->szBZ) + CString("' )"); BOOL b = m_AdoRS.Open( strSelect ); if ( b ) { long lSize = sizeof(ANS_GAddress2_Add) + sizeof(ANS_GAddress2_SeeData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_GAddress2_Add * pAddRet = (ANS_GAddress2_Add *)pDataRet; ANS_GAddress2_SeeData * pAddDataRet = (ANS_GAddress2_SeeData *)(pDataRet+sizeof(ANS_GAddress2_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pData; _tcscpy(pAddDataRet->szCreateUser,m_szLoginName); //创建用户 ::GetLocalTime( &pAddDataRet->tCreateTime ); //以下为取得新添加记录的ID号 strSelect.Format( _T("select * from corpsmsa.dbo.gaddress with(index(Corpid_index)) where Name='%s' AND CorpID=%d order by CreateTime desc") , pAddDataRet->szName ,m_lCorpID); b = m_AdoRS.Open( strSelect ); if (b && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect( _T("UserID") , pAddDataRet->lUserID ); } //更新取时间 /* ::GetLocalTime( &pAddRet->tUpTime ); pAddRet->tUpTime.wMilliseconds = 0; strBirthday.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pAddRet->tUpTime.wYear,pAddRet->tUpTime.wMonth,pAddRet->tUpTime.wDay,pAddRet->tUpTime.wHour,pAddRet->tUpTime.wMinute,pAddRet->tUpTime.wSecond); strSelect.Format( _T("update corp set UpTime=%s where CorpID='%d' ") , strBirthday , pAddDataRet->lCorpID ); b = m_AdoRS.Open( strSelect ); */ SendFrame( SMSFUNC_GADDRESS2_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_GAddress2_Add * pAddRet = new ANS_GAddress2_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; //权限不足 SendFrame( SMSFUNC_GADDRESS2_ADD , (BYTE*)pAddRet , sizeof(ANS_GAddress2_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GAddress2_Del(REQ_GAddress2_Del *pDel) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_DEL) ) //没有权限修改资料 { ANS_GAddress2_Del * pDelRet = new ANS_GAddress2_Del; //权限不够,什么也不返回 pDelRet->lCount = -1; //权限不够,什么也不返回 SendFrame( SMSFUNC_GADDRESS2_DEL , (BYTE*)pDelRet , sizeof(ANS_GAddress2_Del) ); //发送返回 return 1; } CString strSelect; ANS_GAddress2_DelData * pDelData = (ANS_GAddress2_DelData *)((BYTE*)pDel+sizeof(REQ_GAddress2_Del)); if ( pDelData->lItem == -100 && pDelData->lUserID==-100 ) { if ( m_lAccessGroup>0 ) { strSelect.Format( _T("delete from corpsmsa.dbo.gaddress where corpid=%d and GroupID like '%s_%%'") , m_lCorpID,pDelData->szGroupID ); m_AdoRS.Open( strSelect ); strSelect.Format( _T("delete from corpsmsa.dbo.gaddress where corpid=%d and GroupID = '%s' and UserType='1'") , m_lCorpID,pDelData->szGroupID ); } else { strSelect.Format( _T("delete from corpsmsa.dbo.gaddress where corpid=%d ") , m_lCorpID); } m_AdoRS.Open( strSelect ); m_AdoRS.Close(); ANS_GAddress2_Del * pDelRet = new ANS_GAddress2_Del; //权限不够,什么也不返回 pDelRet->lCount = -100; //删除所有通迅录 SendFrame( SMSFUNC_GADDRESS2_DEL , (BYTE*)pDelRet , sizeof(ANS_GAddress2_Del) ); //发送返回 return 1; } long lSize = sizeof(ANS_GAddress2_Del) + sizeof(ANS_GAddress2_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GAddress2_Del * pDelRet = (ANS_GAddress2_Del * )pData; ANS_GAddress2_DelData * pDelDataRet= (ANS_GAddress2_DelData*)(pData+sizeof(ANS_GAddress2_Del)); pDelRet->lCount = pDel->lCount; for ( int i=0 ; i< pDel->lCount ; i++ ) { if ( pDelData->lUserID > 0 ) { strSelect.Format( _T("delete from corpsmsa.dbo.gaddress where UserID=%d") , pDelData->lUserID ); if (!m_AdoRS.Open( strSelect )) pDelDataRet->lUserID = 0; //删除不成功 /* //因为此用户已删除,其发送记录归根所有,清除发送记录中的组 strSelect.Format( _T("update smssend set GroupID='' where UserID=%d") , pDelData->lUserID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); */ //删除此用户的email、日程、增值业务记录 strSelect.Format( _T("delete from email where UserID=%d") , pDelData->lUserID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); strSelect.Format( _T("delete from calendar where UserID=%d") , pDelData->lUserID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); strSelect.Format( _T("delete from DZ where UserID=%d") , pDelData->lUserID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); pDelDataRet->lItem = pDelData->lItem; pDelDataRet->lUserID=pDelData->lUserID; } else { pDelDataRet->lItem = -1; pDelDataRet->lUserID=-1; } pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_GADDRESS2_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GAddress2_Group_Add(REQ_GAddress2_Group_Add *pAdd) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_ADD) ) //没有权限修改资料 { ANS_GAddress2_Group_Add * pAddRet = new ANS_GAddress2_Group_Add; //权限不够,什么也不返回 pAddRet->lCount = -1; //权限不足 SendFrame( SMSFUNC_GADDRESS2_GROUP_ADD , (BYTE*)pAddRet , sizeof(ANS_GAddress2_Group_Add) ); //发送返回 return 1; } ANS_GAddress2_Group_AddData * pData = (ANS_GAddress2_Group_AddData *)((BYTE*)pAdd+sizeof(REQ_GAddress2_Group_Add)); //找出新建组的组ID BOOL bCreateGroupID = true; TCHAR szGroupID[32]={0}; if ( !pAdd->bReBack ) { //最多仅能建12层的组 if ( _tcslen(pData->szGroupID) >12 ) { bCreateGroupID = false; //创建组ID失败 } //查找空闲的组ID long lGroupLen = _tcslen( pData->szGroupID ); CString strSelect; strSelect.Format( _T("select GroupID from corpsmsa.dbo.gaddress where GroupID like '%s_' AND UserType='0' AND CorpID=%d group by GroupID order by GroupID") , pData->szGroupID,pAdd->lCorpID); //查找当前组下的第一层 m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); if ( lCount < 0 ) lCount = 0; if ( lCount >= GROUPID_END-GROUPID_BEGIN ) { bCreateGroupID = false; //创建组ID失败 } m_AdoRS.MoveFirst(); _tcscpy( szGroupID , pData->szGroupID ); //记住所有的组ID TCHAR szAllID[200][32]={0}; m_AdoRS.MoveFirst(); for ( int i = 0 ; i< lCount ;i++ ) { m_AdoRS.GetCollect( _T("GroupID") , szAllID[i] ); m_AdoRS.MoveNext(); } //查找组ID for ( i=0 ; i< lCount ; i++ ) { BOOL bFound = false; for ( int j= 0 ; jszGroupID , szGroupID ); //取得新的组ID } if ( bCreateGroupID ) { CString strSelect; CString strCorpID; CString strCreateTime; strCorpID.Format( _T("%d") , m_lCorpID ); COleDateTime tTemp2(pData->tCreateTime); if ( tTemp2.GetStatus() == COleDateTime::valid ) //if ( pData->tBirthday.wYear<1990 && pData->tBirthday.wYear>2020 ) strCreateTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tCreateTime.wYear,pData->tCreateTime.wMonth,pData->tCreateTime.wDay,pData->tCreateTime.wHour,pData->tCreateTime.wMinute,pData->tCreateTime.wSecond); else strCreateTime = _T("NULL"); strSelect = CString("insert into corpsmsa.dbo.gaddress (CorpID,UserType,GroupID,Name,CreateUser,CreateTime,BZ) values(") + strCorpID + CString(",") + CString("'0',") + //用户组 CString(" '") + CString(pData->szGroupID) + CString("',") + CString(" '") + CString(pData->szGroupName) + CString("',") + CString(" '") + CString(m_szLoginName) + CString("',") + //创建人 strCreateTime + CString(" ,") +//创建时间 CString(" '") + CString(pData->szBZ) + CString("' )"); BOOL b = m_AdoRS.Open( strSelect ); if ( b ) { long lSize = sizeof(ANS_GAddress2_Group_Add) + sizeof(ANS_GAddress2_Group_AddData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_GAddress2_Group_Add * pAddRet = (ANS_GAddress2_Group_Add *)pDataRet; ANS_GAddress2_Group_AddData * pAddDataRet = (ANS_GAddress2_Group_AddData *)(pDataRet+sizeof(ANS_GAddress2_Group_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pData; _tcscpy(pAddDataRet->szCreateUser,m_szLoginName); //创建用户 // ::GetLocalTime( &pAddDataRet->tCreateTime ); //以下为取得新添加记录的ID号 strSelect.Format( _T("select * from corpsmsa.dbo.gaddress with(index(Corpid_index)) where Name='%s' AND GroupID='%s' AND CorpID=%d order by CreateTime desc") , pAddDataRet->szGroupName ,pAddDataRet->szGroupID,m_lCorpID); b = m_AdoRS.Open( strSelect ); if (b && m_AdoRS.GetRecordCount()>0) { m_AdoRS.MoveLast(); m_AdoRS.GetCollect( _T("UserID") , pAddDataRet->lUserID ); } //更新取时间 /* ::GetLocalTime( &pAddRet->tUpTime ); pAddRet->tUpTime.wMilliseconds = 0; CString strUpTime; strUpTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pAddRet->tUpTime.wYear,pAddRet->tUpTime.wMonth,pAddRet->tUpTime.wDay,pAddRet->tUpTime.wHour,pAddRet->tUpTime.wMinute,pAddRet->tUpTime.wSecond); strSelect.Format( _T("update corp set UpTime=%s where CorpID='%d' ") , strUpTime , pAdd->lCorpID ); b = m_AdoRS.Open( strSelect ); */ SendFrame( SMSFUNC_GADDRESS2_GROUP_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } } else { ANS_GAddress2_Group_Add * pAddRet = new ANS_GAddress2_Group_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; //权限不足 SendFrame( SMSFUNC_GADDRESS2_GROUP_ADD , (BYTE*)pAddRet , sizeof(ANS_GAddress2_Group_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GAddress2_Group_Modify(REQ_GAddress2_Group_Modify *pModify) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_MODIFY) ) //没有权限修改用户记录 { ANS_GAddress2_Group_Modify * pModifyRet = new ANS_GAddress2_Group_Modify; //权限不够,什么也不返回 pModifyRet->hItem = pModify->hItem; pModifyRet->lCount = -1; //权限不足 SendFrame( SMSFUNC_GADDRESS2_GROUP_MODIFY , (BYTE*)pModifyRet , sizeof(ANS_GAddress2_Group_Modify) ); //发送返回 return 1; } //生成返回数据 long lSize = sizeof(ANS_GAddress2_Group_Modify) + sizeof(ANS_GAddress2_Group_AddData); BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GAddress2_Group_Modify * pModifyRet = (ANS_GAddress2_Group_Modify *)pData; ANS_GAddress2_Group_AddData * pModifyDataRet = (ANS_GAddress2_Group_AddData *)(pData+sizeof(ANS_GAddress2_Group_Modify)); ANS_GAddress2_Group_AddData * pModifyDataReq = (ANS_GAddress2_Group_AddData *)((BYTE*)pModify+sizeof(REQ_GAddress2_Group_Modify)); pModifyRet->hItem = pModify->hItem; pModifyRet->lCount = 1; CString strSelect; CString strUserID; CString strCorpID; strCorpID.Format( _T("%d") , pModify->lCorpID ); strUserID.Format( _T("%d") , pModifyDataReq->lUserID ); *pModifyDataRet = *pModifyDataReq; //返回值与请求值一样 strSelect = CString("update corpsmsa.dbo.gaddress set ") + CString("Name='") + CString(pModifyDataRet->szGroupName) + CString("',") + CString("BZ='") + CString(pModifyDataRet->szBZ) + CString("'") + CString(" where UserID=") + strUserID ; BOOL b = m_AdoRS.Open( strSelect ); //执行 if ( !b ) { pModifyDataRet->lUserID = 0; } SendFrame( SMSFUNC_GADDRESS2_GROUP_MODIFY , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GAddress2_Group_Move(REQ_GAddress2_Group_Move *pMove) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_MODIFY) ) //没有权限修改用户记录 { ANS_GAddress2_Group_Move * pMoveRet = new ANS_GAddress2_Group_Move; //权限不够,什么也不返回 pMoveRet->lCount = -1; SendFrame( SMSFUNC_GADDRESS2_GROUP_MOVE , (BYTE*)pMoveRet , sizeof(ANS_GAddress2_Group_Move) ); //发送返回 return 1; } ANS_GAddress2_Group_Move * pMoveRet = new ANS_GAddress2_Group_Move; //权限不够,什么也不返回 memset(pMoveRet,0,sizeof(ANS_GAddress2_Group_Move)); pMoveRet->lCount = 0; _tcscpy(pMoveRet->szSrcGroup , pMove->szSrcGroup ); _tcscpy(pMoveRet->szTagGroup , pMove->szTagGroup ); CString str; str.Format( _T("select * from corpsmsa.dbo.gaddress with(index(Corpid_index)) where CorpID=%d and GroupID like '%s%%'"),pMove->lCorpID , pMove->szSrcGroup ); if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 ) { long lCount=m_AdoRS.GetRecordCount(); long lCount2=0; m_AdoRS.MoveFirst(); while(!m_AdoRS.IsEOF() && lCount2szTagGroup,szTemp+_tcslen(pMove->szSrcGroup)); m_AdoRS.PutCollect( _T("GroupID") , szTemp2 ); m_AdoRS.Update(); m_AdoRS.MoveNext(); lCount2++; pMoveRet->lCount++; } m_AdoRS.Close(); } SendFrame( SMSFUNC_GADDRESS2_GROUP_MOVE , (BYTE*)pMoveRet , sizeof(ANS_GAddress2_Group_Move) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GAddress2_Group_Del(REQ_GAddress2_Group_Del *pDel) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_DEL) ) //没有权限删除 { ANS_GAddress2_Group_Del * pDelRet = new ANS_GAddress2_Group_Del; //权限不够,什么也不返回 pDelRet->hItem = pDel->hItem; pDelRet->lCount = -1; //权限不足 SendFrame( SMSFUNC_GADDRESS2_GROUP_DEL , (BYTE*)pDelRet , sizeof(ANS_GAddress2_Group_Del) ); //发送返回 return 1; } ANS_GAddress2_Group_DelData * pDelData = (ANS_GAddress2_Group_DelData *)((BYTE*)pDel+sizeof(REQ_GAddress2_Group_Del)); long lSize = sizeof(ANS_GAddress2_Group_Del) + sizeof(ANS_GAddress2_Group_DelData); BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GAddress2_Group_Del * pDelRet = (ANS_GAddress2_Group_Del * )pData; ANS_GAddress2_Group_DelData * pDelDataRet= (ANS_GAddress2_Group_DelData*)(pData+sizeof(ANS_GAddress2_Group_Del)); pDelRet->hItem = pDel->hItem; pDelRet->lCount= 1; *pDelDataRet = *pDelData; CString strSelect; strSelect.Format( _T("delete from corpsmsa.dbo.gaddress where GroupID like '%s%%' and CorpID=%d") , pDelData->szGroupID , pDel->lCorpID ); BOOL b = m_AdoRS.Open( strSelect ); if ( !b ) { pDelDataRet->lUserID = 0; //删除不成功 } SendFrame( SMSFUNC_GADDRESS2_GROUP_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GAddress2_User_Move(REQ_GAddress2_User_Move *pMove) { try { if ( !(m_ulPurview & PURVIEW_GADDRESS_MODIFY) ) //没有权限修改用户记录 { ANS_GAddress2_User_Move * pMoveRet = new ANS_GAddress2_User_Move; //权限不够,什么也不返回 pMoveRet->lCount = -1; SendFrame( SMSFUNC_GADDRESS2_USER_MOVE , (BYTE*)pMoveRet , sizeof(ANS_GAddress2_User_Move) ); //发送返回 return 1; } ANS_GAddress2_User_Move * pMoveRet = new ANS_GAddress2_User_Move; //权限不够,什么也不返回 memset(pMoveRet,0,sizeof(ANS_GAddress2_User_Move)); pMoveRet->lCount = 0; _tcscpy(pMoveRet->szTagGroup , pMove->szTagGroup ); REQ_GAddress2_User_Move_Data * pMoveData= (REQ_GAddress2_User_Move_Data *)((BYTE*)pMove+sizeof(REQ_GAddress2_User_Move)); CString str; for ( int i=0 ; i< pMove->lCount ; i++) { str.Format( _T("Update corpsmsa.dbo.gaddress set GroupID='%s' where UserID=%d"),pMove->szTagGroup,pMoveData->lUserID ); if ( m_AdoRS.Open(str) ) { pMoveRet->lCount ++; } pMoveData++; } SendFrame( SMSFUNC_GADDRESS2_USER_MOVE , (BYTE*)pMoveRet , sizeof(ANS_GAddress2_User_Move) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_CenterTime(REQ_CenterTime *pTime) { long lNoSupperWordCount=18; long lSize = sizeof(ANS_CenterTime)+sizeof(ANS_Login3_NoSupperData)*lNoSupperWordCount; BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize); ANS_CenterTime * pRetTime = (ANS_CenterTime *)pData; ANS_Login3_NoSupperData * pRetNoSupperData= (ANS_Login3_NoSupperData *)(pData + sizeof(ANS_CenterTime)); ::GetLocalTime(&pRetTime->tNow); pRetTime->lType = pTime->lType; pRetTime->lNoSupperWordCount=lNoSupperWordCount; //不支持字符 _tcscpy(pRetNoSupperData[0].szWord , _T("㎡") ); _tcscpy(pRetNoSupperData[1].szWord , _T("滘") ); _tcscpy(pRetNoSupperData[2].szWord , _T("﹒") ); _tcscpy(pRetNoSupperData[3].szWord , _T("嘅") ); _tcscpy(pRetNoSupperData[4].szWord , _T("劏") ); _tcscpy(pRetNoSupperData[5].szWord , _T("璟") ); //_tcscpy(pRetNoSupperData[6].szWord , _T("萆") ); _tcscpy(pRetNoSupperData[6].szWord , _T("薢") ); _tcscpy(pRetNoSupperData[7].szWord , _T("―") ); _tcscpy(pRetNoSupperData[8].szWord , _T("苾") ); _tcscpy(pRetNoSupperData[9].szWord , _T("痁") ); _tcscpy(pRetNoSupperData[10].szWord , _T("劵") ); _tcscpy(pRetNoSupperData[11].szWord , _T("啫") ); _tcscpy(pRetNoSupperData[12].szWord , _T("燊") ); _tcscpy(pRetNoSupperData[13].szWord , _T("銶") ); _tcscpy(pRetNoSupperData[14].szWord , _T("啰") ); _tcscpy(pRetNoSupperData[15].szWord , _T("埗") ); _tcscpy(pRetNoSupperData[16].szWord , _T("炤") ); _tcscpy(pRetNoSupperData[17].szWord , _T("逹") ); //㎡,滘,﹒,嘅,劏,璟,薢,―,苾,痁,劵,啫,燊 銶,啰 SendFrame( SMSFUNC_CENTERTIME , (BYTE*)pData , lSize ); //发送返回 return 0; } BOOL CProcessSocket::isMobileFJ(const TCHAR *pMobile, CAdoRecordSet *pAdo, long lCorpID) { //以下检测号码是否为广东地区的,如果不是,发送失败 TCHAR szTempNum[32]={0}; _tcscpy( szTempNum , pMobile ); szTempNum[7]=0; CString str; str.Format( _T("select * from corpsmst.dbo.hdb WITH(NOLOCK) where HD='%s'") , szTempNum ); if ( pAdo->Open(str) ) { if ( !pAdo->IsEOF() ) return true; else return false; } else { //再检查多一次 pAdo->Close(); if ( pAdo->Open(str) ) { if ( !pAdo->IsEOF() ) return true; else return false; } return false; } return false; } long CProcessSocket::Process_CliSmsTD(REQ_CliSmsTD *pTD) { if ( pTD->lType == 0 ) { //取通道信息 long lSize = sizeof(ANS_CliSmsTD)+sizeof(SC_CliTD)*(m_pSMSDlg->m_Setup.lCliTD_Cmcc+m_pSMSDlg->m_Setup.lCliTD_Unicom+m_pSMSDlg->m_Setup.lCliTD_Phs+m_pSMSDlg->m_Setup.lCliTD_Telcom); BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize ); ANS_CliSmsTD * pRetTD = (ANS_CliSmsTD*)pData; SC_CliTD * pRetTD_Cmcc = (SC_CliTD *)(pData+sizeof(ANS_CliSmsTD)); SC_CliTD * pRetTD_Unicom = (SC_CliTD *)(pData+sizeof(ANS_CliSmsTD)+sizeof(SC_CliTD)*(m_pSMSDlg->m_Setup.lCliTD_Cmcc)); SC_CliTD * pRetTD_Phs = (SC_CliTD *)(pData+sizeof(ANS_CliSmsTD)+sizeof(SC_CliTD)*(m_pSMSDlg->m_Setup.lCliTD_Cmcc+m_pSMSDlg->m_Setup.lCliTD_Unicom)); SC_CliTD * pRetTD_Telcom = (SC_CliTD *)(pData+sizeof(ANS_CliSmsTD)+sizeof(SC_CliTD)*(m_pSMSDlg->m_Setup.lCliTD_Cmcc+m_pSMSDlg->m_Setup.lCliTD_Unicom+m_pSMSDlg->m_Setup.lCliTD_Phs)); pRetTD->bOK = true; pRetTD->lType = pTD->lType; pRetTD->bCliTD_CW = m_pSMSDlg->m_Setup.bCliTD_CW; pRetTD->lCliTD_Cmcc =m_pSMSDlg->m_Setup.lCliTD_Cmcc; pRetTD->lCliTD_Unicom=m_pSMSDlg->m_Setup.lCliTD_Unicom; pRetTD->lCliTD_Phs =m_pSMSDlg->m_Setup.lCliTD_Phs; pRetTD->lCliTD_Telcom=m_pSMSDlg->m_Setup.lCliTD_Telcom; memcpy(pRetTD_Cmcc , m_pSMSDlg->m_pCliTD_Cmcc , sizeof(SC_CliTD)*m_pSMSDlg->m_Setup.lCliTD_Cmcc ); memcpy(pRetTD_Unicom , m_pSMSDlg->m_pCliTD_Unicom , sizeof(SC_CliTD)*m_pSMSDlg->m_Setup.lCliTD_Unicom ); memcpy(pRetTD_Phs , m_pSMSDlg->m_pCliTD_Phs , sizeof(SC_CliTD)*m_pSMSDlg->m_Setup.lCliTD_Phs ); memcpy(pRetTD_Telcom , m_pSMSDlg->m_pCliTD_Telcom , sizeof(SC_CliTD)*m_pSMSDlg->m_Setup.lCliTD_Telcom ); if ( pTD->lCorpID>0 ) { CString str; str.Format( _T("select * from corp where corpid=%d") , pTD->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { TCHAR szBuf[32]={0}; m_AdoRS.GetCollect(_T("OutAll") , pRetTD->bCW ); m_AdoRS.GetCollect(_T("SMSTD") , szBuf ); pRetTD->cCmcc = szBuf[0]; pRetTD->cUnicom = szBuf[1]; pRetTD->cPhs = szBuf[2]; pRetTD->cTelcom = szBuf[3]; pRetTD->lCorpID = pTD->lCorpID; } } SendFrame( SMSFUNC_CLISMSTD , (BYTE*)pData , lSize ); //发送返回 } if ( pTD->lType == 1 ) { //设通道信息 m_pSMSDlg->m_Setup.bCliTD_CW = pTD->bCliTD_CW; m_pSMSDlg->m_Setup.lCliTD_Cmcc = pTD->lCliTD_Cmcc; m_pSMSDlg->m_Setup.lCliTD_Unicom= pTD->lCliTD_Unicom; m_pSMSDlg->m_Setup.lCliTD_Phs = pTD->lCliTD_Phs; m_pSMSDlg->m_Setup.lCliTD_Telcom= pTD->lCliTD_Telcom; SC_CliTD * pRetTD_Cmcc = (SC_CliTD *)((BYTE*)pTD+sizeof(REQ_CliSmsTD)); SC_CliTD * pRetTD_Unicom = (SC_CliTD *)((BYTE*)pTD+sizeof(REQ_CliSmsTD)+sizeof(SC_CliTD)*(m_pSMSDlg->m_Setup.lCliTD_Cmcc)); SC_CliTD * pRetTD_Phs = (SC_CliTD *)((BYTE*)pTD+sizeof(REQ_CliSmsTD)+sizeof(SC_CliTD)*(m_pSMSDlg->m_Setup.lCliTD_Cmcc+m_pSMSDlg->m_Setup.lCliTD_Unicom)); SC_CliTD * pRetTD_Telcom = (SC_CliTD *)((BYTE*)pTD+sizeof(REQ_CliSmsTD)+sizeof(SC_CliTD)*(m_pSMSDlg->m_Setup.lCliTD_Cmcc+m_pSMSDlg->m_Setup.lCliTD_Unicom+m_pSMSDlg->m_Setup.lCliTD_Phs)); if ( m_pSMSDlg->m_pCliTD_Cmcc ) delete m_pSMSDlg->m_pCliTD_Cmcc; m_pSMSDlg->m_pCliTD_Cmcc = new SC_CliTD[m_pSMSDlg->m_Setup.lCliTD_Cmcc]; memcpy(m_pSMSDlg->m_pCliTD_Cmcc,pRetTD_Cmcc , sizeof(SC_CliTD)*m_pSMSDlg->m_Setup.lCliTD_Cmcc ); if ( m_pSMSDlg->m_pCliTD_Unicom ) delete m_pSMSDlg->m_pCliTD_Unicom; m_pSMSDlg->m_pCliTD_Unicom = new SC_CliTD[m_pSMSDlg->m_Setup.lCliTD_Unicom]; memcpy(m_pSMSDlg->m_pCliTD_Unicom,pRetTD_Unicom , sizeof(SC_CliTD)*m_pSMSDlg->m_Setup.lCliTD_Unicom ); if ( m_pSMSDlg->m_pCliTD_Phs ) delete m_pSMSDlg->m_pCliTD_Phs; m_pSMSDlg->m_pCliTD_Phs = new SC_CliTD[m_pSMSDlg->m_Setup.lCliTD_Phs]; memcpy(m_pSMSDlg->m_pCliTD_Phs,pRetTD_Phs , sizeof(SC_CliTD)*m_pSMSDlg->m_Setup.lCliTD_Phs ); if ( m_pSMSDlg->m_pCliTD_Telcom ) delete m_pSMSDlg->m_pCliTD_Telcom; m_pSMSDlg->m_pCliTD_Telcom = new SC_CliTD[m_pSMSDlg->m_Setup.lCliTD_Telcom]; memcpy(m_pSMSDlg->m_pCliTD_Telcom,pRetTD_Telcom , sizeof(SC_CliTD)*m_pSMSDlg->m_Setup.lCliTD_Telcom ); ANS_CliSmsTD * pRetTD = new ANS_CliSmsTD; memset(pRetTD , 0 , sizeof(ANS_CliSmsTD)); pRetTD->bOK = true; pRetTD->lType = pTD->lType; pRetTD->bCliTD_CW = m_pSMSDlg->m_Setup.bCliTD_CW; pRetTD->lCliTD_Cmcc =m_pSMSDlg->m_Setup.lCliTD_Cmcc; pRetTD->lCliTD_Unicom=m_pSMSDlg->m_Setup.lCliTD_Unicom; pRetTD->lCliTD_Phs =m_pSMSDlg->m_Setup.lCliTD_Phs; pRetTD->lCliTD_Telcom=m_pSMSDlg->m_Setup.lCliTD_Telcom; SendFrame( SMSFUNC_CLISMSTD , (BYTE*)pRetTD , sizeof(ANS_CliSmsTD) ); //发送返回 m_pSMSDlg->SaveSetup(); } if ( pTD->lType == 2 ) { //设客户端信息 if ( pTD->cTelcom<'0' ) pTD->cTelcom='0'; if ( pTD->lCorpID!=107592 ) //美正特殊设置 { CString str; str.Format( _T("Update corp set SmsTD='%c%c%c%c' , OutAll=%d where Corpid=%d") , pTD->cCmcc,pTD->cUnicom,pTD->cPhs,pTD->cTelcom,pTD->bCW,pTD->lCorpID ); m_AdoRS.Open(str); } ANS_CliSmsTD * pRetTD = new ANS_CliSmsTD; memset(pRetTD , 0 , sizeof(ANS_CliSmsTD)); pRetTD->bOK = true; pRetTD->lType = pTD->lType; pRetTD->bCliTD_CW = m_pSMSDlg->m_Setup.bCliTD_CW; pRetTD->lCliTD_Cmcc =m_pSMSDlg->m_Setup.lCliTD_Cmcc; pRetTD->lCliTD_Unicom=m_pSMSDlg->m_Setup.lCliTD_Unicom; pRetTD->lCliTD_Phs =m_pSMSDlg->m_Setup.lCliTD_Phs; pRetTD->lCliTD_Telcom=m_pSMSDlg->m_Setup.lCliTD_Telcom; SendFrame( SMSFUNC_CLISMSTD , (BYTE*)pRetTD , sizeof(ANS_CliSmsTD) ); //发送返回 } return 0; } #ifndef UNICODE UINT CProcessSocket::Cmpp_ProcessReq(BYTE * pFrame) { try { m_lEndFuncType = m_CmppHead.Command_Id; long lRet = 0; switch( m_CmppHead.Command_Id ) { case CMPP_ACTIVE_TEST: lRet = Cmpp_Process_ActiveTest(); break; case CMPP_CONNECT: lRet = Cmpp_Process_Connect((Cmpp_Connect*)m_RecvFrame); break; case CMPP_TERMINATE: lRet = Cmpp_Process_Terminate(); break; case CMPP_SUBMIT: lRet = Cmpp_Process_Submit((Cmpp_Submit*)m_RecvFrame); break; //case CMPP_DELIVER: // break; case CMPP_DELIVER_RESP: break; } return lRet; } catch (...) { return 0; } return 0; } BOOL CProcessSocket::Cmpp_ProcessRet(unsigned char lFuncType, unsigned char *pFrame, unsigned long lFrameLen) { long lSize=0; BYTE * pData=NULL; switch( lFuncType ) { case SMSFUNC_LOGIN: { lSize = sizeof(Cmpp_Head)+sizeof(Cmpp_Connect_Resp); pData = new BYTE[lSize]; memset( pData , 0 , lSize ); Cmpp_Head * pHead = (Cmpp_Head * )pData; Cmpp_Connect_Resp * pResp=(Cmpp_Connect_Resp * )(pData+sizeof(Cmpp_Head)); pHead->Total_Length=lSize; pHead->Sequence_Id =m_CmppHead.Sequence_Id; pHead->Command_Id =CMPP_CONNECT_RESP; ANS_Login * pAnsLogin = (ANS_Login *)pFrame; pResp->Status = pAnsLogin->ucState; pHead->Total_Length = htonl(pHead->Total_Length); pHead->Command_Id = htonl(pHead->Command_Id); pHead->Sequence_Id = htonl(pHead->Sequence_Id); } break; case SMSFUNC_SEND2: { lSize = sizeof(Cmpp_Head)+sizeof(Cmpp_Submit_Resp); pData = new BYTE[lSize]; memset( pData , 0 , lSize ); Cmpp_Head * pHead = (Cmpp_Head * )pData; Cmpp_Submit_Resp * pResp=(Cmpp_Submit_Resp * )(pData+sizeof(Cmpp_Head)); pHead->Total_Length=lSize; pHead->Sequence_Id =m_CmppHead.Sequence_Id; pHead->Command_Id =CMPP_SUBMIT_RESP; ANS_Send2 * pSend = (ANS_Send2 *)pFrame; ANS_SendData2 * pSms = (ANS_SendData2 *)(pFrame+sizeof(ANS_Send2)); pResp->Result = 99; if ( pSend->lCount>0 ) { pResp->Msg_ID = htonl(pSms->lSendID); pResp->Result = (UCHAR)pSms->lStatus; //状态 } pHead->Total_Length = htonl(pHead->Total_Length); pHead->Command_Id = htonl(pHead->Command_Id); pHead->Sequence_Id = htonl(pHead->Sequence_Id); } break; case CMPP_ACTIVE_TEST: { lSize = sizeof(Cmpp_Head)+sizeof(Cmpp_Active_Test_Resp); pData = new BYTE[lSize]; memset( pData , 0 , lSize ); Cmpp_Head * pHead = (Cmpp_Head * )pData; Cmpp_Active_Test_Resp * pResp=(Cmpp_Active_Test_Resp * )(pData+sizeof(Cmpp_Head)); pHead->Total_Length=lSize; pHead->Sequence_Id =m_CmppHead.Sequence_Id; pHead->Command_Id =CMPP_ACTIVE_TEST_RESP; pHead->Total_Length = htonl(pHead->Total_Length); pHead->Command_Id = htonl(pHead->Command_Id); pHead->Sequence_Id = htonl(pHead->Sequence_Id); } break; case CMPP_TERMINATE: { lSize = sizeof(Cmpp_Head)+sizeof(Cmpp_Terminate_Resp); pData = new BYTE[lSize]; memset( pData , 0 , lSize ); Cmpp_Head * pHead = (Cmpp_Head * )pData; Cmpp_Terminate_Resp * pResp=(Cmpp_Terminate_Resp * )(pData+sizeof(Cmpp_Head)); pHead->Total_Length=lSize; pHead->Sequence_Id =m_CmppHead.Sequence_Id; pHead->Command_Id =CMPP_TERMINATE_RESP; pHead->Total_Length = htonl(pHead->Total_Length); pHead->Command_Id = htonl(pHead->Command_Id); pHead->Sequence_Id = htonl(pHead->Sequence_Id); } break; } if ( lSize>0 ) { if ( pFrame ) //删除原来的数据 delete pFrame; IOCP_IO_SEND * psend = new IOCP_IO_SEND; memset(psend , 0 , sizeof(IOCP_IO_SEND)); psend->wsaBuf.len = lSize; psend->wsaBuf.buf = (char *)pData; DWORD dwBytes; psend->operation = IOCP_WRITE; //发出发送请求 int nRet = WSASend( m_io->socket, &psend->wsaBuf, 1, &dwBytes, 0, &psend->ol,NULL); if( ( nRet == SOCKET_ERROR ) && ( WSAGetLastError() != WSA_IO_PENDING ) ) { delete pData; delete psend; return false; } return true; } return false; } long CProcessSocket::Cmpp_Process_Submit(Cmpp_Submit * pSubmit) { long lSize=sizeof(REQ_Send2)+sizeof(ANS_SendData2); BYTE * pData = new BYTE[lSize]; memset(pData,0,lSize); REQ_Send2 * pSend = (REQ_Send2*)pData; ANS_SendData2 * pSms = (ANS_SendData2*)(pData+sizeof(REQ_Send)); pSend->lCount = 1; pSms->lCorpID = m_lCorpID; pSms->lUserID = m_lUserID; strcpy( pSms->szName , m_szLoginName ); strcpy( pSms->szMobile , (char*)pSubmit->Dest_terminal_Id ); strcpy( pSms->szSendNum, (char*)pSubmit->Src_Id ); //取定时时间 if ( strlen((char*)pSubmit->At_Time)>0 ) { char szTemp[32]; memcpy(szTemp,pSubmit->At_Time,2); pSms->tTimer.wYear = (unsigned short)(2000+atol(szTemp)); memcpy(szTemp,pSubmit->At_Time+2,2); pSms->tTimer.wMonth = (unsigned short)atol(szTemp); memcpy(szTemp,pSubmit->At_Time+4,2); pSms->tTimer.wDay = (unsigned short)atol(szTemp); memcpy(szTemp,pSubmit->At_Time+6,2); pSms->tTimer.wHour = (unsigned short)atol(szTemp); memcpy(szTemp,pSubmit->At_Time+8,2); pSms->tTimer.wMinute = (unsigned short)atol(szTemp); memcpy(szTemp,pSubmit->At_Time+10,2); pSms->tTimer.wSecond = (unsigned short)atol(szTemp); } //取内容 BYTE * pMsg = (BYTE*)&pSubmit->Dest_terminal_Id;// pMsg = pMsg+21*pSubmit->DestUsr_tl;//号码区域 long lMsgLen = pMsg[1]; pMsg++; switch(pSubmit->Msg_Fmt) { case 4: //二进制 strcpy((char*)pSms->szMsg,"HEX16:"); if ( lMsgLen>70 ) lMsgLen=70; AsciiToHex((char*)pMsg,(char*)pSms->szMsg+6,lMsgLen); break; case 8: if ( lMsgLen>80 ) //只允许发送 lMsgLen=80; UCS2ToAscii2((char*)pMsg,(char*)pSms->szMsg,lMsgLen); break; default: if ( lMsgLen>70 ) lMsgLen=70; memcpy((char*)pSms->szMsg,(char*)pMsg,lMsgLen); break; } long lRet = Process_Send2((REQ_Send2*)pData); delete pData; return lRet; return 0; } long CProcessSocket::Cmpp_Process_ActiveTest() { SendFrame(CMPP_ACTIVE_TEST,NULL,0); //发送Terminate返回 return 0; } long CProcessSocket::Cmpp_Process_Connect(Cmpp_Connect * pConnect) { REQ_Login * pLogin = new REQ_Login; memset(pLogin , 0 , sizeof(REQ_Login)); char szTemp[64]={0}; char szTemp2[64]={0}; //取企业ID memcpy(szTemp, pConnect->Source_Addr , 6); pLogin->lCorpID = atol(szTemp); //取用户名,密码 memset(szTemp ,0, sizeof(szTemp)); memcpy(szTemp, pConnect->AuthenticatorSource , 16); long lBegin=FoundChar(szTemp,":"); if ( lBegin>0 ) { strncpy(pLogin->szUserName,szTemp,lBegin-1); //取密码 strncpy(szTemp2,szTemp+lBegin,strlen(szTemp)-lBegin); } CDes des; long lLen=sizeof(pLogin->szPasswd); des.Encrypt( szTemp2 , strlen(szTemp2) , pLogin->szPasswd , lLen , pLogin->szUserName , 8 ); pLogin->ucUserType = LOGINTYPE_SDK; pLogin->lCorpVer = MAKELPARAM(CORPSMS_VER,CORPSMS_VER2);//软件版本 long lRet = Process_Login(pLogin); delete pLogin; return lRet; } long CProcessSocket::Cmpp_Process_Terminate() { SendFrame(CMPP_TERMINATE,NULL,0); //发送Terminate返回 return 0; } #endif long CProcessSocket::Process_Corp_BZ_See( REQ_Corp_BZ_See * pSee ) { try { if ( !(m_ulPurview & PURVIEW_CORP_SEE) ) //没有权限修改资料 { ANS_Corp_BZ_See * pSeeRet = new ANS_Corp_BZ_See; //权限不够,什么也不返回 pSeeRet->lCount = 0; SendFrame( SMSFUNC_CORP_BZ_SEE , (BYTE*)pSeeRet , sizeof(ANS_Corp_BZ_See) ); //发送返回 return 1; } CString strSelect; if ( pSee->lBZType==1 || pSee->lBZType==2 ) //业务员与客服的备注/回访是共用的 { strSelect.Format( _T("select * from corp_bz where Corpid=%d and UserType=%d and (BZType=1 or BZType=2 or BZType=0) order by CreateTime desc") , pSee->lCorpID , pSee->lUserType ); } else { strSelect.Format( _T("select * from corp_bz where Corpid=%d and UserType=%d and BZType=%d order by CreateTime desc") , pSee->lCorpID , pSee->lUserType , pSee->lBZType ); } BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; //查询会员信息 strSelect.Format( _T("select * from corp_LXR where CorpID=%d and CorpType=0") , pSee->lCorpID ); //查询属于企业的会员信息 BOOL b2 = m_AdoRS2.Open( strSelect ); long lCountLXR = m_AdoRS2.GetRecordCount(); //生成返回数据 if ( lCountLXR <0 ) lCountLXR = 0; long lSize = sizeof(ANS_Corp_BZ_See) + sizeof(ANS_Corp_BZ_Data)*lCount+sizeof(ANS_Corp_MemberData)*lCountLXR; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_BZ_See * pSeeRet = (ANS_Corp_BZ_See *)pData; ANS_Corp_BZ_Data * pSeeDataRet = (ANS_Corp_BZ_Data *)(pData+sizeof(ANS_Corp_BZ_See)); ANS_Corp_MemberData * pMemberDataRet = (ANS_Corp_MemberData *)(pData+sizeof(ANS_Corp_BZ_See)+sizeof(ANS_Corp_BZ_Data)*lCount); pSeeRet->lCount = lCount; //数据记录 pSeeRet->lBZType = pSee->lBZType; pSeeRet->lUserType = pSee->lUserType; pSeeRet->lCorpID = pSee->lCorpID; _tcscpy(pSeeRet->szName, pSee->szName ); pSeeRet->lMemberCount = lCountLXR; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("BZID") , pSeeDataRet->lBZID); m_AdoRS.GetCollect( _T("CorpID") , pSeeDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserType") , pSeeDataRet->lUserType); m_AdoRS.GetCollect( _T("BZType") , pSeeDataRet->lBZType); m_AdoRS.GetCollect( _T("NRType") , pSeeDataRet->lNRType); m_AdoRS.GetCollect( _T("BZ") , pSeeDataRet->szBZ); m_AdoRS.GetCollect( _T("CreateUser") , pSeeDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime") , t); t.GetAsSystemTime(pSeeDataRet->tCreateTime); m_AdoRS.MoveNext(); pSeeDataRet ++; } } if (b2 && lCountLXR) //执行成功 { m_AdoRS2.MoveFirst(); while( !m_AdoRS2.IsEOF() ) { m_AdoRS2.GetCollect( _T("LXRID") , pMemberDataRet->lLXRID); m_AdoRS2.GetCollect( _T("Name") , pMemberDataRet->szName); m_AdoRS2.GetCollect( _T("NickName") , pMemberDataRet->szNickName); m_AdoRS2.GetCollect( _T("Sex") , pMemberDataRet->szSex); m_AdoRS2.GetCollect( _T("Tel") , pMemberDataRet->szTel); m_AdoRS2.GetCollect( _T("Mobile") , pMemberDataRet->szMobile); m_AdoRS2.MoveNext(); pMemberDataRet ++; } } SendFrame( SMSFUNC_CORP_BZ_SEE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_BZ_Add( REQ_Corp_BZ_Add * pAdd ) { try { if ( !(m_ulPurview & PURVIEW_CORP_SEE) ) //没有权限修改资料 { ANS_Corp_BZ_Add * pSeeRet = new ANS_Corp_BZ_Add; //权限不够,什么也不返回 pSeeRet->bOK = false; SendFrame( SMSFUNC_CORP_BZ_ADD , (BYTE*)pSeeRet , sizeof(ANS_Corp_BZ_Add) ); //发送返回 return 1; } ANS_Corp_BZ_Add * pAddRet = new ANS_Corp_BZ_Add; //权限不够,什么也不返回 memset(pAddRet,0,sizeof(ANS_Corp_BZ_Add)); pAddRet->bOK = false; //默认不成功 pAddRet->lCorpID = pAdd->lCorpID; pAddRet->lUserType = pAdd->lUserType; pAddRet->lBZType = pAdd->lBZType; _tcscpy(pAddRet->szName , pAdd->szName ); //添加 CString str; CString strBZ = pAdd->szBZ; strBZ.Replace( _T("'"),_T("''")); ::ExMobileGZM(pAdd->szLXRMobile); str.Format( _T("insert into Corp_BZ ( CorpID,UserType,BZType,NRType,BZ,CreateID,CreateUser,CreateTime,LXRName,LXRMobile,SendSms ) values( %d,%d,%d,%d,'%s',%d,'%s',GetDate(),'%s','%s',%d)") , //插入记录 pAdd->lCorpID, pAdd->lUserType, pAdd->lBZType, pAdd->lNRType, strBZ, m_lUserID, m_szLoginName, pAdd->szLXRName, pAdd->szLXRMobile, pAdd->bSendSms); if ( m_AdoRS.Open(str) ) { m_AdoRS.Close(); pAddRet->bOK = true; } if ( pAdd->lNRType == 1 ) //属于回访的,要在corp表中记录 { str.Format( _T("update corp set KF_LastHF=GetDate() where corpid=%d") , pAdd->lCorpID ); m_AdoRS.Open(str); if ( m_ucUserType == LOGINTYPE_HF && pAdd->bSendSms) //回访后台,需要发送短信进行调研 { str.Format(_T("非常感谢你对短信易的支持,请回复数字对刚才短信易%d号客服服务进行评价:1、满意;2、一般;3、不满意。"),m_lUserID); SubmitData Quitdata={0}; Quitdata.lCorpID = 100000; Quitdata.lUserID = 10000005; Quitdata.lItemID = 200; //强制使用全网 _tcscpy( Quitdata.szMobile , pAdd->szLXRMobile ); _tcscpy( Quitdata.szName , _T("HF") ); _tcscpy( Quitdata.szMsg , str ); CSendThread::SubmitSms( Quitdata,&m_AdoRS,m_pSMSDlg,0,SMSTYPE_ZF); //发送短信 } } SendFrame( SMSFUNC_CORP_BZ_ADD , (BYTE*)pAddRet , sizeof(ANS_Corp_BZ_Add) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_Oper_See( REQ_Corp_Oper_See * pSee ) { try { //if ( !(m_ulPurview & PURVIEW_CORP_SEE) && !(m_ucUserType == LOGINTYPE_YWY || m_ucUserType == LOGINTYPE_HF) ) //没有权限修改资料 if ( !(m_ulPurview & PURVIEW_CORP_SEE) ) //没有权限修改资料 { ANS_Corp_Oper_See * pSeeRet = new ANS_Corp_Oper_See; //权限不够,什么也不返回 pSeeRet->lCount = 0; SendFrame( SMSFUNC_CORP_OPER_SEE , (BYTE*)pSeeRet , sizeof(ANS_Corp_Oper_See) ); //发送返回 return 1; } CString strSelect; if ( pSee->lUserType == 1 )//代理商客户 strSelect.Format( _T("select * from Agent_oper where Agentid=%d and UserType=%d order by CreateTime desc") , pSee->lCorpID , pSee->lUserType ); else strSelect.Format( _T("select * from corp_oper where Corpid=%d and UserType=%d order by CreateTime desc") , pSee->lCorpID , pSee->lUserType ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Corp_Oper_See) + sizeof(ANS_Corp_Oper_Data)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_Oper_See * pSeeRet = (ANS_Corp_Oper_See *)pData; ANS_Corp_Oper_Data * pSeeDataRet = (ANS_Corp_Oper_Data *)(pData+sizeof(ANS_Corp_Oper_See)); pSeeRet->lCount = lCount; //数据记录 pSeeRet->lUserType = pSee->lUserType; pSeeRet->lCorpID = pSee->lCorpID; _tcscpy(pSeeRet->szName, pSee->szName ); if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("OperID") , pSeeDataRet->lOperID); if ( pSee->lUserType == 1 )//代理商客户 m_AdoRS.GetCollect( _T("AgentID") , pSeeDataRet->lCorpID); else m_AdoRS.GetCollect( _T("CorpID") , pSeeDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserType") , pSeeDataRet->lUserType); m_AdoRS.GetCollect( _T("OperType") , pSeeDataRet->lOperType); m_AdoRS.GetCollect( _T("OperMsg") , pSeeDataRet->szOperMsg); m_AdoRS.GetCollect( _T("BZ") , pSeeDataRet->szBZ); m_AdoRS.GetCollect( _T("OperName") , pSeeDataRet->szOperName); m_AdoRS.GetCollect( _T("CreateUser"), pSeeDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime"), t); t.GetAsSystemTime(pSeeDataRet->tCreateTime); m_AdoRS.MoveNext(); pSeeDataRet ++; } } SendFrame( SMSFUNC_CORP_OPER_SEE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_Oper_Add( REQ_Corp_Oper_Add * pAdd ) { try { if ( !(m_ulPurview & PURVIEW_CORP_SEE) ) //没有权限修改资料 { ANS_Corp_Oper_Add * pSeeRet = new ANS_Corp_Oper_Add; //权限不够,什么也不返回 pSeeRet->bOK = false; SendFrame( SMSFUNC_CORP_OPER_ADD , (BYTE*)pSeeRet , sizeof(ANS_Corp_Oper_Add) ); //发送返回 return 1; } ANS_Corp_Oper_Add * pAddRet = new ANS_Corp_Oper_Add; //权限不够,什么也不返回 memset(pAddRet,0,sizeof(ANS_Corp_Oper_Add)); pAddRet->bOK = false; //默认不成功 pAddRet->data = pAdd->data; BOOL bOper=false; for ( int i=0 ; ilCorpCount+1 ; i++ ) { REQ_Corp_Oper_Add * pAdd2=pAdd; //第一个企业 if ( i>0 ) pAdd2 = pAdd+i; //其它企业 CString strBZ = pAdd2->data.szBZ; strBZ.Replace( _T("'"),_T("''")); //进行操作 //企业ID CString str; CString strDate; strDate=_T("null"); long lTemp=0; COleDateTime t(pAdd2->lHTDate.lYear,pAdd2->lHTDate.lMon,pAdd2->lHTDate.lDay,0,0,0); if ( t.GetStatus()==COleDateTime::valid ) { strDate.Format (_T("'%04d.%02d.%02d'") , t.GetYear(),t.GetMonth(),t.GetDay() ); } switch( pAdd2->data.lOperType ) { case 0: //开通 str.Format( _T("update corp set status='0' where corpid=%d") , pAdd2->data.lCorpID ); break; case 50: //开通 str.Format( _T("update Agent set status='0' where AgentID=%d") , pAdd2->data.lCorpID ); break; case 1: //关闭 //现已发送的短信全部置为审核 str.Format( _T("update smssend set Status=1 where CorpID=%d and status=0") , pAdd2->data.lCorpID ); m_AdoRS.Open(str); str.Format( _T("update corp set status='1' where corpid=%d") , pAdd2->data.lCorpID ); break; case 51: //关闭 str.Format( _T("update Agent set status='1' where AgentID=%d") , pAdd2->data.lCorpID ); break; case 2: //代理商 str.Format( _T("update corp set AgentID=%d where corpid=%d") , pAdd2->lAgentID,pAdd2->data.lCorpID ); break; case 3: //业务员 str.Format( _T("update corp set YWYID=%d where corpid=%d") , pAdd2->lYWYID,pAdd2->data.lCorpID ); break; case 53: //代理商业务员 str.Format( _T("update Agent set YWYID=%d where Agentid=%d") , pAdd2->lYWYID,pAdd2->data.lCorpID ); break; case 54: //更改代理商允许添加企业数量 str.Format( _T("update Agent set AddCorpCount=%d where Agentid=%d") , pAdd2->lAddressCount,pAdd2->data.lCorpID ); break; case 55: //合同寄出时间 str.Format( _T("update Agent set HT_Send=%s where Agentid=%d") , strDate,pAdd2->data.lCorpID ); break; case 56: //合同回收时间 str.Format( _T("update Agent set HT_Recv=%s where Agentid=%d") , strDate,pAdd2->data.lCorpID ); break; case 57: //企业注册时间 str.Format( _T("update Agent set CreateTime=%s where Agentid=%d") , strDate,pAdd2->data.lCorpID ); break; case 58: //短信单价 str.Format( _T("update Agent set PriceOne=%.4f where Agentid=%d") , pAdd2->fPriceOne,pAdd2->data.lCorpID ); break; case 59: //提成比例 str.Format( _T("update Agent set TCPer=%d where Agentid=%d") , pAdd2->lAddressCount,pAdd2->data.lCorpID ); break; case 4: //通道 str.Format( _T("update corp set SMSTD='%s',OutAll=%d where corpid=%d") , pAdd2->szTD,pAdd2->bOutAll,pAdd2->data.lCorpID ); break; case 6: //改签名 str.Format( _T("update corp set CM='%s' where corpid=%d") , pAdd2->szCM,pAdd2->data.lCorpID ); break; case 7: //改防骚扰级别 str.Format( _T("update corp set CheckReSend=%d , SY=%d where corpid=%d") , pAdd2->lCheckReSend,pAdd2->bSY,pAdd2->data.lCorpID ); break; case 8: //改日发送量限制 str.Format( _T("update corp set DayMaxSend=%d where corpid=%d") , pAdd2->lDayMaxSend,pAdd2->data.lCorpID ); break; case 9: //公用通讯录容量 str.Format( _T("update corp set AddressCount=%d where corpid=%d") , pAdd2->lAddressCount,pAdd2->data.lCorpID ); break; case 10: //超量通知起点 str.Format( _T("update corp set FiltStep=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 11: //合同寄出时间 str.Format( _T("update corp set HT_Send=%s where corpid=%d") , strDate,pAdd2->data.lCorpID ); break; case 12: //合同回收时间 str.Format( _T("update corp set HT_Recv=%s where corpid=%d") , strDate,pAdd2->data.lCorpID ); break; case 14: //合同作废 str.Format( _T("update corp set MQ_HTNum='' where corpid=%d") , pAdd2->data.lCorpID ); m_AdoRS.Open(str); str.Format( _T("Update HT set Status=2,BZ='%s' where HT='%s' and Status!=2 and HTType=0") ,strBZ,pAdd2->szHTNum ); break; case 16: //协议作废 str.Format( _T("update corp set MQ_XYNum='' where corpid=%d") , pAdd2->data.lCorpID ); m_AdoRS.Open(str); str.Format( _T("Update HT set Status=2,BZ='%s' where HT='%s' and Status!=2 and HTType=1") ,strBZ,pAdd2->szHTNum ); break; case 17: //改客服 str.Format( _T("update corp set KFID=%d where corpid=%d") , pAdd2->lKFID,pAdd2->data.lCorpID ); break; case 18: //改子帐号签名 str.Format( _T("update users set CM2='%s' where corpid=%d and loginname='%s'") , pAdd2->szCM,pAdd2->data.lCorpID,pAdd2->szHTNum); bOper = false; if ( m_AdoRS.GetConnection()->Execute(str,lTemp) ) { if ( lTemp >0 ) bOper = true; } else { bOper = false; } str = _T(""); break; case 19: //改签名的企业名称 str.Format( _T("update corp set CMName='%s' where corpid=%d") , pAdd2->szCMName,pAdd2->data.lCorpID); break; case 20: //改长短信类型 str.Format( _T("update corp set longsmstype=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 21: //改企业注册时间 str.Format( _T("update corp set RegTime=%s where corpid=%d") , strDate,pAdd2->data.lCorpID ); break; case 22: //改用户类型 str.Format( _T("update corp set UserType=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 23: //改用户地区 str.Format( _T("update corp set Prov=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 24: //改敏感字审核级别 str.Format( _T("update corp set FStep=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 25: //改短信单价 str.Format( _T("update corp set PriceOne=%.4f where corpid=%d") , pAdd2->fPriceOne,pAdd2->data.lCorpID ); break; case 26: //改是否月结 str.Format( _T("update corp set YJ=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 27: //改是否企信通 str.Format( _T("update corp set QXT=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 28: //改提成比例 str.Format( _T("update corp set TCPer=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 29: //改是否MAS str.Format( _T("update corp set MAS=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 30: //更改VIP类型 str.Format( _T("update corp set VipType=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 31: //更改mas开通时间 str.Format( _T("update corp_mas set BeginTime='%04d%02d%02d' where CorpID=%d") , pAdd2->lHTDate.lYear,pAdd2->lHTDate.lMon,pAdd2->lHTDate.lDay,pAdd2->data.lCorpID ); break; case 33: //更改合作伙伴 str.Format( _T("update corp set PartnerID=%d where corpid=%d") , pAdd2->lKFID,pAdd2->data.lCorpID ); break; case 34: //未能分类 { COleDateTime t=COleDateTime::GetCurrentTime(); CString strTime; strTime.Format(_T("%04d%02d%02d") , t.GetYear(),t.GetMonth(),t.GetDay() ); str.Format( _T("update corp set qxt_tq=%s where corpid=%d") , strTime,pAdd2->data.lCorpID ); } break; case 35: //改是否Fax str.Format( _T("update corp set Fax=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 36: //改是否TDLock str.Format( _T("update corp set TDLock=%d where corpid=%d") , pAdd2->lFiltStep,pAdd2->data.lCorpID ); break; case 37: //改Fax单价 str.Format( _T("update corp set Fax_PriceOne=%.4f,Fax_PriceOne2=%.4f where corpid=%d") , pAdd2->fPriceOne,pAdd2->fPriceOne2,pAdd2->data.lCorpID ); break; case 13: //合同分配 //先判断合同号是否存在 if ( m_ucUserType == LOGINTYPE_MANAGER || m_ucUserType == LOGINTYPE_KF ) //str.Format( _T("select * from HT where HT='%s' and AgentID=0 and Status=0"),pAdd2->szHTNum ); str.Format( _T("select * from HT where HT='%s' and Status=0 and HTType=0"),pAdd2->szHTNum ); else str.Format( _T("select * from HT where HT='%s' and AgentID=%d and Status=0 and HTType=0"),pAdd2->szHTNum, m_lUserID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { long lHTID=0; m_AdoRS.GetCollect( _T("HTID") , lHTID ); //更改合同分配数据 str.Format( _T("update HT set Status=1,UseTime=GetDate(),CorpID=%d where HTID=%d") , pAdd2->data.lCorpID,lHTID ); m_AdoRS.Open(str); //更改企业中的合同数据 str.Format( _T("update corp set MQ_HTNum='%s' where CorpID=%d") , pAdd2->szHTNum , pAdd2->data.lCorpID ); } else { //合同号不存在 str = _T(""); bOper = 0; } break; case 15: //协议分配 //先判断合同号是否存在 if ( m_ucUserType == LOGINTYPE_MANAGER || m_ucUserType == LOGINTYPE_KF ) //str.Format( _T("select * from HT where HT='%s' and AgentID=0 and Status=0"),pAdd2->szHTNum ); str.Format( _T("select * from HT where HT='%s' and Status=0 and HTType=1"),pAdd2->szHTNum ); else str.Format( _T("select * from HT where HT='%s' and AgentID=%d and Status=0 and HTType=1"),pAdd2->szHTNum, m_lUserID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { long lHTID=0; m_AdoRS.GetCollect( _T("HTID") , lHTID ); //更改合同分配数据 str.Format( _T("update HT set Status=1,UseTime=GetDate(),CorpID=%d where HTID=%d") , pAdd2->data.lCorpID,lHTID ); m_AdoRS.Open(str); //更改企业中的合同数据 str.Format( _T("update corp set MQ_XYNum='%s' where CorpID=%d") , pAdd2->szHTNum , pAdd2->data.lCorpID ); } else { //合同号不存在 str = _T(""); bOper = 0; } break; case 5: //帐号重开 { //先查询原来帐号余额 long lSmsUsed=0; long lAgentID=0; str.Format( _T("select * from corp where corpid=%d") , pAdd2->data.lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("SMSUsed") , lSmsUsed ); m_AdoRS.GetCollect( _T("AgentID") , lAgentID ); CString strCorpID,strAgentID,strPresent,strSMSCount,strBZ; strCorpID.Format( _T("%d") , pAdd2->data.lCorpID ); strAgentID.Format( _T("%d") , lAgentID ); strPresent.Format( _T("%d") , -lSmsUsed ); strSMSCount = strPresent; strBZ=pAdd2->data.szBZ; strBZ.Replace( _T("'") , _T("''") ); //添加负数记录,将帐号归零 str = CString(_T("insert into corp_Pay (CorpID,AgentID,PayMan,PayMode,Price,PriceOne,Present,SMSCount,YS,Test,CreateUser,PayTime,OvrTime,BZ) values(")) + CString(_T(" '")) + strCorpID + CString("',") + CString(_T(" '")) + strAgentID + CString("',") + CString(_T(" '")) + CString(_T("回收")) + CString("',") + CString(_T(" '")) + CString(_T("现金")) + CString("',") + CString(_T("0.0")) + CString(",") + CString(_T("0.10")) + CString(",") + strPresent + CString(",") + strSMSCount + CString(",") + CString(_T("0")) + CString(",") + CString(_T("0")) + CString(",") + CString(" '") + CString(m_szLoginName) + CString("',") + //创建人 CString( "GETDATE(),") + CString( "DATEADD(Year,1,GETDATE()),") + CString(" '") + strBZ + CString("' )"); m_AdoRS.Open(str); //旧的充值记录无法查询 str.Format( _T("update corp_Pay set Del=1 where corpid=%d") , pAdd2->data.lCorpID ); m_AdoRS.Open(str); long lNewSmsUsed=0; /* if ( lSmsUsed>50 ) //如果原来可用余额大于50,赠送50条短信供新开测试用 { strPresent.Format( _T("%d") , 50 ); strSMSCount = strPresent; //添加赠送记录 str = CString(_T("insert into corp_Pay (CorpID,AgentID,PayMan,PayMode,Price,PriceOne,Present,SMSCount,YS,Test,CreateUser,PayTime,OvrTime,BZ) values(")) + CString(_T(" '")) + strCorpID + CString("',") + CString(_T(" '")) + strAgentID + CString("',") + CString(_T(" '")) + CString(_T("赠送")) + CString("',") + CString(_T(" '")) + CString(_T("现金")) + CString("',") + CString(_T("0.0")) + CString(",") + CString(_T("0.10")) + CString(",") + strPresent + CString(",") + strSMSCount + CString(",") + CString(_T("0")) + CString(",") + CString(_T("0")) + CString(",") + CString(" '") + CString(m_szLoginName) + CString("',") + //创建人 CString( "GETDATE(),") + CString( "DATEADD(Year,1,GETDATE()),") + CString(" '") + CString(_T("重开赠送测试")) + CString("' )"); m_AdoRS.Open(str); lNewSmsUsed = 50; } */ //将企业的可用,已发归零 //str.Format( _T("update corp set Status='0',SMSUsed=%d,SMSSendAll=0 , Total=0,TotalSms=%d ,OvrTime=DATEADD(Year,1,GETDATE()),LastLogin=GETDATE() where corpid=%d") ,lNewSmsUsed,lNewSmsUsed, pAdd2->data.lCorpID ); str.Format( _T("update corp set Status='0',SMSUsed=%d,SMSSendAll=0 , Total=0,TotalSms=%d where corpid=%d") ,lNewSmsUsed,lNewSmsUsed, pAdd2->data.lCorpID ); m_AdoRS.Open(str); //将用户,已发归零 str.Format( _T("update users set SMSSendAll=0 where corpid=%d") , pAdd2->data.lCorpID ); m_AdoRS.Open(str); //将旧的结算数据删除 str.Format( _T("delete from smstj where corpid=%d") , pAdd2->data.lCorpID ); m_AdoRS.Open(str); wsprintf(pAdd2->data.szOperMsg , _T("%d") , lSmsUsed ); bOper = true; str = _T(""); } } break; case 32: //强制踢出客户端 { long lUserID=0; BOOL bCloseCli = false; pAddRet->lYWYID = 0; str.Format( _T("select * from Users where CorpID='%d' and LoginName='%s'"),pAdd2->data.lCorpID, pAdd2->data.szCreateUser); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("UserID") , lUserID ); } else { pAddRet->lYWYID = -1; //错误代码 } if ( lUserID>0 ) { REQ_CloseClient CloseClient = {0}; //权限不够,什么也不返回 CloseClient.lCorpID = pAdd2->data.lCorpID; CloseClient.lUserID = lUserID; if ( m_pSMSDlg->SocketPushClose(&CloseClient) ) { bCloseCli = true; } else { pAddRet->lYWYID = -2; //错误代码 } } if ( lUserID>0 && bCloseCli ) //处理成功 { bOper = true; } str=_T(""); } break; case 500: //彩信单价 { //先查询原来帐号余额 str.Format( _T("select * from mmspro where corpid=%d") , pAdd2->data.lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.Close(); str.Format( _T("update mmsPro set MmsPriceOne=%.4f where CorpID=%d") , pAdd2->fPriceOne,pAdd2->data.lCorpID ); } else { m_AdoRS.Open(_T("mmsPro") , adCmdTable); m_AdoRS.AddNew(); m_AdoRS.PutCollect(_T("CorpID") , pAdd2->data.lCorpID ); m_AdoRS.PutCollect(_T("MmsUsed") , 0 ); m_AdoRS.PutCollect(_T("MmsSendAll") , 0 ); m_AdoRS.PutCollect(_T("MmsSendType") , _T("1111") ); m_AdoRS.PutCollect(_T("MmsTD") , _T("0000") ); m_AdoRS.PutCollect(_T("TotalMms") , 0 ); m_AdoRS.PutCollect(_T("MmsMaxSize") , 90 ); m_AdoRS.PutCollect(_T("MmsPriceOne") , pAdd2->fPriceOne ); m_AdoRS.PutCollect(_T("TotalPayMms") , 0 ); m_AdoRS.PutCollect(_T("MmsReportPer") , 0 ); m_AdoRS.PutCollect(_T("MmsNoOut") , 0 ); m_AdoRS.PutCollect(_T("MmsOutAll") , 0 ); m_AdoRS.PutCollect(_T("MmsSY") , 0 ); m_AdoRS.PutCollect(_T("MmsSH") , 1 ); m_AdoRS.PutCollect(_T("UpMms") , _T("") ); m_AdoRS.Update(); bOper = true; str = _T(""); } } break; case 501: //彩信附件大小 str.Format( _T("update mmspro set MmsMaxSize=%d where corpid=%d") , pAdd2->lDayMaxSend,pAdd2->data.lCorpID ); break; case 502: //彩信状态报告率 str.Format( _T("update mmspro set MmsReportPer=%d where corpid=%d") , pAdd2->lDayMaxSend,pAdd2->data.lCorpID ); break; case 503: //彩信通道 str.Format( _T("update mmspro set MmsTD='%s',MmsOutAll=%d where corpid=%d") , pAdd2->szTD,pAdd2->bOutAll,pAdd2->data.lCorpID ); break; case 504: //彩信日最大发送量 str.Format( _T("update mmspro set MmsDayMaxSend=%d where corpid=%d") , pAdd2->lDayMaxSend,pAdd2->data.lCorpID ); break; case 505: //彩信是否深夜发送 str.Format( _T("update mmspro set MmsSY=%d where corpid=%d") , pAdd2->bSY,pAdd2->data.lCorpID ); break; case 506: //彩信是否审核 str.Format( _T("update mmspro set MmsSH=%d where corpid=%d") , pAdd2->bSY,pAdd2->data.lCorpID ); break; case 507: //彩信UpMms str.Format( _T("update mmspro set UpMms='%s' where corpid=%d") , pAdd2->data.szOperMsg,pAdd2->data.lCorpID ); break; case 508: //彩信SendType str.Format( _T("update mmspro set MmsSendType='%s' where corpid=%d") , pAdd2->szTD,pAdd2->data.lCorpID ); break; case 700: //开通 //先判断企业是否存在 str.Format( _T("select * from mobset2.CorpWork.dbo.app_oacorp where c_corpid = %d") , pAdd2->data.lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.Close(); str.Format(_T("Update mobset2.CorpWork.dbo.app_oacorp set c_oa=0 where c_corpid = %d") , pAdd2->data.lCorpID ); } else { //插入记录 str.Format(_T("insert into mobset2.CorpWork.dbo.app_oacorp (c_corpid,c_oa,c_active,c_yue,c_smsuserid) values (%d,0,0,0,0)") , pAdd2->data.lCorpID ); } break; case 701: //关闭 str.Format(_T("Update mobset2.CorpWork.dbo.app_oacorp set c_oa=1 where c_corpid = %d") , pAdd2->data.lCorpID ); break; case 702: //添加管理员 if ( pAdd2->bSY & SDK_SDK ) //有SDK权限 { str.Format(_T("Update mobset2.CorpWork.dbo.app_oacorp set c_smsuserid=%d where c_corpid = %d and c_smsuserid=0") ,pAdd2->lYWYID , pAdd2->data.lCorpID ); m_AdoRS.Open(str); } //先判断管理员是否存在 str.Format( _T("select * from mobset2.CorpWork.dbo.app_oausers where c_userid = %d") , pAdd2->lYWYID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.Close(); str.Format(_T("Update mobset2.CorpWork.dbo.app_oausers set c_roleid=100003 where c_userid = %d") , pAdd2->lYWYID ); } else { //插入记录 str.Format(_T("insert into mobset2.CorpWork.dbo.app_oausers (c_corpid,c_userid,c_roleid) values (%d,%d,100003)") , pAdd2->data.lCorpID,pAdd2->lYWYID ); } break; case 703: //更改附件容量 str.Format(_T("Update mobset2.CorpWork.dbo.app_oacorp set c_fjspace=%d,c_wjspace=%d,c_zrsspace=%d where c_corpid = %d") ,pAdd2->lKFID,pAdd2->lYWYID,pAdd2->lAgentID, pAdd2->data.lCorpID ); break; } if ( str.GetLength()>0 ) { if ( m_AdoRS.Open(str) ) { m_AdoRS.Close(); bOper = true; } } if ( bOper ) //操作成功后,增加操作记录 { CString str; if ( pAdd2->data.lUserType == 1 ) //代理商 { //添加 str.Format( _T("insert into Agent_Oper ( AgentID,UserType,OperType,OperMsg,BZ,OperName,CreateUser,CreateTime ) values( %d,%d,%d,'%s','%s','%s','%s',GetDate())") , //插入记录 pAdd2->data.lCorpID, pAdd2->data.lUserType, pAdd2->data.lOperType, pAdd2->data.szOperMsg, strBZ, pAdd2->data.szOperName, m_szLoginName); } else { //添加 str.Format( _T("insert into Corp_Oper ( CorpID,UserType,OperType,OperMsg,BZ,OperName,CreateUser,CreateTime ) values( %d,%d,%d,'%s','%s','%s','%s',GetDate())") , //插入记录 pAdd2->data.lCorpID, pAdd2->data.lUserType, pAdd2->data.lOperType, pAdd2->data.szOperMsg, strBZ, pAdd2->data.szOperName, m_szLoginName); } if ( m_AdoRS.Open(str) ) { m_AdoRS.Close(); pAddRet->bOK = true; } } } SendFrame( SMSFUNC_CORP_OPER_ADD , (BYTE*)pAddRet , sizeof(ANS_Corp_Oper_Add) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_RefreshSMSCount( REQ_Corp_RefreshADCSmsCount* pAdc ) { #ifdef SMSCENTER_ADC try { if ( !(m_ulPurview & PURVIEW_CORP_SEE) ) //没有权限修改资料 { ANS_Corp_RefreshADCSmsCount * pSeeRet = new ANS_Corp_RefreshADCSmsCount; //权限不够,什么也不返回 memset(pSeeRet,0,sizeof(ANS_Corp_RefreshADCSmsCount)); pSeeRet->lCount = 0; SendFrame( SMSFUNC_CORP_REFRESHADCSMSCOUNT , (BYTE*)pSeeRet , sizeof(ANS_Corp_RefreshADCSmsCount) ); //发送返回 return 1; } ANS_Corp_RefreshADCSmsCount * pSeeRet = new ANS_Corp_RefreshADCSmsCount; //权限不够,什么也不返回 memset(pSeeRet,0,sizeof(ANS_Corp_RefreshADCSmsCount)); pSeeRet->lCount = 0; pSeeRet->bOK = false; CString str; CString strTemp; REQ_Corp_RefreshADCSmsCount_Data * pSeeDataRet = (REQ_Corp_RefreshADCSmsCount_Data *)((BYTE*)pAdc+sizeof(REQ_Corp_RefreshADCSmsCount)); for ( int i=0 ; ilCorpCount ; i++ ) { str.Format( _T("select * from corp where corpid=%d") , pSeeDataRet->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { CString MQ_LoginCode,MQ_LoginName,MQ_Passwd,MQ_SmsCode,strPasswd; m_AdoRS.GetCollect( _T("MQ_LoginCode") , MQ_LoginCode ); m_AdoRS.GetCollect( _T("MQ_LoginName") , MQ_LoginName ); m_AdoRS.GetCollect( _T("MQ_Passwd") , MQ_Passwd ); m_AdoRS.GetCollect( _T("MQ_SmsCode") , MQ_SmsCode ); if ( MQ_LoginCode.GetLength()>0 && MQ_LoginName.GetLength()>0 ) { //strTemp.Format( _T("http://si.bjmcc.net/edsmp/sso/login?sysid=224&successurl=http://adc.mobset.com/sso/ok.asp&failureurl=http://adc.mobset.com/sso/Fail.asp&loginmethod=0&id1=%s&id2=%s&password=%s"),MQ_LoginCode , MQ_LoginName , MQ_Passwd ); strPasswd = URLEncode(MQ_Passwd); str.Format( _T("http://group.bj.chinamobile.com/edsmp/sso/login?sysid=224&successurl=http://adc.mobset.com/sso/ok.asp&failureurl=http://adc.mobset.com/sso/Fail.asp&loginmethod=0&id1=%s&id2=%s&password=%s"),MQ_LoginCode , MQ_LoginName , strPasswd ); m_pSMSDlg->AddLog(str , 1 ); //AfxMessageBox(str); HINTERNET hNet = NULL; CString strKey; SYSTEMTIME t;::GetLocalTime(&t); strKey.Format("%02d%02d%02d.%d" , t.wHour,t.wMinute,t.wSecond,t.wMilliseconds ); hNet = InternetOpen(strKey,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); if ( hNet ) { //发送请求,取tokenid HINTERNET hUrl = InternetOpenUrl(hNet,str,NULL,0,INTERNET_FLAG_RELOAD,0); if ( hUrl ) { char buffer[4096]={0} ; DWORD dwBytesRead = 0; BOOL bRead = ::InternetReadFile(hUrl, buffer, sizeof(buffer)-1024, &dwBytesRead); if ( dwBytesRead>0 ) //有收到数据返回 { buffer[dwBytesRead]=0; CString strGBK; //有时返回不是"<"开头,有回车换行,要去掉 for ( int i=0 ; i0 ) { CSmsCenterDlg::ConvertUtf8ToGBK(strGBK); } else { strGBK = buffer; } _bstr_t bxml= strGBK; m_pSMSDlg->AddLog(strGBK , 1 ); //TRACE(strGBK); //AfxMessageBox(strGBK); //通过xml分析得到tokenid CComPtr spDoc; HRESULT hr = spDoc.CoCreateInstance(__uuidof(MSXML2::DOMDocument40)); //创建文档对象 if (SUCCEEDED(hr)) { if ( spDoc->loadXML(bxml) ) { CString strtokenid; CComPtr spNode; CComBSTR strNode; CComBSTR strVal; spNode = spDoc->selectSingleNode(_bstr_t(_T("//response/sessionid"))); if ( spNode ) { spNode->get_text(&strVal); strtokenid = strVal;} if ( strtokenid.GetLength()>0 ) { str.Format(_T("\r\n") \ _T("\r\n") \ _T("%s\r\n") \ _T("100\r\n") \ _T("%s\r\n") \ _T("") ,pSeeDataRet->lCorpID,strtokenid,MQ_SmsCode ); if ( m_AdoRS.Open(_T("MQ_Req") , adCmdTable ) ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect( _T("MQReqMsg") , str ); m_AdoRS.Update(); m_AdoRS.Close(); } } } } } } InternetCloseHandle( hNet ); } Sleep(5000); //每10秒查询一个用户 } } pSeeRet->lCount ++; pSeeDataRet ++; Sleep(20); } SendFrame( SMSFUNC_CORP_REFRESHADCSMSCOUNT , (BYTE*)pSeeRet , sizeof(ANS_Corp_RefreshADCSmsCount) ); //发送返回 return 1; } catch (...) { return 0; } #endif return 0; } long CProcessSocket::Process_Pay_SetAdcStatus( REQ_Pay_SetAdcStatus * pAdc ) { try { if ( !(m_ulPurview & PURVIEW_CORP_PAY) ) //没有权限修改资料 { ANS_Pay_SetAdcStatus * pAdcRet = new ANS_Pay_SetAdcStatus; //权限不够,什么也不返回 pAdcRet->bOK = false; pAdcRet->lCount = 0; SendFrame( SMSFUNC_PAY_SETADCSTATUS , (BYTE*)pAdcRet , sizeof(ANS_Pay_SetAdcStatus) ); //发送返回 return 1; } ANS_Pay_SetAdcStatus * pAdcRet = new ANS_Pay_SetAdcStatus; //权限不够,什么也不返回 pAdcRet->bOK = true; pAdcRet->lCount = 0; REQ_Pay_SetAdcStatus_Data * pData = (REQ_Pay_SetAdcStatus_Data *)((BYTE*)pAdc+sizeof(REQ_Pay_SetAdcStatus)); CString strSelect; CString strTime=_T("NULL"); if ( COleDateTime(pAdc->tPayTime).GetStatus()==COleDateTime::valid ) { strTime.Format( _T("'%04d.%02d.%02d %02d:%02d:%02d'") , pAdc->tPayTime.wYear,pAdc->tPayTime.wMonth,pAdc->tPayTime.wDay,pAdc->tPayTime.wHour,pAdc->tPayTime.wMinute,pAdc->tPayTime.wSecond ); } for ( int i=0 ; ilCorpCount; i++ ) { strSelect.Format( _T("update corp_pay set AdcStatus=%d,AdcPayTime=%s,AdcProcessUser='%s' where PayID=%d") ,pAdc->lNewStatus,strTime,m_szLoginName, pData->lPayID ); if ( m_AdoRS.Open( strSelect ) ) pAdcRet->lCount ++; pData++; } SendFrame( SMSFUNC_PAY_SETADCSTATUS , (BYTE*)pAdcRet , sizeof(ANS_Pay_SetAdcStatus) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Pay_SetAdcAgentTC( REQ_Pay_SetAdcAgentTC * pAdc ) { try { if ( !(m_ulPurview & PURVIEW_CORP_PAY) ) //没有权限修改资料 { ANS_Pay_SetAdcAgentTC * pAdcRet = new ANS_Pay_SetAdcAgentTC; //权限不够,什么也不返回 pAdcRet->bOK = false; pAdcRet->lCount = 0; SendFrame( SMSFUNC_PAY_SETADCAGENTTC , (BYTE*)pAdcRet , sizeof(ANS_Pay_SetAdcAgentTC) ); //发送返回 return 1; } ANS_Pay_SetAdcAgentTC * pAdcRet = new ANS_Pay_SetAdcAgentTC; //权限不够,什么也不返回 pAdcRet->bOK = true; pAdcRet->lCount = 0; REQ_Pay_SetAdcAgentTC_Data * pData = (REQ_Pay_SetAdcAgentTC_Data *)((BYTE*)pAdc+sizeof(REQ_Pay_SetAdcAgentTC)); CString str; for ( int i=0 ; i< pAdc->lCorpCount ; i++ ) { //先将这次的提成数据写入Corp_Pay表 for ( int j=0 ; j<7 ; j++ ) { float * pfPayTC = NULL; CString strField; switch( j ) { case 0: pfPayTC = &pData[i].fADCTC1; strField = _T("AdcTC1"); break; case 1: pfPayTC = &pData[i].fADCTC2; strField = _T("AdcTC2"); break; case 2: pfPayTC = &pData[i].fADCTC3; strField = _T("AdcTC3"); break; case 3: pfPayTC = &pData[i].fADCTC4; strField = _T("AdcTC4"); break; case 4: pfPayTC = &pData[i].fADCTC5; strField = _T("AdcTC5"); break; case 5: pfPayTC = &pData[i].fADCTC6; strField = _T("AdcTC6"); break; case 6: pfPayTC = &pData[i].fADCTC7; strField = _T("AdcTC7"); break; } if ( *pfPayTC > 0.0f ) { str.Format( _T("update Corp_Pay set %s=%.4f where PayID=%d") , strField , *pfPayTC , pData[i].lPayID ); m_AdoRS.Open(str); } } //将记录写入Corp_Pay_AgentTC表 str.Format( _T("insert into Corp_Pay_AgentTC (PayID , AgentID , CorpID , Price , AdcTC1,AdcTC2,AdcTC3,AdcTC4,AdcTC5,AdcTC6,AdcTC7,ProcessTime , ProcessUser ) values (%d,%d,%d,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,GetDate(),'%s' )") , pData[i].lPayID,pData[i].lAgentID,pData[i].lCorpID,pData[i].fPrice,pData[i].fADCTC1,pData[i].fADCTC2,pData[i].fADCTC3,pData[i].fADCTC4,pData[i].fADCTC5,pData[i].fADCTC6,pData[i].fADCTC7,m_szLoginName ); if ( m_AdoRS.Open(str) ) pAdcRet->lCount ++; } SendFrame( SMSFUNC_PAY_SETADCAGENTTC , (BYTE*)pAdcRet , sizeof(ANS_Pay_SetAdcAgentTC) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_HT_Add(REQ_HT_Add *pAdd) { USES_CONVERSION; try { ANS_HT_Add * pAddRet = new ANS_HT_Add; //权限不够,什么也不返回 pAddRet->lAgentID = pAdd->lAgentID; long lBegin=_ttol(pAdd->szBegin+1); long lEnd=_ttol(pAdd->szEnd+1); if ( lBegin>lEnd || lEnd-lBegin > 1000 ) //发送的请求有误,直接回复 { pAddRet->lCount = -1; SendFrame( SMSFUNC_HT_ADD , (BYTE*)pAddRet , sizeof(ANS_HT_Add) ); //发送返回 } _tcscpy(pAddRet->szBegin , pAdd->szBegin ); _tcscpy(pAddRet->szEnd , pAdd->szEnd ); pAddRet->lCount = 0; CString str; CString strHT; for ( int i=lBegin ; i<=lEnd ; i++ ) { strHT.Format( _T("%c%07d") , pAdd->szBegin[0] , i );//按顺序生成合同号 //检索合同号是否存在 str.Format( _T("select * from HT where HT='%s' and HTType=%d") , strHT , pAdd->lHTType ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) //合同号已存在,跳过 { continue; } str.Format( _T("insert into HT (HTType,HT,AgentID,Status,CreateUser,CreateTime) values (%d,'%s',%d,0,'%s',GetDate())" ) , pAdd->lHTType,strHT , pAddRet->lAgentID , m_szLoginName ); m_AdoRS.Open(str); m_AdoRS.Close(); pAddRet->lCount ++; } SendFrame( SMSFUNC_HT_ADD , (BYTE*)pAddRet , sizeof(ANS_HT_Add) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_HT_See(REQ_HT_See *pSee) { try { CString strSelect,strTemp; strSelect = _T("select ht.*,Agent.Name,Corp.CorpName from HT LEFT OUTER JOIN agent ON ht.agentid = agent.agentid LEFT OUTER JOIN corp on ht.corpid=corp.corpid where 1=1" ) ; if ( pSee->lAgentID >=0 ) { strTemp.Format( _T(" and ht.AgentID=%d ") , pSee->lAgentID ); strSelect += strTemp; } if ( pSee->lStatus >=0 ) { strTemp.Format( _T(" and ht.Status=%d ") , pSee->lStatus ); strSelect += strTemp; } if ( pSee->lHTType >=0 ) { strTemp.Format( _T(" and ht.HTType=%d ") , pSee->lHTType ); strSelect += strTemp; } if ( _tcslen(pSee->szBegin)>0) { strTemp.Format( _T(" and ht.HT>='%s' ") , pSee->szBegin ); strSelect += strTemp; } if ( _tcslen(pSee->szEnd)>0) { strTemp.Format( _T(" and ht.HT<='%s' ") , pSee->szEnd ); strSelect += strTemp; } BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_HT_See) + sizeof(ANS_HT_SeeData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_HT_See * pSeeRet = (ANS_HT_See *)pData; ANS_HT_SeeData * pSeeDataRet = (ANS_HT_SeeData *)(pData+sizeof(ANS_HT_See)); pSeeRet->lCount = lCount; //数据记录 COleDateTime t; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("HTID") , pSeeDataRet->lHTID); m_AdoRS.GetCollect( _T("Status") , pSeeDataRet->lStatus); m_AdoRS.GetCollect( _T("HTType") , pSeeDataRet->lHTType); m_AdoRS.GetCollect( _T("HT") , pSeeDataRet->szHTNum); m_AdoRS.GetCollect( _T("AgentID") , pSeeDataRet->lAgentID); m_AdoRS.GetCollect( _T("CorpID") , pSeeDataRet->lCorpID); m_AdoRS.GetCollect( _T("UseTime") , t);t.GetAsSystemTime( pSeeDataRet->tUse); m_AdoRS.GetCollect( _T("BZ") , pSeeDataRet->szBZ); m_AdoRS.GetCollect( _T("CreateUser"), pSeeDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CorpName") , pSeeDataRet->szCorpName); m_AdoRS.GetCollect( _T("Name") , pSeeDataRet->szAgentName); m_AdoRS.MoveNext(); pSeeDataRet ++; } } SendFrame( SMSFUNC_HT_SEE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_HT_Out(REQ_HT_Out *pOut) { try { ANS_HT_OutData * pAgentData = (ANS_HT_OutData *)((BYTE*)pOut+sizeof(REQ_HT_Out)); long lSize = sizeof(ANS_HT_Out) + sizeof(ANS_HT_OutData)*pOut->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_HT_Out * pAgentRet = (ANS_HT_Out * )pData; ANS_HT_OutData * pAgentDataRet= (ANS_HT_OutData*)(pData+sizeof(ANS_HT_Out)); pAgentRet->lCount = pOut->lCount; _tcscpy(pAgentRet->szBZ , pOut->szBZ); CString strSelect; CString strBZ = pOut->szBZ; strBZ.Replace( _T("'") , _T("''")); for ( int i=0 ; i< pOut->lCount ; i++ ) { strSelect.Format( _T("select * from HT where HTID=%d") ,pAgentData->lHTID ); if ( m_AdoRS.Open( strSelect) && !m_AdoRS.IsEOF () ) { CString strHTNum; long lHTType=0; long lStatus=0; m_AdoRS.GetCollect( _T("Status") , lStatus ); m_AdoRS.GetCollect( _T("HTType") , lHTType ); m_AdoRS.GetCollect( _T("HT") , strHTNum ); if ( lStatus !=2 ) { strSelect.Format( _T("Update HT set Status=2,BZ='%s' where HTID=%d and Status!=2") ,strBZ,pAgentData->lHTID ); m_AdoRS.Open( strSelect); //将已分配到企业的合同号删除 if ( lHTType ==0 ) strSelect.Format( _T("Update corp set MQ_HTNum='' where MQ_HTNum='%s'") ,strHTNum ); else strSelect.Format( _T("Update corp set MQ_XYNum='' where MQ_XYNum='%s'") ,strHTNum ); m_AdoRS.Open( strSelect); m_AdoRS.Close(); } } pAgentDataRet->lItem = pAgentData->lItem; pAgentData ++; pAgentDataRet++; } SendFrame( SMSFUNC_HT_OUT , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_HT_Del(REQ_HT_Del *pDel) { try { ANS_HT_DelData * pAgentData = (ANS_HT_DelData *)((BYTE*)pDel+sizeof(REQ_HT_Del)); long lSize = sizeof(ANS_HT_Del) + sizeof(ANS_HT_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_HT_Del * pAgentRet = (ANS_HT_Del * )pData; ANS_HT_DelData * pAgentDataRet= (ANS_HT_DelData*)(pData+sizeof(ANS_HT_Del)); pAgentRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from ht where HTID=%d and Status=0") ,pAgentData->lHTID ); m_AdoRS.Open( strSelect); m_AdoRS.Close(); pAgentDataRet->lItem = pAgentData->lItem; pAgentData ++; pAgentDataRet++; } SendFrame( SMSFUNC_HT_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Agent_CJ(REQ_Agent_CJ * pCJ ) { try { CString strSelect,strTemp; CString strAgentID = _T(" 1=1 "); CString strType= _T(" 1=1 "); if ( pCJ->lAgentID >0 ) { strAgentID.Format( _T(" corp_pay_agentcj.AgentID=%d ") , pCJ->lAgentID ); } if ( pCJ->lType >0 ) { strType.Format( _T(" CJType=%d ") , pCJ->lType-1 ); } strSelect.Format(_T("select corp_pay_agentcj.*,agent.Name,agent.AdcTCType from corp_pay_agentcj LEFT OUTER JOIN agent ON corp_pay_agentcj.agentid = agent.agentid where CJTime>='%04d%02d%02d' and CJTime<='%04d%02d%02d 23:59:59' and %s and %s order by CJTime" ),pCJ->tBegin.wYear,pCJ->tBegin.wMonth,pCJ->tBegin.wDay,pCJ->tEnd.wYear,pCJ->tEnd.wMonth,pCJ->tEnd.wDay,strAgentID,strType ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Agent_CJ) + sizeof(ANS_Agent_CJData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Agent_CJ * pSeeRet = (ANS_Agent_CJ *)pData; ANS_Agent_CJData * pSeeDataRet = (ANS_Agent_CJData *)(pData+sizeof(ANS_Agent_CJ)); pSeeRet->lAgentID = pCJ->lAgentID; //数据记录 pSeeRet->lType = pCJ->lType; //数据记录 pSeeRet->tBegin = pCJ->tBegin; //数据记录 pSeeRet->tEnd = pCJ->tEnd; //数据记录 pSeeRet->lCount = lCount; //数据记录 COleDateTime t; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Corp_Pay_AgentCJID") , pSeeDataRet->lCJID); m_AdoRS.GetCollect( _T("AgentID") , pSeeDataRet->lAgentID); m_AdoRS.GetCollect( _T("AdcTCType") , pSeeDataRet->lAdcTCType); m_AdoRS.GetCollect( _T("Name") , pSeeDataRet->szAgentName); m_AdoRS.GetCollect( _T("CJTime") , t) ; t.GetAsSystemTime( pSeeDataRet->tCJTime); m_AdoRS.GetCollect( _T("CJTotal") , pSeeDataRet->fCJTotal); m_AdoRS.GetCollect( _T("CJCount") , pSeeDataRet->lCJCount); m_AdoRS.GetCollect( _T("CJFFTime") , t);t.GetAsSystemTime( pSeeDataRet->lCJFFTime); m_AdoRS.GetCollect( _T("CJType") , pSeeDataRet->lCJType); m_AdoRS.GetCollect( _T("CJFFUser"), pSeeDataRet->szCJFFUser); m_AdoRS.GetCollect( _T("BZ") , pSeeDataRet->szBZ); m_AdoRS.MoveNext(); pSeeDataRet ++; } } SendFrame( SMSFUNC_AGENT_CJ , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Agent_TC( REQ_Agent_TC * pTC ) { try { CString strSelect,strTemp; strSelect.Format(_T("select corp_pay_agenttc.* , corp.CorpName , corp_pay.PayTime from corp_pay_agenttc LEFT OUTER JOIN corp ON corp_pay_agenttc.corpid = corp.corpid LEFT OUTER JOIN corp_pay ON corp_pay_agenttc.payid = corp_pay.payid where corp_pay_agenttc.AgentID=%d and corp_pay_agenttc.ProcessTime='%04d%02d%02d %02d:%02d:%02d' " ),pTC->lAgentID,pTC->tProcessTime.wYear,pTC->tProcessTime.wMonth,pTC->tProcessTime.wDay,pTC->tProcessTime.wHour,pTC->tProcessTime.wMinute,pTC->tProcessTime.wSecond ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Agent_TC) + sizeof(ANS_Agent_TCData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Agent_TC * pSeeRet = (ANS_Agent_TC *)pData; ANS_Agent_TCData * pSeeDataRet = (ANS_Agent_TCData *)(pData+sizeof(ANS_Agent_TC)); pSeeRet->lAgentID = pTC->lAgentID; //数据记录 pSeeRet->tProcessTime = pTC->tProcessTime; //数据记录 pSeeRet->lCount = lCount; //数据记录 COleDateTime t; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Corp_Pay_AgentTCID") , pSeeDataRet->lTCID); m_AdoRS.GetCollect( _T("PayID") , pSeeDataRet->lPayID); m_AdoRS.GetCollect( _T("AgentID") , pSeeDataRet->lAgentID); m_AdoRS.GetCollect( _T("CorpID") , pSeeDataRet->lCorpID); m_AdoRS.GetCollect( _T("CorpName") , pSeeDataRet->szCorpName); m_AdoRS.GetCollect( _T("Price") , pSeeDataRet->fPrice); m_AdoRS.GetCollect( _T("AdcTC0") , pSeeDataRet->fAdcTC0); m_AdoRS.GetCollect( _T("AdcTC1") , pSeeDataRet->fAdcTC1); m_AdoRS.GetCollect( _T("AdcTC2") , pSeeDataRet->fAdcTC2); m_AdoRS.GetCollect( _T("AdcTC3") , pSeeDataRet->fAdcTC3); m_AdoRS.GetCollect( _T("AdcTC4") , pSeeDataRet->fAdcTC4); m_AdoRS.GetCollect( _T("AdcTC5") , pSeeDataRet->fAdcTC5); m_AdoRS.GetCollect( _T("AdcTC6") , pSeeDataRet->fAdcTC6); m_AdoRS.GetCollect( _T("AdcTC7") , pSeeDataRet->fAdcTC7); m_AdoRS.GetCollect( _T("ProcessTime") , t) ; t.GetAsSystemTime( pSeeDataRet->tProcessTime); m_AdoRS.GetCollect( _T("PayTime") , t) ; t.GetAsSystemTime( pSeeDataRet->tCJTime); m_AdoRS.MoveNext(); pSeeDataRet ++; } } SendFrame( SMSFUNC_AGENT_TC , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Agent_CJFF( REQ_Agent_CJFF * pCJFF ) { try { ANS_Agent_CJFFData * pData = (ANS_Agent_CJFFData *)((BYTE*)pCJFF+sizeof(REQ_Agent_CJFF)); long lSize = sizeof(ANS_Agent_CJFF) + sizeof(ANS_Agent_CJFFData)*pCJFF->lCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_Agent_CJFF * pCJFFRet = (ANS_Agent_CJFF*)pSendData; ANS_Agent_CJFFData * pCJFFData = (ANS_Agent_CJFFData*)(pSendData+sizeof(ANS_Agent_CJFF)); pCJFFRet->lCount = pCJFF->lCount; pCJFFRet->tTime = pCJFF->tTime; _tcscpy(pCJFFRet->szBZ , pCJFF->szBZ ); memcpy(pCJFFData , pData , sizeof(ANS_Agent_CJFFData)*pCJFF->lCount ); CString str; CString strBZ = pCJFF->szBZ; strBZ.Replace( _T("'") , _T("''") ); for ( int i=0 ; ilCount ; i++ ) { str.Format( _T("update Corp_Pay_AgentCJ set CJType=1 , CJFFTime='%04d%02d%02d %02d:%02d:%02d' , CJFFUser='%s' , BZ='%s' where Corp_Pay_AgentCJID=%d") , pCJFF->tTime.wYear,pCJFF->tTime.wMonth,pCJFF->tTime.wDay,pCJFF->tTime.wHour,pCJFF->tTime.wMinute,pCJFF->tTime.wSecond,m_szLoginName,strBZ , pData->lCJID); m_AdoRS.Open(str); pData++; } SendFrame( SMSFUNC_AGENT_CJFF , (BYTE*)pSendData , lSize ); //发送返回 } catch(...) { return 0; } return 0; } long CProcessSocket::Process_ADCHTHS(REQ_ADCHTHS * pHT ) { try { //先查找所有合同时间的记录 CString str; str.Format( _T("select corp.Status,corpid,corpname,HT_Recv,corp.ywyid,regtime,mq_EffectDate,corp.agentid,agent.name as agentname ,ywy.name as ywyname from corp LEFT OUTER JOIN agent ON corp.agentid = agent.agentid LEFT OUTER JOIN ywy ON corp.ywyid = ywy.ywyid where ht_recv>='%04d%02d%02d' and ht_recv<='%04d%02d%02d 23:59:59' ") , pHT->tBegin.wYear,pHT->tBegin.wMonth,pHT->tBegin.wDay,pHT->tEnd.wYear,pHT->tEnd.wMonth,pHT->tEnd.wDay ); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if ( lCount<0 ) lCount=0; long lSize = sizeof(ANS_ADCHTHS) + sizeof(ANS_ADCHTHSData)*lCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_ADCHTHS * pHTRet = (ANS_ADCHTHS*)pSendData; ANS_ADCHTHSData * pHTData = (ANS_ADCHTHSData*)(pSendData+sizeof(ANS_ADCHTHS)); pHTRet->lCount = lCount; long lTemp=0; COleDateTime t; if ( lCount>0 ) m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() && lTempszStatus ); m_AdoRS.GetCollect(_T("CorpID") , pHTData->lCorpID ); m_AdoRS.GetCollect(_T("AgentID") , pHTData->lAgentID ); m_AdoRS.GetCollect(_T("YWYID") , pHTData->lYWYID ); m_AdoRS.GetCollect(_T("CorpName") , pHTData->szCorpName ); m_AdoRS.GetCollect(_T("AgentName") , pHTData->szAgentName ); m_AdoRS.GetCollect(_T("YWYName") , pHTData->szYWYName ); m_AdoRS.GetCollect(_T("HT_Recv") , t );t.GetAsSystemTime(pHTData->tHSTime); m_AdoRS.GetCollect(_T("regtime") , t );t.GetAsSystemTime(pHTData->tRegTime); m_AdoRS.GetCollect(_T("mq_EffectDate") , t );t.GetAsSystemTime(pHTData->tKTTime); if (pHTData->lAgentID>0 ) { str.Format( _T("select * from ywy where ywyid in (select ywyid from agent where agentid=%d)") , pHTData->lAgentID ); if ( m_AdoRS2.Open(str) && !m_AdoRS2.IsEOF() ) { m_AdoRS2.GetCollect(_T("Name") , pHTData->szYWYName ); } } m_AdoRS.MoveNext(); lTemp++; pHTData ++; } SendFrame( SMSFUNC_ADCHTHS , (BYTE*)pSendData , lSize ); //发送返回 } catch(...) { return 0; } return 0; } long CProcessSocket::Process_YWMsg( REQ_YWMsg * pYWMsg ) { try { CString str; long lSize = 0; BYTE * pSendData =NULL; if ( pYWMsg->lType ==0 ) //查询汇总表 { if ( pYWMsg->lYWYID>0 ) str.Format( _T("select * from YWYTJ where YWYID=%d and TJTime>='%04d%02d%02d' and TJTime<='%04d%02d%02d 23:59:59' order by TJTime desc") , pYWMsg->lYWYID , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,1,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay ); else str.Format( _T("select * from YWYTJ where TJTime>='%04d%02d%02d' and TJTime<='%04d%02d%02d 23:59:59' order by TJTime desc") , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,1,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay ); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if ( lCount<0 ) lCount=0; long lSize = sizeof(ANS_YWMsg) + sizeof(ANS_YWMsgData)*lCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_YWMsg * pHTRet = (ANS_YWMsg*)pSendData; ANS_YWMsgData * pHTData = (ANS_YWMsgData*)(pSendData+sizeof(ANS_YWMsg)); pHTRet->lCount = lCount; pHTRet->lType = pYWMsg->lType; long lTemp=0; COleDateTime t; if ( lCount>0 ) m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() && lTemplYWYID ); m_AdoRS.GetCollect(_T("UserCount") , pHTData->lUserCount ); m_AdoRS.GetCollect(_T("SMSCount") , pHTData->lSmsCount ); m_AdoRS.GetCollect(_T("HFCount") , pHTData->lHFCount ); m_AdoRS.GetCollect(_T("HFCount") , pHTData->lHFCount ); m_AdoRS.GetCollect(_T("UserCount_All") , pHTData->lUserCount_All ); m_AdoRS.GetCollect(_T("UserCount_Add") , pHTData->lUserCount_Add ); m_AdoRS.GetCollect(_T("UserCount_LS") , pHTData->lUserCount_LS ); m_AdoRS.GetCollect(_T("UserCount_LSFX") , pHTData->lUserCount_LSFX ); m_AdoRS.GetCollect(_T("TJTime") , t );t.GetAsSystemTime(pHTData->tTJTime); m_AdoRS.MoveNext(); lTemp++; pHTData ++; } SendFrame( SMSFUNC_YWMSG , (BYTE*)pSendData , lSize ); //发送返回 } if ( pYWMsg->lType ==1 ) //查询回访问明细 { if ( m_ucUserType == LOGINTYPE_MANAGER ) str.Format( _T("select corp_bz.*,corp.corpname from corp_bz LEFT OUTER JOIN corp ON corp.corpid = corp_bz.corpid where (BZType=1 or BZType=2) and NRType=1 and corp_bz.CreateTime>='%04d%02d%02d' and corp_bz.CreateTime<='%04d%02d%02d 23:59:59' and corp_bz.UserType=0 order by CreateTime desc") , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,pYWMsg->tBegin.wDay,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay); else str = _T("select * from corp_bz where 1!=1"); if ( pYWMsg->lYWYID>0 ) //str.Format( _T("select corp_bz.*,corp.corpname from corp_bz LEFT OUTER JOIN corp ON corp.corpid = corp_bz.corpid where BZType=1 and NRType=1 and corp_bz.CreateTime>='%04d%02d%02d' and corp_bz.CreateTime<='%04d%02d%02d 23:59:59' and corp_bz.UserType=0 and corp_bz.BZType=1 and corp_bz.corpid in (select corpid from corp where ywyid=%d) order by CreateTime desc") , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,pYWMsg->tBegin.wDay,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay,pYWMsg->lYWYID ); str.Format( _T("select corp_bz.*,corp.corpname from corp_bz LEFT OUTER JOIN corp ON corp.corpid = corp_bz.corpid where BZType=1 and NRType=1 and corp_bz.CreateTime>='%04d%02d%02d' and corp_bz.CreateTime<='%04d%02d%02d 23:59:59' and corp_bz.UserType=0 and CreateID=%d order by CreateTime desc") , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,pYWMsg->tBegin.wDay,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay,pYWMsg->lYWYID ); if ( pYWMsg->lKFID>0 ) str.Format( _T("select corp_bz.*,corp.corpname from corp_bz LEFT OUTER JOIN corp ON corp.corpid = corp_bz.corpid where BZType=2 and NRType=1 and corp_bz.CreateTime>='%04d%02d%02d' and corp_bz.CreateTime<='%04d%02d%02d 23:59:59' and corp_bz.UserType=0 and CreateID=%d order by CreateTime desc") , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,pYWMsg->tBegin.wDay,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay,pYWMsg->lKFID ); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if ( lCount<0 ) lCount=0; long lSize = sizeof(ANS_YWMsg) + sizeof(ANS_YWMsgData2)*lCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_YWMsg * pHTRet = (ANS_YWMsg*)pSendData; ANS_YWMsgData2 * pHTData = (ANS_YWMsgData2*)(pSendData+sizeof(ANS_YWMsg)); pHTRet->lCount = lCount; pHTRet->lType = pYWMsg->lType; long lTemp=0; COleDateTime t; if ( lCount>0 ) m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() && lTemplCorpID ); m_AdoRS.GetCollect(_T("CorpName") , pHTData->szCorpName ); m_AdoRS.GetCollect(_T("CreateUser") , pHTData->szCreateuser ); m_AdoRS.GetCollect(_T("UserType") , pHTData->lUserType ); m_AdoRS.GetCollect(_T("NRType") , pHTData->lNRType ); m_AdoRS.GetCollect(_T("BZ") , pHTData->szMsg ); m_AdoRS.GetCollect(_T("CreateTime") , t );t.GetAsSystemTime(pHTData->tCreateTime); //以下为回访相关 m_AdoRS.GetCollect(_T("LXRName") , pHTData->szLXRName ); m_AdoRS.GetCollect(_T("SendSms") , pHTData->bSendSms ); m_AdoRS.GetCollect(_T("SmsRetType") , pHTData->lSmsRetType ); m_AdoRS.MoveNext(); lTemp++; pHTData ++; } SendFrame( SMSFUNC_YWMSG , (BYTE*)pSendData , lSize ); //发送返回 } if ( pYWMsg->lType ==2 ) //查询流失客户明细 { if ( pYWMsg->lYWYID>0 ) str.Format( _T("select YWYTJ_LS.*,corp.PriceOne,corp.smsTD,corp.Total,corp.smsused,corp.SmsSendAll from YWYTJ_LS LEFT OUTER JOIN corp ON corp.corpid = YWYTJ_LS.corpid where ProcessTime>='%04d%02d%02d' and ProcessTime<='%04d%02d%02d 23:59:59' and YWYTJ_LS.ywyid=%d order by ProcessTime desc") , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,pYWMsg->tBegin.wDay,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay,pYWMsg->lYWYID ); else str.Format( _T("select YWYTJ_LS.*,corp.PriceOne,corp.smsTD,corp.Total,corp.smsused,corp.SmsSendAll from YWYTJ_LS LEFT OUTER JOIN corp ON corp.corpid = YWYTJ_LS.corpid where ProcessTime>='%04d%02d%02d' and ProcessTime<='%04d%02d%02d 23:59:59' order by ProcessTime desc") , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,pYWMsg->tBegin.wDay,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay ); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if ( lCount<0 ) lCount=0; long lSize = sizeof(ANS_YWMsg) + sizeof(ANS_YWMsgData3)*lCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_YWMsg * pHTRet = (ANS_YWMsg*)pSendData; ANS_YWMsgData3 * pHTData = (ANS_YWMsgData3*)(pSendData+sizeof(ANS_YWMsg)); pHTRet->lCount = lCount; pHTRet->lType = pYWMsg->lType; long lTemp=0; COleDateTime t; if ( lCount>0 ) m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() && lTemplYWYID ); m_AdoRS.GetCollect(_T("CorpID") , pHTData->lCorpID ); m_AdoRS.GetCollect(_T("CorpName") , pHTData->szCorpName ); m_AdoRS.GetCollect(_T("LastLogin") , t );t.GetAsSystemTime(pHTData->tLastLogin); m_AdoRS.GetCollect(_T("ProcessTime") , t );t.GetAsSystemTime(pHTData->tProcessTime); m_AdoRS.GetCollect(_T("PriceOne") , pHTData->fPriceOne ); m_AdoRS.GetCollect(_T("SmsTD") , pHTData->szSmsTD ); m_AdoRS.GetCollect(_T("Total") , pHTData->fTotal ); m_AdoRS.GetCollect(_T("SmsUsed") , pHTData->lSmsUsed ); m_AdoRS.GetCollect(_T("SmsSendAll") , pHTData->lSmsSendAll ); m_AdoRS.MoveNext(); lTemp++; pHTData ++; } SendFrame( SMSFUNC_YWMSG , (BYTE*)pSendData , lSize ); //发送返回 } if ( pYWMsg->lType ==3 ) //查询回访汇总表 { if ( m_ucUserType == LOGINTYPE_MANAGER ) str.Format( _T("select CreateUser,count(*) as abc from corp_bz where CreateTime>='%04d%02d%02d' and CreateTime<='%04d%02d%02d 23:59:59' and UserType=0 and (BZType=1 or BZType=2) and NRType=1 group by CreateUser order by count(*) desc") , pYWMsg->tBegin.wYear,pYWMsg->tBegin.wMonth,pYWMsg->tBegin.wDay,pYWMsg->tEnd.wYear,pYWMsg->tEnd.wMonth,pYWMsg->tEnd.wDay); else str = _T("select * from corp_bz where 1!=1"); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if ( lCount<0 ) lCount=0; long lSize = sizeof(ANS_YWMsg) + sizeof(ANS_YWMsgData4)*lCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_YWMsg * pHTRet = (ANS_YWMsg*)pSendData; ANS_YWMsgData4 * pHTData = (ANS_YWMsgData4*)(pSendData+sizeof(ANS_YWMsg)); pHTRet->lCount = lCount; pHTRet->lType = pYWMsg->lType; long lTemp=0; COleDateTime t; if ( lCount>0 ) m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() && lTempszCreateuser ); m_AdoRS.GetCollect(_T("abc") , pHTData->lHFCount ); m_AdoRS.MoveNext(); lTemp++; pHTData ++; } SendFrame( SMSFUNC_YWMSG , (BYTE*)pSendData , lSize ); //发送返回 } } catch(...) { return 0; } return 0; } BOOL CProcessSocket::Process_GetKF(REQ_GetKF *pKF) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_SEE) ) //没有取KF { ANS_GetKF * pKFRet = new ANS_GetKF; //权限不够,什么也不返回 pKFRet->lCount = 0; SendFrame( SMSFUNC_GETKF , (BYTE*)pKFRet , sizeof(REQ_GetKF) ); //发送返回 return 1; } CString strSelect; if ( pKF->lKFID>0 ) strSelect.Format( _T("select * from KF where KFID=%d"),pKF->lKFID); else strSelect= _T("select * from KF order by KFID"); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GetKF) + sizeof(ANS_GetKFData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GetKF * pKFRet = (ANS_GetKF *)pData; ANS_GetKFData * pKFDataRet = (ANS_GetKFData *)(pData+sizeof(ANS_GetKF)); pKFRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("KFID") , pKFDataRet->lKFID); m_AdoRS.GetCollect( _T("Name") , pKFDataRet->szName); m_AdoRS.GetCollect( _T("NickName") , pKFDataRet->szNickName); m_AdoRS.GetCollect( _T("Sex") , pKFDataRet->szSex); m_AdoRS.GetCollect( _T("Birthday") , t); t.GetAsSystemTime(pKFDataRet->tBirthday); m_AdoRS.GetCollect( _T("Branch") , pKFDataRet->szBranch); m_AdoRS.GetCollect( _T("Job") , pKFDataRet->szJob); m_AdoRS.GetCollect( _T("Tel") , pKFDataRet->szTel); m_AdoRS.GetCollect( _T("Fax") , pKFDataRet->szFax); m_AdoRS.GetCollect( _T("Mobile") , pKFDataRet->szMobile); m_AdoRS.GetCollect( _T("Email") , pKFDataRet->szEmail); m_AdoRS.GetCollect( _T("LoginName") , pKFDataRet->szLoginName); m_AdoRS.GetCollect( _T("Passwd") , pKFDataRet->szPasswd); m_AdoRS.GetCollect( _T("NoLTD") , pKFDataRet->bNoLTD); m_AdoRS.GetCollect( _T("KFID") , pKFDataRet->lKFID); m_AdoRS.GetCollect( _T("BZ") , pKFDataRet->szBZ); m_AdoRS.MoveNext(); pKFDataRet ++; } } SendFrame( SMSFUNC_GETKF , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_KF_Modify(REQ_KF_Modify *pModify) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_MODIFY) ) //没有权限修改资料 { ANS_KF_Modify * pKFRet = new ANS_KF_Modify; //权限不够,什么也不返回 pKFRet->lItem = pModify->lItem; pKFRet->lCount = 0; SendFrame( SMSFUNC_KF_MODIFY , (BYTE*)pKFRet , sizeof(ANS_KF_Modify) ); //发送返回 return 1; } ANS_GetKFData * pData = (ANS_GetKFData *)((BYTE*)pModify+sizeof(REQ_KF_Modify)); CString strSelect; CString strBirthday; CString strKFID; CString strNoLTD; COleDateTime tTemp(pData->tBirthday); if ( tTemp.GetStatus() == COleDateTime::valid ) //if ( pData->tBirthday.wYear<1990 && pData->tBirthday.wYear>2020 ) strBirthday.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tBirthday.wYear,pData->tBirthday.wMonth,pData->tBirthday.wDay,pData->tBirthday.wHour,pData->tBirthday.wMinute,pData->tBirthday.wSecond); else strBirthday = _T("NULL"); strNoLTD.Format( _T("%d") , pData->bNoLTD ); strKFID.Format( _T("%d") , pData->lKFID ); if ( m_ulPurview & PURVIEW_MANAGER_MODIFYPURVIEW ) //有修改权限的权限 { strSelect = CString("update KF set ") + CString("Name='") + CString(pData->szName) + CString("',") + CString("NickName='") + CString(pData->szNickName) + CString("',") + CString("Sex='") + CString(pData->szSex) + CString("',") + CString("Birthday=") + strBirthday + CString(",") + CString("Branch='") + CString(pData->szBranch) + CString("',") + CString("Job='") + CString(pData->szJob) + CString("',") + CString("Tel='") + CString(pData->szTel) + CString("',") + CString("Fax='") + CString(pData->szFax) + CString("',") + CString("Mobile='") + CString(pData->szMobile) + CString("',") + CString("Email='") + CString(pData->szEmail) + CString("',") + CString("LoginName='") + CString(pData->szLoginName) + CString("',") + CString("Passwd='") + CString(pData->szPasswd) + CString("',") + CString("NoLTD=") + strNoLTD + CString(" ,") + CString("BZ='") + CString(pData->szBZ) + CString("' ") + CString("where KFID=") + strKFID ; } else { strSelect = CString("update KF set ") + CString("Name='") + CString(pData->szName) + CString("',") + CString("NickName='") + CString(pData->szNickName) + CString("',") + CString("Sex='") + CString(pData->szSex) + CString("',") + CString("Birthday=") + strBirthday + CString(",") + CString("Branch='") + CString(pData->szBranch) + CString("',") + CString("Job='") + CString(pData->szJob) + CString("',") + CString("Tel='") + CString(pData->szTel) + CString("',") + CString("Fax='") + CString(pData->szFax) + CString("',") + CString("Mobile='") + CString(pData->szMobile) + CString("',") + CString("Email='") + CString(pData->szEmail) + CString("',") + CString("LoginName='") + CString(pData->szLoginName) + CString("',") + CString("Passwd='") + CString(pData->szPasswd) + CString("',") + CString("NoLTD=") + strNoLTD + CString(" ,") + CString("BZ='") + CString(pData->szBZ) + CString("' ") + CString("where KFID=") + strKFID ; } BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_KF_Modify) + sizeof(ANS_GetKFData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_KF_Modify * pModifyRet = (ANS_KF_Modify *)pDataRet; ANS_GetKFData * pModifyDataRet = (ANS_GetKFData *)(pDataRet+sizeof(ANS_KF_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pData; SendFrame( SMSFUNC_KF_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_KF_Modify * pKFRet = new ANS_KF_Modify; //权限不够,什么也不返回 pKFRet->lItem = pModify->lItem; pKFRet->lCount = 0; SendFrame( SMSFUNC_KF_MODIFY , (BYTE*)pKFRet , sizeof(ANS_KF_Modify) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_KF_Add(REQ_KF_Add *pAdd) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_ADD) ) //没有权限修改资料 { ANS_KF_Add * pAddRet = new ANS_KF_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_KF_ADD , (BYTE*)pAddRet , sizeof(ANS_KF_Add) ); //发送返回 return 1; } ANS_GetKFData * pData = (ANS_GetKFData *)((BYTE*)pAdd+sizeof(REQ_KF_Add)); CString strSelect; CString strBirthday; CString strNoLTD; COleDateTime tTemp(pData->tBirthday); if ( tTemp.GetStatus() == COleDateTime::valid ) //if ( pData->tBirthday.wYear<1990 && pData->tBirthday.wYear>2020 ) strBirthday.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tBirthday.wYear,pData->tBirthday.wMonth,pData->tBirthday.wDay,pData->tBirthday.wHour,pData->tBirthday.wMinute,pData->tBirthday.wSecond); else strBirthday = _T("NULL"); strNoLTD.Format( _T("%d") , pData->bNoLTD ); strSelect = CString("insert into KF (Name,NickName,Sex,Birthday,Branch,Job,Tel,Fax,Mobile,Email,LoginName,Passwd,NoLTD,BZ) values(") + CString(" '") + CString(pData->szName) + CString("',") + CString(" '") + CString(pData->szNickName) + CString("',") + CString(" '") + CString(pData->szSex) + CString("',") + strBirthday + CString(",") + CString(" '") + CString(pData->szBranch) + CString("',") + CString(" '") + CString(pData->szJob) + CString("',") + CString(" '") + CString(pData->szTel) + CString("',") + CString(" '") + CString(pData->szFax) + CString("',") + CString(" '") + CString(pData->szMobile) + CString("',") + CString(" '") + CString(pData->szEmail) + CString("',") + CString(" '") + CString(pData->szLoginName) + CString("',") + CString(" '") + CString(pData->szPasswd) + CString("',") + CString(" ") + strNoLTD + CString(" ,") + CString(" '") + CString(pData->szBZ) + CString("' )"); BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_KF_Add) + sizeof(ANS_GetKFData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_KF_Add * pAddRet = (ANS_KF_Add *)pDataRet; ANS_GetKFData * pAddDataRet = (ANS_GetKFData *)(pDataRet+sizeof(ANS_KF_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pData; //以下为取得新添加记录的ID号 strSelect.Format( _T("select * from KF where Name='%s'") , pAddDataRet->szName ); b = m_AdoRS.Open( strSelect ); if (b) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("KFID") , pAddDataRet->lKFID ); } SendFrame( SMSFUNC_KF_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_KF_Add * pAddRet = new ANS_KF_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_KF_ADD , (BYTE*)pAddRet , sizeof(ANS_KF_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_KF_Del(REQ_KF_Del *pDel) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_DEL) ) //没有权限修改资料 { ANS_KF_Del * pDelRet = new ANS_KF_Del; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_KF_DEL , (BYTE*)pDelRet , sizeof(ANS_KF_Del) ); //发送返回 return 1; } ANS_KF_DelData * pDelData = (ANS_KF_DelData *)((BYTE*)pDel+sizeof(REQ_KF_Del)); long lSize = sizeof(ANS_KF_Del) + sizeof(ANS_KF_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_KF_Del * pDelRet = (ANS_KF_Del * )pData; ANS_KF_DelData * pDelDataRet= (ANS_KF_DelData*)(pData+sizeof(ANS_KF_Del)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from KF where KFID=%d") , pDelData->lUserID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lUserID = pDelData->lUserID; else pDelDataRet->lUserID = 0; //将有此业务员的企业置为没有业务员 strSelect.Format( _T("update corp set KFID=0 where KFID=%d") , pDelData->lUserID ); m_AdoRS.Open(strSelect); pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_KF_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_KFName(REQ_KF_Name *pKF) { try { /* if ( !(m_ulPurview & PURVIEW_FILT) ) //没有权限修改资料 { ANS_v_Name * pvRet = new ANS_KF_Name; //权限不够,什么也不返回 pvRet->lCount = 0; SendFrame( SMSFUNC_KF_NAME , (BYTE*)pKFRet , sizeof(ANS_KF_Name) ); //发送返回 return 1; } */ CString strSelect; strSelect= _T("select * from KF order by KFID"); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_KF_Name) + sizeof(ANS_KF_NameData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_KF_Name * pNameRet = (ANS_KF_Name *)pData; ANS_KF_NameData * pNameDataRet = (ANS_KF_NameData *)(pData+sizeof(ANS_KF_Name)); pNameRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("KFID") , pNameDataRet->lKFID); m_AdoRS.GetCollect( _T("Name") , pNameDataRet->szKFName); m_AdoRS.MoveNext(); pNameDataRet ++; } } SendFrame( SMSFUNC_KF_NAME , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_CMCC_CJ(REQ_CMCC_CJ * pCJ ) { try { CString strSelect,strTemp; CString strType= _T(" 1=1 "); if ( pCJ->lType >0 ) { strType.Format( _T(" CJType=%d ") , pCJ->lType-1 ); } strSelect.Format(_T("select * from corp_pay_Cmcccj where CJTime>='%04d%02d%02d' and CJTime<='%04d%02d%02d 23:59:59' and %s order by CJTime" ),pCJ->tBegin.wYear,pCJ->tBegin.wMonth,pCJ->tBegin.wDay,pCJ->tEnd.wYear,pCJ->tEnd.wMonth,pCJ->tEnd.wDay,strType ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_CMCC_CJ) + sizeof(ANS_CMCC_CJData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_CMCC_CJ * pSeeRet = (ANS_CMCC_CJ *)pData; ANS_CMCC_CJData * pSeeDataRet = (ANS_CMCC_CJData *)(pData+sizeof(ANS_CMCC_CJ)); pSeeRet->lType = pCJ->lType; //数据记录 pSeeRet->tBegin = pCJ->tBegin; //数据记录 pSeeRet->tEnd = pCJ->tEnd; //数据记录 pSeeRet->lCount = lCount; //数据记录 COleDateTime t; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Corp_Pay_CmccCJID") , pSeeDataRet->lCJID); m_AdoRS.GetCollect( _T("CJTime") , t) ; t.GetAsSystemTime( pSeeDataRet->tCJTime); m_AdoRS.GetCollect( _T("Total") , pSeeDataRet->fTotal); m_AdoRS.GetCollect( _T("CJTotal") , pSeeDataRet->fCJTotal); m_AdoRS.GetCollect( _T("CJCount") , pSeeDataRet->lCJCount); m_AdoRS.GetCollect( _T("CJFFTime") , t);t.GetAsSystemTime( pSeeDataRet->lCJFFTime); m_AdoRS.GetCollect( _T("CJType") , pSeeDataRet->lCJType); m_AdoRS.GetCollect( _T("PayTotal") , pSeeDataRet->fPayTotal); m_AdoRS.GetCollect( _T("CJFFUser"), pSeeDataRet->szCJFFUser); m_AdoRS.GetCollect( _T("BZ") , pSeeDataRet->szBZ); m_AdoRS.MoveNext(); pSeeDataRet ++; } } SendFrame( SMSFUNC_CMCC_CJ , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_CMCC_TC( REQ_CMCC_TC * pTC ) { try { CString strSelect,strTemp; strSelect.Format(_T("select * from corp_pay_Cmcctc where TJTime='%04d%02d%02d %02d:%02d:%02d' order by corpid" ),pTC->tCJTime.wYear,pTC->tCJTime.wMonth,pTC->tCJTime.wDay,pTC->tCJTime.wHour,pTC->tCJTime.wMinute,pTC->tCJTime.wSecond ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_CMCC_TC) + sizeof(ANS_CMCC_TCData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_CMCC_TC * pSeeRet = (ANS_CMCC_TC *)pData; ANS_CMCC_TCData * pSeeDataRet = (ANS_CMCC_TCData *)(pData+sizeof(ANS_CMCC_TC)); pSeeRet->tCJTime = pTC->tCJTime; //数据记录 pSeeRet->lCount = lCount; //数据记录 COleDateTime t; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Corp_Pay_CmccTCID") , pSeeDataRet->lTCID); m_AdoRS.GetCollect( _T("CorpID") , pSeeDataRet->lCorpID); m_AdoRS.GetCollect( _T("CorpName") , pSeeDataRet->szCorpName); m_AdoRS.GetCollect( _T("CANum") , pSeeDataRet->szCA); m_AdoRS.GetCollect( _T("Total") , pSeeDataRet->fTotal); m_AdoRS.GetCollect( _T("ProcessTime") , t) ; t.GetAsSystemTime( pSeeDataRet->tProcessTime); m_AdoRS.GetCollect( _T("TJTime") , t) ; t.GetAsSystemTime( pSeeDataRet->tCJTime); m_AdoRS.MoveNext(); pSeeDataRet ++; } } SendFrame( SMSFUNC_CMCC_TC , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_CMCC_CJFF( REQ_CMCC_CJFF * pCJFF ) { try { ANS_CMCC_CJFFData * pData = (ANS_CMCC_CJFFData *)((BYTE*)pCJFF+sizeof(REQ_CMCC_CJFF)); long lSize = sizeof(ANS_CMCC_CJFF) + sizeof(ANS_CMCC_CJFFData)*pCJFF->lCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_CMCC_CJFF * pCJFFRet = (ANS_CMCC_CJFF*)pSendData; ANS_CMCC_CJFFData * pCJFFData = (ANS_CMCC_CJFFData*)(pSendData+sizeof(ANS_CMCC_CJFF)); pCJFFRet->lCount = pCJFF->lCount; pCJFFRet->tTime = pCJFF->tTime; _tcscpy(pCJFFRet->szBZ , pCJFF->szBZ ); memcpy(pCJFFData , pData , sizeof(ANS_CMCC_CJFFData)*pCJFF->lCount ); CString str; CString strBZ = pCJFF->szBZ; strBZ.Replace( _T("'") , _T("''") ); for ( int i=0 ; ilCount ; i++ ) { str.Format( _T("update Corp_Pay_CmccCJ set CJType=1 , CJFFTime='%04d%02d%02d %02d:%02d:%02d' , PayTotal=%.4f , CJFFUser='%s' , BZ='%s' where Corp_Pay_CmccCJID=%d") , pCJFF->tTime.wYear,pCJFF->tTime.wMonth,pCJFF->tTime.wDay,pCJFF->tTime.wHour,pCJFF->tTime.wMinute,pCJFF->tTime.wSecond,pCJFF->fPayTotal,m_szLoginName,strBZ , pData->lCJID); m_AdoRS.Open(str); pData++; } SendFrame( SMSFUNC_CMCC_CJFF , (BYTE*)pSendData , lSize ); //发送返回 } catch(...) { return 0; } return 0; } long CProcessSocket::Process_Corp_TS( REQ_Corp_TS * pTS ) { try { if ( m_ucUserType != LOGINTYPE_KF ) { if ( !(m_ulPurview & PURVIEW_CORP_USER) ) //没有权限查看用户记录 { ANS_Corp_TS * pSeeUser = new ANS_Corp_TS; //权限不够,什么也不返回 pSeeUser->lCount = -1; SendFrame( SMSFUNC_CORP_TS , (BYTE*)pSeeUser , sizeof(ANS_Corp_TS) ); //发送返回 return 1; } } CString strSelect; strSelect.Format(_T("select * from Corp_TS where CorpID=%d order by CreateTime desc") , pTS->lCorpID); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Corp_TS) + sizeof(ANS_Corp_TSData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_TS * pUserRet = (ANS_Corp_TS *)pData; ANS_Corp_TSData * pUserDataRet = (ANS_Corp_TSData *)(pData+sizeof(ANS_Corp_TS)); _tcscpy(pUserRet->szCorpName,pTS->szCorpName); _tcscpy(pUserRet->szSMSNum,pTS->szSMSNum); pUserRet->lSmsUsed=pTS->lSmsUsed; pUserRet->fTotal=pTS->fTotal; pUserRet->lCorpID= pTS->lCorpID; pUserRet->dwSDK = pTS->dwSDK; pUserRet->bAgentModify = pTS->bAgentModify; pUserRet->lUserNumLen = pTS->lUserNumLen; pUserRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("TSID") , pUserDataRet->lTSID); m_AdoRS.GetCollect( _T("CorpID") , pUserDataRet->lCorpID); m_AdoRS.GetCollect( _T("TSType") , pUserDataRet->szTSType); m_AdoRS.GetCollect( _T("TSMsg") , pUserDataRet->szTSMsg); m_AdoRS.GetCollect( _T("TSProcess") , pUserDataRet->szTSProcess); m_AdoRS.GetCollect( _T("OperName") , pUserDataRet->szOperName); m_AdoRS.GetCollect( _T("CreateUser") , pUserDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime") , t); t.GetAsSystemTime(pUserDataRet->tCreateTime); m_AdoRS.GetCollect( _T("TSTime") , t); t.GetAsSystemTime(pUserDataRet->tTSTime); m_AdoRS.MoveNext(); pUserDataRet ++; } } SendFrame( SMSFUNC_CORP_TS , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_TSModify(REQ_Corp_TSModify * pModify ) { try { if ( m_ucUserType != LOGINTYPE_KF ) { if ( !(m_ulPurview & PURVIEW_CORP_USER) ) //没有权限修改用户记录 { ANS_Corp_TSModify * pModifyRet = new ANS_Corp_TSModify; //权限不够,什么也不返回 pModifyRet->lCount = -1; SendFrame( SMSFUNC_CORP_TSMODIFY , (BYTE*)pModifyRet , sizeof(ANS_Corp_TSModify) ); //发送返回 return 1; } } CString strSelect; if ( pModify->lCount <0 ) pModify->lCount = 0; //生成返回数据 long lSize = sizeof(ANS_Corp_TSModify) + sizeof(ANS_Corp_TSData)*pModify->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_TSModify * pTSRet = (ANS_Corp_TSModify *)pData; ANS_Corp_TSData * pTSDataRet = (ANS_Corp_TSData *)(pData+sizeof(ANS_Corp_TSModify)); ANS_Corp_TSData * pTSDataRecv= (ANS_Corp_TSData *)((BYTE*)pModify+sizeof(REQ_Corp_TSModify)); //送过来的数据 pTSRet->lCount = pModify->lCount; CString strTSID; CString strCorpID; CString TSType; CString TSMsg; CString TSTime; CString TSProcess; CString OperName; strCorpID.Format( _T("%d") , pModify->lCorpID ); for ( int i = 0 ; i< pModify->lCount ; i++ ) { *pTSDataRet = *pTSDataRecv; //返回值与请求值一样 strTSID.Format( _T("%d") , pTSDataRet->lTSID ); TSType = pTSDataRet->szTSType ;TSType.Replace( _T("'") , _T("''") ); TSMsg = pTSDataRet->szTSMsg ;TSMsg.Replace( _T("'") , _T("''") ); TSProcess = pTSDataRet->szTSProcess;TSProcess.Replace( _T("'") , _T("''") ); OperName = pTSDataRet->szOperName ;OperName.Replace( _T("'") , _T("''") ); COleDateTime tTemp(pTSDataRet->tTSTime); if ( tTemp.GetStatus() == COleDateTime::valid ) //if ( pUserDataRet->tBirthday.wYear<1990 && pUserDataRet->tBirthday.wYear>2020 ) TSTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pTSDataRet->tTSTime.wYear,pTSDataRet->tTSTime.wMonth,pTSDataRet->tTSTime.wDay,pTSDataRet->tTSTime.wHour,pTSDataRet->tTSTime.wMinute,pTSDataRet->tTSTime.wSecond); else TSTime = _T("NULL"); switch( pTSDataRecv->ucStatus ) { case CORP_TS_MODIFY: strSelect = CString("update Corp_TS set ") + CString("TSType='") + TSType + CString("',") + CString("TSMsg='") + TSMsg + CString("',") + CString("TSTime=") + TSTime + CString(",") + CString("TSProcess='") + TSProcess + CString("',") + CString("OperName='") + OperName + CString("' ") + CString("where TSID=") + strTSID ; break; case CORP_TS_ADD: strSelect = CString("insert into Corp_TS (CorpID,TSType,TSMsg,TSTime,TSProcess,OperName,CreateUser,CreateTime) values(") + strCorpID + CString(",") + CString(" '") + TSType + CString("',") + CString(" '") + TSMsg + CString("',") + CString(" ") + TSTime + CString(",") + CString(" '") + TSProcess + CString("',") + CString(" '") + OperName + CString("',") + CString(" '") + CString(m_szLoginName) + CString("',") + //创建人 CString("GETDATE() )"); //创建时间 break; case CORP_TS_DEL: strSelect.Format(_T("delete from Corp_TS where TSID=%d ") , pTSDataRet->lTSID); break; default: pTSDataRet->ucStatus = 0; //修改不成功 pTSDataRet ++; pTSDataRecv ++; continue; } BOOL b = m_AdoRS.Open( strSelect ); //执行 if ( b ) { if ( pTSDataRet->ucStatus==CORP_TS_ADD ) { //以下为取得新添加记录的ID号 strSelect.Format( _T("select top 1 * from corp_TS where CorpID=%s order by CreateTime desc") , strCorpID ); if (m_AdoRS.Open( strSelect ) && m_AdoRS.GetRecordCount()>0) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("TSID") , pTSDataRet->lTSID ); m_AdoRS.Close(); } //为企业增加一次投诉记录 strSelect.Format( _T("update corp set TSCount=TSCount+1 where CorpID=%s") , strCorpID ); m_AdoRS.Open( strSelect ); } b = true; } else { b = false; } //pTSDataRet->ucStatus = b; //修改成功/不成功 pTSDataRet ++; pTSDataRecv ++; } SendFrame( SMSFUNC_CORP_TSMODIFY , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } BOOL CProcessSocket::Process_GetYWYGroup(REQ_GetYWYGroup *pYWY) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_SEE) ) //没有取YWY { ANS_GetYWYGroup * pYWYRet = new ANS_GetYWYGroup; //权限不够,什么也不返回 pYWYRet->lCount = 0; SendFrame( SMSFUNC_GETYWYGROUP , (BYTE*)pYWYRet , sizeof(REQ_GetYWYGroup) ); //发送返回 return 1; } CString strSelect; strSelect = _T("select * from YWY_Group order by GroupID"); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GetYWYGroup) + sizeof(ANS_GetYWYGroupData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GetYWYGroup * pYWYRet = (ANS_GetYWYGroup *)pData; ANS_GetYWYGroupData * pYWYDataRet = (ANS_GetYWYGroupData *)(pData+sizeof(ANS_GetYWYGroup)); pYWYRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("GroupID") , pYWYDataRet->lGroupID); m_AdoRS.GetCollect( _T("Name") , pYWYDataRet->szName); m_AdoRS.GetCollect( _T("BZ") , pYWYDataRet->szBZ); m_AdoRS.GetCollect( _T("CreateUser") , pYWYDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime") , t); t.GetAsSystemTime(pYWYDataRet->tCreateTime); m_AdoRS.GetCollect( _T("GZ_RWJLQ1") , pYWYDataRet->GZ_RWJLQ1); m_AdoRS.GetCollect( _T("GZ_RWJLJ1") , pYWYDataRet->GZ_RWJLJ1); m_AdoRS.GetCollect( _T("GZ_RWJLQ2") , pYWYDataRet->GZ_RWJLQ2); m_AdoRS.GetCollect( _T("GZ_RWJLJ2") , pYWYDataRet->GZ_RWJLJ2); m_AdoRS.GetCollect( _T("GZ_RWJLQ3") , pYWYDataRet->GZ_RWJLQ3); m_AdoRS.GetCollect( _T("GZ_RWJLJ3") , pYWYDataRet->GZ_RWJLJ3); m_AdoRS.GetCollect( _T("GZ_M1_DJ") , pYWYDataRet->GZ_M1_DJ); m_AdoRS.GetCollect( _T("GZ_M1_New") , pYWYDataRet->GZ_M1_New); m_AdoRS.GetCollect( _T("GZ_M1_Old") , pYWYDataRet->GZ_M1_Old); m_AdoRS.GetCollect( _T("GZ_M1_New_Max") , pYWYDataRet->GZ_M1_New_Max); m_AdoRS.GetCollect( _T("GZ_M1_Old_Max") , pYWYDataRet->GZ_M1_Old_Max); m_AdoRS.GetCollect( _T("GZ_M1_New_Add") , pYWYDataRet->GZ_M1_New_Add); m_AdoRS.GetCollect( _T("GZ_M2_DJ") , pYWYDataRet->GZ_M2_DJ); m_AdoRS.GetCollect( _T("GZ_M2_New") , pYWYDataRet->GZ_M2_New); m_AdoRS.GetCollect( _T("GZ_M2_Old") , pYWYDataRet->GZ_M2_Old); m_AdoRS.GetCollect( _T("GZ_M2_New_Max") , pYWYDataRet->GZ_M2_New_Max); m_AdoRS.GetCollect( _T("GZ_M2_Old_Max") , pYWYDataRet->GZ_M2_Old_Max); m_AdoRS.GetCollect( _T("GZ_M2_New_Add") , pYWYDataRet->GZ_M2_New_Add); m_AdoRS.GetCollect( _T("GZ_M3_DJ") , pYWYDataRet->GZ_M3_DJ); m_AdoRS.GetCollect( _T("GZ_M3_New") , pYWYDataRet->GZ_M3_New); m_AdoRS.GetCollect( _T("GZ_M3_JBTC") , pYWYDataRet->GZ_M3_JBTC); m_AdoRS.GetCollect( _T("GZ_M3_New_Add") , pYWYDataRet->GZ_M3_New_Add); m_AdoRS.GetCollect( _T("GZ_M3_ADC_TC_M"), pYWYDataRet->GZ_M3_ADC_TC_M); m_AdoRS.GetCollect( _T("GZ_M3_ADC_TC_A"), pYWYDataRet->GZ_M3_ADC_TC_A); m_AdoRS.GetCollect( _T("GZ_M3_ADC_YZ_A"), pYWYDataRet->GZ_M3_ADC_YZ_A); m_AdoRS.GetCollect( _T("GZ_M3_Max") , pYWYDataRet->GZ_M3_Max); m_AdoRS.GetCollect( _T("GZ_M0_TC") , pYWYDataRet->GZ_M0_TC); m_AdoRS.GetCollect( _T("GZ_GJJ_TC") , pYWYDataRet->GZ_GJJ_TC); m_AdoRS.GetCollect( _T("GZ_SLJ") , pYWYDataRet->GZ_SLJ); m_AdoRS.GetCollect( _T("GZ_LSSL_3") , pYWYDataRet->GZ_LSSL_3); m_AdoRS.GetCollect( _T("GZ_LSSL_4") , pYWYDataRet->GZ_LSSL_4); m_AdoRS.GetCollect( _T("GZ_LSBDB") , pYWYDataRet->GZ_LSBDB); m_AdoRS.GetCollect( _T("GZ_BMDHSL") , pYWYDataRet->GZ_BMDHSL); m_AdoRS.GetCollect( _T("GZ_BMDHKH") , pYWYDataRet->GZ_BMDHKH); m_AdoRS.GetCollect( _T("GZ_M1_KH_M") , pYWYDataRet->GZ_M1_KH_M); m_AdoRS.GetCollect( _T("GZ_M1_KH_A") , pYWYDataRet->GZ_M1_KH_A); m_AdoRS.GetCollect( _T("GZ_M2_KH_M") , pYWYDataRet->GZ_M2_KH_M); m_AdoRS.GetCollect( _T("GZ_M2_KH_A") , pYWYDataRet->GZ_M2_KH_A); m_AdoRS.GetCollect( _T("GZ_M3_KH_M") , pYWYDataRet->GZ_M3_KH_M); m_AdoRS.GetCollect( _T("GZ_M3_KH_A") , pYWYDataRet->GZ_M3_KH_A); m_AdoRS.MoveNext(); pYWYDataRet ++; } } SendFrame( SMSFUNC_GETYWYGROUP , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_YWYGroup_Add(REQ_YWYGroup_Add *pAdd) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_ADD) ) //没有权限修改资料 { ANS_YWYGroup_Add * pAddRet = new ANS_YWYGroup_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_YWYGROUP_ADD , (BYTE*)pAddRet , sizeof(ANS_YWYGroup_Add) ); //发送返回 return 1; } CString strSelect; ANS_GetYWYGroupData * pYWYDataRet = (ANS_GetYWYGroupData *)((BYTE*)pAdd+sizeof(REQ_YWYGroup_Add)); if ( m_AdoRS.Open(_T("YWY_Group") , adCmdTable) ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect( _T("Name") , pYWYDataRet->szName); m_AdoRS.PutCollect( _T("BZ") , pYWYDataRet->szBZ); m_AdoRS.PutCollect( _T("CreateUser") , m_szLoginName); //m_AdoRS.PutCollect( _T("CreateTime") , t); t.GetAsSystemTime(pYWYDataRet->tCreateTime); m_AdoRS.PutCollect( _T("GZ_RWJLQ1") , pYWYDataRet->GZ_RWJLQ1); m_AdoRS.PutCollect( _T("GZ_RWJLJ1") , pYWYDataRet->GZ_RWJLJ1); m_AdoRS.PutCollect( _T("GZ_RWJLQ2") , pYWYDataRet->GZ_RWJLQ2); m_AdoRS.PutCollect( _T("GZ_RWJLJ2") , pYWYDataRet->GZ_RWJLJ2); m_AdoRS.PutCollect( _T("GZ_RWJLQ3") , pYWYDataRet->GZ_RWJLQ3); m_AdoRS.PutCollect( _T("GZ_RWJLJ3") , pYWYDataRet->GZ_RWJLJ3); m_AdoRS.PutCollect( _T("GZ_M1_DJ") , pYWYDataRet->GZ_M1_DJ); m_AdoRS.PutCollect( _T("GZ_M1_New") , pYWYDataRet->GZ_M1_New); m_AdoRS.PutCollect( _T("GZ_M1_Old") , pYWYDataRet->GZ_M1_Old); m_AdoRS.PutCollect( _T("GZ_M1_New_Max") , pYWYDataRet->GZ_M1_New_Max); m_AdoRS.PutCollect( _T("GZ_M1_Old_Max") , pYWYDataRet->GZ_M1_Old_Max); m_AdoRS.PutCollect( _T("GZ_M1_New_Add") , pYWYDataRet->GZ_M1_New_Add); m_AdoRS.PutCollect( _T("GZ_M2_DJ") , pYWYDataRet->GZ_M2_DJ); m_AdoRS.PutCollect( _T("GZ_M2_New") , pYWYDataRet->GZ_M2_New); m_AdoRS.PutCollect( _T("GZ_M2_Old") , pYWYDataRet->GZ_M2_Old); m_AdoRS.PutCollect( _T("GZ_M2_New_Max") , pYWYDataRet->GZ_M2_New_Max); m_AdoRS.PutCollect( _T("GZ_M2_Old_Max") , pYWYDataRet->GZ_M2_Old_Max); m_AdoRS.PutCollect( _T("GZ_M2_New_Add") , pYWYDataRet->GZ_M2_New_Add); m_AdoRS.PutCollect( _T("GZ_M3_DJ") , pYWYDataRet->GZ_M3_DJ); m_AdoRS.PutCollect( _T("GZ_M3_New") , pYWYDataRet->GZ_M3_New); m_AdoRS.PutCollect( _T("GZ_M3_JBTC") , pYWYDataRet->GZ_M3_JBTC); m_AdoRS.PutCollect( _T("GZ_M3_New_Add") , pYWYDataRet->GZ_M3_New_Add); m_AdoRS.PutCollect( _T("GZ_M3_ADC_TC_M"), pYWYDataRet->GZ_M3_ADC_TC_M); m_AdoRS.PutCollect( _T("GZ_M3_ADC_TC_A"), pYWYDataRet->GZ_M3_ADC_TC_A); m_AdoRS.PutCollect( _T("GZ_M3_ADC_YZ_A"), pYWYDataRet->GZ_M3_ADC_YZ_A); m_AdoRS.PutCollect( _T("GZ_M3_Max") , pYWYDataRet->GZ_M3_Max); m_AdoRS.PutCollect( _T("GZ_M0_TC") , pYWYDataRet->GZ_M0_TC); m_AdoRS.PutCollect( _T("GZ_GJJ_TC") , pYWYDataRet->GZ_GJJ_TC); m_AdoRS.PutCollect( _T("GZ_SLJ") , pYWYDataRet->GZ_SLJ); m_AdoRS.PutCollect( _T("GZ_LSSL_3") , pYWYDataRet->GZ_LSSL_3); m_AdoRS.PutCollect( _T("GZ_LSSL_4") , pYWYDataRet->GZ_LSSL_4); m_AdoRS.PutCollect( _T("GZ_LSBDB") , pYWYDataRet->GZ_LSBDB); m_AdoRS.PutCollect( _T("GZ_BMDHSL") , pYWYDataRet->GZ_BMDHSL); m_AdoRS.PutCollect( _T("GZ_BMDHKH") , pYWYDataRet->GZ_BMDHKH); m_AdoRS.PutCollect( _T("GZ_M1_KH_M") , pYWYDataRet->GZ_M1_KH_M); m_AdoRS.PutCollect( _T("GZ_M1_KH_A") , pYWYDataRet->GZ_M1_KH_A); m_AdoRS.PutCollect( _T("GZ_M2_KH_M") , pYWYDataRet->GZ_M2_KH_M); m_AdoRS.PutCollect( _T("GZ_M2_KH_A") , pYWYDataRet->GZ_M2_KH_A); m_AdoRS.PutCollect( _T("GZ_M3_KH_M") , pYWYDataRet->GZ_M3_KH_M); m_AdoRS.PutCollect( _T("GZ_M3_KH_A") , pYWYDataRet->GZ_M3_KH_A); m_AdoRS.Update(); m_AdoRS.Close(); long lSize = sizeof(ANS_YWYGroup_Add) + sizeof(ANS_GetYWYGroupData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_YWYGroup_Add * pAddRet = (ANS_YWYGroup_Add *)pDataRet; ANS_GetYWYGroupData * pAddDataRet = (ANS_GetYWYGroupData *)(pDataRet+sizeof(ANS_YWYGroup_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pYWYDataRet; //以下为取得新添加记录的ID号 strSelect.Format( _T("select * from YWY_Group where Name='%s'") , pAddDataRet->szName ); if (m_AdoRS.Open( strSelect )) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("GroupID") , pAddDataRet->lGroupID ); } SendFrame( SMSFUNC_YWYGROUP_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_YWYGroup_Add * pAddRet = new ANS_YWYGroup_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_YWYGROUP_ADD , (BYTE*)pAddRet , sizeof(ANS_YWYGroup_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_YWYGroup_Modify(REQ_YWYGroup_Modify *pModify) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_MODIFY) ) //没有权限修改资料 { ANS_YWYGroup_Modify * pYWYRet = new ANS_YWYGroup_Modify; //权限不够,什么也不返回 pYWYRet->lItem = pModify->lItem; pYWYRet->lCount = 0; SendFrame( SMSFUNC_YWYGROUP_MODIFY , (BYTE*)pYWYRet , sizeof(ANS_YWYGroup_Modify) ); //发送返回 return 1; } ANS_GetYWYGroupData * pYWYDataRet = (ANS_GetYWYGroupData *)((BYTE*)pModify+sizeof(REQ_YWYGroup_Modify)); CString strSelect; strSelect.Format( _T("select * from YWY_Group where GroupID=%d") , pYWYDataRet->lGroupID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.PutCollect( _T("Name") , pYWYDataRet->szName); m_AdoRS.PutCollect( _T("BZ") , pYWYDataRet->szBZ); //m_AdoRS.PutCollect( _T("CreateUser") , m_szLoginName); //m_AdoRS.PutCollect( _T("CreateTime") , t); t.GetAsSystemTime(pYWYDataRet->tCreateTime); m_AdoRS.PutCollect( _T("GZ_RWJLQ1") , pYWYDataRet->GZ_RWJLQ1); m_AdoRS.PutCollect( _T("GZ_RWJLJ1") , pYWYDataRet->GZ_RWJLJ1); m_AdoRS.PutCollect( _T("GZ_RWJLQ2") , pYWYDataRet->GZ_RWJLQ2); m_AdoRS.PutCollect( _T("GZ_RWJLJ2") , pYWYDataRet->GZ_RWJLJ2); m_AdoRS.PutCollect( _T("GZ_RWJLQ3") , pYWYDataRet->GZ_RWJLQ3); m_AdoRS.PutCollect( _T("GZ_RWJLJ3") , pYWYDataRet->GZ_RWJLJ3); m_AdoRS.PutCollect( _T("GZ_M1_DJ") , pYWYDataRet->GZ_M1_DJ); m_AdoRS.PutCollect( _T("GZ_M1_New") , pYWYDataRet->GZ_M1_New); m_AdoRS.PutCollect( _T("GZ_M1_Old") , pYWYDataRet->GZ_M1_Old); m_AdoRS.PutCollect( _T("GZ_M1_New_Max") , pYWYDataRet->GZ_M1_New_Max); m_AdoRS.PutCollect( _T("GZ_M1_Old_Max") , pYWYDataRet->GZ_M1_Old_Max); m_AdoRS.PutCollect( _T("GZ_M1_New_Add") , pYWYDataRet->GZ_M1_New_Add); m_AdoRS.PutCollect( _T("GZ_M2_DJ") , pYWYDataRet->GZ_M2_DJ); m_AdoRS.PutCollect( _T("GZ_M2_New") , pYWYDataRet->GZ_M2_New); m_AdoRS.PutCollect( _T("GZ_M2_Old") , pYWYDataRet->GZ_M2_Old); m_AdoRS.PutCollect( _T("GZ_M2_New_Max") , pYWYDataRet->GZ_M2_New_Max); m_AdoRS.PutCollect( _T("GZ_M2_Old_Max") , pYWYDataRet->GZ_M2_Old_Max); m_AdoRS.PutCollect( _T("GZ_M2_New_Add") , pYWYDataRet->GZ_M2_New_Add); m_AdoRS.PutCollect( _T("GZ_M3_DJ") , pYWYDataRet->GZ_M3_DJ); m_AdoRS.PutCollect( _T("GZ_M3_New") , pYWYDataRet->GZ_M3_New); m_AdoRS.PutCollect( _T("GZ_M3_JBTC") , pYWYDataRet->GZ_M3_JBTC); m_AdoRS.PutCollect( _T("GZ_M3_New_Add") , pYWYDataRet->GZ_M3_New_Add); m_AdoRS.PutCollect( _T("GZ_M3_ADC_TC_M"), pYWYDataRet->GZ_M3_ADC_TC_M); m_AdoRS.PutCollect( _T("GZ_M3_ADC_TC_A"), pYWYDataRet->GZ_M3_ADC_TC_A); m_AdoRS.PutCollect( _T("GZ_M3_ADC_YZ_A"), pYWYDataRet->GZ_M3_ADC_YZ_A); m_AdoRS.PutCollect( _T("GZ_M3_Max") , pYWYDataRet->GZ_M3_Max); m_AdoRS.PutCollect( _T("GZ_M0_TC") , pYWYDataRet->GZ_M0_TC); m_AdoRS.PutCollect( _T("GZ_GJJ_TC") , pYWYDataRet->GZ_GJJ_TC); m_AdoRS.PutCollect( _T("GZ_SLJ") , pYWYDataRet->GZ_SLJ); m_AdoRS.PutCollect( _T("GZ_LSSL_3") , pYWYDataRet->GZ_LSSL_3); m_AdoRS.PutCollect( _T("GZ_LSSL_4") , pYWYDataRet->GZ_LSSL_4); m_AdoRS.PutCollect( _T("GZ_LSBDB") , pYWYDataRet->GZ_LSBDB); m_AdoRS.PutCollect( _T("GZ_BMDHSL") , pYWYDataRet->GZ_BMDHSL); m_AdoRS.PutCollect( _T("GZ_BMDHKH") , pYWYDataRet->GZ_BMDHKH); m_AdoRS.PutCollect( _T("GZ_M1_KH_M") , pYWYDataRet->GZ_M1_KH_M); m_AdoRS.PutCollect( _T("GZ_M1_KH_A") , pYWYDataRet->GZ_M1_KH_A); m_AdoRS.PutCollect( _T("GZ_M2_KH_M") , pYWYDataRet->GZ_M2_KH_M); m_AdoRS.PutCollect( _T("GZ_M2_KH_A") , pYWYDataRet->GZ_M2_KH_A); m_AdoRS.PutCollect( _T("GZ_M3_KH_M") , pYWYDataRet->GZ_M3_KH_M); m_AdoRS.PutCollect( _T("GZ_M3_KH_A") , pYWYDataRet->GZ_M3_KH_A); m_AdoRS.Update(); m_AdoRS.Close(); long lSize = sizeof(ANS_YWYGroup_Modify) + sizeof(ANS_GetYWYGroupData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_YWYGroup_Modify * pModifyRet = (ANS_YWYGroup_Modify *)pDataRet; ANS_GetYWYGroupData * pModifyDataRet = (ANS_GetYWYGroupData *)(pDataRet+sizeof(ANS_YWYGroup_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pYWYDataRet; SendFrame( SMSFUNC_YWYGROUP_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_YWYGroup_Modify * pYWYRet = new ANS_YWYGroup_Modify; //权限不够,什么也不返回 pYWYRet->lItem = pModify->lItem; pYWYRet->lCount = 0; SendFrame( SMSFUNC_YWYGROUP_MODIFY , (BYTE*)pYWYRet , sizeof(ANS_YWYGroup_Modify) ); //发送返回 return 1; } /* CString strBirthday; CString strYWYID; CString strNoLTD; CString strKFID; COleDateTime tTemp(pData->tBirthday); if ( tTemp.GetStatus() == COleDateTime::valid ) //if ( pData->tBirthday.wYear<1990 && pData->tBirthday.wYear>2020 ) strBirthday.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tBirthday.wYear,pData->tBirthday.wMonth,pData->tBirthday.wDay,pData->tBirthday.wHour,pData->tBirthday.wMinute,pData->tBirthday.wSecond); else strBirthday = _T("NULL"); strNoLTD.Format( _T("%d") , pData->bNoLTD ); strKFID.Format( _T("%d") , pData->lKFID ); strYWYID.Format( _T("%d") , pData->lYWYID ); if ( m_ulPurview & PURVIEW_MANAGER_MODIFYPURVIEW ) //有修改权限的权限 { strSelect = CString("update YWY set ") + CString("Name='") + CString(pData->szName) + CString("',") + CString("NickName='") + CString(pData->szNickName) + CString("',") + CString("Sex='") + CString(pData->szSex) + CString("',") + CString("Birthday=") + strBirthday + CString(",") + CString("Branch='") + CString(pData->szBranch) + CString("',") + CString("Job='") + CString(pData->szJob) + CString("',") + CString("Tel='") + CString(pData->szTel) + CString("',") + CString("Fax='") + CString(pData->szFax) + CString("',") + CString("Mobile='") + CString(pData->szMobile) + CString("',") + CString("Email='") + CString(pData->szEmail) + CString("',") + CString("LoginName='") + CString(pData->szLoginName) + CString("',") + CString("Passwd='") + CString(pData->szPasswd) + CString("',") + CString("NoLTD=") + strNoLTD + CString(" ,") + CString("KFID=") + strKFID + CString(" ,") + CString("BZ='") + CString(pData->szBZ) + CString("' ") + CString("where YWYID=") + strYWYID ; } else { strSelect = CString("update YWY set ") + CString("Name='") + CString(pData->szName) + CString("',") + CString("NickName='") + CString(pData->szNickName) + CString("',") + CString("Sex='") + CString(pData->szSex) + CString("',") + CString("Birthday=") + strBirthday + CString(",") + CString("Branch='") + CString(pData->szBranch) + CString("',") + CString("Job='") + CString(pData->szJob) + CString("',") + CString("Tel='") + CString(pData->szTel) + CString("',") + CString("Fax='") + CString(pData->szFax) + CString("',") + CString("Mobile='") + CString(pData->szMobile) + CString("',") + CString("Email='") + CString(pData->szEmail) + CString("',") + CString("LoginName='") + CString(pData->szLoginName) + CString("',") + CString("Passwd='") + CString(pData->szPasswd) + CString("',") + CString("NoLTD=") + strNoLTD + CString(" ,") + CString("KFID=") + strKFID + CString(" ,") + CString("BZ='") + CString(pData->szBZ) + CString("' ") + CString("where YWYID=") + strYWYID ; } BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_YWYGroup_Modify) + sizeof(ANS_GetYWYGroupData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_YWYGroup_Modify * pModifyRet = (ANS_YWYGroup_Modify *)pDataRet; ANS_GetYWYGroupData * pModifyDataRet = (ANS_GetYWYGroupData *)(pDataRet+sizeof(ANS_YWYGroup_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pData; SendFrame( SMSFUNC_YWYGROUP_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_YWYGroup_Modify * pYWYRet = new ANS_YWYGroup_Modify; //权限不够,什么也不返回 pYWYRet->lItem = pModify->lItem; pYWYRet->lCount = 0; SendFrame( SMSFUNC_YWYGROUP_MODIFY , (BYTE*)pYWYRet , sizeof(ANS_YWYGroup_Modify) ); //发送返回 return 1; } */ return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_YWYGroup_Del(REQ_YWYGroup_Del *pDel) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_DEL) ) //没有权限修改资料 { ANS_YWYGroup_Del * pDelRet = new ANS_YWYGroup_Del; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_YWYGROUP_DEL , (BYTE*)pDelRet , sizeof(ANS_YWYGroup_Del) ); //发送返回 return 1; } ANS_YWYGroup_DelData * pDelData = (ANS_YWYGroup_DelData *)((BYTE*)pDel+sizeof(REQ_YWYGroup_Del)); long lSize = sizeof(ANS_YWYGroup_Del) + sizeof(ANS_YWYGroup_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_YWYGroup_Del * pDelRet = (ANS_YWYGroup_Del * )pData; ANS_YWYGroup_DelData * pDelDataRet= (ANS_YWYGroup_DelData*)(pData+sizeof(ANS_YWYGroup_Del)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from YWY_Group where GroupID=%d") , pDelData->lGroupID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lGroupID = pDelData->lGroupID; else pDelDataRet->lGroupID = 0; //将有此业务员的企业置为没有业务员 strSelect.Format( _T("update YWY set GroupID=0 where GroupID=%d") , pDelData->lGroupID ); m_AdoRS.Open(strSelect); pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_YWYGROUP_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_YWYGroupName(REQ_YWYGroup_Name *pYWY) { try { /* if ( !(m_ulPurview & PURVIEW_FILT) ) //没有权限修改资料 { ANS_YWY_Name * pYWYRet = new ANS_YWY_Name; //权限不够,什么也不返回 pYWYRet->lCount = 0; SendFrame( SMSFUNC_YWY_NAME , (BYTE*)pYWYRet , sizeof(ANS_YWY_Name) ); //发送返回 return 1; } */ CString strSelect; strSelect= _T("select * from YWY_Group order by GroupID"); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_YWYGroup_Name) + sizeof(ANS_YWYGroup_NameData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_YWYGroup_Name * pNameRet = (ANS_YWYGroup_Name *)pData; ANS_YWYGroup_NameData * pNameDataRet = (ANS_YWYGroup_NameData *)(pData+sizeof(ANS_YWYGroup_Name)); pNameRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("GroupID") , pNameDataRet->lGroupID); m_AdoRS.GetCollect( _T("Name") , pNameDataRet->szName); m_AdoRS.MoveNext(); pNameDataRet ++; } } SendFrame( SMSFUNC_YWYGROUP_NAME , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GZMsg( REQ_GZMsg * pGZMsg ) { try { CString str; long lSize = 0; BYTE * pSendData =NULL; if ( pGZMsg->lType ==0 ) //计算工资 { ANS_GZMsgData GZMsg={0}; GZMsg.lType = pGZMsg->lType; GZMsg.tBegin= pGZMsg->tBegin; GZMsg.tEnd = pGZMsg->tEnd; GZMsg.bOnlyTC=pGZMsg->bOnlyTC; GZMsg.bOnlyJS=pGZMsg->bOnlyJS; ANS_GZMsg_KH KH[32]={0}; ANS_GZMsg_TC TC[1024]={0}; ANS_GZMsg_LS LS[32]={0}; //连接另两个平台数据库 BOOL bNext=true; CString strErrorMsg; CAdoConnection adoConnection2; CAdoRecordSet AdoRS2; CAdoRecordSet AdoRS22; // CAdoConnection adoConnection3; // CAdoRecordSet AdoRS3; // CAdoRecordSet AdoRS32; if (bNext && adoConnection2.ConnectSQLServer(m_pSMSDlg->m_Setup.szDBName2,DEFAULT_DBNAME,m_pSMSDlg->m_Setup.szDBUser2,m_pSMSDlg->m_Setup.szDBPasswd2) ) { adoConnection2.SetCommandTimeout(7200); //设置连接超时时间 #ifdef SMSCENTER_USECLIENT adoConnection2.SetCursorLocation(adUseClient); //设置为本地游标类型 #endif AdoRS2.SetAdoConnection(&adoConnection2); AdoRS22.SetAdoConnection(&adoConnection2); } else { if ( bNext ) strErrorMsg = _T("连接平台2数据库失败!"); bNext =false; } /* if (bNext && adoConnection3.ConnectSQLServer(m_pSMSDlg->m_Setup.szDBName3,DEFAULT_DBNAME,m_pSMSDlg->m_Setup.szDBUser3,m_pSMSDlg->m_Setup.szDBPasswd3) ) { adoConnection3.SetCommandTimeout(7200); //设置连接超时时间 AdoRS3.SetAdoConnection(&adoConnection3); AdoRS32.SetAdoConnection(&adoConnection3); } else { if ( bNext ) strErrorMsg = _T("连接平台3数据库失败!"); bNext =false; } */ ANS_GetYWYData ywy={0}; ANS_GetYWYGroupData group={0}; COleDateTime tt; //取业务员信息 str.Format( _T("select * from ywy where ywyid=%d") , pGZMsg->lYWYID ); if (bNext && m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("YWYID") , ywy.lYWYID); m_AdoRS.GetCollect( _T("Name") , ywy.szName); m_AdoRS.GetCollect( _T("LoginName") , ywy.szLoginName); m_AdoRS.GetCollect( _T("AgentID") , ywy.lAgentID); m_AdoRS.GetCollect( _T("GroupID") , ywy.lGroupID); m_AdoRS.GetCollect( _T("BMManager") , ywy.bBMManager); m_AdoRS.GetCollect( _T("GZ_GWGZ") , ywy.GZ_GWGZ); m_AdoRS.GetCollect( _T("GZ_GWBT") , ywy.GZ_GWBT); m_AdoRS.GetCollect( _T("GZ_WCBT") , ywy.GZ_WCBT); m_AdoRS.GetCollect( _T("GZ_CQJ") , ywy.GZ_CQJ); m_AdoRS.GetCollect( _T("GZ_M1_YWNL"), ywy.GZ_M1_YWNL); m_AdoRS.GetCollect( _T("GZ_M2_YWNL"), ywy.GZ_M2_YWNL); m_AdoRS.GetCollect( _T("GZ_M3_YWNL"), ywy.GZ_M3_YWNL); m_AdoRS.GetCollect( _T("GZ_JBRW") , ywy.GZ_JBRW); m_AdoRS.GetCollect( _T("GZ_JBSL") , ywy.GZ_JBSL); m_AdoRS.GetCollect( _T("GZ_LSKH") , ywy.GZ_LSKH); m_AdoRS.GetCollect( _T("GZ_DHSL") , ywy.GZ_DHSL); m_AdoRS.GetCollect( _T("GZ_NEWSL") , ywy.GZ_NEWSL); m_AdoRS.GetCollect( _T("GZ_CQTS") , ywy.GZ_CQTS); m_AdoRS.GetCollect( _T("GZ_QQGZ") , ywy.GZ_QQGZ); m_AdoRS.GetCollect( _T("GZ_ZBBT") , ywy.GZ_ZBBT); m_AdoRS.GetCollect( _T("GZ_QTBZ") , ywy.GZ_QTBZ); m_AdoRS.GetCollect( _T("GZ_QTCF") , ywy.GZ_QTCF); m_AdoRS.GetCollect( _T("GZ_SB") , ywy.GZ_SB); m_AdoRS.GetCollect( _T("GZ_GRSDS") , ywy.GZ_GRSDS); m_AdoRS.GetCollect( _T("GZ_SFGZ") , ywy.GZ_SFGZ); m_AdoRS.GetCollect( _T("GZ_LastGZ") , tt); tt.GetAsSystemTime(ywy.GZ_LastGZ); m_AdoRS.Close(); } else { if ( bNext ) strErrorMsg = _T("找不到业务员属性!"); bNext =false; } GZMsg.YWY = ywy; //记录业务员信息 //取用户组信息 str.Format( _T("select * from ywy_Group where GroupID=%d") , ywy.lGroupID ); if (bNext && m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("GroupID") , group.lGroupID); m_AdoRS.GetCollect( _T("Name") , group.szName); m_AdoRS.GetCollect( _T("GZ_RWJLQ1") , group.GZ_RWJLQ1); m_AdoRS.GetCollect( _T("GZ_RWJLJ1") , group.GZ_RWJLJ1); m_AdoRS.GetCollect( _T("GZ_RWJLQ2") , group.GZ_RWJLQ2); m_AdoRS.GetCollect( _T("GZ_RWJLJ2") , group.GZ_RWJLJ2); m_AdoRS.GetCollect( _T("GZ_RWJLQ3") , group.GZ_RWJLQ3); m_AdoRS.GetCollect( _T("GZ_RWJLJ3") , group.GZ_RWJLJ3); m_AdoRS.GetCollect( _T("GZ_M1_DJ") , group.GZ_M1_DJ); m_AdoRS.GetCollect( _T("GZ_M1_New") , group.GZ_M1_New); m_AdoRS.GetCollect( _T("GZ_M1_Old") , group.GZ_M1_Old); m_AdoRS.GetCollect( _T("GZ_M1_New_Max") , group.GZ_M1_New_Max); m_AdoRS.GetCollect( _T("GZ_M1_Old_Max") , group.GZ_M1_Old_Max); m_AdoRS.GetCollect( _T("GZ_M1_New_Add") , group.GZ_M1_New_Add); m_AdoRS.GetCollect( _T("GZ_M2_DJ") , group.GZ_M2_DJ); m_AdoRS.GetCollect( _T("GZ_M2_New") , group.GZ_M2_New); m_AdoRS.GetCollect( _T("GZ_M2_Old") , group.GZ_M2_Old); m_AdoRS.GetCollect( _T("GZ_M2_New_Max") , group.GZ_M2_New_Max); m_AdoRS.GetCollect( _T("GZ_M2_Old_Max") , group.GZ_M2_Old_Max); m_AdoRS.GetCollect( _T("GZ_M2_New_Add") , group.GZ_M2_New_Add); m_AdoRS.GetCollect( _T("GZ_M3_DJ") , group.GZ_M3_DJ); m_AdoRS.GetCollect( _T("GZ_M3_New") , group.GZ_M3_New); m_AdoRS.GetCollect( _T("GZ_M3_JBTC") , group.GZ_M3_JBTC); m_AdoRS.GetCollect( _T("GZ_M3_New_Add") , group.GZ_M3_New_Add); m_AdoRS.GetCollect( _T("GZ_M3_ADC_TC_M"), group.GZ_M3_ADC_TC_M); m_AdoRS.GetCollect( _T("GZ_M3_ADC_TC_A"), group.GZ_M3_ADC_TC_A); m_AdoRS.GetCollect( _T("GZ_M3_ADC_YZ_A"), group.GZ_M3_ADC_YZ_A); m_AdoRS.GetCollect( _T("GZ_M3_Max") , group.GZ_M3_Max); m_AdoRS.GetCollect( _T("GZ_M0_TC") , group.GZ_M0_TC); m_AdoRS.GetCollect( _T("GZ_GJJ_TC") , group.GZ_GJJ_TC); m_AdoRS.GetCollect( _T("GZ_SLJ") , group.GZ_SLJ); m_AdoRS.GetCollect( _T("GZ_LSSL_3") , group.GZ_LSSL_3); m_AdoRS.GetCollect( _T("GZ_LSSL_4") , group.GZ_LSSL_4); m_AdoRS.GetCollect( _T("GZ_LSBDB") , group.GZ_LSBDB); m_AdoRS.GetCollect( _T("GZ_BMDHSL") , group.GZ_BMDHSL); m_AdoRS.GetCollect( _T("GZ_BMDHKH") , group.GZ_BMDHKH); m_AdoRS.GetCollect( _T("GZ_M1_KH_M") , group.GZ_M1_KH_M); m_AdoRS.GetCollect( _T("GZ_M1_KH_A") , group.GZ_M1_KH_A); m_AdoRS.GetCollect( _T("GZ_M2_KH_M") , group.GZ_M2_KH_M); m_AdoRS.GetCollect( _T("GZ_M2_KH_A") , group.GZ_M2_KH_A); m_AdoRS.GetCollect( _T("GZ_M3_KH_M") , group.GZ_M3_KH_M); m_AdoRS.GetCollect( _T("GZ_M3_KH_A") , group.GZ_M3_KH_A); m_AdoRS.Close(); } else { if ( bNext ) strErrorMsg = _T("找不到业务所属部门属性!"); bNext =false; } //先判断查询日期 SYSTEMTIME t; BOOL bDR=false; ::GetLocalTime(&t); ywy.GZ_LastGZ.wMonth+=1; if (ywy.GZ_LastGZ.wMonth>12) { ywy.GZ_LastGZ.wYear++; ywy.GZ_LastGZ.wMonth=1; } SYSTEMTIME tBegin2=pGZMsg->tBegin; SYSTEMTIME tEnd2=pGZMsg->tEnd; if ( t.wYear*100+t.wMonth == pGZMsg->tBegin.wYear*100 + pGZMsg->tBegin.wMonth) //所查询的是当月数据 { bDR = true; if ( t.wYear*100+t.wMonth == ywy.GZ_LastGZ.wYear*100+ywy.GZ_LastGZ.wMonth ) //上月已结算 { pGZMsg->tBegin.wYear = 2009; //从2008年1月1号开始查 pGZMsg->tBegin.wMonth = 1; pGZMsg->tBegin.wDay = 1; pGZMsg->tBegin.wHour = 0; pGZMsg->tEnd.wHour = 23; //查询到结束日期的23时 } else { pGZMsg->tBegin.wDay = 1; //从当月1号起开始查 pGZMsg->tBegin.wHour = 0; pGZMsg->tEnd.wHour = 23; //查询到结束日期的23时 } //以下数据为查询新客户 tBegin2.wDay = 1; tBegin2.wHour=0; tEnd2.wHour = 23; } else { //其它的从08年1月1号开始至上月尾。 bDR = false; pGZMsg->tBegin.wYear = 2008; pGZMsg->tBegin.wMonth = 1; pGZMsg->tBegin.wDay = 1; pGZMsg->tBegin.wHour = 0; pGZMsg->tEnd = pGZMsg->tEnd; pGZMsg->tEnd.wDay = 1; pGZMsg->tEnd.wHour = 0; //以下数据为查询新客户 tBegin2.wDay = 1; tBegin2.wHour=0; tEnd2 = pGZMsg->tEnd; tEnd2.wDay = 1; tEnd2.wHour = 0; } //计算前6个月业绩 SYSTEMTIME tYZEnd=tBegin2; long lMon=tYZEnd.wMonth; lMon--; if ( lMon<=0 ) { tYZEnd.wYear--; lMon=lMon+12; } tYZEnd.wMonth = (unsigned short)lMon; SYSTEMTIME tYZBegin=tYZEnd; lMon=tYZBegin.wMonth; lMon=lMon-5; //前6月 if ( lMon<=0 ) { tYZBegin.wYear--; lMon=lMon+12; } tYZBegin.wMonth = (unsigned short)lMon; double f6MonYZ=0; //前6个月业绩 // double fMonYZ=0; //当年总业绩 str.Format( _T("select sum(gz_totalYZ) as gz_totalYZ from YWY_GZJS where YWYID=%d and GZ_Mon>='%04d%02d01' and GZ_Mon<='%04d%02d01'") , pGZMsg->lYWYID,tYZBegin.wYear,tYZBegin.wMonth,tYZEnd.wYear,tYZEnd.wMonth ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("gz_totalYZ") , f6MonYZ ); //前6个月业绩 } // str.Format( _T("select sum(gz_totalYZ) as gz_totalYZ from YWY_GZJS where YWYID=%d and GZ_Mon>='%04d0101' ") , pGZMsg->lYWYID,tYZEnd.wYear ); // if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) // { // m_AdoRS.GetCollect(_T("gz_totalYZ") , fMonYZ ); //前6个月业绩 // } // double fJB=0; double fJB6=0; double fJB_Mas6=0; if ( f6MonYZ/6.0f > 60000.0f ) //前6个月平均每月大于6万 { fJB6=0.5f; fJB_Mas6=0.0f; } /* if ( f6MonYZ/6.0f > 100000.0f ) { fJB6=2.0f; fJB_Mas6=3.3f; } if ( f6MonYZ/6.0f > 150000.0f ) { fJB6=3.0f; fJB_Mas6=4.95f; } */ // if ( fMonYZ > 600000.0f ) //年业绩达到60万 // fJB=1.0f; // if ( fMonYZ > 1200000.0f ) //年业绩达到120万 // fJB=2.0f; // if ( fMonYZ > 1800000.0f ) //年业绩达到180万 // fJB=3.0f; // if ( fJB=6 ) { fffLSKHAdd = 0.5f; GZMsg.fLSKHAdd = GZMsg.fLSKHAdd + fffLSKHAdd; } if ( GZMsg.fLSKHAdd>0.5f ) GZMsg.fLSKHAdd = 0.5f; //新增客户数量指标加分[手工调整 + 自动计算(新客户-老客户)] _stprintf(GZMsg.szLSKH, _T("%.2f%% [%.2f%% + (%d - %d)]"),GZMsg.fLSKHAdd,ywy.GZ_M1_YWNL,GZMsg.lNewKHCount,GZMsg.lLSKHCount ); //客户维护加分 GZMsg.fKHWHAdd = ywy.GZ_M2_YWNL; double fffWHAdd=0.0f; if ( (GZMsg.lNewKHCount-GZMsg.lLSKHCount>=4) && GZMsg.lKHAllCount>0 && GZMsg.lKHAllWHCount>0 && ((float)GZMsg.lKHAllWHCount/(float)GZMsg.lKHAllCount)>.30f ) { fffWHAdd = 0.5f; GZMsg.fKHWHAdd = GZMsg.fKHWHAdd + fffWHAdd; } if ( GZMsg.fKHWHAdd>0.5f ) GZMsg.fKHWHAdd = 0.5f; //客户维护加分[手工调整 + 自动计算(新客户-老客户)] _stprintf(GZMsg.szKHWH, _T("%.2f%% [%.2f%% + %.2f%%(%d-%d,%.2f%%(%d/%d))]"),GZMsg.fKHWHAdd,ywy.GZ_M2_YWNL,fffWHAdd,GZMsg.lNewKHCount,GZMsg.lLSKHCount,((float)GZMsg.lKHAllWHCount/(float)GZMsg.lKHAllCount)*100.0f,GZMsg.lKHAllWHCount,GZMsg.lKHAllCount ); //计算总提成比例 GZMsg.fJTBL_Mobset1 = group.GZ_M1_New+ywy.GZ_FJA_JB6+group.GZ_M1_New_Add * GZMsg.lNewKHCount; //if (GZMsg.fJTBL_Mobset1>group.GZ_M1_New_Max) // GZMsg.fJTBL_Mobset1 = group.GZ_M1_New_Max; if ( ywy.GZ_FJA_JB6+group.GZ_M1_New_Add * GZMsg.lNewKHCount > group.GZ_M1_New_Max ) //营销级别与客户数量A值最大值 { GZMsg.fJTBL_Mobset1 = group.GZ_M1_New + group.GZ_M1_New_Max; } GZMsg.fJTBL_Mobset1 =GZMsg.fJTBL_Mobset1 + GZMsg.fLSKHAdd+GZMsg.fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(GZMsg.szJTBL_Mobset1 , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , GZMsg.fJTBL_Mobset1 , group.GZ_M1_New,ywy.GZ_FJA_JB6,GZMsg.fLSKHAdd,GZMsg.fKHWHAdd,group.GZ_M1_New_Add , GZMsg.lNewKHCount ); GZMsg.fJTBL_Mobset1_Old = group.GZ_M1_Old+ywy.GZ_FJA_JB6+group.GZ_M1_New_Add * GZMsg.lNewKHCount; //if (GZMsg.fJTBL_Mobset1_Old>group.GZ_M1_Old_Max) // GZMsg.fJTBL_Mobset1_Old = group.GZ_M1_Old_Max; if ( ywy.GZ_FJA_JB6+group.GZ_M1_New_Add * GZMsg.lNewKHCount > group.GZ_M1_Old_Max ) //营销级别与客户数量A值最大值 { GZMsg.fJTBL_Mobset1_Old = group.GZ_M1_Old + group.GZ_M1_Old_Max; } GZMsg.fJTBL_Mobset1_Old =GZMsg.fJTBL_Mobset1_Old + GZMsg.fLSKHAdd+GZMsg.fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(GZMsg.szJTBL_Mobset1_Old , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , GZMsg.fJTBL_Mobset1_Old , group.GZ_M1_Old,ywy.GZ_FJA_JB6,GZMsg.fLSKHAdd,GZMsg.fKHWHAdd,group.GZ_M1_New_Add , GZMsg.lNewKHCount ); GZMsg.fJTBL_Mobset2 = group.GZ_M2_New+ywy.GZ_FJA_JB6+group.GZ_M2_New_Add * GZMsg.lNewKHCount; //if (GZMsg.fJTBL_Mobset2>group.GZ_M2_New_Max) // GZMsg.fJTBL_Mobset2 = group.GZ_M2_New_Max; if ( ywy.GZ_FJA_JB6+group.GZ_M2_New_Add * GZMsg.lNewKHCount > group.GZ_M2_New_Max ) //营销级别与客户数量A值最大值 { GZMsg.fJTBL_Mobset2 = group.GZ_M2_New + group.GZ_M2_New_Max; } GZMsg.fJTBL_Mobset2 =GZMsg.fJTBL_Mobset2 + GZMsg.fLSKHAdd+GZMsg.fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(GZMsg.szJTBL_Mobset2 , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , GZMsg.fJTBL_Mobset2 , group.GZ_M2_New,ywy.GZ_FJA_JB6,GZMsg.fLSKHAdd,GZMsg.fKHWHAdd,group.GZ_M2_New_Add , GZMsg.lNewKHCount ); GZMsg.fJTBL_Mobset2_Old = group.GZ_M2_Old+ywy.GZ_FJA_JB6+group.GZ_M2_New_Add * GZMsg.lNewKHCount; //if (GZMsg.fJTBL_Mobset2_Old>group.GZ_M2_Old_Max) // GZMsg.fJTBL_Mobset2_Old = group.GZ_M2_Old_Max; if ( ywy.GZ_FJA_JB6+group.GZ_M2_New_Add * GZMsg.lNewKHCount > group.GZ_M2_Old_Max ) //营销级别与客户数量A值最大值 { GZMsg.fJTBL_Mobset2_Old = group.GZ_M2_Old + group.GZ_M2_Old_Max; } GZMsg.fJTBL_Mobset2_Old =GZMsg.fJTBL_Mobset2_Old + GZMsg.fLSKHAdd+GZMsg.fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(GZMsg.szJTBL_Mobset2_Old , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , GZMsg.fJTBL_Mobset2_Old , group.GZ_M2_Old,ywy.GZ_FJA_JB6,GZMsg.fLSKHAdd,GZMsg.fKHWHAdd,group.GZ_M2_New_Add , GZMsg.lNewKHCount ); //计算MAS提成 double fMasJB1=group.GZ_M3_DJ; double fMasJB2=group.GZ_M3_New; double fMasBAdd=group.GZ_M3_New_Add; double fMasBMax=group.GZ_M3_ADC_TC_M; GZMsg.fJTBL_Mas1 = fMasBAdd*GZMsg.lNewKHCount; if (GZMsg.fJTBL_Mas1>fMasBMax) GZMsg.fJTBL_Mas1 = fMasBMax; //每个新客户提成点数*新客户数量 _stprintf(GZMsg.szJTBL_Mas1 , _T("%.2f%%(%.2f%%*%d)") , GZMsg.fJTBL_Mas1 , fMasBAdd , GZMsg.lNewKHCount ); //计算软件提成 GZMsg.fJTBL_Mobset_Soft1 = 4+ywy.GZ_FJA_JB6+group.GZ_M1_New_Add * GZMsg.lNewKHCount; //if (GZMsg.fJTBL_Mobset1>group.GZ_M1_New_Max) // GZMsg.fJTBL_Mobset1 = group.GZ_M1_New_Max; if ( ywy.GZ_FJA_JB6+group.GZ_M1_New_Add * GZMsg.lNewKHCount > group.GZ_M1_New_Max ) //营销级别与客户数量A值最大值 { GZMsg.fJTBL_Mobset_Soft1 = 4 + group.GZ_M1_New_Max; } GZMsg.fJTBL_Mobset_Soft1 =GZMsg.fJTBL_Mobset_Soft1 + GZMsg.fLSKHAdd+GZMsg.fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(GZMsg.szJTBL_Mobset_Soft1 , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , GZMsg.fJTBL_Mobset_Soft1 , 4.0f,ywy.GZ_FJA_JB6,GZMsg.fLSKHAdd,GZMsg.fKHWHAdd,group.GZ_M1_New_Add , GZMsg.lNewKHCount ); //计算提成及业绩 if ( bNext ) { Process_GZMsg_GetTC(&GZMsg ,TC , &m_AdoRS ,&m_AdoRS2, 1 ,ywy,group,pGZMsg->tBegin,pGZMsg->tEnd); Process_GZMsg_GetTC(&GZMsg ,TC , &AdoRS2 ,&AdoRS22, 2 ,ywy,group,pGZMsg->tBegin,pGZMsg->tEnd); // Process_GZMsg_GetTC(&GZMsg ,TC , &AdoRS3 ,&AdoRS32, 3 ,ywy,group,pGZMsg->tBegin,pGZMsg->tEnd); } //计算激励奖 if ( bNext ) { GZMsg.fJLJJ = 0; GZMsg.fJLJJ_CE = group.GZ_RWJLQ1 - GZMsg.fTotalYZ; if ( GZMsg.fTotalYZ>= group.GZ_RWJLQ1 ) { GZMsg.fJLJJ = group.GZ_RWJLJ1; GZMsg.fJLJJ_CE = group.GZ_RWJLQ2 - GZMsg.fTotalYZ; } if ( GZMsg.fTotalYZ>= group.GZ_RWJLQ2 ) { GZMsg.fJLJJ = group.GZ_RWJLJ2; GZMsg.fJLJJ_CE = group.GZ_RWJLQ3 - GZMsg.fTotalYZ; } if ( GZMsg.fTotalYZ>= group.GZ_RWJLQ3 ) { GZMsg.fJLJJ = group.GZ_RWJLJ3; GZMsg.fJLJJ_CE = 0; } } //计算冠军奖 SYSTEMTIME tt2;GetLocalTime(&tt2); //if ( bNext && !pGZMsg->bYWYQuery && (group.GZ_BMDHKH>0 || (group.GZ_GJJ_TC>0 && !ywy.bBMManager ))) //有冠军奖提成的部门或需要部门考核的才计算 if ( bNext && (group.GZ_BMDHKH>0 || (group.GZ_GJJ_TC>0 && !ywy.bBMManager ))) //有冠军奖提成的部门或需要部门考核的才计算 { ANS_GZMsgData OTherGZ[32]={0}; long lOtherGZCount=0; //取部门所有员工业绩信息 //取本部门其它同事信息 str.Format( _T("select * from ywy where groupid=%d and ywyid!=%d") , ywy.lGroupID , pGZMsg->lYWYID ); m_AdoRS.Open(str); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("YWYID") , OTherGZ[lOtherGZCount].YWY.lYWYID); m_AdoRS.GetCollect( _T("Name") , OTherGZ[lOtherGZCount].YWY.szName); m_AdoRS.GetCollect( _T("LoginName") , OTherGZ[lOtherGZCount].YWY.szLoginName); m_AdoRS.GetCollect( _T("AgentID") , OTherGZ[lOtherGZCount].YWY.lAgentID); m_AdoRS.GetCollect( _T("GroupID") , OTherGZ[lOtherGZCount].YWY.lGroupID); m_AdoRS.GetCollect( _T("BMManager") , OTherGZ[lOtherGZCount].YWY.bBMManager); m_AdoRS.GetCollect( _T("GZ_GWGZ") , OTherGZ[lOtherGZCount].YWY.GZ_GWGZ); m_AdoRS.GetCollect( _T("GZ_GWBT") , OTherGZ[lOtherGZCount].YWY.GZ_GWBT); m_AdoRS.GetCollect( _T("GZ_WCBT") , OTherGZ[lOtherGZCount].YWY.GZ_WCBT); m_AdoRS.GetCollect( _T("GZ_CQJ") , OTherGZ[lOtherGZCount].YWY.GZ_CQJ); m_AdoRS.GetCollect( _T("GZ_M1_YWNL"), OTherGZ[lOtherGZCount].YWY.GZ_M1_YWNL); m_AdoRS.GetCollect( _T("GZ_M2_YWNL"), OTherGZ[lOtherGZCount].YWY.GZ_M2_YWNL); m_AdoRS.GetCollect( _T("GZ_M3_YWNL"), OTherGZ[lOtherGZCount].YWY.GZ_M3_YWNL); m_AdoRS.GetCollect( _T("GZ_JBRW") , OTherGZ[lOtherGZCount].YWY.GZ_JBRW); m_AdoRS.GetCollect( _T("GZ_JBSL") , OTherGZ[lOtherGZCount].YWY.GZ_JBSL); m_AdoRS.GetCollect( _T("GZ_LSKH") , OTherGZ[lOtherGZCount].YWY.GZ_LSKH); m_AdoRS.GetCollect( _T("GZ_DHSL") , OTherGZ[lOtherGZCount].YWY.GZ_DHSL); m_AdoRS.GetCollect( _T("GZ_NEWSL") , OTherGZ[lOtherGZCount].YWY.GZ_NEWSL); m_AdoRS.GetCollect( _T("GZ_CQTS") , OTherGZ[lOtherGZCount].YWY.GZ_CQTS); m_AdoRS.GetCollect( _T("GZ_QQGZ") , OTherGZ[lOtherGZCount].YWY.GZ_QQGZ); m_AdoRS.GetCollect( _T("GZ_ZBBT") , OTherGZ[lOtherGZCount].YWY.GZ_ZBBT); m_AdoRS.GetCollect( _T("GZ_QTBZ") , OTherGZ[lOtherGZCount].YWY.GZ_QTBZ); m_AdoRS.GetCollect( _T("GZ_QTCF") , OTherGZ[lOtherGZCount].YWY.GZ_QTCF); m_AdoRS.GetCollect( _T("GZ_SB") , OTherGZ[lOtherGZCount].YWY.GZ_SB); m_AdoRS.GetCollect( _T("GZ_GRSDS") , OTherGZ[lOtherGZCount].YWY.GZ_GRSDS); m_AdoRS.GetCollect( _T("GZ_SFGZ") , OTherGZ[lOtherGZCount].YWY.GZ_SFGZ); m_AdoRS.GetCollect( _T("GZ_LastGZ") , tt); tt.GetAsSystemTime(OTherGZ[lOtherGZCount].YWY.GZ_LastGZ); ANS_GZMsg_KH KH2[64]={0}; ANS_GZMsg_LS LS2[64]={0}; ANS_GZMsg_TC TC2[512]={0}; //取客户维护数 Process_GZMsg_GetKHWH(&OTherGZ[lOtherGZCount] ,KH2 , &m_AdoRS2 ,&m_AdoRS3, 1 ,OTherGZ[lOtherGZCount].YWY,group,tBegin2,tEnd2); Process_GZMsg_GetKHWH(&OTherGZ[lOtherGZCount] ,KH2 , &AdoRS2 ,&AdoRS22 , 2 ,OTherGZ[lOtherGZCount].YWY,group,tBegin2,tEnd2); // Process_GZMsg_GetKHWH(&OTherGZ[lOtherGZCount] ,KH2 , &AdoRS3 ,&AdoRS32 , 3 ,OTherGZ[lOtherGZCount].YWY,group,tBegin2,tEnd2); //取新客户数量 Process_GZMsg_GetKH(&OTherGZ[lOtherGZCount] ,KH2 , &m_AdoRS2 ,&m_AdoRS3, 1 ,OTherGZ[lOtherGZCount].YWY,group,tBegin2,tEnd2); Process_GZMsg_GetKH(&OTherGZ[lOtherGZCount] ,KH2 , &AdoRS2 ,&AdoRS22 , 2 ,OTherGZ[lOtherGZCount].YWY,group,tBegin2,tEnd2); // Process_GZMsg_GetKH(&OTherGZ[lOtherGZCount] ,KH2 , &AdoRS3 ,&AdoRS32 , 3 ,OTherGZ[lOtherGZCount].YWY,group,tBegin2,tEnd2); //新客户数量是否需要增加财务部录入的 OTherGZ[lOtherGZCount].lNewKHCount_Auto = OTherGZ[lOtherGZCount].lNewKHCount; if ( !bDR ) { OTherGZ[lOtherGZCount].lNewKHCount_CW = OTherGZ[lOtherGZCount].YWY.GZ_NEWSL; OTherGZ[lOtherGZCount].lNewKHCount = OTherGZ[lOtherGZCount].lNewKHCount+OTherGZ[lOtherGZCount].lNewKHCount_CW; } //取流失客户数量 Process_GZMsg_GetLS(&OTherGZ[lOtherGZCount] ,LS2 , &m_AdoRS2 ,&m_AdoRS3, 1 ,OTherGZ[lOtherGZCount].YWY,group,tBegin2,tEnd2); Process_GZMsg_GetLS(&OTherGZ[lOtherGZCount] ,LS2 , &AdoRS2 ,&AdoRS22 , 2 ,OTherGZ[lOtherGZCount].YWY,group,tBegin2,tEnd2); //Process_GZMsg_GetLS(&GZMsg ,LS , &AdoRS3 ,&AdoRS32, 3 ,ywy,group,tBegin2,tEnd2); //新客户数量是否需要增加财务部录入的 OTherGZ[lOtherGZCount].lLSKHCount_Auto = OTherGZ[lOtherGZCount].lLSCount; if ( !bDR ) { OTherGZ[lOtherGZCount].lLSKHCount_CW = OTherGZ[lOtherGZCount].YWY.GZ_LSKH; OTherGZ[lOtherGZCount].lLSKHCount = OTherGZ[lOtherGZCount].lLSCount+OTherGZ[lOtherGZCount].lLSKHCount_CW; } //计算各项提成比例 { double f6MonYZ=0; //前6个月业绩 str.Format( _T("select sum(gz_totalYZ) as gz_totalYZ from YWY_GZJS where YWYID=%d and GZ_Mon>='%04d%02d01' and GZ_Mon<='%04d%02d01'") , pGZMsg->lYWYID,tYZBegin.wYear,tYZBegin.wMonth,tYZEnd.wYear,tYZEnd.wMonth ); if ( m_AdoRS2.Open(str) && !m_AdoRS2.IsEOF() ) { m_AdoRS2.GetCollect(_T("gz_totalYZ") , f6MonYZ ); //前6个月业绩 } double fJB6=0; double fJB_Mas6=0; if ( f6MonYZ/6.0f > 60000.0f ) //前6个月平均每月大于6万 { fJB6=0.5f; fJB_Mas6=0.0f; } OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6 = fJB6; //业务能力加分 OTherGZ[lOtherGZCount].YWY.GZ_FJA_MASJB6=fJB_Mas6; //业务能力加分 OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6 = fJB6; //业务能力(营销级别) _stprintf(OTherGZ[lOtherGZCount].szYWNL, _T("%.2f%% [前6月业绩:%.2f 平均:%.2f]"),OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6,f6MonYZ,f6MonYZ/6.0f ); OTherGZ[lOtherGZCount].fLSKHAdd = OTherGZ[lOtherGZCount].YWY.GZ_M1_YWNL; double fffLSKHAdd=0.0f; if ( OTherGZ[lOtherGZCount].lLSKHCount<=0 ) { fffLSKHAdd = 0.5f; OTherGZ[lOtherGZCount].fLSKHAdd = OTherGZ[lOtherGZCount].fLSKHAdd + fffLSKHAdd; } if ( OTherGZ[lOtherGZCount].fLSKHAdd>0.5f ) OTherGZ[lOtherGZCount].fLSKHAdd = 0.5f; //流失客户加分[手工调整 + 自动计算(新客户-老客户)] _stprintf(OTherGZ[lOtherGZCount].szLSKH, _T("%.2f%% [%.2f%% + %.2f%%]"),OTherGZ[lOtherGZCount].fLSKHAdd,OTherGZ[lOtherGZCount].YWY.GZ_M1_YWNL,fffLSKHAdd ); //客户维护加分 OTherGZ[lOtherGZCount].fKHWHAdd = OTherGZ[lOtherGZCount].YWY.GZ_M2_YWNL; double fffWHAdd=0.0f; if ( (OTherGZ[lOtherGZCount].lNewKHCount-OTherGZ[lOtherGZCount].lLSKHCount>=4) && OTherGZ[lOtherGZCount].lKHAllCount>0 && OTherGZ[lOtherGZCount].lKHAllWHCount>0 && ((float)OTherGZ[lOtherGZCount].lKHAllWHCount/(float)OTherGZ[lOtherGZCount].lKHAllCount)>.30f ) { fffWHAdd = 0.5f; OTherGZ[lOtherGZCount].fKHWHAdd = OTherGZ[lOtherGZCount].fKHWHAdd + fffWHAdd; } if ( OTherGZ[lOtherGZCount].fKHWHAdd>0.5f ) OTherGZ[lOtherGZCount].fKHWHAdd = 0.5f; //客户维护加分[手工调整 + 自动计算(新客户-老客户)] _stprintf(OTherGZ[lOtherGZCount].szKHWH, _T("%.2f%% [%.2f%% + %.2f%%(%d-%d,%.2f%%(%d/%d))]"),OTherGZ[lOtherGZCount].fKHWHAdd,OTherGZ[lOtherGZCount].YWY.GZ_M2_YWNL,fffWHAdd,OTherGZ[lOtherGZCount].lNewKHCount,OTherGZ[lOtherGZCount].lLSKHCount,((float)OTherGZ[lOtherGZCount].lKHAllWHCount/(float)OTherGZ[lOtherGZCount].lKHAllCount)*100.0f,OTherGZ[lOtherGZCount].lKHAllWHCount,OTherGZ[lOtherGZCount].lKHAllCount ); //计算总提成比例 OTherGZ[lOtherGZCount].fJTBL_Mobset1 = group.GZ_M1_New+OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6+group.GZ_M1_New_Add * OTherGZ[lOtherGZCount].lNewKHCount; if (OTherGZ[lOtherGZCount].fJTBL_Mobset1>group.GZ_M1_New_Max) OTherGZ[lOtherGZCount].fJTBL_Mobset1 = group.GZ_M1_New_Max; OTherGZ[lOtherGZCount].fJTBL_Mobset1 =OTherGZ[lOtherGZCount].fJTBL_Mobset1 + OTherGZ[lOtherGZCount].fLSKHAdd+OTherGZ[lOtherGZCount].fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(OTherGZ[lOtherGZCount].szJTBL_Mobset1 , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , OTherGZ[lOtherGZCount].fJTBL_Mobset1 , group.GZ_M1_New,OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6,OTherGZ[lOtherGZCount].fLSKHAdd,OTherGZ[lOtherGZCount].fKHWHAdd,group.GZ_M1_New_Add , OTherGZ[lOtherGZCount].lNewKHCount ); OTherGZ[lOtherGZCount].fJTBL_Mobset1_Old = group.GZ_M1_Old+OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6+group.GZ_M1_New_Add * OTherGZ[lOtherGZCount].lNewKHCount; if (OTherGZ[lOtherGZCount].fJTBL_Mobset1_Old>group.GZ_M1_Old_Max) OTherGZ[lOtherGZCount].fJTBL_Mobset1_Old = group.GZ_M1_Old_Max; OTherGZ[lOtherGZCount].fJTBL_Mobset1_Old =OTherGZ[lOtherGZCount].fJTBL_Mobset1_Old + OTherGZ[lOtherGZCount].fLSKHAdd+OTherGZ[lOtherGZCount].fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(OTherGZ[lOtherGZCount].szJTBL_Mobset1_Old , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , OTherGZ[lOtherGZCount].fJTBL_Mobset1_Old , group.GZ_M1_Old,OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6,OTherGZ[lOtherGZCount].fLSKHAdd,OTherGZ[lOtherGZCount].fKHWHAdd,group.GZ_M1_New_Add , OTherGZ[lOtherGZCount].lNewKHCount ); OTherGZ[lOtherGZCount].fJTBL_Mobset2 = group.GZ_M2_New+OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6+group.GZ_M2_New_Add * OTherGZ[lOtherGZCount].lNewKHCount; if (OTherGZ[lOtherGZCount].fJTBL_Mobset2>group.GZ_M2_New_Max) OTherGZ[lOtherGZCount].fJTBL_Mobset2 = group.GZ_M2_New_Max; OTherGZ[lOtherGZCount].fJTBL_Mobset2 =OTherGZ[lOtherGZCount].fJTBL_Mobset2 + OTherGZ[lOtherGZCount].fLSKHAdd+OTherGZ[lOtherGZCount].fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(OTherGZ[lOtherGZCount].szJTBL_Mobset2 , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , OTherGZ[lOtherGZCount].fJTBL_Mobset2 , group.GZ_M2_New,OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6,OTherGZ[lOtherGZCount].fLSKHAdd,OTherGZ[lOtherGZCount].fKHWHAdd,group.GZ_M2_New_Add , OTherGZ[lOtherGZCount].lNewKHCount ); OTherGZ[lOtherGZCount].fJTBL_Mobset2_Old = group.GZ_M2_Old+OTherGZ[lOtherGZCount].YWY.GZ_FJA_JB6+group.GZ_M2_New_Add * OTherGZ[lOtherGZCount].lNewKHCount; if (OTherGZ[lOtherGZCount].fJTBL_Mobset2_Old>group.GZ_M2_Old_Max) OTherGZ[lOtherGZCount].fJTBL_Mobset2_Old = group.GZ_M2_Old_Max; OTherGZ[lOtherGZCount].fJTBL_Mobset2_Old =OTherGZ[lOtherGZCount].fJTBL_Mobset2_Old + OTherGZ[lOtherGZCount].fLSKHAdd+OTherGZ[lOtherGZCount].fKHWHAdd; //提成比例还要加上流失客户,客户维护两个比例 //基本提成+业务能力增加+每个新客户提成点数*新客户数量 _stprintf(OTherGZ[lOtherGZCount].szJTBL_Mobset2_Old , _T("%.2f%%(%.2f%%+%.2f%%+%.2f%%+%.2f%%+%.2f%%*%d)") , OTherGZ[lOtherGZCount].fJTBL_Mobset2_Old , group.GZ_M2_Old,ywy.GZ_FJA_JB6,OTherGZ[lOtherGZCount].fLSKHAdd,OTherGZ[lOtherGZCount].fKHWHAdd,group.GZ_M2_New_Add , OTherGZ[lOtherGZCount].lNewKHCount ); //计算MAS提成 double fMasJB1=group.GZ_M3_DJ; double fMasJB2=group.GZ_M3_New; double fMasBAdd=group.GZ_M3_New_Add; double fMasBMax=group.GZ_M3_ADC_TC_M; OTherGZ[lOtherGZCount].fJTBL_Mas1 = fMasBAdd*OTherGZ[lOtherGZCount].lNewKHCount; if (OTherGZ[lOtherGZCount].fJTBL_Mas1>fMasBMax) OTherGZ[lOtherGZCount].fJTBL_Mas1 = fMasBMax; //每个新客户提成点数*新客户数量 _stprintf(OTherGZ[lOtherGZCount].szJTBL_Mas1 , _T("%.2f%%(%.2f%%*%d)") , OTherGZ[lOtherGZCount].fJTBL_Mas1 , fMasBAdd , OTherGZ[lOtherGZCount].lNewKHCount ); } //计算提成及业绩 Process_GZMsg_GetTC(&OTherGZ[lOtherGZCount] ,TC2 , &m_AdoRS2 ,&m_AdoRS3, 1 ,OTherGZ[lOtherGZCount].YWY,group,pGZMsg->tBegin,pGZMsg->tEnd); Process_GZMsg_GetTC(&OTherGZ[lOtherGZCount] ,TC2 , &AdoRS2 ,&AdoRS22 , 2 ,OTherGZ[lOtherGZCount].YWY,group,pGZMsg->tBegin,pGZMsg->tEnd); // Process_GZMsg_GetTC(&OTherGZ[lOtherGZCount] ,TC2 , &AdoRS3 ,&AdoRS32 , 3 ,OTherGZ[lOtherGZCount].YWY,group,pGZMsg->tBegin,pGZMsg->tEnd); lOtherGZCount ++; m_AdoRS.MoveNext(); } if ( group.GZ_GJJ_TC>0 ) //计算冠军奖 { double fYYWYZ[32]={0}; long lYWYYZCount=0; fYYWYZ[lYWYYZCount]=GZMsg.fTotalYZ-ywy.GZ_JBRW; //自己的业绩,总业绩-基本任务后再比冠军奖 lYWYYZCount ++; for ( int i=0 ; i< lOtherGZCount ; i++ ) { if ( OTherGZ[i].YWY.bBMManager) //渠道部部门经理,或者7月份后所有部门经理不计算业绩 { } else { fYYWYZ[lYWYYZCount]=OTherGZ[i].fTotalYZ-OTherGZ[i].YWY.GZ_JBRW; //总业绩-基本任务后再比冠军奖 lYWYYZCount ++; } } //取出部门最大业绩 double dMaxYZ=0; for ( i=0 ; idMaxYZ ) dMaxYZ = fYYWYZ[i]; } if ( GZMsg.fTotalYZ-ywy.GZ_JBRW >= dMaxYZ ) //自己的业绩等于最大业绩,证明是冠军奖 { double fGJJ_TCBL = (float)(GZMsg.lNewKHCount-GZMsg.lLSKHCount)/group.GZ_BMDHSL; if (fGJJ_TCBL > group.GZ_BMDHKH ) { fGJJ_TCBL = group.GZ_BMDHKH; } GZMsg.fGJJ_TC = GZMsg.fTotalYZ * group.GZ_GJJ_TC /100.0f * fGJJ_TCBL; _stprintf( GZMsg.szGJJ_TC , _T("%.2f*%.2f%%*%.2f%%[(%d-%d)/%d]") , GZMsg.fTotalYZ,group.GZ_GJJ_TC,fGJJ_TCBL,GZMsg.lNewKHCount,GZMsg.lLSKHCount,group.GZ_BMDHSL ); } else { GZMsg.fGJJ_TC_CE = dMaxYZ-(GZMsg.fTotalYZ-ywy.GZ_JBRW); //离冠军奖业绩差额 } } /* if ( group.GZ_BMDHKH>0 && !bDR && group.GZ_BMDHSL>0) //不是当月的计算部门考核 { GZMsg.fBMKH_NC = -GZMsg.fTotalTC * group.GZ_BMDHKH/100.0f; _stprintf( GZMsg.szBMKH_NC , _T("%.2f*%.2f%%") , GZMsg.fTotalTC , group.GZ_BMDHKH ); //取部门总业绩 double dBMTC=GZMsg.fTotalTC; //先加上自己的提成 for ( int i=0 ; i< lOtherGZCount ; i++ ) { dBMTC += OTherGZ[i].fTotalTC; } GZMsg.fBMDH_ND = dBMTC*group.GZ_BMDHKH/100.0f*((double)ywy.GZ_DHSL/(double)group.GZ_BMDHSL); _stprintf( GZMsg.szBMKH_ND , _T("部门总提成*%.2f%%*%.2f%%(%d/%d)") , group.GZ_BMDHKH,((double)ywy.GZ_DHSL/(double)group.GZ_BMDHSL)*100.0f,ywy.GZ_DHSL,group.GZ_BMDHSL ); } */ } //计算数量奖 if ( bNext && GZMsg.lNewKHCount>=ywy.GZ_M3_YWNL ) { GZMsg.fSLJ = group.GZ_SLJ * (double)GZMsg.lNewKHCount; _stprintf( GZMsg.szSLJ , _T("%.2f*%d") , group.GZ_SLJ,GZMsg.lNewKHCount ); } //计算数量奖处罚 if ( bNext && GZMsg.lNewKHCount0 ) { //按数量扣 GZMsg.fLSKHCF = 0.0f; if ( GZMsg.lNewKHCount-GZMsg.lLSKHCount <4 ) { GZMsg.fLSKHCF = group.GZ_LSSL_3*(double)GZMsg.lLSKHCount; GZMsg.fLSKHCF = -GZMsg.fLSKHCF; _stprintf(GZMsg.szLSKHCF , _T("%.2f%%(%.2f*%d)") , GZMsg.fLSKHCF,group.GZ_LSSL_3,GZMsg.lLSKHCount); } //按比例扣 GZMsg.fLSKHCFBL = 0.0f; if ( GZMsg.lNewKHCount-GZMsg.lLSKHCount <0 ) { double fLSKHCFBL = group.GZ_LSSL_4*(double)(-(GZMsg.lNewKHCount-GZMsg.lLSKHCount)); GZMsg.fLSKHCFBL = -(GZMsg.fTotalTC+GZMsg.fJLJJ+GZMsg.fSLJ+GZMsg.fSLCF+GZMsg.fLSKHCF+GZMsg.fGJJ_TC)*fLSKHCFBL/100.0f; _stprintf(GZMsg.szLSKHCFBL , _T("%.2f[%.2f*(%.2f%%*(%d-%d))]") , GZMsg.fLSKHCFBL,(GZMsg.fTotalTC+GZMsg.fJLJJ+GZMsg.fSLJ+GZMsg.fSLCF+GZMsg.fLSKHCF+GZMsg.fGJJ_TC),group.GZ_LSSL_4,GZMsg.lLSKHCount,GZMsg.lNewKHCount); } } if ( bNext ) { //计算总工资金额 GZMsg.fGZTotal = ywy.GZ_GWGZ + //岗位工资 ywy.GZ_GWBT + //岗位补贴 ywy.GZ_WCBT + //午餐补贴 ywy.GZ_QQGZ + //缺勤工资 ywy.GZ_CQJ + //全勤奖 ywy.GZ_ZBBT + //值班补贴 ywy.GZ_QTBZ + //其它补助 ywy.GZ_QTCF + //其它处罚 ywy.GZ_SB + //社保 GZMsg.fTotalTC + //提成金额 GZMsg.fJLJJ + //激励奖金 GZMsg.fGJJ_TC + //冠金奖 GZMsg.fBMKH_NC + //部门考核(拿出) GZMsg.fBMDH_ND + //部门考核(拿到) GZMsg.fSLJ + //数量奖 GZMsg.fSLCF + //数量不达标处罚 GZMsg.fLSKHCF + //流失客户处罚 GZMsg.fLSKHCFBL; //流失客户处罚 //奖金、处罚统计 GZMsg.fJLCFTotal = //ywy.GZ_GWBT + //岗位补贴 //ywy.GZ_WCBT + //午餐补贴 //ywy.GZ_QQGZ + //缺勤工资 //ywy.GZ_CQJ + //全勤奖 //ywy.GZ_ZBBT + //值班补贴 //ywy.GZ_QTBZ + //其它补助 //ywy.GZ_QTCF + //其它处罚 GZMsg.fTotalTC + //提成金额 GZMsg.fJLJJ + //激励奖金 GZMsg.fGJJ_TC + //冠金奖 GZMsg.fBMKH_NC + //部门考核(拿出) GZMsg.fBMDH_ND + //部门考核(拿到) GZMsg.fSLJ + //数量奖 GZMsg.fSLCF + //数量不达标处罚 GZMsg.fLSKHCF + //流失客户处罚 GZMsg.fLSKHCFBL; //流失客户处罚 long lSize = sizeof(ANS_GZMsgData) + sizeof(ANS_GZMsg_KH)*GZMsg.lKHCount + sizeof(ANS_GZMsg_TC)*GZMsg.lTCCount + sizeof(ANS_GZMsg_LS)*GZMsg.lLSCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_GZMsgData * pGZ = (ANS_GZMsgData *)pSendData; ANS_GZMsg_KH * pKH = (ANS_GZMsg_KH *)(pSendData+sizeof(ANS_GZMsgData)); ANS_GZMsg_TC * pTC = (ANS_GZMsg_TC *)(pSendData+sizeof(ANS_GZMsgData)+sizeof(ANS_GZMsg_KH)*GZMsg.lKHCount); ANS_GZMsg_LS * pLS = (ANS_GZMsg_LS *)(pSendData+sizeof(ANS_GZMsgData)+sizeof(ANS_GZMsg_KH)*GZMsg.lKHCount+sizeof(ANS_GZMsg_TC)*GZMsg.lTCCount); GZMsg.bOK = true; GZMsg.YWY = ywy; GZMsg.Group=group; *pGZ = GZMsg; memcpy(pKH , &KH , sizeof(ANS_GZMsg_KH)*GZMsg.lKHCount ); memcpy(pTC , &TC , sizeof(ANS_GZMsg_TC)*GZMsg.lTCCount ); memcpy(pLS , &LS , sizeof(ANS_GZMsg_LS)*GZMsg.lLSCount ); SendFrame( SMSFUNC_GZMSG , (BYTE*)pSendData , lSize ); //发送返回 return 1; } else { GZMsg.bOK = false; _tcscpy(GZMsg.szErrMsg , strErrorMsg ); ANS_GZMsgData * pGZ = new ANS_GZMsgData; //权限不够,什么也不返回 *pGZ = GZMsg; SendFrame( SMSFUNC_GZMSG , (BYTE*)pGZ , sizeof(ANS_GZMsgData) ); //发送返回 return 1; } /* if ( pGZMsg->lYWYID>0 ) str.Format( _T("select * from YWYTJ where YWYID=%d and TJTime>='%04d%02d%02d' and TJTime<='%04d%02d%02d 23:59:59' order by TJTime desc") , pGZMsg->lYWYID , pGZMsg->tBegin.wYear,pGZMsg->tBegin.wMonth,1,pGZMsg->tEnd.wYear,pGZMsg->tEnd.wMonth,pGZMsg->tEnd.wDay ); else str.Format( _T("select * from YWYTJ where TJTime>='%04d%02d%02d' and TJTime<='%04d%02d%02d 23:59:59' order by TJTime desc") , pGZMsg->tBegin.wYear,pGZMsg->tBegin.wMonth,1,pGZMsg->tEnd.wYear,pGZMsg->tEnd.wMonth,pGZMsg->tEnd.wDay ); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if ( lCount<0 ) lCount=0; long lSize = sizeof(ANS_GZMsg) + sizeof(ANS_GZMsgData)*lCount ; BYTE * pSendData = new BYTE[lSize]; memset(pSendData,0,lSize); ANS_GZMsg * pHTRet = (ANS_GZMsg*)pSendData; ANS_GZMsgData * pHTData = (ANS_GZMsgData*)(pSendData+sizeof(ANS_GZMsg)); pHTRet->lCount = lCount; pHTRet->lType = pGZMsg->lType; long lTemp=0; COleDateTime t; if ( lCount>0 ) m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() && lTemplYWYID ); m_AdoRS.GetCollect(_T("UserCount") , pHTData->lUserCount ); m_AdoRS.GetCollect(_T("SMSCount") , pHTData->lSmsCount ); m_AdoRS.GetCollect(_T("HFCount") , pHTData->lHFCount ); m_AdoRS.GetCollect(_T("HFCount") , pHTData->lHFCount ); m_AdoRS.GetCollect(_T("UserCount_All") , pHTData->lUserCount_All ); m_AdoRS.GetCollect(_T("UserCount_Add") , pHTData->lUserCount_Add ); m_AdoRS.GetCollect(_T("UserCount_LS") , pHTData->lUserCount_LS ); m_AdoRS.GetCollect(_T("UserCount_LSFX") , pHTData->lUserCount_LSFX ); m_AdoRS.GetCollect(_T("TJTime") , t );t.GetAsSystemTime(pHTData->tTJTime); m_AdoRS.MoveNext(); lTemp++; pHTData ++; } SendFrame( SMSFUNC_GZMSG , (BYTE*)pSendData , lSize ); //发送返回 */ } if ( pGZMsg->lType ==1 ) //查询历史工资 { CString strSelect; if ( pGZMsg->lYWYID<=0) //查询所有业务员 { strSelect.Format( _T("select YWYID ,Name,GroupName,BMManager,sum(gz_totalYZ) as gz_totalYZ ,sum(gz_Total) as gz_Total , '20080101' as GZ_Mon , 0 as GZJSID from YWY_GZJS where GZ_Mon>='%04d%02d%02d' and GZ_Mon <='%04d%02d%02d 23:59:50' group by YWYID,Name,GroupName,BMManager") , pGZMsg->tBegin.wYear,pGZMsg->tBegin.wMonth,1,pGZMsg->tEnd.wYear,pGZMsg->tEnd.wMonth,1 ); } else { strSelect.Format( _T("select * from YWY_GZJS where YWYID=%d and GZ_Mon>='%04d%02d%02d' and GZ_Mon <='%04d%02d%02d 23:59:50' order by GZ_Mon") , pGZMsg->lYWYID , pGZMsg->tBegin.wYear,pGZMsg->tBegin.wMonth,1,pGZMsg->tEnd.wYear,pGZMsg->tEnd.wMonth,1 ); } BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GZMsgData) + sizeof(ANS_GZMsg_GZLS)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GZMsgData * pGZMsgRet = (ANS_GZMsgData *)pData; ANS_GZMsg_GZLS * pGZLS = (ANS_GZMsg_GZLS *)(pData+sizeof(ANS_GZMsgData)); pGZMsgRet->bOK = true; pGZMsgRet->lTCCount = lCount; //数据记录 pGZMsgRet->lType = pGZMsg->lType; pGZMsgRet->tBegin= pGZMsg->tBegin; pGZMsgRet->tEnd = pGZMsg->tEnd; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { COleDateTime t; m_AdoRS.GetCollect( _T("YWYID") , pGZLS->lYWYID); m_AdoRS.GetCollect( _T("GZJSID") , pGZLS->lGZID); m_AdoRS.GetCollect( _T("Name") , pGZLS->szName); m_AdoRS.GetCollect( _T("GroupName") , pGZLS->szGroupName); m_AdoRS.GetCollect( _T("BMManager") , pGZLS->bManager); m_AdoRS.GetCollect( _T("gz_totalYZ") , pGZLS->fTotalYZ); m_AdoRS.GetCollect( _T("gz_Total") , pGZLS->fTotalGZ); m_AdoRS.GetCollect( _T("GZ_Mon") , t);t.GetAsSystemTime(pGZLS->tGZMon); m_AdoRS.MoveNext(); pGZLS ++; } } SendFrame( SMSFUNC_GZMSG , (BYTE*)pData , lSize ); //发送返回 return 1; } if ( pGZMsg->lType ==2 ) //修改历史工资 { ANS_GZMsg_GZLS * pGZLS = (ANS_GZMsg_GZLS *)((BYTE*)pGZMsg+sizeof(REQ_GZMsg)); CString strSelect; strSelect.Format( _T("Update YWY_GZJS Set gz_totalYZ=%.2f , gz_Total=%.2f where GZJSID=%d") , pGZLS->fTotalYZ , pGZLS->fTotalGZ , pGZLS->lGZID ); BOOL b = m_AdoRS.Open( strSelect ); long lSize = sizeof(ANS_GZMsgData) + sizeof(ANS_GZMsg_GZLS); BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GZMsgData * pGZMsgRet = (ANS_GZMsgData *)pData; ANS_GZMsg_GZLS * pGZLSRet = (ANS_GZMsg_GZLS *)(pData+sizeof(ANS_GZMsgData)); pGZMsgRet->bOK = b; pGZMsgRet->lType = pGZMsg->lType; *pGZLSRet = *pGZLS; SendFrame( SMSFUNC_GZMSG , (BYTE*)pData , lSize ); //发送返回 return 1; } if ( pGZMsg->lType ==3 ) //删除历史工资 { ANS_GZMsg_GZLS * pGZLS = (ANS_GZMsg_GZLS *)((BYTE*)pGZMsg+sizeof(REQ_GZMsg)); CString strSelect; strSelect.Format( _T("delete from YWY_GZJS where GZJSID=%d") , pGZLS->lGZID ); BOOL b = m_AdoRS.Open( strSelect ); long lSize = sizeof(ANS_GZMsgData) + sizeof(ANS_GZMsg_GZLS); BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GZMsgData * pGZMsgRet = (ANS_GZMsgData *)pData; ANS_GZMsg_GZLS * pGZLSRet = (ANS_GZMsg_GZLS *)(pData+sizeof(ANS_GZMsgData)); pGZMsgRet->bOK = b; pGZMsgRet->lType = pGZMsg->lType; *pGZLSRet = *pGZLS; SendFrame( SMSFUNC_GZMSG , (BYTE*)pData , lSize ); //发送返回 return 1; } if ( pGZMsg->lType ==5 ) //结算工资 { BOOL bNext=true; CString strErrorMsg; CAdoConnection adoConnection2; CAdoRecordSet AdoRS2; CAdoRecordSet AdoRS22; CAdoConnection adoConnection3; CAdoRecordSet AdoRS3; CAdoRecordSet AdoRS32; if (bNext && adoConnection2.ConnectSQLServer(m_pSMSDlg->m_Setup.szDBName2,DEFAULT_DBNAME,m_pSMSDlg->m_Setup.szDBUser2,m_pSMSDlg->m_Setup.szDBPasswd2) ) { adoConnection2.SetCommandTimeout(7200); //设置连接超时时间 #ifdef SMSCENTER_USECLIENT adoConnection2.SetCursorLocation(adUseClient); //设置为本地游标类型 #endif AdoRS2.SetAdoConnection(&adoConnection2); AdoRS22.SetAdoConnection(&adoConnection2); } else { if ( bNext ) strErrorMsg = _T("连接平台2数据库失败!"); bNext =false; } if (bNext && adoConnection3.ConnectSQLServer(m_pSMSDlg->m_Setup.szDBName3,DEFAULT_DBNAME,m_pSMSDlg->m_Setup.szDBUser3,m_pSMSDlg->m_Setup.szDBPasswd3) ) { adoConnection3.SetCommandTimeout(7200); //设置连接超时时间 #ifdef SMSCENTER_USECLIENT adoConnection2.SetCursorLocation(adUseClient); //设置为本地游标类型 #endif AdoRS3.SetAdoConnection(&adoConnection3); AdoRS32.SetAdoConnection(&adoConnection3); } else { if ( bNext ) strErrorMsg = _T("连接平台3数据库失败!"); bNext =false; } ANS_GZMsgData * pGZ = (ANS_GZMsgData *)((BYTE*)pGZMsg+sizeof(REQ_GZMsg)); ANS_GZMsg_TC2 * pTC = (ANS_GZMsg_TC2 *)((BYTE*)pGZMsg+sizeof(REQ_GZMsg)+sizeof(ANS_GZMsgData)); ANS_GZMsgData GZMsg=*pGZ; GZMsg.lType = pGZMsg->lType; GZMsg.tBegin= pGZMsg->tBegin; GZMsg.tEnd = pGZMsg->tEnd; if ( m_AdoRS.Open(_T("YWY_GZJS") , adCmdTable) ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect(_T("YWYID") , pGZ->YWY.lYWYID ); m_AdoRS.PutCollect(_T("Name") , pGZ->YWY.szName ); m_AdoRS.PutCollect(_T("GroupID") , pGZ->Group.lGroupID ); m_AdoRS.PutCollect(_T("GroupName") , pGZ->Group.szName); m_AdoRS.PutCollect(_T("BMManager") , pGZ->YWY.bBMManager); m_AdoRS.PutCollect(_T("GZ_Mon") , pGZ->tBegin); m_AdoRS.PutCollect(_T("GZ_GWGZ") , pGZ->YWY.GZ_GWGZ); m_AdoRS.PutCollect(_T("GZ_GWBT") , pGZ->YWY.GZ_GWBT); m_AdoRS.PutCollect(_T("GZ_WCBT") , pGZ->YWY.GZ_WCBT); m_AdoRS.PutCollect(_T("GZ_CQJ") , pGZ->YWY.GZ_CQJ); m_AdoRS.PutCollect(_T("GZ_JBRW") , pGZ->YWY.GZ_JBRW); m_AdoRS.PutCollect(_T("GZ_LSKH") , pGZ->lLSCount); m_AdoRS.PutCollect(_T("GZ_DHSL") , pGZ->YWY.GZ_DHSL); m_AdoRS.PutCollect(_T("GZ_NEWSL") , pGZ->lKHCount); m_AdoRS.PutCollect(_T("GZ_CQTS") , pGZ->YWY.GZ_CQTS); m_AdoRS.PutCollect(_T("GZ_QQGZ") , pGZ->YWY.GZ_QQGZ); m_AdoRS.PutCollect(_T("GZ_ZBBT") , pGZ->YWY.GZ_ZBBT); m_AdoRS.PutCollect(_T("GZ_QTBZ") , pGZ->YWY.GZ_QTBZ); m_AdoRS.PutCollect(_T("GZ_QTCF") , pGZ->YWY.GZ_QTCF); m_AdoRS.PutCollect(_T("GZ_SB") , pGZ->YWY.GZ_SB); m_AdoRS.PutCollect(_T("GZ_GRSDS") , pGZ->YWY.GZ_GRSDS); m_AdoRS.PutCollect(_T("GZ_SFGZ") , pGZ->YWY.GZ_SFGZ); m_AdoRS.PutCollect(_T("GZ_TotalSR") , pGZ->fTotalSR); m_AdoRS.PutCollect(_T("GZ_TotalYZ") , pGZ->fTotalYZ); m_AdoRS.PutCollect(_T("GZ_TotalTC") , pGZ->fTotalTC); m_AdoRS.PutCollect(_T("GZ_JLJJ") , pGZ->fJLJJ); m_AdoRS.PutCollect(_T("GZ_GJJ_TC") , pGZ->fGJJ_TC); m_AdoRS.PutCollect(_T("GZ_BMKH_NC") , pGZ->fBMKH_NC); m_AdoRS.PutCollect(_T("GZ_BMKH_ND") , pGZ->fBMDH_ND); m_AdoRS.PutCollect(_T("GZ_SLJ") , pGZ->fSLJ); m_AdoRS.PutCollect(_T("GZ_SLCF") , pGZ->fSLCF); m_AdoRS.PutCollect(_T("GZ_LSKHCF") , pGZ->fLSKHCF); m_AdoRS.PutCollect(_T("GZ_LSKHCFBL") , pGZ->fLSKHCFBL); m_AdoRS.PutCollect(_T("GZ_Total") , pGZ->fGZTotal); m_AdoRS.Update(); m_AdoRS.Close(); } else { if ( bNext ) strErrorMsg = _T("连接平台3数据库失败!"); bNext =false; } if ( bNext ) { str.Format( _T("update ywy set GZ_LastGZ='%04d.%02d.01' where ywyid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth , pGZ->YWY.lYWYID ); if ( !m_AdoRS.Open(str) ) { if ( bNext ) strErrorMsg = _T("更新业务员最后工资月份失败!"); bNext =false; } } if ( bNext ) { for ( int i=0 ; i< pGZ->lTCCount ; i++ ) { switch( pTC->lPTNum ) { case 1: if ( pTC->lUserType == 1 ) { str.Format( _T("update Agent_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); } else { switch(pTC->lPayType) { case 1: case 0: default: str.Format( _T("update corp_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); break; case 5: str.Format( _T("update Func_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; case 6: str.Format( _T("update Mon_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); break; case 8: str.Format( _T("update yys_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; case 9: str.Format( _T("update mms_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; } } m_AdoRS.Open(str); break; case 2: if ( pTC->lUserType == 1 ) { str.Format( _T("update Agent_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); } else { switch(pTC->lPayType) { case 1: case 0: default: str.Format( _T("update corp_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); break; case 5: str.Format( _T("update Func_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; case 6: str.Format( _T("update Mon_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); break; case 8: str.Format( _T("update yys_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; case 9: str.Format( _T("update mms_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; } } AdoRS2.Open(str); break; case 3: if ( pTC->lUserType == 1 ) { str.Format( _T("update Agent_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); } else { switch(pTC->lPayType) { case 1: case 0: default: str.Format( _T("update corp_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); break; case 5: str.Format( _T("update Func_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; case 6: str.Format( _T("update Mon_pay set TC_Time='%04d.%02d.01', FP_Award='%.2f' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->fFP_Award,pTC->lPayID); break; case 8: str.Format( _T("update yys_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; case 9: str.Format( _T("update mms_pay set TC_Time='%04d.%02d.01' where payid=%d") , pGZ->tBegin.wYear,pGZ->tBegin.wMonth,pTC->lPayID); break; } } AdoRS3.Open(str); break; } pTC ++; } } if ( bNext ) { GZMsg.bOK = true; ANS_GZMsgData * pGZ2 = new ANS_GZMsgData; //权限不够,什么也不返回 *pGZ2 = GZMsg; SendFrame( SMSFUNC_GZMSG , (BYTE*)pGZ2 , sizeof(ANS_GZMsgData) ); //发送返回 return 1; } else { GZMsg.bOK = false; _tcscpy(GZMsg.szErrMsg , strErrorMsg ); ANS_GZMsgData * pGZ2 = new ANS_GZMsgData; //权限不够,什么也不返回 *pGZ2 = GZMsg; SendFrame( SMSFUNC_GZMSG , (BYTE*)pGZ2 , sizeof(ANS_GZMsgData) ); //发送返回 return 1; } } } catch(...) { return 0; } return 0; } long CProcessSocket::Process_GZMsg_GetKH(ANS_GZMsgData *pGZMsg, ANS_GZMsg_KH *pKH, CAdoRecordSet *pAdoRS, CAdoRecordSet *pAdoRS2, long lPTNum, ANS_GetYWYData YWY, ANS_GetYWYGroupData Group, SYSTEMTIME tBegin, SYSTEMTIME tEnd) { CString str; long lUserCount=0; long lYWYID = YWY.lYWYID; if ( lPTNum == 2 || lPTNum == 3 ) //其它平台,重新取业务员 ID { lYWYID = 0; str.Format( _T("select * from ywy where Name='%s'") , YWY.szName ); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect( _T("YWYID") , lYWYID ); } else { return 0; } } //取新的终端客户 COleDateTime t; str.Format( _T("select * from corp where YWYID=%d and AgentID<=0 and regtime>='%04d%02d%02d' and regtime<'%04d%02d%02d %02d:00:00' order by corpid") , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pAdoRS->GetCollect( _T("CorpID") ,pKH[pGZMsg->lKHCount].lCorpID ); pAdoRS->GetCollect( _T("CorpName") ,pKH[pGZMsg->lKHCount].szName ); pAdoRS->GetCollect( _T("RegTime") ,t );t.GetAsSystemTime(pKH[pGZMsg->lKHCount].tRegTime ); pKH[pGZMsg->lKHCount].lUserType = 0; //终端客户 pKH[pGZMsg->lKHCount].lPTNum = lPTNum; //计算第一次充值金额。 pKH[pGZMsg->lKHCount].fFirstPay=0; /* if ( lPTNum ==3 ) //adc平台的只查adc充值记录 str.Format( _T("select top 1 * from corp_pay where corpid=%d and Price>=99 and paytype=1 and paytime>'%04d%02d01' order by PayTime" ) , pKH[pGZMsg->lKHCount].lCorpID,tBegin.wYear,tBegin.wMonth ); else str.Format( _T("select top 1 * from corp_pay where corpid=%d and Price>=99 and paytime>'%04d%02d01' order by PayTime" ) , pKH[pGZMsg->lKHCount].lCorpID,tBegin.wYear,tBegin.wMonth ); */ //计算整月充值记录 if ( lPTNum ==3 ) //adc平台的只查adc充值记录 str.Format( _T("select sum(Price) as Price from corp_pay where corpid=%d and Price>=99 and paytype=1 and YSType=0 and paytime>'%04d%02d%02d' and paytime<'%04d%02d%02d %02d:00:00'" ) , pKH[pGZMsg->lKHCount].lCorpID,tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour ); else str.Format( _T("select sum(Price) as Price from corp_pay where corpid=%d and Price>=99 and YSType=0 and paytime>'%04d%02d%02d' and paytime<'%04d%02d%02d %02d:00:00'" ) , pKH[pGZMsg->lKHCount].lCorpID,tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour ); if ( pAdoRS2->Open(str) && ! pAdoRS2->IsEOF() ) { pAdoRS2->GetCollect( _T("Price") , pKH[pGZMsg->lKHCount].fFirstPay ); pAdoRS2->Close(); //判断客户是否为推荐客户 pKH[pGZMsg->lKHCount].bCommendKF = false; str.Format( _T("select * from commend where Status=2 and TJ_CorpID=%d") , pKH[pGZMsg->lKHCount].lCorpID ); if ( pAdoRS2->Open(str) && ! pAdoRS2->IsEOF() ) { pKH[pGZMsg->lKHCount].bCommendKF = true; } /* //计算是否属于新客户 double qd=Group.GZ_M1_KH_M; if ( lPTNum == 2 ) qd=Group.GZ_M2_KH_M; if ( lPTNum == 3 ) qd=Group.GZ_M3_KH_M; if (pKH[pGZMsg->lKHCount].fFirstPay >= qd ) { pKH[pGZMsg->lKHCount].bNewKF=true; pGZMsg->lNewKHCount ++; } */ //按区段计算数新客户数量 /* 1、当月累计低于3000元的客户,按充值金额相加,每达到3000元的算1个客户。 2、当月累计金额大于等于3000元小于10000元的,算1个客户。 3、当月累计金额大于等于10000元小于30000元的,算2个客户。 4、当月累计金额大于等于30000元小于50000元的的,算3个客户。 5、当月累计金额大于等于50000元的,算4个客户。 */ pKH[pGZMsg->lKHCount].lNewKFCount = 0; if ( pKH[pGZMsg->lKHCount].fFirstPay >= 50000.0f ) { pKH[pGZMsg->lKHCount].lNewKFCount=4; } if (pKH[pGZMsg->lKHCount].lNewKFCount<=0 && pKH[pGZMsg->lKHCount].fFirstPay >= 30000.0f ) { pKH[pGZMsg->lKHCount].lNewKFCount=3; } if (pKH[pGZMsg->lKHCount].lNewKFCount<=0 && pKH[pGZMsg->lKHCount].fFirstPay >= 10000.0f ) { pKH[pGZMsg->lKHCount].lNewKFCount=2; } if (pKH[pGZMsg->lKHCount].lNewKFCount<=0 && pKH[pGZMsg->lKHCount].fFirstPay >= 3000.0f ) { pKH[pGZMsg->lKHCount].lNewKFCount=1; } /* //自7月份起,>1000 && <3000的推荐客户不计算为新客户 if (pKH[pGZMsg->lKHCount].lNewKFCount<=0 && pKH[pGZMsg->lKHCount].fFirstPay >= 1000.0f && pKH[pGZMsg->lKHCount].bCommendKF ) //推荐客户,>1000算新客户 { pKH[pGZMsg->lKHCount].lNewKFCount=1; } */ if (pKH[pGZMsg->lKHCount].lNewKFCount>0) { pGZMsg->lNewKHCount += pKH[pGZMsg->lKHCount].lNewKFCount; } } pGZMsg->lKHCount++; lUserCount++; pAdoRS->MoveNext(); } //取新的代理客户 //COleDateTime t; str.Format( _T("select * from agent where YWYID=%d and Createtime>='%04d%02d%02d' and Createtime<'%04d%02d%02d %02d:00:00' order by agentid") , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pAdoRS->GetCollect( _T("AgentID") ,pKH[pGZMsg->lKHCount].lCorpID ); pAdoRS->GetCollect( _T("Name") ,pKH[pGZMsg->lKHCount].szName ); pAdoRS->GetCollect( _T("Createtime") ,t );t.GetAsSystemTime(pKH[pGZMsg->lKHCount].tRegTime ); pKH[pGZMsg->lKHCount].lUserType = 1; //代理客户 pKH[pGZMsg->lKHCount].lPTNum = lPTNum; //计算第一次充值金额。 pKH[pGZMsg->lKHCount].fFirstPay=0; if ( lPTNum ==3 ) //adc平台的只查adc充值记录 str.Format( _T("select sum(JFPrice) as Price from corp_pay where corpid in (select corpid from corp where agentid=%d) and Price>=99 and paytype=1 and paytime>'%04d%02d%02d' and paytime<'%04d%02d%02d %02d:00:00'" ) , pKH[pGZMsg->lKHCount].lCorpID,tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour ); else str.Format( _T("select sum(JFPrice) as Price from agent_pay where agentid=%d and JFPrice>=99 and paytime>'%04d%02d%02d' and paytime<'%04d%02d%02d %02d:00:00'" ) , pKH[pGZMsg->lKHCount].lCorpID,tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour ); if ( pAdoRS2->Open(str) && ! pAdoRS2->IsEOF() ) { pAdoRS2->GetCollect( _T("Price") , pKH[pGZMsg->lKHCount].fFirstPay ); pAdoRS2->Close(); //计算是否属于新客户 pKH[pGZMsg->lKHCount].lNewKFCount = 0; if ( pKH[pGZMsg->lKHCount].fFirstPay >= 50000.0f ) { pKH[pGZMsg->lKHCount].lNewKFCount=4; } if (pKH[pGZMsg->lKHCount].lNewKFCount<=0 && pKH[pGZMsg->lKHCount].fFirstPay >= 30000.0f ) { pKH[pGZMsg->lKHCount].lNewKFCount=3; } if (pKH[pGZMsg->lKHCount].lNewKFCount<=0 && pKH[pGZMsg->lKHCount].fFirstPay >= 10000.0f ) { pKH[pGZMsg->lKHCount].lNewKFCount=2; } if (pKH[pGZMsg->lKHCount].lNewKFCount<=0 && pKH[pGZMsg->lKHCount].fFirstPay >= 3000.0f ) { pKH[pGZMsg->lKHCount].lNewKFCount=1; } //if (pKH[pGZMsg->lKHCount].lNewKFCount<=0 && pKH[pGZMsg->lKHCount].fFirstPay >= 1000.0f && pKH[pGZMsg->lKHCount].bCommendKF ) //推荐客户,>1000算新客户 //{ // pKH[pGZMsg->lKHCount].lNewKFCount=1; //} if (pKH[pGZMsg->lKHCount].lNewKFCount>0) { pGZMsg->lNewKHCount += pKH[pGZMsg->lKHCount].lNewKFCount; } } pGZMsg->lKHCount++; lUserCount++; pAdoRS->MoveNext(); } return lUserCount; } long CProcessSocket::Process_GZMsg_GetKHWH(ANS_GZMsgData *pGZMsg, ANS_GZMsg_KH *pKH, CAdoRecordSet *pAdoRS, CAdoRecordSet *pAdoRS2, long lPTNum, ANS_GetYWYData YWY, ANS_GetYWYGroupData Group, SYSTEMTIME tBegin, SYSTEMTIME tEnd) { CString str; long lUserCount=0; long lYWYID = YWY.lYWYID; if ( lPTNum == 2 || lPTNum == 3 ) //其它平台,重新取业务员 ID { lYWYID = 0; str.Format( _T("select * from ywy where Name='%s'") , YWY.szName ); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect( _T("YWYID") , lYWYID ); } else { return 0; } } //取所有终端客户 long lKHTemp=0; str.Format( _T("select count(*) as count from corp where YWYID=%d and AgentID<=0") , lYWYID ); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("count") , lKHTemp ); pGZMsg->lKHAllCount += lKHTemp; } //取所有代理商客户 str.Format( _T("select count(*) as count from agent where YWYID=%d") , lYWYID ); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("count") , lKHTemp ); pGZMsg->lKHAllCount += lKHTemp; } //取维护记录 str.Format( _T("select count(*) as count from corp_bz where CreateTime>='%04d%02d%02d' and CreateTime<='%04d%02d%02d %02d:00:00' and UserType=0 and (BZType=1 or BZType=2) and NRType=1 and CreateUser='%s'") , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour,YWY.szLoginName); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect(_T("count") , lKHTemp ); pGZMsg->lKHAllWHCount += lKHTemp; } return pGZMsg->lKHAllCount; } long CProcessSocket::Process_GZMsg_GetTC(ANS_GZMsgData *pGZMsg, ANS_GZMsg_TC *pTC, CAdoRecordSet *pAdoRS, CAdoRecordSet *pAdoRS2, long lPTNum, ANS_GetYWYData YWY, ANS_GetYWYGroupData Group, SYSTEMTIME tBegin, SYSTEMTIME tEnd) { CString str; long lUserCount=0; long lYWYID = YWY.lYWYID; COleDateTime t; if ( lPTNum == 2 || lPTNum == 3 ) //其它平台,重新取业务员 ID { lYWYID = 0; str.Format( _T("select * from ywy where Name='%s'") , YWY.szName ); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect( _T("YWYID") , lYWYID ); } else { return 0; } } COleDateTime end(tEnd); //取终端客户提成 if ( pGZMsg->bOnlyJS ) { //只取已结算数据,日期减1 long lMon = tEnd.wMonth; lMon--; if ( lMon<=0 ) { lMon = 12; tEnd.wYear --; } tEnd.wMonth = lMon; if ( lPTNum ==3 )// adc平台 str.Format( _T("select * from corp_pay LEFT OUTER JOIN corp ON corp.corpid = corp_pay.corpid where (corp_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) or corp_pay.corpid in ( select corpid from corp where agentid in (select agentid from agent where ywyid=%d) )) and TC_Time='%04d%02d01 00:00:00' and corp_pay.agentid=0 and YSType=0 order by PayTime") , lYWYID , lYWYID , tEnd.wYear,tEnd.wMonth); else str.Format( _T("select * from corp_pay LEFT OUTER JOIN corp ON corp.corpid = corp_pay.corpid where corp_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) and TC_Time='%04d%02d01 00:00:00' and corp_pay.agentid=0 and YSType=0 order by PayTime") , lYWYID , tEnd.wYear,tEnd.wMonth); } else { if ( lPTNum ==3 )// adc平台 str.Format( _T("select * from corp_pay LEFT OUTER JOIN corp ON corp.corpid = corp_pay.corpid where (corp_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) or corp_pay.corpid in ( select corpid from corp where agentid in (select agentid from agent where ywyid=%d) )) and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null and corp_pay.agentid=0 and YSType=0 order by PayTime") , lYWYID , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); else str.Format( _T("select * from corp_pay LEFT OUTER JOIN corp ON corp.corpid = corp_pay.corpid where corp_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null and corp_pay.agentid=0 and YSType=0 order by PayTime") , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); } pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pTC[pGZMsg->lTCCount].lUserType = 0; //终端客户 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); pAdoRS->GetCollect( _T("CorpID") ,pTC[pGZMsg->lTCCount].lCorpID ); pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("CorpName"),pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("RegTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); pAdoRS->GetCollect( _T("YS_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); pAdoRS->GetCollect( _T("HT_Recv") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tHTTime ); pAdoRS->GetCollect( _T("Price") ,pTC[pGZMsg->lTCCount].fPrice ); pTC[pGZMsg->lTCCount].fPrice2 = pTC[pGZMsg->lTCCount].fPrice; pAdoRS->GetCollect( _T("SmsCount"),pTC[pGZMsg->lTCCount].lSmsCount ); pAdoRS->GetCollect( _T("TCPer"),pTC[pGZMsg->lTCCount].fTCBL ); pAdoRS->GetCollect( _T("AgentID"),pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("LPType"),pTC[pGZMsg->lTCCount].lLPType ); pAdoRS->GetCollect( _T("LPPrice"),pTC[pGZMsg->lTCCount].fLPPrice ); pAdoRS->GetCollect( _T("Commend_VipInt"),pTC[pGZMsg->lTCCount].lCommend_VipInt ); if ( pTC[pGZMsg->lTCCount].lLPType<=0 ) pTC[pGZMsg->lTCCount].fLPPrice = 0; if ( pTC[pGZMsg->lTCCount].fLPPrice>0 ) //如果有赠送,则实际计算的金额为扣减赠送金额后的值 pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice-pTC[pGZMsg->lTCCount].fLPPrice; if ( pTC[pGZMsg->lTCCount].lCommend_VipInt>0 ) //如果有推荐积分,则实际计算的金额为扣减积分折算金额后的值 { pTC[pGZMsg->lTCCount].lCommend_VipInt_Price = (float)pTC[pGZMsg->lTCCount].lCommend_VipInt * 0.2f; //每积分按0.2元计算 pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice-pTC[pGZMsg->lTCCount].lCommend_VipInt_Price; } if ( pTC[pGZMsg->lTCCount].fTCBL<=0.0f || pTC[pGZMsg->lTCCount].fTCBL>100.0f ) pTC[pGZMsg->lTCCount].fTCBL = 100.0f; if ( lPTNum==3 ) { pAdoRS->GetCollect( _T("PayType"),pTC[pGZMsg->lTCCount].lPayType ); if ( pTC[pGZMsg->lTCCount].lAgentID>0 && pTC[pGZMsg->lTCCount].lPayType!=1 ) //代理商客户,并且不是adc充值 { pAdoRS->MoveNext(); memset(&pTC[pGZMsg->lTCCount], 0 , sizeof(pTC[pGZMsg->lTCCount]) ); continue; } pAdoRS->GetCollect( _T("AdcStatus"),pTC[pGZMsg->lTCCount].lAdcStatus ); } pAdoRS->GetCollect( _T("YS"),pTC[pGZMsg->lTCCount].bYS ); pAdoRS->GetCollect( _T("Test"),pTC[pGZMsg->lTCCount].bTest ); BOOL bJT=true; if ( pTC[pGZMsg->lTCCount].bTest ) //测试的,不用计提成 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("测试或转换的短信") ); } if ( pTC[pGZMsg->lTCCount].fPrice==0.0f ) //缴费金额为0 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("缴费金额为0") ); } if (pTC[pGZMsg->lTCCount].lPayType!=1 && pTC[pGZMsg->lTCCount].lSmsCount==0 ) //缴费金额为0 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("短信条数为0") ); } if (!bJT && (m_ucUserType == LOGINTYPE_YWY || pGZMsg->bOnlyTC) ) //如果是业务员查询或只查询业绩部分,不显示不计题的短信 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("") ); pAdoRS->MoveNext(); memset(&pTC[pGZMsg->lTCCount], 0 , sizeof(pTC[pGZMsg->lTCCount]) ); continue; } if ( lPTNum==3 && pTC[pGZMsg->lTCCount].lPayType==1) { if ( pTC[pGZMsg->lTCCount].lAdcStatus==0 ) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("ADC充值未处理") ); pTC[pGZMsg->lTCCount].bJBJT = true; } if ( pTC[pGZMsg->lTCCount].lAdcStatus==1 ) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("ADC充值处理中") ); pTC[pGZMsg->lTCCount].bJBJT = true; } if ( pTC[pGZMsg->lTCCount].lAdcStatus==3 ) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("ADC充值已注销") ); } } if ( pTC[pGZMsg->lTCCount].bYS ) //应收的,暂不算提成 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("应收") ); pTC[pGZMsg->lTCCount].bJBJT = true; //判断应收款是否超过3个月 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if (!pTC[pGZMsg->lTCCount].bTest && pTC[pGZMsg->lTCCount].fPrice>0.0f && //非测试的应收,金额大于0 tTemp.GetStatus() == COleDateTime::valid && COleDateTime(tEnd)-tTemp>COleDateTimeSpan(62,0,0,0) ) { pGZMsg->bYSOver3Mon = true; //有应收款超过3个月,不计算提成 pTC[pGZMsg->lTCCount].bYSOver3Mon = true; } } COleDateTime tTemp(pTC[pGZMsg->lTCCount].tYSTime); if ( tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未收到款") ); pTC[pGZMsg->lTCCount].bJBJT = true; } if (pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && //2008年以前的不考核合同回收 pTC[pGZMsg->lTCCount].lAgentID<=0 && //代理商客户不考核合同回收 pTC[pGZMsg->lTCCount].tHTTime.wYear<2000) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } tTemp = COleDateTime(pTC[pGZMsg->lTCCount].tHTTime); if ( pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } //计算单价 if ( _tcslen(pTC[pGZMsg->lTCCount].BJTBZ)<=0 ) //计算单价及提成 { if ( pTC[pGZMsg->lTCCount].lPayType == 1 ) //adc提成 { if ( pTC[pGZMsg->lTCCount].lAgentID >0 ) //渠道客户 { double dTemp=Group.GZ_M3_JBTC+YWY.GZ_M3_YWNL+Group.GZ_M3_New_Add * pGZMsg->lNewKHCount; if ( dTemp > Group.GZ_M3_Max ) dTemp = Group.GZ_M3_Max; pTC[pGZMsg->lTCCount].fJTBL = Group.GZ_M3_ADC_TC_A*dTemp/100.0f; //基本提成*(业务能力增加+每个新客户提成点数*新客户数量) _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.4f%%[%.2f%%*%.2f%%(%.2f%%+%.2f%%+%.2f%%*%d)]") , pTC[pGZMsg->lTCCount].fJTBL ,Group.GZ_M3_ADC_TC_A,dTemp, Group.GZ_M3_JBTC,YWY.GZ_M3_YWNL,Group.GZ_M3_New_Add , pGZMsg->lNewKHCount ); //pTC[pGZMsg->lTCCount].lUserType = 1; //代理客户 } else { double dTemp=Group.GZ_M3_JBTC+YWY.GZ_M3_YWNL+Group.GZ_M3_New_Add * pGZMsg->lNewKHCount; if ( dTemp > Group.GZ_M3_Max ) dTemp = Group.GZ_M3_Max; pTC[pGZMsg->lTCCount].fJTBL = Group.GZ_M3_ADC_TC_M*dTemp/100.0f; //基本提成*(业务能力增加+每个新客户提成点数*新客户数量) _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%[%.2f%%*%.2f%%(%.2f%%+%.2f%%+%.2f%%*%d)]") , pTC[pGZMsg->lTCCount].fJTBL ,Group.GZ_M3_ADC_TC_M,dTemp, Group.GZ_M3_JBTC,YWY.GZ_M3_YWNL,Group.GZ_M3_New_Add , pGZMsg->lNewKHCount ); } if ( pTC[pGZMsg->lTCCount].lAgentID >0 ) //渠道客户,总业绩及提成需要再打折 { _stprintf(pTC[pGZMsg->lTCCount].szTCBL , _T("%.2f%%(%.2f%%*%.2f%%)") , pTC[pGZMsg->lTCCount].fTCBL*Group.GZ_M3_ADC_YZ_A/100.0f,pTC[pGZMsg->lTCCount].fTCBL,Group.GZ_M3_ADC_YZ_A ); pTC[pGZMsg->lTCCount].fTCBL = pTC[pGZMsg->lTCCount].fTCBL*Group.GZ_M3_ADC_YZ_A/100.0f; } else { _stprintf(pTC[pGZMsg->lTCCount].szTCBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fTCBL); } //计算提成 pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fPrice*pTC[pGZMsg->lTCCount].fJTBL/100.0f; //if ( pTC[pGZMsg->lTCCount].fPrice<0 ) //{ // pTC[pGZMsg->lTCCount].fTCJE = -pTC[pGZMsg->lTCCount].fTCJE; //} if ( lPTNum == 2 )//平台2,短信易,保底提成是0.8% { if ( pTC[pGZMsg->lTCCount].fTCJElTCCount].fPrice*0.008f ) { pTC[pGZMsg->lTCCount].fTCJE=pTC[pGZMsg->lTCCount].fPrice*0.008f; pTC[pGZMsg->lTCCount].fJTBL = 0.8f; } } //计算业绩 pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fPrice; //再来一次提成,非业务员自己发展的客户 if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fTCJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fYZJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } pGZMsg->fTotalSR +=pTC[pGZMsg->lTCCount].fPrice; pGZMsg->fTotalYZ +=pTC[pGZMsg->lTCCount].fYZJE; pGZMsg->fTotalTC +=pTC[pGZMsg->lTCCount].fTCJE; } else { if ( pTC[pGZMsg->lTCCount].lSmsCount!=0) { pTC[pGZMsg->lTCCount].fPriceOne = pTC[pGZMsg->lTCCount].fPrice/pTC[pGZMsg->lTCCount].lSmsCount; pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M1_DJ; if ( lPTNum == 2 ) { pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M2_DJ; long lQXT=0; pAdoRS->GetCollect( _T("QXT"),lQXT ); if ( lQXT!=0 ) pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M1_DJ; } if ( lPTNum == 3 ) pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M3_DJ; //判断新老客户 BOOL bNewKH=true; COleDateTime tReg(pTC[pGZMsg->lTCCount].tRegTime); COleDateTime tPay(pTC[pGZMsg->lTCCount].tPayTime); if ( tReg.GetStatus()==COleDateTime::valid && tPay.GetStatus()==COleDateTime::valid && tPay-tReg<=COleDateTimeSpan(180,0,0,0) ) { bNewKH = true; } else { bNewKH = false; } if ( bNewKH ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset1; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } else { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset1_Old; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } if ( lPTNum==2 ) { if ( bNewKH ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset2; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } else { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset2_Old; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } } if ( lPTNum==3 ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset3; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } //计算提成 pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].lSmsCount*(pTC[pGZMsg->lTCCount].fPriceOne-pTC[pGZMsg->lTCCount].fPriceOne_TCDJ)*(pTC[pGZMsg->lTCCount].fJTBL/100.0f); pTC[pGZMsg->lTCCount].fFP_Award = pTC[pGZMsg->lTCCount].lSmsCount*(pTC[pGZMsg->lTCCount].fPriceOne-pTC[pGZMsg->lTCCount].fPriceOne_TCDJ)*(1.0f/100.0f); //发票奖励 //if ( pTC[pGZMsg->lTCCount].fPrice<0 ) // pTC[pGZMsg->lTCCount].fTCJE = -pTC[pGZMsg->lTCCount].fTCJE; //提成单价小于标准单价的,提成统一为0 if ( pTC[pGZMsg->lTCCount].fPriceOne <= pTC[pGZMsg->lTCCount].fPriceOne_TCDJ ) { pTC[pGZMsg->lTCCount].fTCJE = 0; pTC[pGZMsg->lTCCount].fFP_Award = 0; } //计算业绩 pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fPrice; //再来一次提成,非业务员自己发展的客户 _stprintf(pTC[pGZMsg->lTCCount].szTCBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fTCBL ); if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fTCJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fYZJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fFP_Award = pTC[pGZMsg->lTCCount].fFP_Award * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } //计算大单奖 double dDDZBegin=20000.00; //判断是否超过10月份,超过2009年10月才按 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if ( tTemp>=COleDateTime(2009,10,1,0,0,0) ) { dDDZBegin=7999.99f; } if ( pTC[pGZMsg->lTCCount].fYZJE>=dDDZBegin || pTC[pGZMsg->lTCCount].fYZJE<=-dDDZBegin ) //超过2万元,需要计算大单奖 { pTC[pGZMsg->lTCCount].fDDJ = pTC[pGZMsg->lTCCount].fPrice * 0.004; //0.5%计算大单奖 } pGZMsg->fTotalSR +=pTC[pGZMsg->lTCCount].fPrice; pGZMsg->fTotalYZ +=pTC[pGZMsg->lTCCount].fYZJE; pGZMsg->fTotalTC +=pTC[pGZMsg->lTCCount].fTCJE + pTC[pGZMsg->lTCCount].fDDJ; //提成要加上大单奖 } } } else { if ( pTC[pGZMsg->lTCCount].bJBJT ) //统计暂不计提的业绩总额 { if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } else { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice; } } } pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } //取终端客户彩信提成 if ( pGZMsg->bOnlyJS ) { str.Format( _T("select * from mms_pay LEFT OUTER JOIN corp ON corp.corpid = mms_pay.corpid where mms_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) and TC_Time='%04d%02d01 00:00:00' and mms_pay.agentid=0 and YSType=0 order by PayTime") , lYWYID , tEnd.wYear,tEnd.wMonth); } else { str.Format( _T("select * from mms_pay LEFT OUTER JOIN corp ON corp.corpid = mms_pay.corpid where mms_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null and mms_pay.agentid=0 and YSType=0 order by PayTime") , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); } //COleDateTime end(tEnd); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pTC[pGZMsg->lTCCount].lUserType = 0; //终端客户 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; pTC[pGZMsg->lTCCount].lPayType = 9; //彩信 pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); pAdoRS->GetCollect( _T("CorpID") ,pTC[pGZMsg->lTCCount].lCorpID ); pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("CorpName"),pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("RegTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); pAdoRS->GetCollect( _T("YS_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); pAdoRS->GetCollect( _T("HT_Recv") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tHTTime ); pAdoRS->GetCollect( _T("Price") ,pTC[pGZMsg->lTCCount].fPrice ); pTC[pGZMsg->lTCCount].fPrice2 = pTC[pGZMsg->lTCCount].fPrice; pAdoRS->GetCollect( _T("SmsCount"),pTC[pGZMsg->lTCCount].lSmsCount ); pAdoRS->GetCollect( _T("TCPer"),pTC[pGZMsg->lTCCount].fTCBL ); pAdoRS->GetCollect( _T("AgentID"),pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("LPType"),pTC[pGZMsg->lTCCount].lLPType ); pAdoRS->GetCollect( _T("LPPrice"),pTC[pGZMsg->lTCCount].fLPPrice ); pAdoRS->GetCollect( _T("Commend_VipInt"),pTC[pGZMsg->lTCCount].lCommend_VipInt ); if ( pTC[pGZMsg->lTCCount].lLPType<=0 ) pTC[pGZMsg->lTCCount].fLPPrice = 0; if ( pTC[pGZMsg->lTCCount].fLPPrice>0 ) //如果有赠送,则实际计算的金额为扣减赠送金额后的值 pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice-pTC[pGZMsg->lTCCount].fLPPrice; if ( pTC[pGZMsg->lTCCount].lCommend_VipInt>0 ) //如果有推荐积分,则实际计算的金额为扣减积分折算金额后的值 { pTC[pGZMsg->lTCCount].lCommend_VipInt_Price = (float)pTC[pGZMsg->lTCCount].lCommend_VipInt * 0.2f; //每积分按0.2元计算 pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice-pTC[pGZMsg->lTCCount].lCommend_VipInt_Price; } if ( pTC[pGZMsg->lTCCount].fTCBL<=0.0f || pTC[pGZMsg->lTCCount].fTCBL>100.0f ) pTC[pGZMsg->lTCCount].fTCBL = 100.0f; pAdoRS->GetCollect( _T("YS"),pTC[pGZMsg->lTCCount].bYS ); pAdoRS->GetCollect( _T("Test"),pTC[pGZMsg->lTCCount].bTest ); BOOL bJT=true; if ( pTC[pGZMsg->lTCCount].bTest ) //测试的,不用计提成 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("测试或转换的短信") ); } if ( pTC[pGZMsg->lTCCount].fPrice==0.0f ) //缴费金额为0 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("缴费金额为0") ); } if (pTC[pGZMsg->lTCCount].lSmsCount==0 ) //缴费金额为0 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("短信条数为0") ); } if (!bJT && (m_ucUserType == LOGINTYPE_YWY || pGZMsg->bOnlyTC) ) //如果是业务员查询或只查询业绩部分,不显示不计题的短信 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("") ); pAdoRS->MoveNext(); memset(&pTC[pGZMsg->lTCCount], 0 , sizeof(pTC[pGZMsg->lTCCount]) ); continue; } if ( pTC[pGZMsg->lTCCount].bYS ) //应收的,暂不算提成 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("应收") ); pTC[pGZMsg->lTCCount].bJBJT = true; //判断应收款是否超过3个月 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if (!pTC[pGZMsg->lTCCount].bTest && pTC[pGZMsg->lTCCount].fPrice>0.0f && //非测试的应收,金额大于0 tTemp.GetStatus() == COleDateTime::valid && COleDateTime(tEnd)-tTemp>COleDateTimeSpan(62,0,0,0) ) { pGZMsg->bYSOver3Mon = true; //有应收款超过3个月,不计算提成 pTC[pGZMsg->lTCCount].bYSOver3Mon = true; } } COleDateTime tTemp(pTC[pGZMsg->lTCCount].tYSTime); if ( tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未收到款") ); pTC[pGZMsg->lTCCount].bJBJT = true; } if (pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && //2008年以前的不考核合同回收 pTC[pGZMsg->lTCCount].lAgentID<=0 && //代理商客户不考核合同回收 pTC[pGZMsg->lTCCount].tHTTime.wYear<2000) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } tTemp = COleDateTime(pTC[pGZMsg->lTCCount].tHTTime); if ( pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } //计算单价 if ( _tcslen(pTC[pGZMsg->lTCCount].BJTBZ)<=0 ) //计算单价及提成 { if ( pTC[pGZMsg->lTCCount].lSmsCount!=0) { pTC[pGZMsg->lTCCount].fPriceOne = pTC[pGZMsg->lTCCount].fPrice/pTC[pGZMsg->lTCCount].lSmsCount; pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = 0.19f; //暂时固定为彩信单价 //判断新老客户 BOOL bNewKH=true; COleDateTime tReg(pTC[pGZMsg->lTCCount].tRegTime); COleDateTime tPay(pTC[pGZMsg->lTCCount].tPayTime); if ( tReg.GetStatus()==COleDateTime::valid && tPay.GetStatus()==COleDateTime::valid && tPay-tReg<=COleDateTimeSpan(180,0,0,0) ) { bNewKH = true; } else { bNewKH = false; } if ( bNewKH ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset1; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } else { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset1_Old; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } if ( lPTNum==2 ) { if ( bNewKH ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset2; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } else { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset2_Old; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } } if ( lPTNum==3 ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset3; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } //计算提成 pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].lSmsCount*(pTC[pGZMsg->lTCCount].fPriceOne-pTC[pGZMsg->lTCCount].fPriceOne_TCDJ)*(pTC[pGZMsg->lTCCount].fJTBL/100.0f); pTC[pGZMsg->lTCCount].fFP_Award = pTC[pGZMsg->lTCCount].lSmsCount*(pTC[pGZMsg->lTCCount].fPriceOne-pTC[pGZMsg->lTCCount].fPriceOne_TCDJ)*(1.0f/100.0f); //发票奖励 //if ( pTC[pGZMsg->lTCCount].fPrice<0 ) // pTC[pGZMsg->lTCCount].fTCJE = -pTC[pGZMsg->lTCCount].fTCJE; //提成单价小于标准单价的,提成统一为0 if ( pTC[pGZMsg->lTCCount].fPriceOne <= pTC[pGZMsg->lTCCount].fPriceOne_TCDJ ) { pTC[pGZMsg->lTCCount].fTCJE = 0; pTC[pGZMsg->lTCCount].fFP_Award = 0; } //计算业绩 pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fPrice; //再来一次提成,非业务员自己发展的客户 _stprintf(pTC[pGZMsg->lTCCount].szTCBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fTCBL ); if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fTCJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fYZJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fFP_Award = pTC[pGZMsg->lTCCount].fFP_Award * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } //计算大单奖 double dDDZBegin=20000.00; //判断是否超过10月份,超过2009年10月才按 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if ( tTemp>=COleDateTime(2009,10,1,0,0,0) ) { dDDZBegin=7999.99f; } if ( pTC[pGZMsg->lTCCount].fYZJE>=dDDZBegin || pTC[pGZMsg->lTCCount].fYZJE<=-dDDZBegin ) //超过2万元,需要计算大单奖 { pTC[pGZMsg->lTCCount].fDDJ = pTC[pGZMsg->lTCCount].fPrice * 0.004; //0.5%计算大单奖 } pGZMsg->fTotalSR +=pTC[pGZMsg->lTCCount].fPrice; pGZMsg->fTotalYZ +=pTC[pGZMsg->lTCCount].fYZJE; pGZMsg->fTotalTC +=pTC[pGZMsg->lTCCount].fTCJE + pTC[pGZMsg->lTCCount].fDDJ; //提成要加上大单奖 } } else { if ( pTC[pGZMsg->lTCCount].bJBJT ) //统计暂不计提的业绩总额 { if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } else { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice; } } } pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } //取代理商提成 // COleDateTime t; //str.Format( _T("select * from agent_pay LEFT OUTER JOIN agent ON agent.agentid = agent_pay.agentid where agent_pay.agentid in (select agentid from agent where YWYID=%d ) and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null order by PayTime") , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); if ( pGZMsg->bOnlyJS ) { str.Format( _T("select PayID,agent_pay.AgentID,Name,CreateTime,HT_Recv,YS_Time,PayTime,JFPrice,Price,TCPer,YS,LPType,LPPrice,agent_pay.Test from agent_pay LEFT OUTER JOIN agent ON agent.agentid = agent_pay.agentid where agent_pay.agentid in (select agentid from agent where YWYID=%d ) and TC_Time='%04d%02d01 00:00:00' and YSType=0 order by PayTime") , lYWYID , tEnd.wYear,tEnd.wMonth); } else { str.Format( _T("select PayID,agent_pay.AgentID,Name,CreateTime,HT_Recv,YS_Time,PayTime,JFPrice,Price,TCPer,YS,LPType,LPPrice,agent_pay.Test from agent_pay LEFT OUTER JOIN agent ON agent.agentid = agent_pay.agentid where agent_pay.agentid in (select agentid from agent where YWYID=%d ) and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null and YSType=0 order by PayTime") , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); } pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pTC[pGZMsg->lTCCount].lUserType = 1; //代理客户 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; double dTemp; pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("Name") ,pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("CreateTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); pAdoRS->GetCollect( _T("HT_Recv") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tHTTime ); pAdoRS->GetCollect( _T("YS_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("JFPrice") ,pTC[pGZMsg->lTCCount].fPrice ); pTC[pGZMsg->lTCCount].fPrice2 = pTC[pGZMsg->lTCCount].fPrice; pAdoRS->GetCollect( _T("Price"), dTemp ); pTC[pGZMsg->lTCCount].lSmsCount = (long)(dTemp*10.0f); pAdoRS->GetCollect( _T("TCPer"),pTC[pGZMsg->lTCCount].fTCBL ); pAdoRS->GetCollect( _T("LPType"),pTC[pGZMsg->lTCCount].lLPType ); //赠送礼品扣减 pAdoRS->GetCollect( _T("LPPrice"),pTC[pGZMsg->lTCCount].fLPPrice ); if ( pTC[pGZMsg->lTCCount].lLPType<=0 ) pTC[pGZMsg->lTCCount].fLPPrice = 0; if ( pTC[pGZMsg->lTCCount].fLPPrice>0 ) //如果有赠送,则实际计算的金额为扣减赠送金额后的值 pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice-pTC[pGZMsg->lTCCount].fLPPrice; if ( pTC[pGZMsg->lTCCount].fTCBL<=0.0f || pTC[pGZMsg->lTCCount].fTCBL>100.0f ) pTC[pGZMsg->lTCCount].fTCBL = 100.0f; pAdoRS->GetCollect( _T("YS"),pTC[pGZMsg->lTCCount].bYS ); pAdoRS->GetCollect( _T("Test"),pTC[pGZMsg->lTCCount].bTest ); BOOL bJT=true; if ( pTC[pGZMsg->lTCCount].bTest ) //测试的,不用计提成 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("测试或转换的短信") ); } if ( pTC[pGZMsg->lTCCount].fPrice==0.0f ) //缴费金额为0 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("缴费金额为0") ); } if (pTC[pGZMsg->lTCCount].lSmsCount==0 ) //缴费金额为0 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("短信条数为0") ); } if (!bJT && (m_ucUserType == LOGINTYPE_YWY || pGZMsg->bOnlyTC) ) //如果是业务员查询或只查询业绩部分,不显示不计题的短信 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("") ); pAdoRS->MoveNext(); memset(&pTC[pGZMsg->lTCCount], 0 , sizeof(pTC[pGZMsg->lTCCount]) ); continue; } if ( pTC[pGZMsg->lTCCount].bYS ) //应收的,暂不算提成 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("应收") ); pTC[pGZMsg->lTCCount].bJBJT = true; //判断应收款是否超过3个月 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if (!pTC[pGZMsg->lTCCount].bTest && pTC[pGZMsg->lTCCount].fPrice>0.0f && //非测试的应收,金额大于0 tTemp.GetStatus() == COleDateTime::valid && COleDateTime(tEnd)-tTemp>COleDateTimeSpan(62,0,0,0) ) { pGZMsg->bYSOver3Mon = true; //有应收款超过3个月,不计算提成 pTC[pGZMsg->lTCCount].bYSOver3Mon = true; } } COleDateTime tTemp(pTC[pGZMsg->lTCCount].tYSTime); if ( tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未收到款") ); pTC[pGZMsg->lTCCount].bJBJT = true; } if (pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 //2008年以前的不考核合同回收 && pTC[pGZMsg->lTCCount].tHTTime.wYear<2000) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } tTemp = COleDateTime(pTC[pGZMsg->lTCCount].tHTTime); if ( pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } //计算单价 if ( _tcslen(pTC[pGZMsg->lTCCount].BJTBZ)<=0 ) //计算单价及提成 { if ( pTC[pGZMsg->lTCCount].lSmsCount!=0) { pTC[pGZMsg->lTCCount].fPriceOne = pTC[pGZMsg->lTCCount].fPrice/pTC[pGZMsg->lTCCount].lSmsCount; pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M1_DJ; if ( lPTNum == 2 ) pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M2_DJ; if ( lPTNum == 3 ) pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M3_DJ; //判断新老客户 BOOL bNewKH=true; COleDateTime tReg(pTC[pGZMsg->lTCCount].tRegTime); COleDateTime tPay(pTC[pGZMsg->lTCCount].tPayTime); if ( tReg.GetStatus()==COleDateTime::valid && tPay.GetStatus()==COleDateTime::valid && tPay-tReg<=COleDateTimeSpan(180,0,0,0) ) { bNewKH = true; } else { bNewKH = false; } if ( bNewKH ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset1; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } else { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset1_Old; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } if ( lPTNum==2 ) { if ( bNewKH ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset2; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } else { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset2_Old; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } } if ( lPTNum==3 ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset3; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } //计算提成 pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].lSmsCount*(pTC[pGZMsg->lTCCount].fPriceOne-pTC[pGZMsg->lTCCount].fPriceOne_TCDJ)*(pTC[pGZMsg->lTCCount].fJTBL/100.0f); pTC[pGZMsg->lTCCount].fFP_Award = pTC[pGZMsg->lTCCount].lSmsCount*(pTC[pGZMsg->lTCCount].fPriceOne-pTC[pGZMsg->lTCCount].fPriceOne_TCDJ)*(1.0f/100.0f); //计算发票奖励 //if ( pTC[pGZMsg->lTCCount].fPrice<0 ) // pTC[pGZMsg->lTCCount].fTCJE = -pTC[pGZMsg->lTCCount].fTCJE; //提成单价小于标准单价的,提成统一为0 if ( pTC[pGZMsg->lTCCount].fPriceOne <= pTC[pGZMsg->lTCCount].fPriceOne_TCDJ ) { pTC[pGZMsg->lTCCount].fTCJE = 0; pTC[pGZMsg->lTCCount].fFP_Award = 0; } //计算业绩 pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fPrice; //再来一次提成,非业务员自己发展的客户 _stprintf(pTC[pGZMsg->lTCCount].szTCBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fTCBL ); if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fTCJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fYZJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fFP_Award = pTC[pGZMsg->lTCCount].fFP_Award * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } //计算大单奖 double dDDZBegin=20000.00f; //判断是否超过10月份,超过2009年10月才按 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if ( tTemp>=COleDateTime(2009,10,1,0,0,0) ) { dDDZBegin=7999.99f; } if ( pTC[pGZMsg->lTCCount].fYZJE>=dDDZBegin || pTC[pGZMsg->lTCCount].fYZJE<=-dDDZBegin ) //超过2万元,需要计算大单奖 { pTC[pGZMsg->lTCCount].fDDJ = pTC[pGZMsg->lTCCount].fPrice * 0.004; //0.5%计算大单奖 } pGZMsg->fTotalSR +=pTC[pGZMsg->lTCCount].fPrice; pGZMsg->fTotalYZ +=pTC[pGZMsg->lTCCount].fYZJE; pGZMsg->fTotalTC +=pTC[pGZMsg->lTCCount].fTCJE+ pTC[pGZMsg->lTCCount].fDDJ ; //提成总额加上大单奖 } } else { if ( pTC[pGZMsg->lTCCount].bJBJT ) //统计暂不计提的业绩总额 { if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } else { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice; } } } pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } //取软件提成 // COleDateTime t; if ( pGZMsg->bOnlyJS ) { str.Format( _T("select * from func_pay LEFT OUTER JOIN corp ON corp.corpid = func_pay.corpid where func_pay.ywyid=%d and TC_Time='%04d%02d01 00:00:00' order by PayTime") , lYWYID , tEnd.wYear,tEnd.wMonth); } else { str.Format( _T("select * from func_pay LEFT OUTER JOIN corp ON corp.corpid = func_pay.corpid where func_pay.ywyid=%d and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null order by PayTime") , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); } pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { long lFuncID=0; double fTC_Per=0.0f; pTC[pGZMsg->lTCCount].lUserType = 0; //终端客户 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; pTC[pGZMsg->lTCCount].lPayType = 5; //开发/其它 pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); pAdoRS->GetCollect( _T("FuncID") ,lFuncID ); pAdoRS->GetCollect( _T("CorpID") ,pTC[pGZMsg->lTCCount].lCorpID ); pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("CorpName") ,pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("RegTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); pAdoRS->GetCollect( _T("HT_Recv") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tHTTime ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("YS_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); //if ( pTC[pGZMsg->lTCCount].lAgentID>0 ) //代理商客户,不要求一定要收到合同 //{ // ::GetLocalTime(&pTC[pGZMsg->lTCCount].tHTTime); //} pAdoRS->GetCollect( _T("Price") ,pTC[pGZMsg->lTCCount].fPrice ); pAdoRS->GetCollect( _T("TCPer"),pTC[pGZMsg->lTCCount].fTCBL ); if ( pTC[pGZMsg->lTCCount].fTCBL<=0.0f || pTC[pGZMsg->lTCCount].fTCBL>100.0f ) pTC[pGZMsg->lTCCount].fTCBL = 100.0f; if ( lFuncID==14 || lFuncID==15 || lFuncID==16 ) //彩信代发与短信代发 { pAdoRS->GetCollect( _T("PriceOne") ,pTC[pGZMsg->lTCCount].fPriceOne ); pAdoRS->GetCollect( _T("SMSCount") ,pTC[pGZMsg->lTCCount].lSmsCount ); pAdoRS->GetCollect( _T("TC_Per") ,fTC_Per ); if ( pTC[pGZMsg->lTCCount].lSmsCount!=0) pTC[pGZMsg->lTCCount].fPriceOne = pTC[pGZMsg->lTCCount].fPrice/pTC[pGZMsg->lTCCount].lSmsCount; } pAdoRS->GetCollect( _T("YS"),pTC[pGZMsg->lTCCount].bYS ); pAdoRS->GetCollect( _T("Test"),pTC[pGZMsg->lTCCount].bTest ); BOOL bJT=true; if ( pTC[pGZMsg->lTCCount].bTest ) //测试的,不用计提成 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("测试用") ); } if ( pTC[pGZMsg->lTCCount].fPrice==0.0f ) //缴费金额为0 { bJT=false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("缴费金额为0") ); } if (!bJT && (m_ucUserType == LOGINTYPE_YWY || pGZMsg->bOnlyTC) ) //如果是业务员查询或只查询业绩部分,不显示不计题的短信 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("") ); pAdoRS->MoveNext(); memset(&pTC[pGZMsg->lTCCount], 0 , sizeof(pTC[pGZMsg->lTCCount]) ); continue; } if ( pTC[pGZMsg->lTCCount].bYS ) //应收的,暂不算提成 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("应收") ); pTC[pGZMsg->lTCCount].bJBJT = true; //判断应收款是否超过3个月 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if (!pTC[pGZMsg->lTCCount].bTest && pTC[pGZMsg->lTCCount].fPrice>0.0f && //非测试的应收,金额大于0 tTemp.GetStatus() == COleDateTime::valid && COleDateTime(tEnd)-tTemp>COleDateTimeSpan(62,0,0,0) ) { pGZMsg->bYSOver3Mon = true; //有应收款超过3个月,不计算提成 pTC[pGZMsg->lTCCount].bYSOver3Mon = true; } } COleDateTime tTemp(pTC[pGZMsg->lTCCount].tYSTime); if ( tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未收到款") ); pTC[pGZMsg->lTCCount].bJBJT = true; } if (pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && //2008年以前的不考核合同回收 pTC[pGZMsg->lTCCount].lAgentID<=0 && //代理商客户不考核合同回收 pTC[pGZMsg->lTCCount].tHTTime.wYear<2000) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } tTemp = COleDateTime(pTC[pGZMsg->lTCCount].tHTTime); if ( pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } if ( _tcslen(pTC[pGZMsg->lTCCount].BJTBZ)<=0 ) //计算单价及提成 { if ( fTC_Per>0.0f && fTC_Per<20.0f ) //有自定义提成 pTC[pGZMsg->lTCCount].fJTBL = fTC_Per; else pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset_Soft1; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL); //计算提成 pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fPrice*pTC[pGZMsg->lTCCount].fJTBL/100.0f; //计算业绩 //if ( fTC_Per>0.0f && fTC_Per<20.0f ) //有自定义提成,不计算业绩 if ( lFuncID==14 || lFuncID==15 ) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("代发类,不计算业绩") ); pTC[pGZMsg->lTCCount].fYZJE=0; } else { pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fPrice; } //再来一次提成,非业务员自己发展的客户 _stprintf(pTC[pGZMsg->lTCCount].szTCBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fTCBL ); if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fTCJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fYZJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } pGZMsg->fTotalSR +=pTC[pGZMsg->lTCCount].fPrice; pGZMsg->fTotalYZ +=pTC[pGZMsg->lTCCount].fYZJE; pGZMsg->fTotalTC +=pTC[pGZMsg->lTCCount].fTCJE; } else { if ( pTC[pGZMsg->lTCCount].bJBJT ) //统计暂不计提的业绩总额 { if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } else { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice; } } } pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } //取月结帐单 if ( lPTNum ==1 )// 平台1才有月结帐单 { if ( pGZMsg->bOnlyJS ) { str.Format( _T("select * from mon_pay LEFT OUTER JOIN corp ON corp.corpid = mon_pay.corpid where (mon_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) or mon_pay.corpid in ( select corpid from corp where agentid in (select agentid from agent where ywyid=%d) )) and TC_Time='%04d%02d01 00:00:00' order by PayTime") , lYWYID , lYWYID , tEnd.wYear,tEnd.wMonth); } else { str.Format( _T("select * from mon_pay LEFT OUTER JOIN corp ON corp.corpid = mon_pay.corpid where (mon_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) or mon_pay.corpid in ( select corpid from corp where agentid in (select agentid from agent where ywyid=%d) )) and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null order by PayTime") , lYWYID , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); } COleDateTime end(tEnd); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { long lPayType=0; pTC[pGZMsg->lTCCount].lUserType = 0; //终端客户 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; pTC[pGZMsg->lTCCount].lPayType = 6; //月结 pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); pAdoRS->GetCollect( _T("CorpID") ,pTC[pGZMsg->lTCCount].lCorpID ); //pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("CorpName"),pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("RegTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); pAdoRS->GetCollect( _T("YS_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); pAdoRS->GetCollect( _T("HT_Recv") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tHTTime ); pAdoRS->GetCollect( _T("Price") ,pTC[pGZMsg->lTCCount].fPrice ); pAdoRS->GetCollect( _T("SmsCount"),pTC[pGZMsg->lTCCount].lSmsCount ); pAdoRS->GetCollect( _T("TCPer"),pTC[pGZMsg->lTCCount].fTCBL ); //pAdoRS->GetCollect( _T("AgentID"),pTC[pGZMsg->lTCCount].lAgentID ); if ( pTC[pGZMsg->lTCCount].fTCBL<=0.0f || pTC[pGZMsg->lTCCount].fTCBL>100.0f ) pTC[pGZMsg->lTCCount].fTCBL = 100.0f; pAdoRS->GetCollect( _T("YS"),pTC[pGZMsg->lTCCount].bYS ); pAdoRS->GetCollect( _T("Test"),pTC[pGZMsg->lTCCount].bTest ); pAdoRS->GetCollect( _T("PayType") ,lPayType ); if ( lPayType==0 && !pTC[pGZMsg->lTCCount].bYS ) //月结帐单,并且不是应收,金额选择实收 { pAdoRS->GetCollect( _T("YS_Price") ,pTC[pGZMsg->lTCCount].fPrice ); pAdoRS->GetCollect( _T("YS_SmsCount"),pTC[pGZMsg->lTCCount].lSmsCount ); } BOOL bJT=true; if ( pTC[pGZMsg->lTCCount].bTest ) //测试的,不用计提成 { bJT =false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("测试或转换的短信") ); } if ( pTC[pGZMsg->lTCCount].fPrice==0.0f ) //缴费金额为0 { bJT =false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("缴费金额为0") ); } if (lPayType!=1 && pTC[pGZMsg->lTCCount].lSmsCount==0 ) //缴费金额为0 { bJT =false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("短信条数为0") ); } if (!bJT && (m_ucUserType == LOGINTYPE_YWY || pGZMsg->bOnlyTC) ) //如果是业务员查询或只查询业绩部分,不显示不计题的短信 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("") ); pAdoRS->MoveNext(); memset(&pTC[pGZMsg->lTCCount], 0 , sizeof(pTC[pGZMsg->lTCCount]) ); continue; } if ( pTC[pGZMsg->lTCCount].bYS ) //应收的,暂不算提成 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("应收") ); pTC[pGZMsg->lTCCount].bJBJT = true; //判断应收款是否超过3个月 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if (!pTC[pGZMsg->lTCCount].bTest && pTC[pGZMsg->lTCCount].fPrice>0.0f && //非测试的应收,金额大于0 tTemp.GetStatus() == COleDateTime::valid && COleDateTime(tEnd)-tTemp>COleDateTimeSpan(62,0,0,0) ) { pGZMsg->bYSOver3Mon = true; //有应收款超过3个月,不计算提成 pTC[pGZMsg->lTCCount].bYSOver3Mon = true; } } COleDateTime tTemp(pTC[pGZMsg->lTCCount].tYSTime); if ( tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未收到款") ); pTC[pGZMsg->lTCCount].bJBJT = true; } if (pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && //2008年以前的不考核合同回收 pTC[pGZMsg->lTCCount].lAgentID<=0 && //代理商客户不考核合同回收 pTC[pGZMsg->lTCCount].tHTTime.wYear<2000) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } tTemp = COleDateTime(pTC[pGZMsg->lTCCount].tHTTime); if ( pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } //计算单价 if ( _tcslen(pTC[pGZMsg->lTCCount].BJTBZ)<=0 ) //计算单价及提成 { { if ( pTC[pGZMsg->lTCCount].lSmsCount!=0) { pTC[pGZMsg->lTCCount].fPriceOne = pTC[pGZMsg->lTCCount].fPrice/pTC[pGZMsg->lTCCount].lSmsCount; pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M1_DJ; if ( lPTNum == 2 ) pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M2_DJ; if ( lPTNum == 3 ) pTC[pGZMsg->lTCCount].fPriceOne_TCDJ = Group.GZ_M3_DJ; //判断新老客户 BOOL bNewKH=true; COleDateTime tReg(pTC[pGZMsg->lTCCount].tRegTime); COleDateTime tPay(pTC[pGZMsg->lTCCount].tPayTime); if ( tReg.GetStatus()==COleDateTime::valid && tPay.GetStatus()==COleDateTime::valid && tPay-tReg<=COleDateTimeSpan(180,0,0,0) ) { bNewKH = true; } else { bNewKH = false; } if ( bNewKH ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset1; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } else { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset1_Old; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } if ( lPTNum==2 ) { if ( bNewKH ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset2; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } else { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset2_Old; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } } if ( lPTNum==3 ) { pTC[pGZMsg->lTCCount].fJTBL = pGZMsg->fJTBL_Mobset3; _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fJTBL ); } //计算提成 pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].lSmsCount*(pTC[pGZMsg->lTCCount].fPriceOne-pTC[pGZMsg->lTCCount].fPriceOne_TCDJ)*(pTC[pGZMsg->lTCCount].fJTBL/100.0f); pTC[pGZMsg->lTCCount].fFP_Award = pTC[pGZMsg->lTCCount].lSmsCount*(pTC[pGZMsg->lTCCount].fPriceOne-pTC[pGZMsg->lTCCount].fPriceOne_TCDJ)*(1.0f/100.0f);//计算发票奖励 //if ( pTC[pGZMsg->lTCCount].fPrice<0 ) // pTC[pGZMsg->lTCCount].fTCJE = -pTC[pGZMsg->lTCCount].fTCJE; //提成单价小于标准单价的,提成统一为0 if ( pTC[pGZMsg->lTCCount].fPriceOne <= pTC[pGZMsg->lTCCount].fPriceOne_TCDJ ) { pTC[pGZMsg->lTCCount].fTCJE = 0; } //计算业绩 pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fPrice; //再来一次提成,非业务员自己发展的客户 _stprintf(pTC[pGZMsg->lTCCount].szTCBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fTCBL ); if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fTCJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fYZJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fFP_Award = pTC[pGZMsg->lTCCount].fFP_Award * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } pGZMsg->fTotalSR +=pTC[pGZMsg->lTCCount].fPrice; pGZMsg->fTotalYZ +=pTC[pGZMsg->lTCCount].fYZJE; pGZMsg->fTotalTC +=pTC[pGZMsg->lTCCount].fTCJE; } } } else { if ( pTC[pGZMsg->lTCCount].bJBJT ) //统计暂不计提的业绩总额 { if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } else { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice; } } } pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } } //取MAS、企信通酬金提成 if ( lPTNum ==1 )// 平台1才有月结帐单 { //YS=0,只查询已收到款的数据 //str.Format( _T("select * from yys_pay LEFT OUTER JOIN corp ON corp.corpid = yys_pay.corpid LEFT OUTER JOIN corp_mas ON corp_Mas.corpid = yys_pay.corpid where YS=0 and (yys_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) or yys_pay.corpid in ( select corpid from corp where agentid in (select agentid from agent where ywyid=%d) )) and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null order by PayTime") , lYWYID , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); str.Format( _T("select * from yys_pay LEFT OUTER JOIN corp ON corp.corpid = yys_pay.corpid LEFT OUTER JOIN corp_mas ON corp_Mas.corpid = yys_pay.corpid where (yys_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) or yys_pay.corpid in ( select corpid from corp where agentid in (select agentid from agent where ywyid=%d) )) and Paytime>='%04d%02d%02d' and Paytime<'%04d%02d%02d %02d:00:00' and TC_Time is null order by PayTime") , lYWYID , lYWYID , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour); COleDateTime end(tEnd); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { CString strYYSPayPer; //酬金发放比例 double fOldPrice=0; long lPayType=0; COleDateTime tBeginTime; pTC[pGZMsg->lTCCount].lUserType = 0; //终端客户 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; pTC[pGZMsg->lTCCount].lPayType = 8; //酬金 pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); //pAdoRS->GetCollect( _T("CorpID") ,pTC[pGZMsg->lTCCount].lCorpID ); pAdoRS->GetCollect( (long)2 ,pTC[pGZMsg->lTCCount].lCorpID ); //pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("CorpName"),pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("RegTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); pAdoRS->GetCollect( _T("YS_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); pAdoRS->GetCollect( _T("HT_Recv") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tHTTime ); //pAdoRS->GetCollect( _T("XFPrice") ,pTC[pGZMsg->lTCCount].fPrice ); pAdoRS->GetCollect( _T("Price") ,pTC[pGZMsg->lTCCount].fPrice ); double fPayPer=0.0f; pAdoRS->GetCollect( _T("PayPer") ,fPayPer ); if ( fPayPer<=0.0f || fPayPer>100.0f ) fPayPer = 100.0f; pAdoRS->GetCollect( _T("TCPer"),pTC[pGZMsg->lTCCount].fTCBL ); //pAdoRS->GetCollect( _T("AgentID"),pTC[pGZMsg->lTCCount].lAgentID ); if ( pTC[pGZMsg->lTCCount].fTCBL<=0.0f || pTC[pGZMsg->lTCCount].fTCBL>100.0f ) pTC[pGZMsg->lTCCount].fTCBL = 100.0f; pAdoRS->GetCollect( _T("YS"),pTC[pGZMsg->lTCCount].bYS ); pAdoRS->GetCollect( _T("Test"),pTC[pGZMsg->lTCCount].bTest ); pAdoRS->GetCollect( _T("PayType") ,lPayType ); pAdoRS->GetCollect( _T("BeginTime") ,tBeginTime ); //计算实际提成金额 fOldPrice = pTC[pGZMsg->lTCCount].fPrice; switch (lPayType) { case 0: //企信通90% //pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice*0.9f; strYYSPayPer.Format( _T("%.2f*90%%") , fOldPrice ); tBeginTime = COleDateTime(2008,7,1,10,0,0); //企信通默认开通时间 break; case 1: //MAS 90% //pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice*0.9f; strYYSPayPer.Format( _T("%.2f*90%%") , fOldPrice ); break; case 2: //企信通10% //pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice*0.1f*(fPayPer/100.0f); strYYSPayPer.Format( _T("%.2f*10%%*%.2f%%") , fOldPrice,fPayPer ); tBeginTime = COleDateTime(2008,7,1,10,0,0); //企信通默认开通时间 break; case 3: //MAS 10% //pTC[pGZMsg->lTCCount].fPrice = pTC[pGZMsg->lTCCount].fPrice*0.1f*(fPayPer/100.0f); strYYSPayPer.Format( _T("%.2f*10%%*%.2f%%") , fOldPrice,fPayPer ); break; } if (lPayType==0 || lPayType==2 ) //企信通的丢弃 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("") ); pAdoRS->MoveNext(); memset(&pTC[pGZMsg->lTCCount], 0 , sizeof(pTC[pGZMsg->lTCCount]) ); continue; } BOOL bJT=true; if ( pTC[pGZMsg->lTCCount].bTest ) //测试的,不用计提成 { bJT =false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("测试或转换的短信") ); } if ( pTC[pGZMsg->lTCCount].fPrice==0.0f ) //缴费金额为0 { bJT =false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("缴费金额为0") ); } //if (!bJT && (m_ucUserType == LOGINTYPE_YWY || pGZMsg->bOnlyTC) ) //如果是业务员查询或只查询业绩部分,不显示不计题的短信 if (!bJT && pGZMsg->bOnlyTC ) //如果是业务员查询或只查询业绩部分,不显示不计题的短信 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("") ); pAdoRS->MoveNext(); memset(&pTC[pGZMsg->lTCCount], 0 , sizeof(pTC[pGZMsg->lTCCount]) ); continue; } if ( pTC[pGZMsg->lTCCount].bYS ) //应收的,暂不算提成 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("应收") ); pTC[pGZMsg->lTCCount].bJBJT = true; /* //判断应收款是否超过3个月 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if (!pTC[pGZMsg->lTCCount].bTest && pTC[pGZMsg->lTCCount].fPrice>0.0f && //非测试的应收,金额大于0 tTemp.GetStatus() == COleDateTime::valid && COleDateTime(tEnd)-tTemp>COleDateTimeSpan(62,0,0,0) ) { pGZMsg->bYSOver3Mon = true; //有应收款超过3个月,不计算提成 pTC[pGZMsg->lTCCount].bYSOver3Mon = true; } */ } COleDateTime tTemp(pTC[pGZMsg->lTCCount].tYSTime); if ( tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未收到款") ); pTC[pGZMsg->lTCCount].bJBJT = true; } /* if (pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && //2008年以前的不考核合同回收 pTC[pGZMsg->lTCCount].lAgentID<=0 && //代理商客户不考核合同回收 pTC[pGZMsg->lTCCount].tHTTime.wYear<2000) { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } tTemp = COleDateTime(pTC[pGZMsg->lTCCount].tHTTime); if ( pTC[pGZMsg->lTCCount].tRegTime.wYear>=2008 && tTemp.GetStatus() == COleDateTime::valid && tTemp>end ) //收款时间为下一月了。 { _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("当月未回收合同") ); pTC[pGZMsg->lTCCount].bJBJT = true; } */ double fMasJB1=Group.GZ_M3_DJ; double fMasJB2=Group.GZ_M3_New; double fMasBAdd=Group.GZ_M3_New_Add; double fMasBMax=Group.GZ_M3_ADC_TC_M; double fMasTC=fMasJB1; //默认第一年mas提成基点是6.6个点。 if ( tBeginTime.GetStatus() != COleDateTime::valid ) { bJT =false; _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , _T("未设置MAS开通时间") ); } if ( tBeginTime.GetStatus() == COleDateTime::valid ) { long lBegin=tBeginTime.GetYear()*100+tBeginTime.GetMonth(); long lEnd=pTC[pGZMsg->lTCCount].tPayTime.wYear*100+pTC[pGZMsg->lTCCount].tPayTime.wMonth; /* //判断此mas是否超2年,超2年已没有提成,跳过此笔记录 if (lEnd-lBegin>=200) { pAdoRS->MoveNext(); continue; } */ //判断此mas是否超1年,超1年后提成不同。 if (lEnd-lBegin>=100) { fMasTC = fMasJB2; //第二年起,2009年8月份后,mas提成基点为1 /* //fMasTC = 0.0f; //第二年起,mas提成基点为0 COleDateTime tTemp(pTC[pGZMsg->lTCCount].tPayTime); if ( tTemp >= COleDateTime(2009,8,1,0,0,0) ) { fMasTC = fMasJB2; //第二年起,2009年8月份后,mas提成基点为1 } */ } } //计算提成 if ( _tcslen(pTC[pGZMsg->lTCCount].BJTBZ)<=0 ) //计算单价及提成 { double fBAdd=pGZMsg->fJTBL_Mas1; //mas提成B值 //基本提成+每个新客户提成点数*新客户数量 pTC[pGZMsg->lTCCount].fJTBL = fMasTC+fBAdd; //只与新客户有关 //基本提成+B值 _stprintf(pTC[pGZMsg->lTCCount].szJTBL , _T("%.2f%%(%.2f%%+%.2f%%)") , pTC[pGZMsg->lTCCount].fJTBL , fMasTC,fBAdd ); //计算提成 pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fPrice*pTC[pGZMsg->lTCCount].fJTBL/100.0f; //计算业绩 //pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fPrice*1.667f; //运营商酬金*1.667 pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fPrice; //业绩等于实收酬金 //再来一次提成,非业务员自己发展的客户 _stprintf(pTC[pGZMsg->lTCCount].szTCBL , _T("%.2f%%") , pTC[pGZMsg->lTCCount].fTCBL ); if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fTCJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); pTC[pGZMsg->lTCCount].fYZJE = pTC[pGZMsg->lTCCount].fYZJE * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } _tcscpy(pTC[pGZMsg->lTCCount].BJTBZ , strYYSPayPer); //备注酬金提成比例 pGZMsg->fTotalSR +=pTC[pGZMsg->lTCCount].fPrice; pGZMsg->fTotalYZ +=pTC[pGZMsg->lTCCount].fYZJE; pGZMsg->fTotalTC +=pTC[pGZMsg->lTCCount].fTCJE; } else { if ( pTC[pGZMsg->lTCCount].bJBJT ) //统计暂不计提的业绩总额 { if ( pTC[pGZMsg->lTCCount].fTCBL !=100.0f ) { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice * (pTC[pGZMsg->lTCCount].fTCBL/100.0f); } else { pGZMsg->fTotalYZ_WQR += pTC[pGZMsg->lTCCount].fPrice; } } } pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } } //查询发票奖励 SYSTEMTIME tFPEnd=tEnd; long lMon=tFPEnd.wMonth; lMon=lMon-2; //前2月 if ( lMon<=0 ) { tFPEnd.wYear--; lMon=lMon+12; } tFPEnd.wMonth = lMon; SYSTEMTIME tFPBegin = tFPEnd; lMon=lMon-1; //再往前一个月 if ( lMon<=0 ) { tFPBegin.wYear--; lMon=lMon+12; } tFPBegin.wMonth = lMon; tFPBegin.wHour=0; tFPBegin.wDay=1; //取用户发票奖励 str.Format( _T("select * from corp_pay LEFT OUTER JOIN corp ON corp.corpid = corp_pay.corpid where corp_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) and TC_Time>='%04d%02d%02d' and TC_Time<'%04d%02d%02d %02d:00:00' and corp_pay.agentid=0 and FP_Award!=0 and FP=0 order by PayTime") , lYWYID , tFPBegin.wYear,tFPBegin.wMonth,tFPBegin.wDay,tFPEnd.wYear,tFPEnd.wMonth,tFPEnd.wDay,tFPEnd.wHour); TRACE(str); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pTC[pGZMsg->lTCCount].lUserType = 0; //短信易 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; pTC[pGZMsg->lTCCount].lPayType = 20; //不开票奖励 double dTemp=0.0f; pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); pAdoRS->GetCollect( _T("CorpID") ,pTC[pGZMsg->lTCCount].lCorpID ); pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("CorpName"),pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("RegTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); pAdoRS->GetCollect( _T("TC_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); pAdoRS->GetCollect( _T("Price") ,pTC[pGZMsg->lTCCount].fPrice ); pAdoRS->GetCollect( _T("FP_Award") ,dTemp ); pTC[pGZMsg->lTCCount].fTCJE = dTemp; //pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fFP_Award; pGZMsg->fTotalTC += pTC[pGZMsg->lTCCount].fTCJE ; //提成总额加上发票奖励 pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } //取代理商发票奖励 str.Format( _T("select PayID,agent_pay.AgentID,Name,CreateTime,HT_Recv,YS_Time,PayTime,TC_Time,FP_Award,JFPrice,Price,TCPer,YS,LPType,LPPrice,agent_pay.Test from agent_pay LEFT OUTER JOIN agent ON agent.agentid = agent_pay.agentid where agent_pay.agentid in (select agentid from agent where YWYID=%d ) and TC_Time>='%04d%02d%02d' and TC_Time<'%04d%02d%02d %02d:00:00' and FP_Award!=0 and FP=0 order by PayTime") , lYWYID , tFPBegin.wYear,tFPBegin.wMonth,tFPBegin.wDay,tFPEnd.wYear,tFPEnd.wMonth,tFPEnd.wDay,tFPEnd.wHour); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pTC[pGZMsg->lTCCount].lUserType = 1; //代理客户 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; pTC[pGZMsg->lTCCount].lPayType = 20; //不开票奖励 double dTemp=0.0f; pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("Name") ,pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("CreateTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); //pAdoRS->GetCollect( _T("HT_Recv") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tHTTime ); pAdoRS->GetCollect( _T("TC_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("JFPrice") ,pTC[pGZMsg->lTCCount].fPrice ); pAdoRS->GetCollect( _T("FP_Award") ,dTemp ); pTC[pGZMsg->lTCCount].fTCJE = dTemp; //pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fFP_Award; pGZMsg->fTotalTC += pTC[pGZMsg->lTCCount].fTCJE ; //提成总额加上发票奖励 pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } //取月结发票奖励 str.Format( _T("select * from mon_pay LEFT OUTER JOIN corp ON corp.corpid = mon_pay.corpid where (mon_pay.corpid in (select corpid from corp where YWYID=%d and agentID<=0) or mon_pay.corpid in ( select corpid from corp where agentid in (select agentid from agent where ywyid=%d) )) and TC_Time>='%04d%02d%02d' and TC_Time<'%04d%02d%02d %02d:00:00' and FP_Award!=0 and FP=0 order by PayTime") , lYWYID , lYWYID , tFPBegin.wYear,tFPBegin.wMonth,tFPBegin.wDay,tFPEnd.wYear,tFPEnd.wMonth,tFPEnd.wDay,tFPEnd.wHour); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pTC[pGZMsg->lTCCount].lUserType = 0; //短信易客户 pTC[pGZMsg->lTCCount].lPTNum = lPTNum; pTC[pGZMsg->lTCCount].lPayType = 20; //不开票奖励 double dTemp=0.0f; pAdoRS->GetCollect( _T("PayID") ,pTC[pGZMsg->lTCCount].lPayID ); pAdoRS->GetCollect( _T("CorpID") ,pTC[pGZMsg->lTCCount].lCorpID ); //pAdoRS->GetCollect( _T("AgentID") ,pTC[pGZMsg->lTCCount].lAgentID ); pAdoRS->GetCollect( _T("CorpName"),pTC[pGZMsg->lTCCount].szName ); pAdoRS->GetCollect( _T("PayTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tPayTime ); pAdoRS->GetCollect( _T("RegTime") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tRegTime ); pAdoRS->GetCollect( _T("TC_Time") ,t );t.GetAsSystemTime(pTC[pGZMsg->lTCCount].tYSTime ); pAdoRS->GetCollect( _T("Price") ,pTC[pGZMsg->lTCCount].fPrice ); pAdoRS->GetCollect( _T("FP_Award") ,dTemp ); pTC[pGZMsg->lTCCount].fTCJE = dTemp; //pTC[pGZMsg->lTCCount].fTCJE = pTC[pGZMsg->lTCCount].fFP_Award; pGZMsg->fTotalTC += pTC[pGZMsg->lTCCount].fTCJE ; //提成总额加上发票奖励 pGZMsg->lTCCount++; lUserCount++; pAdoRS->MoveNext(); } return lUserCount; } long CProcessSocket::Process_GZMsg_GetLS(ANS_GZMsgData *pGZMsg, ANS_GZMsg_LS *pLS, CAdoRecordSet *pAdoRS, CAdoRecordSet *pAdoRS2, long lPTNum, ANS_GetYWYData YWY, ANS_GetYWYGroupData Group, SYSTEMTIME tBegin, SYSTEMTIME tEnd) { CString str; long lUserCount=0; long lYWYID = YWY.lYWYID; if ( lPTNum == 2 || lPTNum == 3 ) //其它平台,重新取业务员 ID { lYWYID = 0; str.Format( _T("select * from ywy where Name='%s'") , YWY.szName ); if ( pAdoRS->Open(str) && !pAdoRS->IsEOF() ) { pAdoRS->GetCollect( _T("YWYID") , lYWYID ); } else { return 0; } } //取新的终端客户 COleDateTime t; str.Format( _T("select * from YWYTJ_LS where ProcessTime>='%04d%02d%02d' and ProcessTime<='%04d%02d%02d %02d:00:00' and ywyid=%d order by ProcessTime desc") , tBegin.wYear,tBegin.wMonth,tBegin.wDay,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour , lYWYID ); pAdoRS->Open(str); while(!pAdoRS->IsEOF() ) { pLS[pGZMsg->lLSCount].lUserType = 0; //终端客户 pLS[pGZMsg->lLSCount].lPTNum = lPTNum; pAdoRS->GetCollect( _T("CorpID") ,pLS[pGZMsg->lLSCount].lCorpID ); pAdoRS->GetCollect( _T("CorpName") ,pLS[pGZMsg->lLSCount].szName ); pAdoRS->GetCollect( _T("LastLogin") ,t);t.GetAsSystemTime(pLS[pGZMsg->lLSCount].tLastLogin ); pAdoRS->GetCollect( _T("ProcessTime") ,t);t.GetAsSystemTime(pLS[pGZMsg->lLSCount].tProcessTime ); pGZMsg->lLSCount++; lUserCount++; pAdoRS->MoveNext(); } return lUserCount; } long CProcessSocket::Process_PayToUser_See( REQ_PayToUser_See * pSee ) { try { CString strSelect,strTemp; CString strType= _T(" 1=1 "); if ( pSee->lPayID >0 ) { strType.Format( _T(" PayID=%d") , pSee->lPayID ); } if ( pSee->lPayType >0 ) { strTemp.Format( _T(" and PayType=%d ") , pSee->lPayType-1 ); strType += strTemp; } if ( pSee->lPayStatus >0 ) { strTemp.Format( _T(" and PayStatus=%d ") , pSee->lPayStatus-1 ); strType += strTemp; } if ( (pSee->lPayType-1 ) == 1 && pSee->lUserType>0 ) { strTemp.Format( _T(" and UserType=%d ") , pSee->lUserType-1 ); strType += strTemp; } strSelect.Format(_T("select * from PayToUser where CD_Time>='%04d%02d%02d' and CD_Time<='%04d%02d%02d 23:59:59' and %s order by CD_Time" ),pSee->tBegin.wYear,pSee->tBegin.wMonth,pSee->tBegin.wDay,pSee->tEnd.wYear,pSee->tEnd.wMonth,pSee->tEnd.wDay,strType ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_PayToUser_See) + sizeof(ANS_PayToUserData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_PayToUser_See * pSeeRet = (ANS_PayToUser_See *)pData; ANS_PayToUserData * pSeeDataRet = (ANS_PayToUserData *)(pData+sizeof(ANS_PayToUser_See)); pSeeRet->lPayID = pSee->lPayID; pSeeRet->lPayType = pSee->lPayType; pSeeRet->lPayStatus = pSee->lPayStatus; pSeeRet->lUserType = pSee->lUserType; pSeeRet->tBegin = pSee->tBegin; //数据记录 pSeeRet->tEnd = pSee->tEnd; //数据记录 pSeeRet->lCount = lCount; //数据记录 COleDateTime t; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("PayID") , pSeeDataRet->lPayID); m_AdoRS.GetCollect( _T("PayType") , pSeeDataRet->lPayType); m_AdoRS.GetCollect( _T("PayStatus") , pSeeDataRet->lPayStatus); m_AdoRS.GetCollect( _T("UserType") , pSeeDataRet->lUserType); m_AdoRS.GetCollect( _T("CorpID") , pSeeDataRet->lCorpID); m_AdoRS.GetCollect( _T("CorpName") , pSeeDataRet->szCorpName); m_AdoRS.GetCollect( _T("SmsCount") , pSeeDataRet->lSmsCount); m_AdoRS.GetCollect( _T("PriceOne") , pSeeDataRet->fPriceOne); m_AdoRS.GetCollect( _T("Price") , pSeeDataRet->fPrice); m_AdoRS.GetCollect( _T("SFPrice") , pSeeDataRet->fSFPrice); m_AdoRS.GetCollect( _T("DYPayID") , pSeeDataRet->lDYPayID); m_AdoRS.GetCollect( _T("CD_User") , pSeeDataRet->szCD_User); m_AdoRS.GetCollect( _T("CD_Name") , pSeeDataRet->szCD_Name); m_AdoRS.GetCollect( _T("CD_Time") , t);t.GetAsSystemTime( pSeeDataRet->tCD); m_AdoRS.GetCollect( _T("PZ_User") , pSeeDataRet->szPZ_User); m_AdoRS.GetCollect( _T("PZ_Name") , pSeeDataRet->szPZ_Name); m_AdoRS.GetCollect( _T("PZ_Time") , t);t.GetAsSystemTime( pSeeDataRet->tPZ); m_AdoRS.GetCollect( _T("FH_User") , pSeeDataRet->szFH_User); m_AdoRS.GetCollect( _T("FH_Name") , pSeeDataRet->szFH_Name); m_AdoRS.GetCollect( _T("FH_Time") , t);t.GetAsSystemTime( pSeeDataRet->tFH); m_AdoRS.GetCollect( _T("BZ") , pSeeDataRet->szBZ); m_AdoRS.MoveNext(); pSeeDataRet ++; } } SendFrame( SMSFUNC_PAYTOUSER_SEE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PayToUser_Set( REQ_PayToUser_Set* pSet ) { try { ANS_PayToUser_Set * pRet = new ANS_PayToUser_Set; //权限不够,什么也不返回 memset( pRet , 0 , sizeof(ANS_PayToUser_Set) ); pRet->lPayID = pSet->lPayID; pRet->lItem = pSet->lItem; pRet->lPayStatus=pSet->lPayStatus; pRet->tTime =pSet->tTime; pRet->fPrice =pSet->fPrice; _tcscpy(pRet->szUser , m_szLoginName ); _tcscpy(pRet->szBZ , pSet->szBZ ); pRet->bOK = false; pRet->bOK = false; if ( !(m_ulPurview & PURVIEW_CORP_PAY) ) //没有权限查看支付记录 { pRet->bOK = false; SendFrame( SMSFUNC_PAYTOUSER_SET , (BYTE*)pRet , sizeof(ANS_PayToUser_Set) ); //发送返回 return 1; } CString str; CString strTime = _T("GetDate()"); // COleDateTime t(pYS->tTime); // if ( t.GetStatus() == COleDateTime::valid ) // { // strTime.Format( _T("'%04d%02d%02d %02d:%02d'") , t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute() ); // } if ( pSet->lPayStatus == 1 ) { str.Format( _T("update PayToUser set PayStatus=1,PZ_User='%s',PZ_Time=%s where PayID=%d and PayStatus=0") ,m_szLoginName,strTime, pSet->lPayID); } if ( pSet->lPayStatus == 2 ) { str.Format( _T("update PayToUser set PayStatus=2,FH_User='%s',FH_Time=%s,SFPrice='%.4f',BZ='%s' where PayID=%d and PayStatus=1") ,m_szLoginName,strTime,pSet->fPrice,pSet->szBZ, pSet->lPayID); } if ( m_AdoRS.Open(str) ) pRet->bOK = true; SendFrame( SMSFUNC_PAYTOUSER_SET , (BYTE*)pRet , sizeof(ANS_PayToUser_Set) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_QXTSetup( REQ_Corp_QXTSetup * pQXT ) { try { ANS_Corp_QXTSetup * pRet = new ANS_Corp_QXTSetup; //权限不够,什么也不返回 memset(pRet , 0 , sizeof(ANS_Corp_QXTSetup)); pRet->bOK=false; pRet->ret = *pQXT; if ( m_ucUserType != LOGINTYPE_KF ) { if ( !(m_ulPurview & PURVIEW_CORP_PAY) ) //没有权限查看支付记录 { SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pRet , sizeof(ANS_Corp_QXTSetup) ); //发送返回 return 1; } } CString str; if ( pQXT->lType == 0 ) //查询信息 { str.Format( _T("select * from corp where corpid=%d") , pQXT->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { pRet->bOK=true; m_AdoRS.GetCollect( _T("QXT_CorpID") , pRet->ret.QXT_CorpID ); m_AdoRS.GetCollect( _T("QXT_SmsNum") , pRet->ret.QXT_SmsNum ); m_AdoRS.GetCollect( _T("QXT_Code") , pRet->ret.QXT_Code ); m_AdoRS.GetCollect( _T("QXT_User") , pRet->ret.QXT_User ); m_AdoRS.GetCollect( _T("QXT_Passwd") , pRet->ret.QXT_Passwd ); m_AdoRS.GetCollect( _T("QXT_TQ") , pRet->ret.QXT_TQ ); } SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pRet , sizeof(ANS_Corp_QXTSetup) ); //发送返回 return 1; } if ( pQXT->lType == 1 ) //设置信息 { CString strCorpID; CString strTQ; strCorpID.Format( _T("%d") , pQXT->lCorpID ); strTQ.Format( _T("%d") , pQXT->QXT_TQ ); str = CString(_T("update corp set ")) + CString(_T("QXT_CorpID='")) + CString(pQXT->QXT_CorpID) + CString(_T("',")) + CString(_T("QXT_Code='")) + CString(pQXT->QXT_Code) + CString(_T("',")) + CString(_T("QXT_SmsNum='")) + CString(pQXT->QXT_SmsNum) + CString(_T("',")) + CString(_T("QXT_User='")) + CString(pQXT->QXT_User) + CString(_T("',")) + CString(_T("QXT_Passwd='")) + CString(pQXT->QXT_Passwd) + CString(_T("',")) + CString(_T("QXT_TQ='")) + strTQ + CString(_T("'")) + CString(_T(" where CorpID=")) + strCorpID ; pRet->bOK = m_AdoRS.Open(str); SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pRet , sizeof(ANS_Corp_QXTSetup) ); //发送返回 return 1; } if ( pQXT->lType == 10 ) //查询mas信息 { pRet->bOK=true; long lSize = sizeof(ANS_Corp_QXTSetup) + sizeof(REQ_Corp_QXTSetup_Mas); BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize); ANS_Corp_QXTSetup * pRet2 = (ANS_Corp_QXTSetup*)pData; REQ_Corp_QXTSetup_Mas * pRetMas = (REQ_Corp_QXTSetup_Mas*)(pData+sizeof(ANS_Corp_QXTSetup)); *pRet2 = *pRet; str.Format( _T("select * from corp_mas where corpid=%d") , pQXT->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { COleDateTime t; m_AdoRS.GetCollect( _T("BeginTime") , t );t.GetAsSystemTime(pRetMas->tBeginTime); m_AdoRS.GetCollect( _T("TQ") , pRetMas->lTQ ); m_AdoRS.GetCollect( _T("CorpID") , pRet2->ret.lCorpID ); m_AdoRS.GetCollect( _T("CmppIP") , pRetMas->szCmppIP ); m_AdoRS.GetCollect( _T("CmppPort") , pRetMas->szCmppPort ); m_AdoRS.GetCollect( _T("CmppCorpID") , pRetMas->szCmppCorpID ); m_AdoRS.GetCollect( _T("CmppUser") , pRetMas->szCmppUser ); m_AdoRS.GetCollect( _T("CmppPasswd") , pRetMas->szCmppPasswd ); m_AdoRS.GetCollect( _T("CmppNum") , pRetMas->szCmppNum ); m_AdoRS.GetCollect( _T("CmppYWCode") , pRetMas->szCmppYWCode ); m_AdoRS.GetCollect( _T("CmppBDIP") , pRetMas->szCmppBDIP ); m_AdoRS.GetCollect( _T("MasID") , pRetMas->szMasID ); m_AdoRS.GetCollect( _T("MasPasswd") , pRetMas->szMasPasswd ); m_AdoRS.GetCollect( _T("MasManagerIP") , pRetMas->szMasManagerIP ); m_AdoRS.GetCollect( _T("MasManagerPort"), pRetMas->szMasManagerPort ); m_AdoRS.GetCollect( _T("MasVPNIP") , pRetMas->szMasVPNIP ); m_AdoRS.GetCollect( _T("MasC_IP") , pRetMas->szMasC_IP ); m_AdoRS.GetCollect( _T("MasC_Root") , pRetMas->szMasC_Root ); m_AdoRS.GetCollect( _T("MasC_Admin") , pRetMas->szMasC_Admin ); m_AdoRS.GetCollect( _T("MasC_TelnetPort"), pRetMas->szMasC_TelnetPort ); m_AdoRS.GetCollect( _T("MasJTCode"), pRetMas->szMasJTCode ); m_AdoRS.GetCollect( _T("MasCPCode"), pRetMas->szMasCPCode ); m_AdoRS.GetCollect( _T("BZ"), pRetMas->szBZ ); m_AdoRS.GetCollect( _T("Area"), pRetMas->lArea ); } delete pRet; //删除原来new的数据,现在返回时重新new了,所以不会自动删除 SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pData , lSize ); //发送返回 return 1; return 0; } if ( pQXT->lType == 11 ) //设置Mas信息 { REQ_Corp_QXTSetup_Mas * pMas = (REQ_Corp_QXTSetup_Mas*)((BYTE*)pQXT+sizeof(REQ_Corp_QXTSetup)); //先删除全部此ID的记录 str.Format( _T("delete from corp_mas where corpid=%d") , pQXT->lCorpID ); m_AdoRS.Open(str); m_AdoRS.Close(); if ( m_AdoRS.Open(_T("corp_mas"),adCmdTable) ) //再新增一条记录 { m_AdoRS.AddNew(); COleDateTime t(pMas->tBeginTime); m_AdoRS.PutCollect( _T("BeginTime") , t ); m_AdoRS.PutCollect( _T("TQ") , pMas->lTQ ); m_AdoRS.PutCollect( _T("CorpID") , pQXT->lCorpID ); m_AdoRS.PutCollect( _T("CmppIP") , pMas->szCmppIP ); m_AdoRS.PutCollect( _T("CmppPort") , pMas->szCmppPort ); m_AdoRS.PutCollect( _T("CmppCorpID") , pMas->szCmppCorpID ); m_AdoRS.PutCollect( _T("CmppUser") , pMas->szCmppUser ); m_AdoRS.PutCollect( _T("CmppPasswd") , pMas->szCmppPasswd ); m_AdoRS.PutCollect( _T("CmppNum") , pMas->szCmppNum ); m_AdoRS.PutCollect( _T("CmppYWCode") , pMas->szCmppYWCode ); m_AdoRS.PutCollect( _T("CmppBDIP") , pMas->szCmppBDIP ); m_AdoRS.PutCollect( _T("MasID") , pMas->szMasID ); m_AdoRS.PutCollect( _T("MasPasswd") , pMas->szMasPasswd ); m_AdoRS.PutCollect( _T("MasManagerIP") , pMas->szMasManagerIP ); m_AdoRS.PutCollect( _T("MasManagerPort"), pMas->szMasManagerPort ); m_AdoRS.PutCollect( _T("MasVPNIP") , pMas->szMasVPNIP ); m_AdoRS.PutCollect( _T("MasC_IP") , pMas->szMasC_IP ); m_AdoRS.PutCollect( _T("MasC_Root") , pMas->szMasC_Root ); m_AdoRS.PutCollect( _T("MasC_Admin") , pMas->szMasC_Admin ); m_AdoRS.PutCollect( _T("MasC_TelnetPort"), pMas->szMasC_TelnetPort ); m_AdoRS.PutCollect( _T("MasJTCode") , pMas->szMasJTCode ); m_AdoRS.PutCollect( _T("MasCPCode") , pMas->szMasCPCode ); m_AdoRS.PutCollect( _T("BZ") , pMas->szBZ ); m_AdoRS.PutCollect( _T("Area") , pMas->lArea ); pRet->bOK = m_AdoRS.Update(); m_AdoRS.Close(); } SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pRet , sizeof(ANS_Corp_QXTSetup) ); //发送返回 return 1; } if ( pQXT->lType == 20 ) //查询Vip信息 { pRet->bOK=true; long lSize = sizeof(ANS_Corp_QXTSetup) + sizeof(REQ_Corp_QXTSetup_Vip); BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize); ANS_Corp_QXTSetup * pRet2 = (ANS_Corp_QXTSetup*)pData; REQ_Corp_QXTSetup_Vip * pRetVip = (REQ_Corp_QXTSetup_Vip*)(pData+sizeof(ANS_Corp_QXTSetup)); *pRet2 = *pRet; str.Format( _T("select * from corp_Vip where corpid=%d") , pQXT->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { COleDateTime t; m_AdoRS.GetCollect( _T("Corp_VipID"), pRetVip->lCorp_VipID); m_AdoRS.GetCollect( _T("CorpID") , pRetVip->lCorpID); m_AdoRS.GetCollect( _T("Name") , pRetVip->szName); m_AdoRS.GetCollect( _T("NickName") , pRetVip->szNickName); m_AdoRS.GetCollect( _T("Sex") , pRetVip->szSex); m_AdoRS.GetCollect( _T("Birthday") , t); t.GetAsSystemTime(pRetVip->tBirthday); m_AdoRS.GetCollect( _T("Branch") , pRetVip->szBranch); m_AdoRS.GetCollect( _T("Job") , pRetVip->szJob); m_AdoRS.GetCollect( _T("Tel") , pRetVip->szTel); m_AdoRS.GetCollect( _T("Fax") , pRetVip->szFax); m_AdoRS.GetCollect( _T("Mobile") , pRetVip->szMobile); m_AdoRS.GetCollect( _T("Email") , pRetVip->szEmail); m_AdoRS.GetCollect( _T("QQ") , pRetVip->szQQ); m_AdoRS.GetCollect( _T("CreateUser"), pRetVip->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime"), t); t.GetAsSystemTime(pRetVip->tCreateTime); m_AdoRS.GetCollect( _T("BZ") , pRetVip->szBZ); } delete pRet; //删除原来new的数据,现在返回时重新new了,所以不会自动删除 SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pData , lSize ); //发送返回 return 1; return 0; } if ( pQXT->lType == 21 ) //设置Vip信息 { REQ_Corp_QXTSetup_Vip * pVip = (REQ_Corp_QXTSetup_Vip*)((BYTE*)pQXT+sizeof(REQ_Corp_QXTSetup)); //先删除全部此ID的记录 str.Format( _T("delete from corp_Vip where corpid=%d") , pQXT->lCorpID ); m_AdoRS.Open(str); m_AdoRS.Close(); if ( m_AdoRS.Open(_T("corp_Vip"),adCmdTable) ) //再新增一条记录 { m_AdoRS.AddNew(); COleDateTime t(pVip->tBirthday); COleDateTime tNow=COleDateTime::GetCurrentTime(); m_AdoRS.PutCollect( _T("CorpID") , pQXT->lCorpID ); m_AdoRS.PutCollect( _T("Name") , pVip->szName); m_AdoRS.PutCollect( _T("NickName") , pVip->szNickName); m_AdoRS.PutCollect( _T("Sex") , pVip->szSex); m_AdoRS.PutCollect( _T("Birthday") , t); m_AdoRS.PutCollect( _T("Branch") , pVip->szBranch); m_AdoRS.PutCollect( _T("Job") , pVip->szJob); m_AdoRS.PutCollect( _T("Tel") , pVip->szTel); m_AdoRS.PutCollect( _T("Fax") , pVip->szFax); m_AdoRS.PutCollect( _T("Mobile") , pVip->szMobile); m_AdoRS.PutCollect( _T("Email") , pVip->szEmail); m_AdoRS.PutCollect( _T("QQ") , pVip->szQQ); m_AdoRS.PutCollect( _T("CreateUser"), m_szLoginName); m_AdoRS.PutCollect( _T("CreateTime"), tNow); m_AdoRS.PutCollect( _T("BZ") , pVip->szBZ); pRet->bOK = m_AdoRS.Update(); m_AdoRS.Close(); } SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pRet , sizeof(ANS_Corp_QXTSetup) ); //发送返回 return 1; } if ( pQXT->lType == 30 ) //查询Vip积分信息 { pRet->bOK=true; str.Format( _T("select * from corp_VipInt where corpid=%d order by CreateTime Desc") , pQXT->lCorpID ); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if ( lCount<=0 ) lCount=0; long lSize = sizeof(ANS_Corp_QXTSetup) + sizeof(REQ_Corp_QXTSetup_VipInt)*lCount; BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize); ANS_Corp_QXTSetup * pRet2 = (ANS_Corp_QXTSetup*)pData; REQ_Corp_QXTSetup_VipInt * pRetInt = (REQ_Corp_QXTSetup_VipInt*)(pData+sizeof(ANS_Corp_QXTSetup)); *pRet2 = *pRet; pRet2->lCount = lCount; m_AdoRS.MoveFirst(); while ( !m_AdoRS.IsEOF() ) { COleDateTime t; m_AdoRS.GetCollect( _T("VipIntID") , pRetInt->lVipIntID); m_AdoRS.GetCollect( _T("CorpID") , pRetInt->lCorpID); m_AdoRS.GetCollect( _T("PayID") , pRetInt->lPayID); m_AdoRS.GetCollect( _T("Type") , pRetInt->lType); m_AdoRS.GetCollect( _T("VipInt") , pRetInt->lVipInt); m_AdoRS.GetCollect( _T("CreateUser"), pRetInt->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime"), t); t.GetAsSystemTime(pRetInt->tCreateTime); m_AdoRS.GetCollect( _T("BZ") , pRetInt->szBZ); pRetInt ++; m_AdoRS.MoveNext(); } delete pRet; //删除原来new的数据,现在返回时重新new了,所以不会自动删除 SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pData , lSize ); //发送返回 return 1; return 0; } if ( pQXT->lType == 31 ) //添加Vip积分信息 { REQ_Corp_QXTSetup_VipInt * pVipInt = (REQ_Corp_QXTSetup_VipInt*)((BYTE*)pQXT+sizeof(REQ_Corp_QXTSetup)); pRet->bOK = true; for ( int i=0 ; ilCount ; i++ ) { //插入记录 long lPayID=0; //主动添加的没有payid str.Format( _T("insert into Corp_VipInt (CorpID,PayID,Type,VipInt,CreateTime,CreateUser,BZ) values (%d,%d,%d,%d,GetDate(),'%s','%s')") , pQXT->lCorpID,lPayID,pVipInt->lType,pVipInt->lVipInt,m_szLoginName,pVipInt->szBZ); m_AdoRS.Open(str); str.Format( _T("update corp set VipInt=VipInt+%d where CorpID=%d") , pVipInt->lVipInt , pQXT->lCorpID); m_AdoRS.Open(str); pVipInt++; } SendFrame( SMSFUNC_CORP_QXTSETUP , (BYTE*)pRet , sizeof(ANS_Corp_QXTSetup) ); //发送返回 return 1; } return 0; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_MonPay( REQ_Corp_MONPAY * pPay ) { try { if ( !(m_ulPurview & PURVIEW_TAB) ) //没有权限查看支付记录 { ANS_Corp_MONPAY * pSeePay = new ANS_Corp_MONPAY; //权限不够,什么也不返回 memset(pSeePay , 0 , sizeof(ANS_Corp_MONPAY)); pSeePay->lCount = -1; SendFrame( SMSFUNC_CORP_MONPAY , (BYTE*)pSeePay , sizeof(ANS_Corp_MONPAY) ); //发送返回 return 1; } CString str; if ( pPay->lReqType==0 ) //查询 { TCHAR szSelect[512]={0}; TCHAR szCorpID[128]={0}; TCHAR szYWYID[128]={0}; TCHAR szPayType[128]={0}; TCHAR szFPType[512]={0}; if ( pPay->lCorpID > 0 ) _stprintf(szCorpID,_T("mon_pay.corpid=%d"),pPay->lCorpID); else _tcscpy( szCorpID,_T("1=1")); if ( pPay->lPayType > 0 && pPay->lPayType<3) { _stprintf(szPayType,_T("mon_pay.PayType=%d"),pPay->lPayType-1); } else _tcscpy( szPayType,_T("1=1")); /* if ( pPay->lYWYID >= 0 ) _stprintf(szYWYID,_T("func_Pay.corpid in (select corpid from corp where YWYID=%d)"),pPay->lYWYID); else _tcscpy( szYWYID,_T("1=1")); */ if ( pPay->lFPType >= 0 ) if ( pPay->lFPType == 0 ) _tcscpy( szFPType,_T(" mon_pay.FP=1")); else _stprintf(szFPType,_T(" mon_pay.FP=1 and mon_pay.FP_Status = %d"),pPay->lFPType-1); else _tcscpy( szFPType,_T("1=1")); TCHAR szBegin[32]={0}; TCHAR szEnd[32]={0}; //_stprintf( szBegin , _T("'%04d%02d01'") , pPay->tBegin.wYear,pPay->tBegin.wMonth ); //_stprintf( szEnd , _T("'%04d%02d01 23:59:59'") , pPay->tEnd.wYear,pPay->tEnd.wMonth ); //TCHAR szBegin2[32]={0}; //TCHAR szEnd2[32]={0}; _stprintf( szBegin , _T("'%04d%02d%02d'") , pPay->tBegin.wYear,pPay->tBegin.wMonth,pPay->tBegin.wDay ); _stprintf( szEnd , _T("'%04d%02d%02d 23:59:59'") , pPay->tEnd.wYear,pPay->tEnd.wMonth,pPay->tEnd.wDay ); if ( pPay->lPayType==3 ) //按开票时间查 _stprintf( szSelect , _T("select corp.corpname,corp.TCPer,Mon_Pay.* from Mon_Pay,Corp where Mon_Pay.corpid=Corp.corpid and %s and Mon_Pay.FP_Time>=%s and Mon_Pay.FP_Time<=%s and %s and %s order by Mon_Pay.PayTime") , szCorpID,szBegin,szEnd,szPayType,szFPType); else _stprintf( szSelect , _T("select corp.corpname,corp.TCPer,Mon_Pay.* from Mon_Pay,Corp where Mon_Pay.corpid=Corp.corpid and %s and Mon_Pay.PayTime>=%s and Mon_Pay.PayTime<=%s and %s and %s order by Mon_Pay.PayTime") , szCorpID,szBegin,szEnd,szPayType,szFPType); TRACE(szSelect); BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Corp_MONPAY) + sizeof(ANS_Corp_MonPayData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_MONPAY * pPayRet = (ANS_Corp_MONPAY *)pData; ANS_Corp_MonPayData * pPayDataRet = (ANS_Corp_MonPayData *)(pData+sizeof(ANS_Corp_MONPAY)); pPayRet->lCount = lCount; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("CorpName") , pPayDataRet->szCorpName); m_AdoRS.GetCollect( _T("PayType") , pPayDataRet->lPayType); m_AdoRS.GetCollect( _T("CorpID") , pPayDataRet->lCorpID); m_AdoRS.GetCollect( _T("PayID") , pPayDataRet->lPayID); m_AdoRS.GetCollect( _T("PayMan") , pPayDataRet->szPayMan); m_AdoRS.GetCollect( _T("PayMode") , pPayDataRet->szPayMode); m_AdoRS.GetCollect( _T("Price") , pPayDataRet->fPrice); m_AdoRS.GetCollect( _T("PriceOne") , pPayDataRet->fPriceOne); m_AdoRS.GetCollect( _T("SmsCount") , pPayDataRet->lSMSCount); m_AdoRS.GetCollect( _T("PayTime"), t); t.GetAsSystemTime(pPayDataRet->tPayTime); m_AdoRS.GetCollect( _T("YS") , pPayDataRet->bYS); m_AdoRS.GetCollect( _T("test") , pPayDataRet->bTest); m_AdoRS.GetCollect( _T("FP") , pPayDataRet->bFP); m_AdoRS.GetCollect( _T("FP_Status") , pPayDataRet->lFPStatus); m_AdoRS.GetCollect( _T("FP_Time"), t); t.GetAsSystemTime(pPayDataRet->tFPTime); m_AdoRS.GetCollect( _T("YS_Time"), t); t.GetAsSystemTime(pPayDataRet->tYSTime); m_AdoRS.GetCollect( _T("YS_Price") , pPayDataRet->fYSPrice); m_AdoRS.GetCollect( _T("YS_PriceOne"), pPayDataRet->fYSPriceOne); m_AdoRS.GetCollect( _T("YS_SMSCount"), pPayDataRet->lYSSMSCount); for ( int i=0 ; i<9; i++ ) { str.Format(_T("S%d_Send") , i ); m_AdoRS.GetCollect( str , pPayDataRet->KF[i].lSend); str.Format(_T("S%d_KF") , i ); m_AdoRS.GetCollect( str , pPayDataRet->KF[i].lKF); } m_AdoRS.GetCollect( _T("BZ") , pPayDataRet->szBZ); m_AdoRS.MoveNext(); pPayDataRet ++; } } SendFrame( SMSFUNC_CORP_MONPAY , (BYTE*)pData , lSize ); //发送返回 return 1; } } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_YYSPay( REQ_Corp_YYSPAY * pPay ) { try { if ( !(m_ulPurview & PURVIEW_TAB) ) //没有权限查看支付记录 { ANS_Corp_YYSPAY * pSeePay = new ANS_Corp_YYSPAY; //权限不够,什么也不返回 memset(pSeePay , 0 , sizeof(ANS_Corp_YYSPAY)); pSeePay->lCount = -1; SendFrame( SMSFUNC_CORP_YYSPAY , (BYTE*)pSeePay , sizeof(ANS_Corp_YYSPAY) ); //发送返回 return 1; } CString str; if ( pPay->lReqType==0 ) //查询 { TCHAR szSelect[1024]={0}; TCHAR szCorpID[128]={0}; TCHAR szYWYID[128]={0}; TCHAR szPayType[128]={0}; TCHAR szFPType[512]={0}; CString strArea=_T("1=1"); if ( pPay->lArea>0 ) { strArea.Format( _T("YYS_Pay.CorpID in (select Corp_Mas.corpid from Corp_Mas where Corp_Mas.Area=%d) ") , pPay->lArea-1 ); } if ( pPay->lCorpID > 0 ) _stprintf(szCorpID,_T("YYS_pay.corpid=%d"),pPay->lCorpID); else _tcscpy( szCorpID,_T("1=1")); if ( pPay->lPayType > 0 ) _stprintf(szPayType,_T("YYS_pay.PayType=%d"),pPay->lPayType-1); else _tcscpy( szPayType,_T("1=1")); /* if ( pPay->lYWYID >= 0 ) _stprintf(szYWYID,_T("func_Pay.corpid in (select corpid from corp where YWYID=%d)"),pPay->lYWYID); else _tcscpy( szYWYID,_T("1=1")); */ if ( pPay->lFPType >= 0 ) if ( pPay->lFPType == 0 ) _tcscpy( szFPType,_T(" YYS_pay.FP=1")); else _stprintf(szFPType,_T(" YYS_pay.FP=1 and YYS_pay.FP_Status = %d"),pPay->lFPType-1); else _tcscpy( szFPType,_T("1=1")); TCHAR szBegin[32]={0}; TCHAR szEnd[32]={0}; _stprintf( szBegin , _T("'%04d%02d%02d'") , pPay->tBegin.wYear,pPay->tBegin.wMonth,pPay->tBegin.wDay ); _stprintf( szEnd , _T("'%04d%02d%02d 23:59:59'") , pPay->tEnd.wYear,pPay->tEnd.wMonth,pPay->tEnd.wDay ); if ( pPay->lTimeType == 1 ) _stprintf( szSelect , _T("select corp.corpname,corp.TCPer,YYS_Pay.* from YYS_Pay,Corp where YYS_Pay.corpid=Corp.corpid and %s and YYS_Pay.FP_Time>=%s and YYS_Pay.FP_Time<=%s and %s and %s and %s order by YYS_Pay.FP_Time") , szCorpID,szBegin,szEnd,szPayType,szFPType,strArea); else _stprintf( szSelect , _T("select corp.corpname,corp.TCPer,YYS_Pay.* from YYS_Pay,Corp where YYS_Pay.corpid=Corp.corpid and %s and YYS_Pay.PayTime>=%s and YYS_Pay.PayTime<=%s and %s and %s and %s order by YYS_Pay.PayTime") , szCorpID,szBegin,szEnd,szPayType,szFPType,strArea); // TRACE(szSelect); BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Corp_YYSPAY) + sizeof(ANS_Corp_YYSPayData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_YYSPAY * pPayRet = (ANS_Corp_YYSPAY *)pData; ANS_Corp_YYSPayData * pPayDataRet = (ANS_Corp_YYSPayData *)(pData+sizeof(ANS_Corp_YYSPAY)); pPayRet->lCount = lCount; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("CorpName") , pPayDataRet->szCorpName); m_AdoRS.GetCollect( _T("PayType") , pPayDataRet->lPayType); m_AdoRS.GetCollect( _T("CorpID") , pPayDataRet->lCorpID); m_AdoRS.GetCollect( _T("PayID") , pPayDataRet->lPayID); m_AdoRS.GetCollect( _T("PayMan") , pPayDataRet->szPayMan); m_AdoRS.GetCollect( _T("PayMode") , pPayDataRet->szPayMode); m_AdoRS.GetCollect( _T("XFPrice") , pPayDataRet->fXFPrice); m_AdoRS.GetCollect( _T("CJPrice") , pPayDataRet->fCJPrice); m_AdoRS.GetCollect( _T("PayPer") , pPayDataRet->fPayPer); if ( pPayDataRet->fPayPer<=0 || pPayDataRet->fPayPer>100 ) pPayDataRet->fPayPer=100.0f; m_AdoRS.GetCollect( _T("Price") , pPayDataRet->fPrice); m_AdoRS.GetCollect( _T("PriceOne") , pPayDataRet->fPriceOne); m_AdoRS.GetCollect( _T("SmsCount") , pPayDataRet->lSMSCount); m_AdoRS.GetCollect( _T("PayTime"), t); t.GetAsSystemTime(pPayDataRet->tPayTime); m_AdoRS.GetCollect( _T("YS") , pPayDataRet->bYS); m_AdoRS.GetCollect( _T("test") , pPayDataRet->bTest); m_AdoRS.GetCollect( _T("FP") , pPayDataRet->bFP); m_AdoRS.GetCollect( _T("FP_Status") , pPayDataRet->lFPStatus); m_AdoRS.GetCollect( _T("FP_Time"), t); t.GetAsSystemTime(pPayDataRet->tFPTime); m_AdoRS.GetCollect( _T("YS_Time"), t); t.GetAsSystemTime(pPayDataRet->tYSTime); m_AdoRS.GetCollect( _T("YS_Price") , pPayDataRet->fYSPrice); m_AdoRS.GetCollect( _T("YS_PriceOne"), pPayDataRet->fYSPriceOne); m_AdoRS.GetCollect( _T("YS_SMSCount"), pPayDataRet->lYSSMSCount); m_AdoRS.GetCollect( _T("BZ") , pPayDataRet->szBZ); m_AdoRS.MoveNext(); pPayDataRet ++; } } SendFrame( SMSFUNC_CORP_YYSPAY , (BYTE*)pData , lSize ); //发送返回 return 1; } if ( pPay->lReqType==2 ) //修改 { ANS_Corp_YYSPayData * pDataSend = (ANS_Corp_YYSPayData *)(((BYTE*)pPay)+sizeof(REQ_Corp_YYSPAY)); long lSize=sizeof(ANS_Corp_YYSPAY) + sizeof(ANS_Corp_YYSPayData); BYTE * pData2 = new BYTE[lSize]; memset(pData2 , 0 , lSize); ANS_Corp_YYSPAY * pSeePay = (ANS_Corp_YYSPAY*)pData2; ANS_Corp_YYSPayData * pDataRet = (ANS_Corp_YYSPayData*)(pData2+sizeof(ANS_Corp_YYSPAY)); *pDataRet = * pDataSend; pSeePay->ret = *pPay; pSeePay->lCount = pPay->lPayType; //返回item CString str; str.Format( _T("update YYS_pay set XFPrice='%.2f',CJPrice='%.2f',PayPer='%.2f',Price='%.2f' where payid=%d") , pDataSend->fXFPrice,pDataSend->fCJPrice,pDataSend->fPayPer,pDataSend->fPrice,pDataSend->lPayID ); if (!m_AdoRS.Open( str ) ) { pSeePay->lCount = -1; } SendFrame( SMSFUNC_CORP_YYSPAY , pData2 , lSize ); //发送返回 return 1; } } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Corp_File( REQ_Corp_File * pFile ) { try { /* if ( !(m_ulPurview & PURVIEW_TAB) ) //没有权限查看支付记录 { ANS_Corp_File * pSeePay = new ANS_Corp_File; //权限不够,什么也不返回 memset(pSeePay , 0 , sizeof(ANS_Corp_File)); pSeePay->lCount = -1; SendFrame( SMSFUNC_CORP_FILE , (BYTE*)pSeePay , sizeof(ANS_Corp_File) ); //发送返回 return 1; } */ CString str; if ( pFile->lReqType==0 ) //查询 { str.Format( _T("select * from corpsmsf.dbo.corp_file where CorpType=%d and CorpID=%d") , pFile->lCorpType , pFile->lCorpID ); BOOL b = m_AdoRS.Open( str ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Corp_File) + sizeof(ANS_Corp_FileData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_File * pPayRet = (ANS_Corp_File *)pData; ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(ANS_Corp_File)); pPayRet->bOK = true; pPayRet->ret = * pFile; pPayRet->lCount = lCount; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("FileID") , pPayDataRet->lFileID); m_AdoRS.GetCollect( _T("CorpType") , pPayDataRet->lCorpType); m_AdoRS.GetCollect( _T("CorpID") , pPayDataRet->lCorpID); m_AdoRS.GetCollect( _T("FileType") , pPayDataRet->szFileType); m_AdoRS.GetCollect( _T("FileName") , pPayDataRet->szFileName); m_AdoRS.GetCollect( _T("FileSize") , pPayDataRet->lFileSize); m_AdoRS.GetCollect( _T("UploadSize") , pPayDataRet->lUploadSize); m_AdoRS.GetCollect( _T("FileTime") , t); t.GetAsSystemTime(pPayDataRet->tFileTime); m_AdoRS.GetCollect( _T("UploadTime") , t); t.GetAsSystemTime(pPayDataRet->tUploadTime); m_AdoRS.GetCollect( _T("UploadUser") , pPayDataRet->szUploadUser); m_AdoRS.GetCollect( _T("BZ") , pPayDataRet->szBZ); m_AdoRS.MoveNext(); pPayDataRet ++; } } SendFrame( SMSFUNC_CORP_FILE , (BYTE*)pData , lSize ); //发送返回 return 1; } if ( pFile->lReqType==1 ) //添加 { ANS_Corp_FileData * pFileData = (ANS_Corp_FileData *)((BYTE*)pFile+sizeof(REQ_Corp_File)); long lSize = sizeof(ANS_Corp_File) + sizeof(ANS_Corp_FileData); BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_File * pPayRet = (ANS_Corp_File *)pData; ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(ANS_Corp_File)); pPayRet->bOK = false; pPayRet->ret = * pFile; pPayRet->lCount = -1; *pPayDataRet = *pFileData; _tcscpy(pPayDataRet->szUploadUser , m_szLoginName ); CString strFileTime=_T("NULL") ; COleDateTime t(pFileData->tFileTime); if ( t.GetStatus() == COleDateTime::valid ) { strFileTime.Format( _T("'%04d%02d%02d'") , t.GetYear(),t.GetMonth(),t.GetDay() ); } CString strBZ = pFileData->szBZ; strBZ.Replace(_T("'") , _T("''")); str.Format( _T("insert into corpsmsf.dbo.corp_file (CorpType,CorpID,FileType,FileTime,UploadTime,UploadUser,BZ) values (%d,%d,'%s',%s,GetDate(),'%s','%s')") , pFileData->lCorpType,pFileData->lCorpID,pFileData->szFileType,strFileTime,m_szLoginName,strBZ ); if ( m_AdoRS.Open(str) ) { str.Format(_T("select top 1 * from corpsmsf.dbo.corp_file where CorpType=%d and CorpID=%d order by UploadTime desc") , pFileData->lCorpType,pFileData->lCorpID ); //取ID if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("FileID") , pPayDataRet->lFileID ); pPayRet->bOK = true; pPayRet->lCount = 1; } } SendFrame( SMSFUNC_CORP_FILE , (BYTE*)pData , lSize ); //发送返回 return 1; } if ( pFile->lReqType==2 ) //修改 { ANS_Corp_FileData * pFileData = (ANS_Corp_FileData *)((BYTE*)pFile+sizeof(REQ_Corp_File)); long lSize = sizeof(ANS_Corp_File) + sizeof(ANS_Corp_FileData); BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_File * pPayRet = (ANS_Corp_File *)pData; ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(ANS_Corp_File)); pPayRet->bOK = false; pPayRet->ret = * pFile; pPayRet->lCount = -1; *pPayDataRet = *pFileData; CString strFileTime=_T("NULL") ; COleDateTime t(pFileData->tFileTime); if ( t.GetStatus() == COleDateTime::valid ) { strFileTime.Format( _T("'%04d%02d%02d'") , t.GetYear(),t.GetMonth(),t.GetDay() ); } CString strBZ = pFileData->szBZ; strBZ.Replace(_T("'") , _T("''")); str.Format( _T("update corpsmsf.dbo.corp_file set FileType='%s',FileTime=%s,BZ='%s' where FileID=%d"), pFileData->szFileType,strFileTime,strBZ,pFileData->lFileID ); if ( m_AdoRS.Open(str) ) { pPayRet->bOK = true; pPayRet->lCount = 1; } SendFrame( SMSFUNC_CORP_FILE , (BYTE*)pData , lSize ); //发送返回 return 1; } if ( pFile->lReqType==3 ) //删除 { ANS_Corp_FileData * pFileData = (ANS_Corp_FileData *)((BYTE*)pFile+sizeof(REQ_Corp_File)); long lSize = sizeof(ANS_Corp_File) + sizeof(ANS_Corp_FileData); BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Corp_File * pPayRet = (ANS_Corp_File *)pData; ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(ANS_Corp_File)); pPayRet->bOK = false; pPayRet->ret = * pFile; pPayRet->lCount = -1; *pPayDataRet = *pFileData; str.Format( _T("delete from corpsmsf.dbo.corp_file where FileID=%d"),pFileData->lFileID ); if ( m_AdoRS.Open(str) ) { pPayRet->bOK = true; pPayRet->lCount = 1; } SendFrame( SMSFUNC_CORP_FILE , (BYTE*)pData , lSize ); //发送返回 return 1; } if ( pFile->lReqType==4 ) //上传 { BOOL bOK=false; BYTE * pFileData = (BYTE *)((BYTE*)pFile+sizeof(REQ_Corp_File)); BYTE * pBuf = new BYTE[pFile->lAllSize+512]; memset(pBuf , 0 , pFile->lAllSize+512 ); long lYYSize=0; str.Format( _T("select * from corpsmsf.dbo.corp_file where FileID=%d") , pFile->lFileID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { long lYYSize=0; if ( pFile->lSize < pFile->lUpSize ) //如果lSize==lUpSize则认为是新上传,直接覆盖原来的数据 { lYYSize = m_AdoRS.GetFieldActualSize( _T("FileData") ); m_AdoRS.GetChunk(_T("FileData") , (LPVOID)pBuf); } //添加新的数据 memcpy(pBuf+lYYSize , pFileData , pFile->lSize ); BOOL b=m_AdoRS.AppendChunk( _T("FileData") , (LPVOID)pBuf,lYYSize+pFile->lSize ); m_AdoRS.Update(); m_AdoRS.Close(); if ( lYYSize+pFile->lSize == pFile->lUpSize ) //数据大小是正确的 { bOK = true; if ( pFile->lAllSize == pFile->lUpSize ) //已上传完毕 { //更新数据 str.Format( _T("update corpsmsf.dbo.corp_file set FileName='%s',FileSize=%d,UploadSize=%d,UploadTime=GetDate() where FileID=%d") , pFile->szCorpName , pFile->lAllSize , pFile->lUpSize,pFile->lFileID ); m_AdoRS.Open(str); } } } delete pBuf; ANS_Corp_File * pPayRet = new ANS_Corp_File; memset( pPayRet , 0 , sizeof(ANS_Corp_File)); pPayRet->bOK = bOK; pPayRet->ret = * pFile; pPayRet->lCount = bOK?1:-1; SendFrame( SMSFUNC_CORP_FILE , (BYTE*)pPayRet , sizeof(ANS_Corp_File) ); //发送返回 return 1; } if ( pFile->lReqType==5 ) //下载 { str.Format( _T("select * from corpsmsf.dbo.corp_file where FileID=%d") , pFile->lFileID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { long lYYSize=0; lYYSize = m_AdoRS.GetFieldActualSize( _T("FileData") ); BYTE * pBuf = new BYTE[lYYSize+512]; memset(pBuf , 0 , lYYSize+512 ); m_AdoRS.GetChunk(_T("FileData") , (LPVOID)pBuf); m_AdoRS.Close(); pFile->lAllSize = lYYSize; pFile->lUpSize = 0; while ( true ) { #define MAXUPFILESIZE 32*1024 //每次下载32K BOOL bEnd=false; pFile->lSize = MAXUPFILESIZE; if ( pFile->lUpSize + pFile->lSize >= pFile->lAllSize ) { pFile->lSize = pFile->lAllSize-pFile->lUpSize; bEnd = true; } long lSize = sizeof(ANS_Corp_File) + pFile->lSize; BYTE * pData = new BYTE[lSize]; memset( pData , 0 , lSize ); ANS_Corp_File * pPayRet = (ANS_Corp_File *)pData; BYTE * pRetBuf = pData + sizeof(ANS_Corp_File); memcpy(pRetBuf , pBuf+pFile->lUpSize , pFile->lSize ); pFile->lUpSize += pFile->lSize; pPayRet->bOK = true; pPayRet->lCount = 1; pPayRet->ret = *pFile; SendFrame( SMSFUNC_CORP_FILE , pData , lSize ); //发送返回 Sleep(500); if ( bEnd ) break; } delete pBuf; } return 1; } } catch (...) { return 0; } return 0; } BOOL CProcessSocket::Process_GetPartner(REQ_GetPartner *pYWY) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_SEE) ) //没有取Partner { ANS_GetPartner * pPartnerRet = new ANS_GetPartner; //权限不够,什么也不返回 pPartnerRet->lCount = 0; SendFrame( SMSFUNC_GETPARTNER , (BYTE*)pPartnerRet , sizeof(REQ_GetPartner) ); //发送返回 return 1; } CString strSelect; //strSelect.Format( _T("select * from Partner where PartnerID=%d"),pPartner->lPartnerID); strSelect.Format( _T("select * from Partner") ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GetPartner) + sizeof(ANS_GetPartnerData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GetPartner * pPartnerRet = (ANS_GetPartner *)pData; ANS_GetPartnerData * pPartnerDataRet = (ANS_GetPartnerData *)(pData+sizeof(ANS_GetPartner)); pPartnerRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("PartnerID") , pPartnerDataRet->lPartnerID); m_AdoRS.GetCollect( _T("PartnerType") , pPartnerDataRet->lPartnerType); m_AdoRS.GetCollect( _T("TotalCJ") , pPartnerDataRet->fTotalCJ); m_AdoRS.GetCollect( _T("TotalLP") , pPartnerDataRet->fTotalLP); m_AdoRS.GetCollect( _T("Name") , pPartnerDataRet->szName); m_AdoRS.GetCollect( _T("NickName") , pPartnerDataRet->szNickName); m_AdoRS.GetCollect( _T("Sex") , pPartnerDataRet->szSex); m_AdoRS.GetCollect( _T("Birthday") , t); t.GetAsSystemTime(pPartnerDataRet->tBirthday); m_AdoRS.GetCollect( _T("LTD") , pPartnerDataRet->szLTD); m_AdoRS.GetCollect( _T("Branch") , pPartnerDataRet->szBranch); m_AdoRS.GetCollect( _T("Job") , pPartnerDataRet->szJob); m_AdoRS.GetCollect( _T("Tel") , pPartnerDataRet->szTel); m_AdoRS.GetCollect( _T("Fax") , pPartnerDataRet->szFax); m_AdoRS.GetCollect( _T("Mobile") , pPartnerDataRet->szMobile); m_AdoRS.GetCollect( _T("Email") , pPartnerDataRet->szEmail); m_AdoRS.GetCollect( _T("QQ") , pPartnerDataRet->szQQ); m_AdoRS.GetCollect( _T("BZ") , pPartnerDataRet->szBZ); m_AdoRS.GetCollect( _T("CreateTime") , t); t.GetAsSystemTime(pPartnerDataRet->tCreateTime); m_AdoRS.GetCollect( _T("CreateUser") , pPartnerDataRet->szCreateUser); m_AdoRS.MoveNext(); pPartnerDataRet ++; } } SendFrame( SMSFUNC_GETPARTNER , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Partner_Modify(REQ_Partner_Modify *pModify) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_MODIFY) ) //没有权限修改资料 { ANS_Partner_Modify * pPartnerRet = new ANS_Partner_Modify; //权限不够,什么也不返回 pPartnerRet->lItem = pModify->lItem; pPartnerRet->lCount = 0; SendFrame( SMSFUNC_PARTNER_MODIFY , (BYTE*)pPartnerRet , sizeof(ANS_Partner_Modify) ); //发送返回 return 1; } ANS_GetPartnerData * pData = (ANS_GetPartnerData *)((BYTE*)pModify+sizeof(REQ_Partner_Modify)); CString strSelect; CString strBirthday; CString strPartnerID; CString strPartnerType; COleDateTime tTemp(pData->tBirthday); if ( tTemp.GetStatus() == COleDateTime::valid) strBirthday.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tBirthday.wYear,pData->tBirthday.wMonth,pData->tBirthday.wDay,pData->tBirthday.wHour,pData->tBirthday.wMinute,pData->tBirthday.wSecond); else strBirthday = _T("NULL"); strPartnerID.Format( _T("%d") , pData->lPartnerID ); strPartnerType.Format( _T("%d") , pData->lPartnerType ); strSelect = CString("update Partner set ") + CString("PartnerType='") + strPartnerType + CString("',") + CString("Name='") + CString(pData->szName) + CString("',") + CString("NickName='") + CString(pData->szNickName) + CString("',") + CString("Sex='") + CString(pData->szSex) + CString("',") + CString("Birthday=") + strBirthday + CString(",") + CString("LTD='") + CString(pData->szLTD) + CString("',") + CString("Branch='") + CString(pData->szBranch) + CString("',") + CString("Job='") + CString(pData->szJob) + CString("',") + CString("Tel='") + CString(pData->szTel) + CString("',") + CString("Fax='") + CString(pData->szFax) + CString("',") + CString("Mobile='") + CString(pData->szMobile) + CString("',") + CString("Email='") + CString(pData->szEmail) + CString("',") + CString("QQ='") + CString(pData->szQQ) + CString("',") + CString("CreateTime=GetDate()") + CString(",") + CString("CreateUser='")+ CString(m_szLoginName) + CString("',") + CString("BZ='") + CString(pData->szBZ) + CString("' ") + CString("where PartnerID=") + strPartnerID ; BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_Partner_Modify) + sizeof(ANS_GetPartnerData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_Partner_Modify * pModifyRet = (ANS_Partner_Modify *)pDataRet; ANS_GetPartnerData * pModifyDataRet = (ANS_GetPartnerData *)(pDataRet+sizeof(ANS_Partner_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pData; SendFrame( SMSFUNC_PARTNER_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_Partner_Modify * pPartnerRet = new ANS_Partner_Modify; //权限不够,什么也不返回 pPartnerRet->lItem = pModify->lItem; pPartnerRet->lCount = 0; SendFrame( SMSFUNC_PARTNER_MODIFY , (BYTE*)pPartnerRet , sizeof(ANS_Partner_Modify) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Partner_Add(REQ_Partner_Add *pAdd) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_ADD) ) //没有权限修改资料 { ANS_Partner_Add * pAddRet = new ANS_Partner_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_PARTNER_ADD , (BYTE*)pAddRet , sizeof(ANS_Partner_Add) ); //发送返回 return 1; } ANS_GetPartnerData * pData = (ANS_GetPartnerData *)((BYTE*)pAdd+sizeof(REQ_Partner_Add)); CString strSelect; CString strBirthday; CString strPartnerType; COleDateTime tTemp(pData->tBirthday); if ( tTemp.GetStatus() == COleDateTime::valid ) //if ( pData->tBirthday.wYear<1990 && pData->tBirthday.wYear>2020 ) strBirthday.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pData->tBirthday.wYear,pData->tBirthday.wMonth,pData->tBirthday.wDay,pData->tBirthday.wHour,pData->tBirthday.wMinute,pData->tBirthday.wSecond); else strBirthday = _T("NULL"); strPartnerType.Format( _T("%d") , pData->lPartnerType ); strSelect = CString("insert into Partner (PartnerType,Name,NickName,Sex,Birthday,LTD,Branch,Job,Tel,Fax,Mobile,Email,QQ,CreateTime,CreateUser,BZ) values(") + CString(" '") + strPartnerType + CString("',") + CString(" '") + CString(pData->szName) + CString("',") + CString(" '") + CString(pData->szNickName) + CString("',") + CString(" '") + CString(pData->szSex) + CString("',") + strBirthday + CString(",") + CString(" '") + CString(pData->szLTD) + CString("',") + CString(" '") + CString(pData->szBranch) + CString("',") + CString(" '") + CString(pData->szJob) + CString("',") + CString(" '") + CString(pData->szTel) + CString("',") + CString(" '") + CString(pData->szFax) + CString("',") + CString(" '") + CString(pData->szMobile) + CString("',") + CString(" '") + CString(pData->szEmail) + CString("',") + CString(" '") + CString(pData->szQQ) + CString("',") + CString(" ") + CString(_T("GetDate()")) + CString(",") + CString(" '") + CString(m_szLoginName) + CString("',") + CString(" '") + CString(pData->szBZ) + CString("' )"); BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_Partner_Add) + sizeof(ANS_GetPartnerData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_Partner_Add * pAddRet = (ANS_Partner_Add *)pDataRet; ANS_GetPartnerData * pAddDataRet = (ANS_GetPartnerData *)(pDataRet+sizeof(ANS_Partner_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pData; //以下为取得新添加记录的ID号 strSelect.Format( _T("select * from Partner where Name='%s'") , pAddDataRet->szName ); b = m_AdoRS.Open( strSelect ); if (b) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("PartnerID") , pAddDataRet->lPartnerID ); } SendFrame( SMSFUNC_PARTNER_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_Partner_Add * pAddRet = new ANS_Partner_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_PARTNER_ADD , (BYTE*)pAddRet , sizeof(ANS_Partner_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Partner_Del(REQ_Partner_Del *pDel) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_DEL) ) //没有权限修改资料 { ANS_Partner_Del * pDelRet = new ANS_Partner_Del; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_PARTNER_DEL , (BYTE*)pDelRet , sizeof(ANS_Partner_Del) ); //发送返回 return 1; } ANS_Partner_DelData * pDelData = (ANS_Partner_DelData *)((BYTE*)pDel+sizeof(REQ_Partner_Del)); long lSize = sizeof(ANS_Partner_Del) + sizeof(ANS_Partner_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Partner_Del * pDelRet = (ANS_Partner_Del * )pData; ANS_Partner_DelData * pDelDataRet= (ANS_Partner_DelData*)(pData+sizeof(ANS_Partner_Del)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from Partner where PartnerID=%d") , pDelData->lUserID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lUserID = pDelData->lUserID; else pDelDataRet->lUserID = 0; pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_PARTNER_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PartnerName(REQ_Partner_Name *pPartner) { try { /* if ( !(m_ulPurview & PURVIEW_FILT) ) //没有权限修改资料 { ANS_Partner_Name * pPartnerRet = new ANS_Partner_Name; //权限不够,什么也不返回 pPartnerRet->lCount = 0; SendFrame( SMSFUNC_PARTNER_NAME , (BYTE*)pPartnerRet , sizeof(ANS_Partner_Name) ); //发送返回 return 1; } */ CString strSelect; strSelect= _T("select * from Partner order by PartnerID"); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Partner_Name) + sizeof(ANS_Partner_NameData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Partner_Name * pNameRet = (ANS_Partner_Name *)pData; ANS_Partner_NameData * pNameDataRet = (ANS_Partner_NameData *)(pData+sizeof(ANS_Partner_Name)); pNameRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("PartnerID") , pNameDataRet->lPartnerID); m_AdoRS.GetCollect( _T("Name") , pNameDataRet->szPartnerName); m_AdoRS.MoveNext(); pNameDataRet ++; } } SendFrame( SMSFUNC_PARTNER_NAME , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } BOOL CProcessSocket::Process_GetCommend(REQ_GetCommend *pCommend) { try { /* if ( !(m_ulPurview & PURVIEW_MANAGER_SEE) ) //没有取Commend { ANS_GetCommend * pCommendRet = new ANS_GetCommend; //权限不够,什么也不返回 pCommendRet->lCount = 0; SendFrame( SMSFUNC_GETCOMMEND , (BYTE*)pCommendRet , sizeof(REQ_GetCommend) ); //发送返回 return 1; } */ CString strSelect; long lVipInt=0; if ( pCommend->lUserID>0 ) { strSelect.Format( _T("select * from Users where userid=%d") , pCommend->lUserID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("VipInt") , lVipInt); } strSelect.Format( _T("select commend.*,Corp.CorpName from Commend LEFT OUTER JOIN corp ON corp.corpid = commend.corpid where commend.UserID=%d order by commend.CreateTime desc"),pCommend->lUserID); } else { CString strWhere,strTemp; if( pCommend->lCorpID>0 ) { strTemp.Format( _T("Commend.CorpID=%d"),pCommend->lCorpID ); if ( strWhere.GetLength()>0 ) strWhere = strWhere + CString(_T(" and ") ) + strTemp; else strWhere = strWhere + CString(_T(" where ") ) + strTemp; } if (pCommend->tBegin.wYear>0 ) { strTemp.Format( _T("CreateTime>='%04d%02d%02d' and CreateTime<='%04d%02d%02d 23:59:59'") , pCommend->tBegin.wYear,pCommend->tBegin.wMonth,pCommend->tBegin.wDay,pCommend->tEnd.wYear,pCommend->tEnd.wMonth,pCommend->tEnd.wDay ); if ( strWhere.GetLength()>0 ) strWhere = strWhere + CString(_T(" and ") ) + strTemp; else strWhere = strWhere + CString(_T(" where ") ) + strTemp; } strSelect.Format( _T("select commend.*,Corp.CorpName from Commend LEFT OUTER JOIN corp ON corp.corpid = commend.corpid %s order by commend.CreateTime desc"),strWhere ); } BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GetCommend) + sizeof(ANS_GetCommendData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GetCommend * pCommendRet = (ANS_GetCommend *)pData; ANS_GetCommendData * pCommendDataRet = (ANS_GetCommendData *)(pData+sizeof(ANS_GetCommend)); pCommendRet->lCount = lCount; //数据记录 pCommendRet->lVipInt= lVipInt; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("CommendID") , pCommendDataRet->lCommendID); m_AdoRS.GetCollect( _T("CommendType") , pCommendDataRet->lCommendType); m_AdoRS.GetCollect( _T("CorpID") , pCommendDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserID") , pCommendDataRet->lUserID); m_AdoRS.GetCollect( _T("Status") , pCommendDataRet->lStatus); m_AdoRS.GetCollect( _T("LoginName") , pCommendDataRet->szLoginName); m_AdoRS.GetCollect( _T("Name") , pCommendDataRet->szName); m_AdoRS.GetCollect( _T("Tel") , pCommendDataRet->szTel); m_AdoRS.GetCollect( _T("Mobile") , pCommendDataRet->szMobile); m_AdoRS.GetCollect( _T("Email") , pCommendDataRet->szEmail); m_AdoRS.GetCollect( _T("TJ_CorpName") , pCommendDataRet->szTJ_CorpName); m_AdoRS.GetCollect( _T("TJ_Name") , pCommendDataRet->szTJ_Name); m_AdoRS.GetCollect( _T("TJ_Tel") , pCommendDataRet->szTJ_Tel); m_AdoRS.GetCollect( _T("TJ_Mobile") , pCommendDataRet->szTJ_Mobile); m_AdoRS.GetCollect( _T("TJ_Email") , pCommendDataRet->szTJ_Email); m_AdoRS.GetCollect( _T("TJ_BZ") , pCommendDataRet->szTJ_BZ); m_AdoRS.GetCollect( _T("TJ_CorpID") , pCommendDataRet->lTJ_CorpID); m_AdoRS.GetCollect( _T("Process_YWY") , pCommendDataRet->szProcess_YWY); m_AdoRS.GetCollect( _T("Process_YWYID") , pCommendDataRet->lProcess_YWYID); m_AdoRS.GetCollect( _T("VipInt") , pCommendDataRet->lVipInt); m_AdoRS.GetCollect( _T("Mobset_BZ") , pCommendDataRet->szMobset_BZ); m_AdoRS.GetCollect( _T("CreateTime") , t); t.GetAsSystemTime(pCommendDataRet->tCreateTime); m_AdoRS.GetCollect( _T("ProcessTime") , t); t.GetAsSystemTime(pCommendDataRet->tProcessTime); m_AdoRS.GetCollect( _T("ProcessUser") , pCommendDataRet->szProcessUser); m_AdoRS.GetCollect( _T("CorpName") , pCommendDataRet->szCorpName); m_AdoRS.MoveNext(); pCommendDataRet ++; } } SendFrame( SMSFUNC_GETCOMMEND , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } BOOL CProcessSocket::Process_GetCommend_LP(REQ_GetCommend_LP *pCommend) { try { CString strSelect; long lVipInt=0; if ( pCommend->lUserID>0 ) { strSelect.Format( _T("select * from Users where userid=%d") , pCommend->lUserID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("VipInt") , lVipInt); } strSelect.Format( _T("select * from CommendLP order by VipInt")); } else { strSelect.Format( _T("select * from CommendLP order by VipInt") ); } BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GetCommend_LP) + sizeof(ANS_GetCommend_LPData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GetCommend_LP * pCommendRet = (ANS_GetCommend_LP *)pData; ANS_GetCommend_LPData * pCommendDataRet = (ANS_GetCommend_LPData *)(pData+sizeof(ANS_GetCommend_LP)); pCommendRet->lCount = lCount; //数据记录 pCommendRet->lVipInt= lVipInt; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("CommendLPID") , pCommendDataRet->lCommendLPID); m_AdoRS.GetCollect( _T("LPType") , pCommendDataRet->lType); m_AdoRS.GetCollect( _T("Name") , pCommendDataRet->szName); m_AdoRS.GetCollect( _T("VipInt") , pCommendDataRet->lVipInt); m_AdoRS.MoveNext(); pCommendDataRet ++; } } SendFrame( SMSFUNC_GETCOMMEND_LP , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Commend_GetMy(REQ_Commend_GetMy * pCommend) { try { CString strSelect; long lVipInt=0; ANS_Commend_GetMy * pCommendRet = new ANS_Commend_GetMy; memset(pCommendRet , 0 , sizeof(ANS_Commend_GetMy)); if ( pCommend->bGetURL ) { pCommendRet->bGetURL = true; _tcscpy(pCommendRet->szURL,_T("http://happy.mobset.com/Home/softToIndex")); } else { if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { strSelect.Format( _T("select * from Commend where userid=%d order by CreateTime desc") , pCommend->lUserID ); m_AdoRS.GetCollect( _T("Name") , pCommendRet->szName); m_AdoRS.GetCollect( _T("Tel") , pCommendRet->szTel); m_AdoRS.GetCollect( _T("Mobile") , pCommendRet->szMobile); m_AdoRS.GetCollect( _T("Email") , pCommendRet->szEmail); } } SendFrame( SMSFUNC_COMMEND_GETMY , (BYTE*)pCommendRet , sizeof(ANS_Commend_GetMy) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Commend_GetVipInt(REQ_Commend_GetVipInt * pCommend) { try { ANS_Commend_GetVipInt * pCommendRet = new ANS_Commend_GetVipInt; memset(pCommendRet , 0 , sizeof(ANS_Commend_GetVipInt)); CString strSelect; BOOL bOK = true; strSelect.Format( _T("select * from Corp where CorpID=%d ") , pCommend->lCorpID ); if ( bOK && m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("CorpID") , pCommendRet->lCorpID); m_AdoRS.GetCollect( _T("CorpName") , pCommendRet->szCorpName); } else { if ( bOK ) { pCommendRet->lErrCode = -1; _stprintf(pCommendRet->szErrMsg , _T("找不到ID为[%d]的企业,请检查!") , pCommend->lCorpID ); } bOK = false; } strSelect.Format( _T("select top 1 * from Corp_pay where CorpID=%d and Commend_VipInt>0 order by paytime ") , pCommend->lCorpID ); if ( bOK && m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Commend_VipInt") , pCommendRet->lCommend_VipInt); } else { if ( bOK ) { pCommendRet->lErrCode = -2; _stprintf(pCommendRet->szErrMsg , _T("找不到企业ID为[%d]的充值记录,请检查!") , pCommend->lCorpID ); } bOK = false; } SendFrame( SMSFUNC_COMMEND_GETVIPINT , (BYTE*)pCommendRet , sizeof(ANS_Commend_GetVipInt) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_GetHD(REQ_GetHD * pHD) { try { ANS_GetHD * pRetHD = new ANS_GetHD; memset(pRetHD , 0 , sizeof(ANS_GetHD)); _tcscpy(pHD->szHD , pHD->szHD); CString strSelect; //查询短信归属地 ExMobileGZM(pHD->szHD); long lType = CProcessSocket::MobileNumType(pHD->szHD); CString strTemp = pHD->szHD; CString strProv; CString strCity; if ( lType==MOBILE_TYPE_PHS) //小灵通,查邮政编码表 { for ( int i=3 ; i<5 ; i++ ) { strSelect.Format(_T("select * from HDB_XLT where Code='%s' order by XLTID") , strTemp.Left(i)); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Prov") , strProv ); m_AdoRS.GetCollect( _T("City") , strCity ); break; } } strTemp=strProv; if ( strCity.GetLength()>0 ) strTemp = strProv + CString(_T("-")) + strCity; if ( strTemp.GetLength()<=0 ) strTemp = _T("未知归属地"); } else { //手机号,查号段表 strSelect.Format(_T("select * from HDB_ALL where HD='%s'") , strTemp.Left(7),strTemp.Left(7)); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Prov") , strProv ); m_AdoRS.GetCollect( _T("City") , strCity ); } strTemp=strProv; if ( strCity.GetLength()>0 ) strTemp = strProv + CString(_T("-")) + strCity; if ( strTemp.GetLength()<=0 ) strTemp = _T("未知归属地"); } _tcscpy(pRetHD->szProv , strProv); _tcscpy(pRetHD->szCity , strCity); _tcscpy(pRetHD->szMsg , strTemp); SendFrame( SMSFUNC_GETHD , (BYTE*)pRetHD , sizeof(ANS_GetHD) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Commend_Modify(REQ_Commend_Modify *pModify) { try { /* if ( !(m_ulPurview & PURVIEW_MANAGER_MODIFY) ) //没有权限修改资料 { ANS_Commend_Modify * pCommendRet = new ANS_Commend_Modify; //权限不够,什么也不返回 pCommendRet->lItem = pModify->lItem; pCommendRet->lCount = 0; SendFrame( SMSFUNC_COMMEND_MODIFY , (BYTE*)pCommendRet , sizeof(ANS_Commend_Modify) ); //发送返回 return 1; } */ ANS_GetCommendData * pData = (ANS_GetCommendData *)((BYTE*)pModify+sizeof(REQ_Commend_Modify)); CString strSelect; CString strCommendID; CString strCommendType; CString strCorpID; CString strUserID; CString strStatus; CString strVipInt; CString strYWYID; strCommendID.Format( _T("%d") , pData->lCommendID ); strCommendType.Format( _T("%d") , pData->lCommendType ); strCorpID.Format( _T("%d") , pData->lCorpID ); strUserID.Format( _T("%d") , pData->lUserID ); strStatus.Format( _T("%d") , pData->lStatus ); strVipInt.Format( _T("%d") , pData->lVipInt ); strYWYID.Format( _T("%d") , pData->lProcess_YWYID ); strSelect = CString("update Commend set ") + //CString("CommendType='") + strCommendType + CString("',") + CString("Name='") + CString(pData->szName) + CString("',") + CString("Tel='") + CString(pData->szTel) + CString("',") + CString("Mobile='") + CString(pData->szMobile) + CString("',") + CString("Email='") + CString(pData->szEmail) + CString("',") + CString("TJ_CorpName='")+ CString(pData->szTJ_CorpName)+ CString("',") + CString("TJ_Name='") + CString(pData->szTJ_Name) + CString("',") + CString("TJ_Tel='") + CString(pData->szTJ_Tel) + CString("',") + CString("TJ_Mobile='") + CString(pData->szTJ_Mobile) + CString("',") + CString("TJ_Email='") + CString(pData->szTJ_Email) + CString("',") + CString("TJ_BZ='") + CString(pData->szTJ_BZ) + CString("',") + CString("Process_YWY='")+ CString(pData->szProcess_YWY) + CString("',") + CString("Process_YWYID='")+ strYWYID + CString("',") + CString("VipInt='") + strVipInt + CString("',") + CString("Mobset_BZ='") + CString(pData->szMobset_BZ)+ CString("',") + CString("ProcessTime=") + CString(_T("GetDate()")) + CString(" ") + CString("where CommendID=") + strCommendID ; BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_Commend_Modify) + sizeof(ANS_GetCommendData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_Commend_Modify * pModifyRet = (ANS_Commend_Modify *)pDataRet; ANS_GetCommendData * pModifyDataRet = (ANS_GetCommendData *)(pDataRet+sizeof(ANS_Commend_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pData; SendFrame( SMSFUNC_COMMEND_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_Commend_Modify * pCommendRet = new ANS_Commend_Modify; //权限不够,什么也不返回 pCommendRet->lItem = pModify->lItem; pCommendRet->lCount = 0; SendFrame( SMSFUNC_COMMEND_MODIFY , (BYTE*)pCommendRet , sizeof(ANS_Commend_Modify) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Commend_Status(REQ_Commend_Status *pStatus) { try { /* if ( !(m_ulPurview & PURVIEW_MANAGER_MODIFY) ) //没有权限修改资料 { ANS_Commend_Status * pCommendRet = new ANS_Commend_Status; //权限不够,什么也不返回 pCommendRet->bOK = false; SendFrame( SMSFUNC_COMMEND_STATUS , (BYTE*)pCommendRet , sizeof(ANS_Commend_Status) ); //发送返回 return 1; } */ CString strSelect; CString strBZ; switch( pStatus->lStatus ) { case 1: //正在处理 strBZ.Format( _T("更改状态为:正在处理,业务员:%s 说明:%s") , pStatus->szProcess_YWY,pStatus->szProcess_BZ ); strSelect.Format( _T("Update commend set Status=%d , mobset_BZ='%s' ,Process_YWYID=%d , Process_YWY='%s', ProcessUser='%s' where CommendID=%d") , pStatus->lStatus,strBZ ,pStatus->lProcess_YWYID,pStatus->szProcess_YWY,m_szLoginName , pStatus->lCommendID ); break; case 2: //处理成功 strBZ.Format( _T("更改状态为:已成交,积分为:%d 说明:%s") , pStatus->lVipInt,pStatus->szProcess_BZ ); strSelect.Format( _T("Update commend set Status=%d , mobset_BZ='%s' ,VipInt=%d ,TJ_CorpID=%d, ProcessUser='%s' where CommendID=%d") , pStatus->lStatus,strBZ ,pStatus->lVipInt,pStatus->lTJ_CorpID,m_szLoginName , pStatus->lCommendID ); break; case 3: //处理失败 strBZ.Format( _T("更改状态为:无法成交,积分为:%d 说明:%s") , pStatus->lVipInt,pStatus->szProcess_BZ ); strSelect.Format( _T("Update commend set Status=%d , mobset_BZ='%s' ,VipInt=%d , ProcessUser='%s' where CommendID=%d") , pStatus->lStatus,strBZ ,pStatus->lVipInt,m_szLoginName , pStatus->lCommendID ); break; } BOOL b = m_AdoRS.Open( strSelect ); ANS_Commend_Status * pRetStatus = new ANS_Commend_Status; memset(pRetStatus , 0 , sizeof(ANS_Commend_Status)); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { if (pStatus->lCommendType!=1 && ( pStatus->lStatus ==2 || pStatus->lStatus==3 )) //已成交或无法成交 { strSelect.Format( _T("Update users set VipInt=VipInt+%d where UserID=%d") , pStatus->lVipInt , pStatus->lUserID ); m_AdoRS.Open(strSelect); } pRetStatus->bOK = true; } else { pRetStatus->bOK = false; } SendFrame( SMSFUNC_COMMEND_STATUS , (BYTE*)pRetStatus , sizeof(ANS_Commend_Status) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Commend_Add(REQ_Commend_Add *pAdd) { try { /* if ( !(m_ulPurview & PURVIEW_MANAGER_ADD) ) //没有权限修改资料 { ANS_Commend_Add * pAddRet = new ANS_Commend_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_COMMEND_ADD , (BYTE*)pAddRet , sizeof(ANS_Commend_Add) ); //发送返回 return 1; } */ ANS_GetCommendData * pData = (ANS_GetCommendData *)((BYTE*)pAdd+sizeof(REQ_Commend_Add)); CString strSelect; CString strCommendID; CString strCommendType; CString strCorpID; CString strUserID; CString strStatus; CString strVipInt; CString strYWYID; strCommendID.Format( _T("%d") , pData->lCommendID ); strCommendType.Format( _T("%d") , pData->lCommendType ); strCorpID.Format( _T("%d") , pData->lCorpID ); strUserID.Format( _T("%d") , pData->lUserID ); strStatus.Format( _T("%d") , pData->lStatus ); strVipInt.Format( _T("%d") , pData->lVipInt ); //自动分配业务员 strSelect.Format( _T("select ywy.ywyid,ywy.name from corp LEFT OUTER JOIN ywy on ywy.ywyid=corp.ywyid where corpid=%d") , pData->lCorpID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("YWYID") , pData->lProcess_YWYID ); m_AdoRS.GetCollect( _T("Name") , pData->szProcess_YWY ); } strYWYID.Format( _T("%d") , pData->lProcess_YWYID ); strSelect = CString(_T("insert into Commend (CommendType,CorpID,UserID,LoginName,Name,Tel,Mobile,Email,TJ_CorpName,TJ_Name,TJ_Tel,TJ_Mobile,TJ_Email,TJ_BZ,VipInt,Process_YWYID,Process_YWY,CreateTime) values(")) + CString(" '") + strCommendType + CString("',") + CString(" '") + strCorpID + CString("',") + CString(" '") + strUserID + CString("',") + CString(" '") + CString(m_szLoginName) + CString("',") + CString(" '") + CString(pData->szName) + CString("',") + CString(" '") + CString(pData->szTel) + CString("',") + CString(" '") + CString(pData->szMobile) + CString("',") + CString(" '") + CString(pData->szEmail) + CString("',") + CString(" '") + CString(pData->szTJ_CorpName) + CString("',") + CString(" '") + CString(pData->szTJ_Name) + CString("',") + CString(" '") + CString(pData->szTJ_Tel) + CString("',") + CString(" '") + CString(pData->szTJ_Mobile) + CString("',") + CString(" '") + CString(pData->szTJ_Email) + CString("',") + CString(" '") + CString(pData->szTJ_BZ) + CString("',") + strVipInt + CString(",") + strYWYID + CString(",") + CString(" '") + CString(pData->szProcess_YWY) + CString("',") + CString(" ") + CString(_T("GetDate()")) + CString(")"); BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_Commend_Add) + sizeof(ANS_GetCommendData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_Commend_Add * pAddRet = (ANS_Commend_Add *)pDataRet; ANS_GetCommendData * pAddDataRet = (ANS_GetCommendData *)(pDataRet+sizeof(ANS_Commend_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pData; //以下为取得新添加记录的ID号 strSelect.Format( _T("select * from Commend where Name='%s'") , pAddDataRet->szName ); b = m_AdoRS.Open( strSelect ); if (b) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("CommendID") , pAddDataRet->lCommendID ); if ( pData->lCommendType==1 ) //先扣减积分 { strSelect.Format( _T("update Users set VipInt=VipInt+%d where UserID=%d") , pData->lVipInt , pData->lUserID ); m_AdoRS.Open(strSelect); } } //通知我们管理员说有新的更改签名申请 strSelect.Format(_T("登记了新的推荐客户:%s,请处理。") ,pData->szTJ_CorpName ); SendReportMsg(strSelect,REPORT_ALL,&m_AdoRS,&m_AdoRS2,m_pSMSDlg ); //发送通知短信 SendFrame( SMSFUNC_COMMEND_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_Commend_Add * pAddRet = new ANS_Commend_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_COMMEND_ADD , (BYTE*)pAddRet , sizeof(ANS_Commend_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Commend_Del(REQ_Commend_Del *pDel) { try { /* if ( !(m_ulPurview & PURVIEW_MANAGER_DEL) ) //没有权限修改资料 { ANS_Commend_Del * pDelRet = new ANS_Commend_Del; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_COMMEND_DEL , (BYTE*)pDelRet , sizeof(ANS_Commend_Del) ); //发送返回 return 1; } */ ANS_Commend_DelData * pDelData = (ANS_Commend_DelData *)((BYTE*)pDel+sizeof(REQ_Commend_Del)); long lSize = sizeof(ANS_Commend_Del) + sizeof(ANS_Commend_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Commend_Del * pDelRet = (ANS_Commend_Del * )pData; ANS_Commend_DelData * pDelDataRet= (ANS_Commend_DelData*)(pData+sizeof(ANS_Commend_Del)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from Commend where CommendID=%d") , pDelData->lUserID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lUserID = pDelData->lUserID; else pDelDataRet->lUserID = 0; pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_COMMEND_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TDSet_Modify(REQ_TDSet_Modify *pModify) { try { CString strSelect; BOOL b = true; if ( pModify->lCount<=1 ) { strSelect.Format( _T("Update TDSet Set Status=%d,Mobile='%s',TD='%s',OutAll='%s',BZ='%s' where TDSetID=%d"), pModify->data.lStatus,pModify->data.szMobile,pModify->data.szTD,pModify->data.szOutAll,pModify->data.szBZ,pModify->data.lTDSetID); b = m_AdoRS.Open( strSelect ); } else { ANS_TDSet_ModifyData * pModifyData = (ANS_TDSet_ModifyData *)(((BYTE*)pModify)+sizeof(REQ_TDSet_Modify)); for ( int i=0 ; ilCount ; i++ ) { strSelect.Format( _T("Update TDSet Set Status=%d,TD='%s',OutAll='%s' where TDSetID=%d"), pModify->data.lStatus,pModify->data.szTD,pModify->data.szOutAll,pModifyData->lTDSetID); b = m_AdoRS.Open( strSelect ); pModifyData ++; } } ANS_TDSet_Modify * pModifyRet = new ANS_TDSet_Modify; memset(pModifyRet , 0 , sizeof(ANS_TDSet_Modify)); pModifyRet->bOK = false; pModifyRet->lCount = pModify->lCount; pModifyRet->modify = *pModify; pModifyRet->bOK = b; SendFrame( SMSFUNC_TDSET_MODIFY , (BYTE*)pModifyRet , sizeof(ANS_TDSet_Modify) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TDSet_Ins(REQ_TDSet_Ins *pAdd) { try { CString strSelect; BOOL b = true; long lTDSetID = 0; if ( pAdd->lCount<=1 ) { strSelect.Format( _T("insert into TDSet (Status,CorpID,Mobile,TD,OutAll,BZ,AddTime) values (%d,%d,'%s','%s','%s','%s',GetDate())") , pAdd->data.lStatus,pAdd->data.lCorpID,pAdd->data.szMobile,pAdd->data.szTD,pAdd->data.szOutAll,pAdd->data.szBZ); BOOL b = m_AdoRS.Open( strSelect ); if ( b ) { //以下为取得新添加记录的ID号 strSelect.Format( _T("select * from TDSet where CorpID=%d and Mobile='%s' order by AddTime desc") , pAdd->data.lCorpID,pAdd->data.szMobile ); b = m_AdoRS.Open( strSelect ); if (b) { m_AdoRS.GetCollect( _T("TDSetID") , lTDSetID ); } } } else { ANS_TDSet_InsData * pInsData = (ANS_TDSet_InsData *)(((BYTE*)pAdd)+sizeof(REQ_TDSet_Ins)); for ( int i=0 ; ilCount ; i++ ) { strSelect.Format( _T("insert into TDSet (Status,CorpID,Mobile,TD,OutAll,BZ,AddTime) values (%d,%d,'%s','%s','%s','%s',GetDate())") , pAdd->data.lStatus,pAdd->data.lCorpID,pInsData->szMobile,pAdd->data.szTD,pAdd->data.szOutAll,pAdd->data.szBZ); b = m_AdoRS.Open( strSelect ); pInsData ++; } } ANS_TDSet_Ins * pInsRet = new ANS_TDSet_Ins; memset(pInsRet , 0 , sizeof(ANS_TDSet_Ins)); pInsRet->bOK = false; pInsRet->ins = *pAdd; pInsRet->ins.data.lTDSetID = lTDSetID; pInsRet->lCount = pAdd->lCount; pInsRet->bOK = b; SendFrame( SMSFUNC_TDSET_INS , (BYTE*)pInsRet , sizeof(ANS_TDSet_Ins) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TDSet_Get(REQ_TDSet_Get * pTD) { try { CString strSelect; strSelect.Format( _T("select * from TDSet where CorpID=%d ") , pTD->lCorpID ); long lCount=0; if ( m_AdoRS.Open( strSelect ) ) { lCount = m_AdoRS.GetRecordCount(); } long lSize = sizeof(ANS_TDSet_Get) + sizeof(ANS_TDSet_Data)*lCount; BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize); ANS_TDSet_Get * pTDRet = (ANS_TDSet_Get *)pData; ANS_TDSet_Data * pTDRetData = (ANS_TDSet_Data*)(pData+sizeof(ANS_TDSet_Get)); pTDRet->lCount = lCount; m_AdoRS.MoveFirst(); while(!m_AdoRS.IsEOF()) { COleDateTime t; m_AdoRS.GetCollect(_T("TDSetID") , pTDRetData->lTDSetID); m_AdoRS.GetCollect(_T("Status") , pTDRetData->lStatus); m_AdoRS.GetCollect(_T("CorpID") , pTDRetData->lCorpID); m_AdoRS.GetCollect(_T("Mobile") , pTDRetData->szMobile); m_AdoRS.GetCollect(_T("TD") , pTDRetData->szTD); m_AdoRS.GetCollect(_T("OutAll") , pTDRetData->szOutAll); m_AdoRS.GetCollect(_T("BZ") , pTDRetData->szBZ); m_AdoRS.GetCollect(_T("AddTime") , t);t.GetAsSystemTime(pTDRetData->tAddTime); m_AdoRS.MoveNext(); pTDRetData ++; } SendFrame( SMSFUNC_TDSET_GET , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TDSet_Del(REQ_TDSet_Del *pDel) { try { ANS_TDSet_DelData * pDelData = (ANS_TDSet_DelData *)((BYTE*)pDel+sizeof(REQ_TDSet_Del)); long lSize = sizeof(ANS_TDSet_Del) + sizeof(ANS_TDSet_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_TDSet_Del * pDelRet = (ANS_TDSet_Del * )pData; ANS_TDSet_DelData * pDelDataRet= (ANS_TDSet_DelData*)(pData+sizeof(ANS_TDSet_Del)); pDelRet->lCorpID=pDel->lCorpID; pDelRet->lUserID=pDel->lUserID; pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from TDSet where TDSetID=%d") , pDelData->lTDSetID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lTDSetID = pDelData->lTDSetID; else pDelDataRet->lTDSetID = 0; pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_TDSET_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_FaxNum_Get(REQ_FaxNum_Get * pGet ) { try { CString strSelect; //生成查找条件 CString strTemp; CString strWhere = _T("1=1"); if ( pGet->lCorpID>0 ) { strTemp.Format(_T(" and CorpID=%d") , pGet->lCorpID ); strWhere = strWhere + strTemp; } if ( pGet->lUserID>0 ) { strTemp.Format(_T(" and UserID=%d") , pGet->lUserID ); strWhere = strWhere + strTemp; } strSelect.Format( _T("select FaxNum.*,corp.CorpName from FaxNum LEFT OUTER JOIN corp on corp.corpid=faxNum.corpid where %s ") , strWhere ); //查找数据并且返回 long lCount=0; if ( m_AdoRS.Open( strSelect ) ) { lCount = m_AdoRS.GetRecordCount(); } long lSize = sizeof(ANS_FaxNum_Get) + sizeof(ANS_FaxNum_Data)*lCount; BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize); ANS_FaxNum_Get * pFaxRet = (ANS_FaxNum_Get *)pData; ANS_FaxNum_Data * pFaxRetData = (ANS_FaxNum_Data*)(pData+sizeof(ANS_FaxNum_Get)); pFaxRet->lCorpID=pGet->lCorpID; //返回企业ID、用户ID、记录数量 pFaxRet->lUserID=pGet->lUserID; pFaxRet->lCount = lCount; m_AdoRS.MoveFirst(); while(!m_AdoRS.IsEOF()) { COleDateTime t; m_AdoRS.GetCollect(_T("FaxNumID") , pFaxRetData->lFaxNumID); m_AdoRS.GetCollect(_T("FaxNum") , pFaxRetData->szFaxNum); m_AdoRS.GetCollect(_T("FaxUserAccount") , pFaxRetData->szUserAccount); m_AdoRS.GetCollect(_T("FaxBNetAccount") , pFaxRetData->szBNetAccount); //m_AdoRS.GetCollect(_T("FaxPasswd") , pFaxRetData->szPasswd); m_AdoRS.GetCollect(_T("CorpID") , pFaxRetData->lCorpID); m_AdoRS.GetCollect(_T("UserID") , pFaxRetData->lUserID); m_AdoRS.GetCollect(_T("CorpName") , pFaxRetData->szCorpName); m_AdoRS.GetCollect(_T("BZ") , pFaxRetData->szBZ); m_AdoRS.MoveNext(); pFaxRetData ++; } SendFrame( SMSFUNC_FAXNUM_GET , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_FaxNum_Set(REQ_FaxNum_Set * pSet ) { try { CString strSelect; ANS_FaxNum_Set * pSetRet = new ANS_FaxNum_Set; memset(pSetRet , 0 , sizeof(ANS_FaxNum_Set)); pSetRet->lItem =pSet->lItem; pSetRet->lFaxNumID =pSet->lFaxNumID; pSetRet->fax = pSet->fax; strSelect.Format(_T("update FaxNum Set CorpID=%d,BZ='%s' where FaxNumID=%d") , pSet->fax.lCorpID,pSet->fax.szBZ , pSet->lFaxNumID ); if ( m_AdoRS.Open(strSelect) ) { pSetRet->bOK = true; } else { pSetRet->bOK = false; } SendFrame( SMSFUNC_FAXNUM_SET , (BYTE*)pSetRet , sizeof(ANS_FaxNum_Set) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_FaxSend(REQ_FaxSend * pSend ) { try { ANS_FaxSend * pSendRet2 = new ANS_FaxSend; //权限不够,什么也不返回 pSendRet2->lCount = 0; if ( !(m_ulPurview & PURVIEW_SENDG) && !(m_ulPurview & PURVIEW_SENDP) || //没有权限发送短信 m_lUserID<0 || pSend->lUserID != m_lUserID) //还没登录 { pSendRet2->lErrCode = -1; SendFrame( SMSFUNC_FAXSEND , (BYTE*)pSendRet2 , sizeof(ANS_FaxSend) ); //发送返回 return 1; } long lErrCode=0; //判断FaxID是否存在及完整 CString str; CString strFaxSendNum; //取传真号 BOOL bGet=false; str.Format( _T("select * from faxNum where UserID=%d") , pSend->lUserID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { bGet = true; } if ( !bGet ) { str.Format( _T("select * from faxNum where CorpID=%d") , pSend->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { bGet = true; } } if ( !bGet ) { pSendRet2->lErrCode = -2; SendFrame( SMSFUNC_FAXSEND , (BYTE*)pSendRet2 , sizeof(ANS_FaxSend) ); //发送返回 return 1; } m_AdoRS.GetCollect(_T("FaxNum") , strFaxSendNum ); if ( strFaxSendNum.GetLength()<10 ) { pSendRet2->lErrCode = -3; SendFrame( SMSFUNC_FAXSEND , (BYTE*)pSendRet2 , sizeof(ANS_FaxSend) ); //发送返回 return 1; } delete pSendRet2; TCHAR szGroupID[32]={0}; BOOL bUserNoSZ = false; //用户短信量无限制 long lUserSmsUsed = 0; TCHAR szName[32]={0}; long lNoStatus=false; long lReportType=0; long lReportPer=0; long lPriority2=50; long lSubDelay=20; long lCorpSmsUsed = 0; long lCorpSmsSendType=0; long lCorpStatus=0; COleDateTime tCorpOvrDate; BOOL bSY=true; long lRecvNumType=0; long lDayMaxSend=0; //每天最大发送量限额 CString strIP=m_szIP; CString strSelect; strSelect.Format( _T("select * from users where UserID=%d") , pSend->lUserID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("SMSUsed") , lUserSmsUsed); //可发数量 m_AdoRS.GetCollect(_T("GroupID") , szGroupID ); m_AdoRS.GetCollect(_T("Name") , szName ); //防止'引起的问题 CString strTemp = szName; strTemp.Replace(_T("'"),_T("''")); _tcscpy( szName , strTemp ); if ( lUserSmsUsed == -100 ) { bUserNoSZ= true; //用户没限制 } } strSelect.Format( _T("select * from corp where CorpID=%d") , pSend->lCorpID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("SMSUsed") , lCorpSmsUsed); //可发数量 m_AdoRS.GetCollect(_T("OvrTime") , tCorpOvrDate); //过期日期 m_AdoRS.GetCollect(_T("SMSSendType") , lCorpSmsSendType); //允许发送的类型 m_AdoRS.GetCollect(_T("NoStatus"), lNoStatus ); m_AdoRS.GetCollect(_T("ReportType"),lReportType); m_AdoRS.GetCollect(_T("ReportPer"),lReportPer); m_AdoRS.GetCollect(_T("SY"), bSY ); m_AdoRS.GetCollect(_T("Priority"), lPriority2 ); m_AdoRS.GetCollect(_T("SubDelay"), lSubDelay ); m_AdoRS.GetCollect(_T("Status"),lCorpStatus); //企业状态 m_AdoRS.GetCollect(_T("DayMaxSend") , lDayMaxSend ); //每天最大发送量限额 if ( lNoStatus==0 ) { lNoStatus=1; if ( lReportType==1 ) lNoStatus=2; } else { lNoStatus=0; } } CString strTimer; COleDateTime tTemp(pSend->tTimer); if ( tTemp.GetStatus() == COleDateTime::valid ) strTimer.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , tTemp.GetYear(),tTemp.GetMonth(),tTemp.GetDay(),tTemp.GetHour(),tTemp.GetMinute(),tTemp.GetSecond()); else strTimer = _T("NULL"); //开始生成返回数据 ANS_FaxSend_Num * pSendData = (ANS_FaxSend_Num *)((BYTE*)pSend+sizeof(REQ_FaxSend)); long lSize = sizeof(ANS_FaxSend)+sizeof(ANS_FaxSend_Num)*pSend->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_FaxSend * pSendRet = (ANS_FaxSend *)pData; ANS_FaxSend_Num * pSendDataRet = (ANS_FaxSend_Num *)(pData+sizeof(ANS_FaxSend)); pSendRet->lErrCode = 0; pSendRet->lCorpID = pSend->lCorpID; pSendRet->lUserID = pSend->lUserID; pSendRet->lFaxFileID = pSend->lFaxFileID; _tcscpy(pSendRet->szTitle,pSend->szTitle); pSendRet->lCount = pSend->lCount; CString strTitle = pSend->szTitle; strTitle.Replace(_T("'") , _T("''")); long lSendCount = 0; lSendCount = m_dwSendCount; long lPriority = 0; if ( lSendCount > 0 ) { lPriority = lSendCount/100; //每发送200条为一个优先级 lPriority = (lPriority+2)*lPriority2; //与企业优先级合为一体 } m_dwSendCount += pSend->lCount; //lRecvNumType = ; CString strTemp; CString strLock; if ( this->m_pSMSDlg->m_Setup.bLock ) strLock = _T("WITH (ROWLOCK)"); lSendCount = 0; //记录已发成功的记录数 for ( int i = 0 ; i< pSend->lCount ; i++ ) { BOOL bNumSup = true; BOOL bNumSup2 = true; long lSendRet=0; //根据优先级进行延时处理 if ( lSubDelay>0 ) Sleep( lSubDelay ); *pSendDataRet = *pSendData; //防止'引起的问题 strTemp = pSendData->szFaxNum; strTemp.Replace(_T("'"),_T("''")); _tcscpy( pSendData->szFaxNum , strTemp ); strTemp = pSendData->szName; strTemp.Replace(_T("'"),_T("''")); _tcscpy( pSendData->szName , strTemp ); /* //判断是否为手机号码,如果不是,发送不出 ExMobileGZM(pSendData->szFaxNum); if ( !isNumSup(pSendData->szFaxNum) ) { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup2 = false; } long lRecvNumType = MobileNumType(pSendData->szFaxNum); //取号码类型,移动、联通、小灵通、电信 */ pSendDataRet->lStatus = SEND_STATUS_SUB_OK; //默认发送失败 long lStatus=pSendDataRet->lStatus; _tcscpy(pSendDataRet->szSendNum , strFaxSendNum ); //将记录添加到发送表 strTemp.Format( _T("insert into FaxSend %s (CorpID,UserID,FaxFileID,GroupID,Status,ReSendCount,Sender,SendNum,Recver,RecvNum,RecvNumType,SendRet,Title,MsgType,SubTime,Timer,Priority,StatusReport,KF,IP,RecvStatus,SendFCS) Values(%d,%d,%d,'%s',%d,0,'%s','%s','%s','%s',%d,%d,'%s',%d,GetDate(),%s,%d,%d,1,'%s','%s',%d)") , strLock, pSend->lCorpID, pSend->lUserID, pSend->lFaxFileID, szGroupID, lStatus, //发送状态 szName, strFaxSendNum, pSendData->szName, pSendData->szFaxNum, lRecvNumType, //是否联通,0-移动,1-联通 lSendRet, strTitle, SMSTYPE_SEND, //MsgType , 0 正常发送 strTimer , lPriority, 0, strIP, _T(""), 0 ); if (m_AdoRS.Open( strTemp )) { CString strLock2; if ( this->m_pSMSDlg->m_Setup.bLock ) strLock2 = _T("WITH (NOLOCK)"); //提交成功,取SendID strSelect.Format( _T("select * from FaxSend %s where UserID=%d order by SubTime desc") ,strLock2, pSend->lUserID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { pSendDataRet->lStatus = lStatus; //发送成功或需要审核 m_AdoRS.GetCollect( _T("SendID") , pSendDataRet->lSendID ); lSendCount++; } } //发送下一条 pSendDataRet++; pSendData ++; } m_io->m_dwSendCount = m_dwSendCount; //发送计数,用于控制优先级 m_io->m_dwLastSend = m_dwLastSend; //发送计数,用于控制优先级 SendFrame( SMSFUNC_FAXSEND , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_FaxSend_ID(REQ_FaxSend_ID * pID ) { try { CString strSelect; ANS_FaxSend_ID * pRet = new ANS_FaxSend_ID; memset(pRet , 0 , sizeof(ANS_FaxSend_ID)); pRet->bReUp = true; pRet->lCorpID = pID->lCorpID; pRet->lUserID = pID->lUserID; pRet->lFaxFileID = pID->lFaxFileID; if ( pID->lFaxFileID>0 ) //客户端已有ID,需要判断ID是否存在及文件是否完整 { strSelect.Format(_T("select * from FaxFile where FaxFileID=%d") , pID->lFaxFileID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { BOOL bOK=false; BOOL bOK2=false; for ( int i=1 ; i<=FAXSEND_ATTACH_MAX ; i++ ) { TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("FaxAttach\\") ); //生成查询串 CString strFieldName; long lFileSize=0; strFieldName.Format(_T("FileSize%d") , i ); m_AdoRS.GetCollect(strFieldName , lFileSize); long lFileAllSize=0; strFieldName.Format(_T("FileAllSize%d") , i ); m_AdoRS.GetCollect(strFieldName , lFileAllSize); CString FileName; strFieldName.Format(_T("FileName%d") , i ); m_AdoRS.GetCollect(strFieldName , FileName); if ( lFileSize>0 ) { //检测文件是否存在与取文件大小 CString strFile; strFile.Format(_T("%s%d_%d_%s"),szPath,pID->lFaxFileID,i,FileName); WIN32_FILE_ATTRIBUTE_DATA filedata={0}; if ( GetFileAttributesEx(strFile,GetFileExInfoStandard,&filedata) && filedata.nFileSizeLow==lFileSize && filedata.nFileSizeLow==lFileAllSize ) //判断文件是否已上传完整 { bOK=true; } else { bOK2 = true; } } } if ( bOK && !bOK2) pRet->bReUp =false; } } if ( pRet->bReUp ) //需要重新生成ID { pRet->lFaxFileID = 0; //重新生成 CString strFaxTitle = pID->szFaxTitle; strFaxTitle.Replace(_T("'") , _T("''")); strSelect.Format(_T("insert into FaxFile (CorpID,UserID,FaxTitle,CreateTime) values (%d,%d,'%s',GetDate())") , pID->lCorpID,pID->lUserID,strFaxTitle ); if ( m_AdoRS.Open(strSelect) ) { m_AdoRS.Close(); //取FaxFileID strSelect.Format(_T("Select * from FaxFile where CorpID=%d and UserID=%d order by CreateTime desc") , pID->lCorpID,pID->lUserID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("FaxFileID") , pRet->lFaxFileID); } } } SendFrame( SMSFUNC_FAXSEND_ID , (BYTE*)pRet , sizeof(ANS_FaxSend_ID) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_FaxSend_Up(REQ_FaxSend_Up * pUp ) { try { BYTE * pFileData = (BYTE *)((BYTE*)pUp+sizeof(REQ_FaxSend_Up)); CString strSelect; ANS_FaxSend_Up * pRet = new ANS_FaxSend_Up; memset(pRet , 0 , sizeof(ANS_FaxSend_Up)); pRet->bOK = false; pRet->lCorpID = pUp->lCorpID; pRet->lUserID = pUp->lUserID; pRet->lFileIndex = pUp->lFileIndex; pRet->lFaxFileID = pUp->lFaxFileID; pRet->lAllLen = pUp->lAllLen; pRet->lUpLen = pUp->lUpLen; pRet->lDataLen = pUp->lDataLen; if ( pUp->lFaxFileID>0 ) //客户端已有ID,需要判断ID是否存在及文件是否完整 { strSelect.Format(_T("select * from FaxFile where FaxFileID=%d") , pUp->lFaxFileID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { BOOL bOK2=true; TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("FaxAttach\\") ); //生成查询串 CString strFieldName; long lFileSize=0; strFieldName.Format(_T("FileSize%d") , pUp->lFileIndex ); m_AdoRS.GetCollect(strFieldName , lFileSize); long lFileAllSize=0; strFieldName.Format(_T("FileAllSize%d") , pUp->lFileIndex ); m_AdoRS.GetCollect(strFieldName , lFileAllSize); CString strFileName; strFieldName.Format(_T("FileName%d") , pUp->lFileIndex ); m_AdoRS.GetCollect(strFieldName , strFileName); CString strFile; strFile.Format(_T("%s%d_%d_%s"),szPath,pUp->lFaxFileID,pUp->lFileIndex,pUp->szFileName); if ( lFileSize >0 ) { if ( strFileName != CString(pUp->szFileName) ) //本次上传的文件名称不同 { bOK2=false; } //检测文件是否存在与取文件大小 WIN32_FILE_ATTRIBUTE_DATA filedata={0}; if ( !GetFileAttributesEx(strFile,GetFileExInfoStandard,&filedata) || filedata.nFileSizeLow!=lFileSize || lFileAllSize!=pUp->lAllLen ) //文件大小不同 { bOK2=false; } if ( lFileSize != pRet->lUpLen-pRet->lDataLen ) //已上传的文件与原来的文件大小不同 { bOK2=false; } } if ( bOK2 ) //保存文件 { CFile file; BOOL bFirst=false; if ( pRet->lUpLen==pRet->lDataLen ) //这个文件是首次上传 bFirst = true; BOOL bFile = false; if ( bFirst ) { bFile = file.Open(strFile , CFile::modeReadWrite|CFile::modeCreate); } else { bFile = file.Open(strFile , CFile::modeReadWrite); } if ( bFile ) { file.SeekToEnd(); file.Write(pFileData,pUp->lDataLen); pRet->bOK = true; } else { bOK2 =false; } //更新数据 CString strName=pUp->szFileName; strName.Replace(_T("'") , _T("''")); if ( bFirst ) strSelect.Format(_T("update FaxFile Set FileName%d='%s',FileAllSize%d=%d,FileSize%d=%d where FaxFileID=%d") ,pUp->lFileIndex,strName,pUp->lFileIndex,pUp->lAllLen,pUp->lFileIndex,pUp->lUpLen, pUp->lFaxFileID ); else strSelect.Format(_T("update FaxFile Set FileSize%d=%d where FaxFileID=%d") ,pUp->lFileIndex,pUp->lUpLen, pUp->lFaxFileID ); m_AdoRS.Open(strSelect); } } } SendFrame( SMSFUNC_FAXSEND_UP , (BYTE*)pRet , sizeof(ANS_FaxSend_Up) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_FaxStatus(REQ_FaxStatus * pStatus ) { try { if ( pStatus->lCount<=0 || pStatus->lCount>1000 ) //数量不对,关闭 return 0; ANS_FaxStatus_Data2 * pStatusData = (ANS_FaxStatus_Data2 *)((BYTE*)pStatus+sizeof(REQ_FaxStatus)); long lSize = sizeof(ANS_FaxStatus)+sizeof(ANS_FaxStatus_Data)*pStatus->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_FaxStatus * pStatusRet = (ANS_FaxStatus *)pData; ANS_FaxStatus_Data * pStatusDataRet = (ANS_FaxStatus_Data *)(pData+sizeof(ANS_FaxStatus)); pStatusRet->lCount = pStatus->lCount; CString strSelect; COleDateTime t; BOOL bGetOK = false; BOOL b; Sleep(500); for ( int i=0;ilCount;i++) { Sleep(3); //留多点时间给别人 pStatusDataRet->lSendID = pStatusData->lSendID; pStatusDataRet->lItemID = pStatusData->lItemID; pStatusDataRet->lStatus = pStatusData->lStatus; pStatusDataRet->lTimes = pStatusData->lTimes; bGetOK = false; //查询,看状态变了没有 strSelect.Format( _T("select * from faxsend where SendID=%d") , pStatusData->lSendID ); b = m_AdoRS.Open( strSelect ); if ( b && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Status") , pStatusDataRet->lStatus ); //if ( pStatusDataRet->lStatus != pStatusData->lStatus ) { m_AdoRS.GetCollect( _T("Times") , pStatusDataRet->lTimes ); m_AdoRS.GetCollect( _T("RecvStatus") , pStatusDataRet->szStatusMsg ); m_AdoRS.GetCollect( _T("SendTime") , t );t.GetAsSystemTime( pStatusDataRet->tSendTime ); m_AdoRS.GetCollect( _T("RecvTime") , t );t.GetAsSystemTime( pStatusDataRet->tRecvTime ); bGetOK = true; } } /* else { //如果正常表查询不到,则从转移表中查询 strSelect.Format( _T("select * from corpsmsm.dbo.smssend where SendID=%d") , pStatusData->lSendID ); b = m_AdoRS.Open( strSelect ); if ( b && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Status") , pStatusDataRet->lStatus ); if ( pStatusDataRet->lStatus != pStatusData->lStatus ) { m_AdoRS.GetCollect( _T("SendTime") , t );t.GetAsSystemTime( pStatusDataRet->tSendTime ); m_AdoRS.GetCollect( _T("RecvTime") , t );t.GetAsSystemTime( pStatusDataRet->tRecvTime ); bGetOK = true; } } else { //如果转移表仍查询不到,在定时表中查询。 strSelect.Format( _T("select * from corpsmsm.dbo.smssendt where SendID=%d") , pStatusData->lSendID ); b = m_AdoRS.Open( strSelect ); if ( b && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Status") , pStatusDataRet->lStatus ); if ( pStatusDataRet->lStatus != pStatusData->lStatus ) { m_AdoRS.GetCollect( _T("SendTime") , t );t.GetAsSystemTime( pStatusDataRet->tSendTime ); m_AdoRS.GetCollect( _T("RecvTime") , t );t.GetAsSystemTime( pStatusDataRet->tRecvTime ); bGetOK = true; } } } } */ //if ( !bGetOK ) // pStatusDataRet->lStatus = -1; //状态未变 pStatusDataRet ++; //继续处理下一条。 pStatusData ++; } SendFrame( SMSFUNC_FAXSTATUS ,pData , lSize ); return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_MmsSend(REQ_MmsSend * pSend ) { try { ANS_MmsSend * pSendRet2 = new ANS_MmsSend; //权限不够,什么也不返回 pSendRet2->lCount = 0; if ( !(m_ulPurview & PURVIEW_SENDG) && !(m_ulPurview & PURVIEW_SENDP) || //没有权限发送短信 m_lUserID<0 || pSend->lUserID != m_lUserID) //还没登录 { pSendRet2->lErrCode = -1; SendFrame( SMSFUNC_MMSSEND , (BYTE*)pSendRet2 , sizeof(ANS_MmsSend) ); //发送返回 return 1; } if ( pSend->lmmSize<=0 ) //没有附件 { pSendRet2->lErrCode = -2; SendFrame( SMSFUNC_MMSSEND , (BYTE*)pSendRet2 , sizeof(ANS_MmsSend) ); //发送返回 return 1; } //第一步,查询用户短信号码及特服号 BOOL bOutAll2=false; BOOL bOutAll=false; TCHAR szUserSmsNum[32]={0}; TCHAR szCorpSmsNum[32]={0}; TCHAR szCorpSmsNum2[32]={0}; TCHAR szCorpSmsTD[32]={0}; TCHAR szCorpSmsTD2[32]={0}; BOOL bUserNoSZ = false; //用户短信量无限制 long lSubNumType= 0; //是否要在特服号中减位 long lUserSmsUsed = 0; long lCorpSmsUsed = 0; TCHAR szCorpMmsSendType[32]={0}; long lCorpStatus=0; long lAutoTG_GL=30; double fAgentUsed= 0.0f; //代理可用余额 long lAgentStatus=0; COleDateTime tCorpOvrDate; COleDateTime tUserOvrDate; TCHAR szGroupID[32]={0}; TCHAR szName[32]={0}; TCHAR szTemp[32]={0}; TCHAR szCM[32]={0}; long lDayMaxSend=0; //每天最大发送量限额 long lSmsSendAll=0; //当天发送总量 long lZTSmsSendAll=0; //昨天记录的最后总发送量,对于对比当天是否发送超额 long lNoSendBegin=0; //发广告免发起点 long lNoSendMaxPer=0; //发广告免发最大的百分比 long lNoStatus=false; long lReportType=0; long lReportPer=0; BOOL bNoOut=false; BOOL bSY=true; long lPriority2=50; long lSubDelay=20; long lUserType=0; CString strIP=m_szIP; BOOL bSendBDTD=m_lSDK & SDK_ALLOWCHANGETD;//如果有自由更换通道功能,允许按号码绑定通道 //判断最后发送时间,看是否需要重新计算发送数量。 if ( ::GetTickCount() - m_dwLastSend > 120000 ) //20分钟时间 { m_dwSendCount = 0; } m_dwLastSend = ::GetTickCount(); srand((unsigned)time(NULL)); //取随机数种子 CString strSelect; strSelect.Format( _T("select * from users with (nolock) where UserID=%d") , pSend->lUserID ); BOOL b = m_AdoRS.Open( strSelect ); if ( b && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("MmsUsed") , lUserSmsUsed); //可发数量 m_AdoRS.GetCollect(_T("SMSNum") , szUserSmsNum); //特服号 m_AdoRS.GetCollect(_T("GroupID") , szGroupID ); m_AdoRS.GetCollect(_T("Name") , szName ); //防止'引起的问题 CString strTemp = szName; strTemp.Replace(_T("'"),_T("''")); _tcscpy( szName , strTemp ); if ( lUserSmsUsed == -100 ) { bUserNoSZ= true; //用户没限制 } } else { pSendRet2->lErrCode = -2; SendFrame( SMSFUNC_MMSSEND , (BYTE*)pSendRet2 , sizeof(ANS_MmsSend) ); //发送返回 return 1; } strSelect.Format( _T("select * from corp LEFT OUTER JOIN MmsPro on corp.corpid=MmsPro.corpid where corp.CorpID=%d") , pSend->lCorpID ); b = m_AdoRS.Open( strSelect ); if ( b && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("MmsUsed") , lCorpSmsUsed); //可发数量 m_AdoRS.GetCollect(_T("SMSNum") , szCorpSmsNum); //特服号 m_AdoRS.GetCollect(_T("OvrTime") , tCorpOvrDate); //过期日期 m_AdoRS.GetCollect(_T("MmsSendType") , szCorpMmsSendType); //允许发送的类型 m_AdoRS.GetCollect(_T("MmsTD") , szCorpSmsTD ); //使用的通道 _tcscat(szCorpSmsTD , _T("000000000") ); m_AdoRS.GetCollect(_T("CM") , szCM ); m_AdoRS.GetCollect(_T("MmsReportPer"),lReportPer); m_AdoRS.GetCollect(_T("MmsNoOut"), bNoOut ); m_AdoRS.GetCollect(_T("MmsOutAll"), bOutAll2 ); m_AdoRS.GetCollect(_T("SY"), bSY ); m_AdoRS.GetCollect(_T("Priority"), lPriority2 ); m_AdoRS.GetCollect(_T("SubDelay"), lSubDelay ); m_AdoRS.GetCollect(_T("Status"),lCorpStatus); //企业状态 m_AdoRS.GetCollect(_T("MmsDayMaxSend") , lDayMaxSend ); //每天最大发送量限额 m_AdoRS.GetCollect(_T("MmsSendAll") , lSmsSendAll ); //当前发送总量 m_AdoRS.GetCollect(_T("ZTMmsSendAll") , lZTSmsSendAll ); //昨天记录的最后总发送量,对于对比当天是否发送超额 m_AdoRS.GetCollect(_T("NoSendBegin") , lNoSendBegin ); //发广告免发起点 m_AdoRS.GetCollect(_T("NoSendMaxPer") , lNoSendMaxPer ); //发广告免发最大的百分比 m_AdoRS.GetCollect(_T("UserType") , lUserType ); //发广告免发最大的百分比 if ( szCorpSmsNum[0] == '*' ) //如果前面以*开头,则要在减位特服号 { if ( szCorpSmsNum[1] == '*' ) lSubNumType = 2; else lSubNumType =1; ExChar(szCorpSmsNum,_T("*")); } } else { pSendRet2->lErrCode = -3; SendFrame( SMSFUNC_MMSSEND , (BYTE*)pSendRet2 , sizeof(ANS_MmsSend) ); //发送返回 return 1; } /* //查询代理商信息 if ( m_lAgentType == 2 ) //超级代理商,需要从代理商扣费 { strSelect.Format( _T("select * from agent where agentID=%d") , m_lAgentID ); b = m_AdoRS.Open( strSelect ); if ( b && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("Used") , fAgentUsed); //代理商可用余额 m_AdoRS.GetCollect(_T("Status") , lAgentStatus); //代理商状态 } } */ delete pSendRet2; //上面用于临时返回数据的结构,以下没用到,删除。 //开始生成返回数据 ANS_MmsSend_Num * pSendData = (ANS_MmsSend_Num *)((BYTE*)pSend+sizeof(REQ_MmsSend)); long lSize = sizeof(ANS_MmsSend)+sizeof(ANS_MmsSend_Num)*pSend->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_MmsSend * pSendRet = (ANS_MmsSend *)pData; ANS_MmsSend_Num * pSendDataRet = (ANS_MmsSend_Num *)(pData+sizeof(ANS_MmsSend)); pSendRet->lErrCode = 0; pSendRet->lCorpID = pSend->lCorpID; pSendRet->lUserID = pSend->lUserID; pSendRet->lMmsFileID = pSend->lMmsFileID; _tcscpy(pSendRet->szTitle,pSend->szTitle); pSendRet->lmmSize = pSend->lmmSize; pSendRet->lCount = pSend->lCount; CString strTitle = pSend->szTitle; strTitle.Replace(_T("'") , _T("''")); //提交时间 CString strSubTime; SYSTEMTIME t;::GetLocalTime(&t); long lSendCount = 0; long lSendCount_QXT = 0; BOOL bQXT=false; lSendCount = m_dwSendCount; long lPriority = 0; if ( lSendCount > 0 ) { lPriority = lSendCount/100; //每发送200条为一个优先级 lPriority = (lPriority+2)*lPriority2; //与企业优先级合为一体 } m_dwSendCount += pSend->lCount; lSendCount = 0; //记录已发成功的记录数 CString strTemp; BOOL bGetCorp = true; BOOL bGetUser = true; for ( int i = 0 ; i< pSend->lCount ; i++ ) { BOOL bNumSup = true; BOOL bNumSup2 = true; long lSendRet=0; long lNoStatus2=lNoStatus; BOOL bSendMFGG=false; //是否免发广告 BOOL bQXT2=false; //根据优先级进行延时处理 if ( lSubDelay>0 ) Sleep( lSubDelay ); *pSendDataRet = *pSendData; strTemp = pSendData->szMmsNum; strTemp.Replace(_T("'"),_T("''")); _tcscpy( pSendData->szMmsNum , strTemp ); strTemp = pSendData->szName; strTemp.Replace(_T("'"),_T("''")); _tcscpy( pSendData->szName , strTemp ); //判断是否为手机号码,如果不是,发送不出 ExMobileGZM(pSendData->szMmsNum); if ( !isNumSup(pSendData->szMmsNum) ) { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup2 = false; } long lRecvNumType = MobileNumType(pSendData->szMmsNum); //取号码类型,移动、联通、小灵通、电信 //根据设置的免发广告起点及最大免发率进行免发短信的筛选 if ( lNoSendBegin>0 && (m_dwSendCount>(DWORD)lNoSendBegin) ) //达到基本筛选条件 { long lPer = 95-((m_dwSendCount-(DWORD)lNoSendBegin)/500); //每500条降低1个百分点 if ( lPer < lNoSendMaxPer ) lPer = lNoSendMaxPer; long lrand = rand()%100; if ( lrand>lPer) //产生的随机数大于设置的概率,则为免发短信 bSendMFGG=true; } //判断是否为运营商的网关 #ifdef SMSCENTER_ONE if ( szCorpSmsTD[0] == '2' && lRecvNumType==MOBILE_TYPE_CMCC) { bQXT2 = true; } #endif pSendDataRet->lStatus = SEND_STATUS_SUB_ERROR; //默认发送失败 if ( lCorpSmsUsed <= 0 && !bQXT2) //不在企信通的情况下,企业短信余额小于0时不能发送 { pSendDataRet->lStatus = SEND_STATUS_SUB_CORPNOSMS; //默认发送失败 bGetCorp = false; } else { if (tCorpOvrDate.GetStatus()==COleDateTime::valid && COleDateTime::GetCurrentTime() >tCorpOvrDate ) { pSendDataRet->lStatus = SEND_STATUS_SUB_CORPOVRDATE; //过期 bGetCorp = false; } } if ( !bUserNoSZ && lUserSmsUsed <= 0 ) //用户不是没限制,加上用户余额小于0 { pSendDataRet->lStatus = SEND_STATUS_SUB_USERNOSMS; //默认发送失败 bGetUser = false; } /* if ( m_lAgentType==2 && fAgentUsed < 0.10f ) //代理商余额不足(//只有超级代理商才做此处理) { pSendDataRet->lStatus = SEND_STATUS_SUB_CORPNOSMS; //默认发送失败 bGetUser = false; } */ #ifdef SMSCENTER_ADC_TEMP //临时第三平台,不能发送短信 bGetCorp = false; #endif if ( lDayMaxSend >0 && lSmsSendAll - lZTSmsSendAll>lDayMaxSend) //今天发送量已超最大限额 { bGetCorp = false; pSendDataRet->lStatus = SEND_STATUS_OVERCOUNT; //发送量已超最大限额 } //暂时不控制深夜发送 if ( !bSY ) //此用户不支持深夜发送 { if ( t.wHour>=22 || t.wHour<6 ) { pSendDataRet->lStatus = SEND_STATUS_NOSY; //不支持深夜发送 bGetCorp = false; } } //判断是否需要根据号码绑定通道 TCHAR szTDBD_TD[32]={0}; TCHAR szTDBD_OutAll[32]={0}; /* BOOL bSendBDTD2=bSendBDTD; if ( bSendBDTD2 ) //有切换通道权限,判断是否此号码有绑定设置 bSendBDTD2 = isTDBD(pSendData->szMobile,&m_AdoRS,m_lCorpID,szTDBD_TD,szTDBD_OutAll); */ //判断号码是否支持 TCHAR szSendNum[64]={0}; TCHAR szDFH[32]={0}; memset(szTemp ,0,sizeof(szTemp)); _tcscpy( szTemp , szCorpMmsSendType ); _tcscat(szTemp , _T("0000000 ") ); _tcscpy(szCorpSmsTD2 , szCorpSmsTD ); BOOL bQJTD=false; bOutAll = bOutAll2; switch (lRecvNumType) { case MOBILE_TYPE_CMCC: if ( szTemp[0] == '2' ) { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { /* if ( m_pSMSDlg->m_Setup.szQZSmsTD[0] >='1' && m_pSMSDlg->m_Setup.szQZSmsTD[0]<='D' && m_lCorpID !=100000 ) //有设置了强制通道 { szCorpSmsTD2[0] = m_pSMSDlg->m_Setup.szQZSmsTD[0]; //直接使用强制通道的值 bQJTD=true; } if ( m_pSMSDlg->m_Setup.szQZSmsOutAll[0]=='1' && m_lCorpID !=100000 ) //强制非全网 { bQJTD=true; bOutAll = 0; } if ( m_pSMSDlg->m_Setup.szQZSmsOutAll[0]=='2' && m_lCorpID !=100000 ) //强制全网 { bQJTD=true; bOutAll = 1; } if ( bSendBDTD2 ) //号码强制通道 { if ( szTDBD_TD[0] >='1' && szTDBD_TD[0]<='D') //有设置了强制通道 { szCorpSmsTD2[0] = szTDBD_TD[0]; //直接使用强制通道的值 bQJTD=true; bOutAll = 1; } if ( szTDBD_OutAll[0]=='1' ) //强制非全网 { bQJTD=true; bOutAll = 0; } if ( szTDBD_OutAll[0]=='2') //强制全网 { bQJTD=true; bOutAll = 1; } } */ #if defined(SMSCENTER_TWO) || defined(SMSCENTER_IMUSIC) || defined(SMSCENTER_DGSB) lSendRet = 10; _tcscpy( szDFH , P1_MMS_CMCC_GD ); switch ( szCorpSmsTD2[0] ) { case '1': //第二通道 default: if ( bOutAll || !isMobileGD(pSendData->szMmsNum,&m_AdoRS,m_lCorpID) ) { if ( bNoOut) //这是外省号码,但已设置成不能发送,此彩信只支持省内号码 { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { lSendRet = 11; //使用第二通道 _tcscpy( szDFH , P1_MMS_SDWL ); //使用另外的号码,62015017 } } break; case '3': //北京红树,10658 if ( bOutAll || !isMobileGD(pSendData->szMmsNum,&m_AdoRS,m_lCorpID) ) { if ( bNoOut) //这是外省号码,但已设置成不能发送,此彩信只支持省内号码 { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { lSendRet = 13; _tcscpy( szDFH , P1_MMS_BJHS ); //使用另外的号码,62015017 } } break; } #endif #ifdef SMSCENTER_ONE lSendRet = 10; _tcscpy( szDFH , P1_MMS_CMCC_GD ); switch ( szCorpSmsTD2[0] ) { case '1': //第二通道 default: if ( bOutAll || !isMobileGD(pSendData->szMmsNum,&m_AdoRS,m_lCorpID) ) { if ( bNoOut) //这是外省号码,但已设置成不能发送,此彩信只支持省内号码 { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { lSendRet = 11; _tcscpy( szDFH , P1_MMS_SDWL ); //使用另外的号码,62015017 } } break; case '2': //第2通道,移动企信通,卓望 lSendRet = m_lCorpID; _tcscpy( szDFH , P1_MMS_ZWQYCX ); break; case '3': //北京红树,10658 if ( bOutAll || !isMobileGD(pSendData->szMmsNum,&m_AdoRS,m_lCorpID) ) { if ( bNoOut) //这是外省号码,但已设置成不能发送,此彩信只支持省内号码 { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { lSendRet = 13; _tcscpy( szDFH , P1_MMS_BJHS ); //使用另外的号码,62015017 } } break; } #endif } if ( lSubNumType>0 ) //需要减位 { szDFH[_tcslen(szDFH)-lSubNumType]=0; //移除N位 } if ( m_ulPurview & PURVIEW_SENDP ) _stprintf( szSendNum , _T("%s%s%s") , szDFH , szCorpSmsNum , szUserSmsNum ); //私人特服号 else _stprintf( szSendNum , _T("%s%s") , szDFH , szCorpSmsNum ); //公用特服号 break; case MOBILE_TYPE_UNICOM: if ( szTemp[1] == '2' ) { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { /* if ( m_pSMSDlg->m_Setup.szQZSmsTD[1] >='1' && m_pSMSDlg->m_Setup.szQZSmsTD[1]<='9' && m_lCorpID !=100000 ) //有设置了强制通道 { szCorpSmsTD2[1] = m_pSMSDlg->m_Setup.szQZSmsTD[1]; //直接使用强制通道的值 bQJTD=true; } if ( m_pSMSDlg->m_Setup.szQZSmsOutAll[1]=='1' && m_lCorpID !=100000 ) //强制非全网 { bQJTD=true; bOutAll = 0; } if ( m_pSMSDlg->m_Setup.szQZSmsOutAll[1]=='2' && m_lCorpID !=100000 ) //强制全网 { bQJTD=true; bOutAll = 1; } if ( bSendBDTD2 ) //号码强制通道 { if ( szTDBD_TD[1] >='1' && szTDBD_TD[1]<='9') //有设置了强制通道 { szCorpSmsTD2[1] = szTDBD_TD[1]; //直接使用强制通道的值 bQJTD=true; bOutAll = 1; } if ( szTDBD_OutAll[0]=='1' ) //强制非全网 { bQJTD=true; bOutAll = 0; } if ( szTDBD_OutAll[0]=='2') //强制全网 { bQJTD=true; bOutAll = 1; } } */ #if defined(SMSCENTER_TWO) || defined(SMSCENTER_IMUSIC) || defined(SMSCENTER_DGSB) lSendRet = 20; _tcscpy(szDFH,P1_MMS_UNICOM_BJ); switch(szCorpSmsTD2[1]) { case '1': default: //判断是省内还是省外 if ( bOutAll || !isMobileGD(pSendData->szMmsNum,&m_AdoRS) ) { if ( bNoOut ) //这是外省号码,但已设置成不能发送 { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { lSendRet = 20; //使用第二通道 _tcscpy( szDFH , P1_MMS_UNICOM_BJ ); } } break; } #endif #ifdef SMSCENTER_ONE lSendRet = 20; _tcscpy(szDFH,P1_MMS_UNICOM_BJ); switch(szCorpSmsTD2[1]) { case '1': default: //判断是省内还是省外 if ( bOutAll || !isMobileGD(pSendData->szMmsNum,&m_AdoRS) ) { if ( bNoOut ) //这是外省号码,但已设置成不能发送 { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { lSendRet = 20; //使用第二通道 _tcscpy( szDFH , P1_MMS_UNICOM_BJ ); } } break; } #endif } if ( lSubNumType>0 ) //需要减位 { szDFH[_tcslen(szDFH)-lSubNumType]=0; //移除N位 } if ( m_ulPurview & PURVIEW_SENDP ) _stprintf( szSendNum , _T("%s%s%s") , szDFH , szCorpSmsNum , szUserSmsNum ); //私人特服号 else _stprintf( szSendNum , _T("%s%s") , szDFH , szCorpSmsNum ); //公用特服号 break; case MOBILE_TYPE_PHS: if ( szTemp[2] == '2' ) { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { /* if ( m_pSMSDlg->m_Setup.szQZSmsTD[2] >='1' && m_pSMSDlg->m_Setup.szQZSmsTD[2]<='9' && m_lCorpID !=100000 ) //有设置了强制通道 { szCorpSmsTD2[2] = m_pSMSDlg->m_Setup.szQZSmsTD[2]; //直接使用强制通道的值 bQJTD=true; } if ( m_pSMSDlg->m_Setup.szQZSmsOutAll[2]=='1' && m_lCorpID !=100000 ) //强制非全网 { bQJTD=true; bOutAll = 0; } if ( m_pSMSDlg->m_Setup.szQZSmsOutAll[2]=='2' && m_lCorpID !=100000 ) //强制全网 { bQJTD=true; bOutAll = 1; } if ( bSendBDTD2 ) //号码强制通道 { if ( szTDBD_TD[2] >='1' && szTDBD_TD[2]<='D') //有设置了强制通道 { szCorpSmsTD2[2] = szTDBD_TD[2]; //直接使用强制通道的值 bQJTD=true; bOutAll = 1; } if ( szTDBD_OutAll[0]=='1' ) //强制非全网 { bQJTD=true; bOutAll = 0; } if ( szTDBD_OutAll[0]=='2') //强制全网 { bQJTD=true; bOutAll = 1; } } */ //默认是号码不支持 pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } break; case MOBILE_TYPE_TELCOM: if ( szTemp[3] == '2' ) { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } else { /* if ( m_pSMSDlg->m_Setup.szQZSmsTD[3] >='1' && m_pSMSDlg->m_Setup.szQZSmsTD[3]<='9' && m_lCorpID !=100000 ) //有设置了强制通道 { szCorpSmsTD2[3] = m_pSMSDlg->m_Setup.szQZSmsTD[3]; //直接使用强制通道的值 bQJTD=true; } if ( m_pSMSDlg->m_Setup.szQZSmsOutAll[3]=='1' && m_lCorpID !=100000 ) //强制非全网 { bQJTD=true; bOutAll = 0; } if ( m_pSMSDlg->m_Setup.szQZSmsOutAll[3]=='2' && m_lCorpID !=100000 ) //强制全网 { bQJTD=true; bOutAll = 1; } if ( bSendBDTD2 ) //号码强制通道 { if ( szTDBD_TD[3] >='1' && szTDBD_TD[3]<='D') //有设置了强制通道 { szCorpSmsTD2[3] = szTDBD_TD[3]; //直接使用强制通道的值 bQJTD=true; bOutAll = 1; } if ( szTDBD_OutAll[0]=='1' ) //强制非全网 { bQJTD=true; bOutAll = 0; } if ( szTDBD_OutAll[0]=='2') //强制全网 { bQJTD=true; bOutAll = 1; } } */ #if defined(SMSCENTER_TWO) || defined(SMSCENTER_IMUSIC) || defined(SMSCENTER_DGSB) lSendRet = 45; _tcscpy(szDFH,P1_MMS_TELCOM_ISAG4); switch(szCorpSmsTD2[3]) { case '1': default: //判断是省内还是省外 //if ( bOutAll || !isMobileGD(pSendData->szMmsNum,&m_AdoRS) ) //{ // if ( bNoOut ) //这是外省号码,但已设置成不能发送 // { // pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 // bNumSup = false; // } // else // { lSendRet = 45; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG4 ); // } //} break; case '2': lSendRet = 42; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG ); break; case '3': lSendRet = 43; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG2 ); break; case '4': lSendRet = 44; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG3 ); break; case '5': lSendRet = 45; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG4 ); break; } #endif #ifdef SMSCENTER_ONE lSendRet = 45; _tcscpy(szDFH,P1_MMS_TELCOM_ISAG4); switch(szCorpSmsTD2[3]) { default: lSendRet = 45; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG4 ); break; case '3': lSendRet = 43; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG2 ); break; /* case '2': lSendRet = 42; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG ); break; case '3': lSendRet = 43; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG2 ); break; case '4': lSendRet = 44; //使用第二通道 _tcscpy( szDFH , P1_MMS_TELCOM_ISAG3 ); break; */ } #endif } if ( lSubNumType>0 ) //需要减位 { szDFH[_tcslen(szDFH)-lSubNumType]=0; //移除N位 } if ( m_ulPurview & PURVIEW_SENDP ) _stprintf( szSendNum , _T("%s%s%s") , szDFH , szCorpSmsNum , szUserSmsNum ); //私人特服号 else _stprintf( szSendNum , _T("%s%s") , szDFH , szCorpSmsNum ); //公用特服号 break; default: pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; } if ( lCorpStatus!=0 || lAgentStatus!=0 ) //属于禁用的用户,不能再发送短信(企业禁用或代理商禁用) { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup = false; memset(szSendNum , 0 , sizeof(szSendNum)); } if ( m_ucUserType == LOGINTYPE_SDK ) //如果为二次接口接入,支持扩展号码 { _tcscat(szSendNum , pSendData->szSendNum ); szSendNum[21]=0; } _tcscpy( pSendDataRet->szSendNum , szSendNum ); //返回发送号码 if ( bNumSup && bNumSup2 && bGetUser && bGetCorp ) //号码支持&&已取到企业与用户的信息,可继续 { CString strTimer; COleDateTime tTemp(pSend->tTimer); //以下控制第一条,第二条的发送间隔 if ( pSend->tOvrTime.wMilliseconds>0 ) { COleDateTimeSpan tAdd(0,0,0,pSend->tOvrTime.wMilliseconds-5); if ( tTemp.GetStatus() != COleDateTime::valid ) //如果原来没有定时,则取当前时间。如果原来有定时,则在原来定时后加上需要延时的时间。 tTemp = COleDateTime::GetCurrentTime(); tTemp += tAdd; } if ( tTemp.GetStatus() == COleDateTime::valid ) strTimer.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , tTemp.GetYear(),tTemp.GetMonth(),tTemp.GetDay(),tTemp.GetHour(),tTemp.GetMinute(),tTemp.GetSecond()); else strTimer = _T("NULL"); /* //以下控制提交时间,提交前的在前,后的在后。不要一起发,防止同时发第一条先收到。 t.wMilliseconds +=10; if ( t.wMilliseconds>=1000 ) { t.wMilliseconds =0; t.wSecond ++; if ( t.wSecond >=60 ) { t.wSecond = 0; t.wMinute ++; if ( t.wMinute>=60 ) { t.wMinute = 0; if ( t.wHour<23 ) t.wHour ++; } } } */ strSubTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d.%03d'") ,t.wYear,t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond,t.wMilliseconds ); long lStatus = SEND_STATUS_SUB_OK; //提交成功 if ( (pSendData->lStatus == SEND_STATUS_SUB_FILT) && m_bCheckup ) //需要审核 { lStatus = SEND_STATUS_SUB_FILT; //需要审核 } pSendDataRet->lStatus = lStatus; CString strLock; if ( this->m_pSMSDlg->m_Setup.bLock ) strLock = _T("WITH (ROWLOCK)"); if ( bSendMFGG ) //本条为免发短信 { //将记录添加到发送表 strSelect.Format( _T("insert into MmsSend %s (CorpID,UserID,MmsFileID,GroupID,Status,ReSendCount,Sender,SendNum,Recver,RecvNum,RecvNumType,SendRet,Title,mmSize,MsgType,SubTime,SendTime,Timer,Priority,StatusReport,KF,IP,RecvStatus,MsgID,SendFCS) Values(%d,%d,%d,'%s',%d,0,'%s','%s','%s','%s',%d,%d,'%s',%d,%d,%s,%s,%s,%d,%d,1,'%s','%s','%s'%d)") , strLock, pSend->lCorpID, pSend->lUserID, pSend->lMmsFileID, szGroupID, lStatus, //发送状态 szName, szSendNum, pSendData->szName, pSendData->szMmsNum, lRecvNumType, //是否联通,0-移动,1-联通 lSendRet, strTitle, pSend->lmmSize, SMSTYPE_SEND, //MsgType , 0 正常发送 strSubTime, strSubTime, strTimer, lPriority, 0, strIP, m_lAgentType==2?_T("A"):_T("B"), _T("MF"), //免发短信,MsgID统一置为"MF" 111 //免发短信,统一置SendFcs为111 ); } else { //将记录添加到发送表 strSelect.Format( _T("insert into MmsSend %s (CorpID,UserID,MmsFileID,GroupID,Status,ReSendCount,Sender,SendNum,Recver,RecvNum,RecvNumType,SendRet,Title,mmSize,MsgType,SubTime,Timer,Priority,StatusReport,KF,IP,RecvStatus,SendFCS) Values(%d,%d,%d,'%s',%d,0,'%s','%s','%s','%s',%d,%d,'%s',%d,%d,%s,%s,%d,%d,1,'%s','%s',%d)") , strLock, pSend->lCorpID, pSend->lUserID, pSend->lMmsFileID, szGroupID, lStatus, //发送状态 szName, szSendNum, pSendData->szName, pSendData->szMmsNum, lRecvNumType, //是否联通,0-移动,1-联通 lSendRet, strTitle, pSend->lmmSize, SMSTYPE_SEND, //MsgType , 0 正常发送 strSubTime, strTimer, lPriority, 0, strIP, m_lAgentType==2?_T("A"):_T("B"), 0 ); } b = m_AdoRS.Open( strSelect ); if ( b ) { if ( bQXT2 ) lSendCount_QXT ++; else lSendCount ++; lCorpSmsUsed --; lSmsSendAll ++; //发送总数量增加 //用户可用数量减1 if ( !bUserNoSZ ) { lUserSmsUsed --; } /* //代理商可用余额减1 if ( m_lAgentType==2 ) //只有超级代理商才做此处理 { fAgentUsed = fAgentUsed - 0.10f; } */ CString strLock2; if ( this->m_pSMSDlg->m_Setup.bLock ) strLock2 = _T("WITH (NOLOCK)"); //提交成功,取SendID strSelect = _T("SELECT SCOPE_IDENTITY()") ; if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect((long)0 , pSendDataRet->lSendID ); } /* //提交成功,取SendID strSelect.Format( _T("select * from mmssend %s where UserID=%d AND SubTime=%s order by SubTime desc") ,strLock2, pSend->lUserID,strSubTime ); b = m_AdoRS.Open( strSelect ); if ( b && !m_AdoRS.IsEOF() ) { pSendDataRet->lStatus = lStatus; //发送成功或需要审核 m_AdoRS.GetCollect( _T("SendID") , pSendDataRet->lSendID ); } */ } } //发送下一条 pSendDataRet++; pSendData ++; } //扣除费用 if ( lSendCount > 0 || lSendCount_QXT>0) { strSelect.Format( _T("Update MmsPro set MmsUsed=MmsUsed-%d,MmsSendAll=MmsSendAll+%d where CorpID=%d"),lSendCount,lSendCount,pSend->lCorpID ); b = m_AdoRS.Open( strSelect ); //用户可用数量减1 if ( !bUserNoSZ ) { strSelect.Format( _T("Update users set MmsUsed=MmsUsed-%d,MmsSendAll=MmsSendAll+%d where UserID=%d"),lSendCount+lSendCount_QXT,lSendCount+lSendCount_QXT,pSend->lUserID ); b = m_AdoRS.Open( strSelect ); } else { //已发数量增1 strSelect.Format( _T("Update users set MmsSendAll=MmsSendAll+%d where UserID=%d"),lSendCount+lSendCount_QXT,pSend->lUserID ); b = m_AdoRS.Open( strSelect ); } //代理商可用余额减1 /* if ( m_lAgentType==2 ) //只有超级代理商才做此处理 { strSelect.Format( _T("Update agent set Used=Used-%.2f where AgentID=%d"),lSendCount*0.10f,m_lAgentID ); b = m_AdoRS.Open( strSelect ); } */ } m_io->m_dwSendCount = m_dwSendCount; //发送计数,用于控制优先级 m_io->m_dwLastSend = m_dwLastSend; //发送计数,用于控制优先级 SendFrame( SMSFUNC_MMSSEND , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } /* long CProcessSocket::Process_MmsSend2(REQ_MmsSend * pSend ) { try { ANS_MmsSend * pSendRet2 = new ANS_MmsSend; //权限不够,什么也不返回 pSendRet2->lCount = 0; if ( !(m_ulPurview & PURVIEW_SENDG) && !(m_ulPurview & PURVIEW_SENDP) || //没有权限发送短信 m_lUserID<0 || pSend->lUserID != m_lUserID) //还没登录 { pSendRet2->lErrCode = -1; SendFrame( SMSFUNC_MMSSEND , (BYTE*)pSendRet2 , sizeof(ANS_MmsSend) ); //发送返回 return 1; } long lErrCode=0; //判断MmsID是否存在及完整 CString str; CString strMmsSendNum; strMmsSendNum = _T("mobset"); delete pSendRet2; TCHAR szGroupID[32]={0}; BOOL bUserNoSZ = false; //用户短信量无限制 long lUserSmsUsed = 0; TCHAR szName[32]={0}; long lNoStatus=false; long lReportType=0; long lReportPer=0; long lPriority2=50; long lSubDelay=20; long lCorpSmsUsed = 0; long lCorpSmsSendType=0; long lCorpStatus=0; COleDateTime tCorpOvrDate; BOOL bSY=true; long lRecvNumType=0; long lDayMaxSend=0; //每天最大发送量限额 CString strIP=m_szIP; CString strSelect; strSelect.Format( _T("select * from users where UserID=%d") , pSend->lUserID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("SMSUsed") , lUserSmsUsed); //可发数量 m_AdoRS.GetCollect(_T("GroupID") , szGroupID ); m_AdoRS.GetCollect(_T("Name") , szName ); //防止'引起的问题 CString strTemp = szName; strTemp.Replace(_T("'"),_T("''")); _tcscpy( szName , strTemp ); if ( lUserSmsUsed == -100 ) { bUserNoSZ= true; //用户没限制 } } strSelect.Format( _T("select * from corp LEFT OUTER JOIN MmsPro on corp.corpid=corp_pay.corpid where CorpID=%d") , pSend->lCorpID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("SMSUsed") , lCorpSmsUsed); //可发数量 m_AdoRS.GetCollect(_T("OvrTime") , tCorpOvrDate); //过期日期 m_AdoRS.GetCollect(_T("SMSSendType") , lCorpSmsSendType); //允许发送的类型 m_AdoRS.GetCollect(_T("NoStatus"), lNoStatus ); m_AdoRS.GetCollect(_T("ReportType"),lReportType); m_AdoRS.GetCollect(_T("ReportPer"),lReportPer); m_AdoRS.GetCollect(_T("SY"), bSY ); m_AdoRS.GetCollect(_T("Priority"), lPriority2 ); m_AdoRS.GetCollect(_T("SubDelay"), lSubDelay ); m_AdoRS.GetCollect(_T("Status"),lCorpStatus); //企业状态 m_AdoRS.GetCollect(_T("DayMaxSend") , lDayMaxSend ); //每天最大发送量限额 if ( lNoStatus==0 ) { lNoStatus=1; if ( lReportType==1 ) lNoStatus=2; } else { lNoStatus=0; } } CString strTimer; COleDateTime tTemp(pSend->tTimer); if ( tTemp.GetStatus() == COleDateTime::valid ) strTimer.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , tTemp.GetYear(),tTemp.GetMonth(),tTemp.GetDay(),tTemp.GetHour(),tTemp.GetMinute(),tTemp.GetSecond()); else strTimer = _T("NULL"); //开始生成返回数据 ANS_MmsSend_Num * pSendData = (ANS_MmsSend_Num *)((BYTE*)pSend+sizeof(REQ_MmsSend)); long lSize = sizeof(ANS_MmsSend)+sizeof(ANS_MmsSend_Num)*pSend->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_MmsSend * pSendRet = (ANS_MmsSend *)pData; ANS_MmsSend_Num * pSendDataRet = (ANS_MmsSend_Num *)(pData+sizeof(ANS_MmsSend)); pSendRet->lErrCode = 0; pSendRet->lCorpID = pSend->lCorpID; pSendRet->lUserID = pSend->lUserID; pSendRet->lMmsFileID = pSend->lMmsFileID; _tcscpy(pSendRet->szTitle,pSend->szTitle); pSendRet->lmmSize = pSend->lmmSize; pSendRet->lCount = pSend->lCount; CString strTitle = pSend->szTitle; strTitle.Replace(_T("'") , _T("''")); long lSendCount = 0; lSendCount = m_dwSendCount; long lPriority = 0; if ( lSendCount > 0 ) { lPriority = lSendCount/100; //每发送200条为一个优先级 lPriority = (lPriority+2)*lPriority2; //与企业优先级合为一体 } m_dwSendCount += pSend->lCount; //lRecvNumType = ; CString strTemp; CString strLock; if ( this->m_pSMSDlg->m_Setup.bLock ) strLock = _T("WITH (ROWLOCK)"); lSendCount = 0; //记录已发成功的记录数 for ( int i = 0 ; i< pSend->lCount ; i++ ) { BOOL bNumSup = true; BOOL bNumSup2 = true; long lSendRet=0; //根据优先级进行延时处理 if ( lSubDelay>0 ) Sleep( lSubDelay ); *pSendDataRet = *pSendData; //防止'引起的问题 strTemp = pSendData->szMmsNum; strTemp.Replace(_T("'"),_T("''")); _tcscpy( pSendData->szMmsNum , strTemp ); strTemp = pSendData->szName; strTemp.Replace(_T("'"),_T("''")); _tcscpy( pSendData->szName , strTemp ); //判断是否为手机号码,如果不是,发送不出 ExMobileGZM(pSendData->szMmsNum); if ( !isNumSup(pSendData->szMmsNum) ) { pSendDataRet->lStatus = SEND_STATUS_SUB_NUMNOSUP; //号码不支持 bNumSup2 = false; } long lRecvNumType = MobileNumType(pSendData->szMmsNum); //取号码类型,移动、联通、小灵通、电信 pSendDataRet->lStatus = SEND_STATUS_SUB_OK; //默认发送失败 long lStatus=pSendDataRet->lStatus; _tcscpy(pSendDataRet->szSendNum , strMmsSendNum ); //将记录添加到发送表 strTemp.Format( _T("insert into MmsSend %s (CorpID,UserID,MmsFileID,GroupID,Status,ReSendCount,Sender,SendNum,Recver,RecvNum,RecvNumType,SendRet,Title,mmSize,MsgType,SubTime,Timer,Priority,StatusReport,KF,IP,RecvStatus,SendFCS) Values(%d,%d,%d,'%s',%d,0,'%s','%s','%s','%s',%d,%d,'%s',%d,%d,GetDate(),%s,%d,%d,1,'%s','%s',%d)") , strLock, pSend->lCorpID, pSend->lUserID, pSend->lMmsFileID, szGroupID, lStatus, //发送状态 szName, strMmsSendNum, pSendData->szName, pSendData->szMmsNum, lRecvNumType, //是否联通,0-移动,1-联通 lSendRet, strTitle, pSend->lmmSize, SMSTYPE_SEND, //MsgType , 0 正常发送 strTimer , lPriority, 0, strIP, _T(""), 0 ); if (m_AdoRS.Open( strTemp )) { CString strLock2; if ( this->m_pSMSDlg->m_Setup.bLock ) strLock2 = _T("WITH (NOLOCK)"); //提交成功,取SendID strSelect.Format( _T("select * from MmsSend %s where UserID=%d order by SubTime desc") ,strLock2, pSend->lUserID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { pSendDataRet->lStatus = lStatus; //发送成功或需要审核 m_AdoRS.GetCollect( _T("SendID") , pSendDataRet->lSendID ); lSendCount++; } } //发送下一条 pSendDataRet++; pSendData ++; } m_io->m_dwSendCount = m_dwSendCount; //发送计数,用于控制优先级 m_io->m_dwLastSend = m_dwLastSend; //发送计数,用于控制优先级 SendFrame( SMSFUNC_MMSSEND , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } */ long CProcessSocket::Process_MmsSend_ID(REQ_MmsSend_ID * pID ) { try { CString strSelect; ANS_MmsSend_ID * pRet = new ANS_MmsSend_ID; memset(pRet , 0 , sizeof(ANS_MmsSend_ID)); pRet->bReUp = true; pRet->lCorpID = pID->lCorpID; pRet->lUserID = pID->lUserID; pRet->lMmsFileID = pID->lMmsFileID; if ( pID->lMmsFileID>0 ) //客户端已有ID,需要判断ID是否存在及文件是否完整 { strSelect.Format(_T("select * from MmsFile where MmsFileID=%d") , pID->lMmsFileID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { long lAllSize=0; long lUpSize=0; long lmmSize=0; BOOL bOK=false; BOOL bOK2=false; m_AdoRS.GetCollect(_T("FileAllSize") , lAllSize ); m_AdoRS.GetCollect(_T("FileSize") , lUpSize ); m_AdoRS.GetCollect(_T("mmSize") , lmmSize ); if ( lAllSize == lUpSize && lmmSize == pID->lmmSize ) { bOK = true; } TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("MmsFile\\") ); //生成查询串 CString strFile; strFile.Format(_T("%s%d.mms") ,szPath, pID->lMmsFileID ); //检测文件是否存在与取文件大小 WIN32_FILE_ATTRIBUTE_DATA filedata={0}; if ( GetFileAttributesEx(strFile,GetFileExInfoStandard,&filedata) && filedata.nFileSizeLow==lUpSize && filedata.nFileSizeLow==lAllSize ) //判断文件是否已上传完整 { bOK2=true; } if ( bOK && bOK2) pRet->bReUp =false; } } if ( pRet->bReUp ) //需要重新生成ID { pRet->lMmsFileID = 0; //重新生成 CString strMmsTitle = pID->szMmsTitle; strMmsTitle.Replace(_T("'") , _T("''")); strSelect.Format(_T("insert into MmsFile (CorpID,UserID,MmsTitle,mmSize , CreateTime) values (%d,%d,'%s',%d , GetDate())") , pID->lCorpID,pID->lUserID,strMmsTitle ,pID->lmmSize); if ( m_AdoRS.Open(strSelect) ) { m_AdoRS.Close(); //取MmsFileID strSelect.Format(_T("Select * from MmsFile where CorpID=%d and UserID=%d order by CreateTime desc") , pID->lCorpID,pID->lUserID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("MmsFileID") , pRet->lMmsFileID); } } } SendFrame( SMSFUNC_MMSSEND_ID , (BYTE*)pRet , sizeof(ANS_MmsSend_ID) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_MmsSend_Up(REQ_MmsSend_Up * pUp ) { try { BYTE * pFileData = (BYTE *)((BYTE*)pUp+sizeof(REQ_MmsSend_Up)); CString strSelect; ANS_MmsSend_Up * pRet = new ANS_MmsSend_Up; memset(pRet , 0 , sizeof(ANS_MmsSend_Up)); pRet->bOK = false; pRet->lCorpID = pUp->lCorpID; pRet->lUserID = pUp->lUserID; pRet->lMmsFileID = pUp->lMmsFileID; pRet->lAllLen = pUp->lAllLen; pRet->lUpLen = pUp->lUpLen; pRet->lDataLen = pUp->lDataLen; if ( pUp->lMmsFileID>0 ) //客户端已有ID,需要判断ID是否存在及文件是否完整 { strSelect.Format(_T("select * from MmsFile where MmsFileID=%d") , pUp->lMmsFileID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { BOOL bOK2=true; TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("MmsFile\\") ); //生成查询串 CString strFile; strFile.Format(_T("%s%d.mms") ,szPath, pUp->lMmsFileID ); long lFileSize=0; m_AdoRS.GetCollect(_T("FileSize") , lFileSize); long lFileAllSize=0; m_AdoRS.GetCollect(_T("FileAllSize") , lFileAllSize); if ( lFileSize >0 ) { //检测文件是否存在与取文件大小 WIN32_FILE_ATTRIBUTE_DATA filedata={0}; if ( !GetFileAttributesEx(strFile,GetFileExInfoStandard,&filedata) || filedata.nFileSizeLow!=lFileSize || lFileAllSize!=pUp->lAllLen ) //文件大小不同 { bOK2=false; } if ( lFileSize != pRet->lUpLen-pRet->lDataLen ) //已上传的文件与原来的文件大小不同 { bOK2=false; } } if ( bOK2 ) //保存文件 { CFile file; BOOL bFirst=false; if ( pRet->lUpLen==pRet->lDataLen ) //这个文件是首次上传 bFirst = true; BOOL bFile = false; if ( bFirst ) { bFile = file.Open(strFile , CFile::modeReadWrite|CFile::modeCreate); } else { bFile = file.Open(strFile , CFile::modeReadWrite); } if ( bFile ) { file.SeekToEnd(); file.Write(pFileData,pUp->lDataLen); pRet->bOK = true; } else { bOK2 =false; } //更新数据 if ( bFirst ) strSelect.Format(_T("update MmsFile Set FileAllSize=%d,FileSize=%d where MmsFileID=%d") ,pUp->lAllLen,pUp->lUpLen, pUp->lMmsFileID ); else strSelect.Format(_T("update MmsFile Set FileSize=%d where MmsFileID=%d") ,pUp->lUpLen, pUp->lMmsFileID ); m_AdoRS.Open(strSelect); if ( pUp->lUpLen>=pUp->lAllLen ) { //附件已上传完毕,判断是否需要审核 long lMmsSH=1; strSelect.Format(_T("select * from MmsPro where corpid=%d") , pUp->lCorpID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("MmsSH") , lMmsSH ); if ( lMmsSH!=1 ) //如果无需审核,直接改写审核状态为审核通过 { strSelect.Format(_T("update MmsFile Set Audit=1 where MmsFileID=%d") , pUp->lMmsFileID ); m_AdoRS.Open(strSelect); } } if ( lMmsSH==1 ) //彩信需要审核,发送短信通知客服 { if ( pUp->lNumCount>0 ) strSelect.Format(_T("%d准备提交%d条彩信,请审核。") , pUp->lCorpID,pUp->lNumCount ); else strSelect.Format(_T("%d准备提交彩信,请审核。") , pUp->lCorpID ); SendReportMsg(strSelect,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 } } } } } SendFrame( SMSFUNC_MMSSEND_UP , (BYTE*)pRet , sizeof(ANS_MmsSend_Up) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_MmsStatus(REQ_MmsStatus * pStatus ) { try { if ( pStatus->lCount<=0 || pStatus->lCount>1000 ) //数量不对,关闭 return 0; ANS_MmsStatus_Data2 * pStatusData = (ANS_MmsStatus_Data2 *)((BYTE*)pStatus+sizeof(REQ_MmsStatus)); long lSize = sizeof(ANS_MmsStatus)+sizeof(ANS_MmsStatus_Data)*pStatus->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_MmsStatus * pStatusRet = (ANS_MmsStatus *)pData; ANS_MmsStatus_Data * pStatusDataRet = (ANS_MmsStatus_Data *)(pData+sizeof(ANS_MmsStatus)); pStatusRet->lCount = pStatus->lCount; CString strSelect; COleDateTime t; BOOL bGetOK = false; BOOL b; Sleep(500); for ( int i=0;ilCount;i++) { Sleep(3); //留多点时间给别人 pStatusDataRet->lSendID = pStatusData->lSendID; pStatusDataRet->lItemID = pStatusData->lItemID; pStatusDataRet->lStatus = pStatusData->lStatus; bGetOK = false; //查询,看状态变了没有 strSelect.Format( _T("select * from Mmssend where SendID=%d") , pStatusData->lSendID ); b = m_AdoRS.Open( strSelect ); if ( b && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Status") , pStatusDataRet->lStatus ); if ( pStatusDataRet->lStatus != pStatusData->lStatus ) { m_AdoRS.GetCollect( _T("RecvStatus") , pStatusDataRet->szStatusMsg ); m_AdoRS.GetCollect( _T("SendTime") , t );t.GetAsSystemTime( pStatusDataRet->tSendTime ); m_AdoRS.GetCollect( _T("RecvTime") , t );t.GetAsSystemTime( pStatusDataRet->tRecvTime ); bGetOK = true; } } /* else { //如果正常表查询不到,则从转移表中查询 strSelect.Format( _T("select * from corpsmsm.dbo.smssend where SendID=%d") , pStatusData->lSendID ); b = m_AdoRS.Open( strSelect ); if ( b && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Status") , pStatusDataRet->lStatus ); if ( pStatusDataRet->lStatus != pStatusData->lStatus ) { m_AdoRS.GetCollect( _T("SendTime") , t );t.GetAsSystemTime( pStatusDataRet->tSendTime ); m_AdoRS.GetCollect( _T("RecvTime") , t );t.GetAsSystemTime( pStatusDataRet->tRecvTime ); bGetOK = true; } } else { //如果转移表仍查询不到,在定时表中查询。 strSelect.Format( _T("select * from corpsmsm.dbo.smssendt where SendID=%d") , pStatusData->lSendID ); b = m_AdoRS.Open( strSelect ); if ( b && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Status") , pStatusDataRet->lStatus ); if ( pStatusDataRet->lStatus != pStatusData->lStatus ) { m_AdoRS.GetCollect( _T("SendTime") , t );t.GetAsSystemTime( pStatusDataRet->tSendTime ); m_AdoRS.GetCollect( _T("RecvTime") , t );t.GetAsSystemTime( pStatusDataRet->tRecvTime ); bGetOK = true; } } } } */ if ( !bGetOK ) pStatusDataRet->lStatus = -1; //状态未变 pStatusDataRet ++; //继续处理下一条。 pStatusData ++; } SendFrame( SMSFUNC_MMSSTATUS ,pData , lSize ); return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_MmsPro( REQ_MmsPro * pMms ) { ANS_MmsPro * pMmsRet = new ANS_MmsPro; //权限不够,什么也不返回 memset(pMmsRet , 0 , sizeof(ANS_MmsPro)); pMmsRet->req = *pMms; if ( !(m_ulPurview & PURVIEW_CORP_SEE) ) //没有权限修改资料 { pMmsRet->lStatus = -2; //权限不足 SendFrame( SMSFUNC_MMSPRO , (BYTE*)pMmsRet , sizeof(ANS_MmsPro) ); //发送返回 return 1; } CString str; str.Format( _T("select * from MmsPro where CorpID=%d") , pMms->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { pMmsRet->lStatus = 1; //有数据,正常 m_AdoRS.GetCollect(_T("CorpID") , pMmsRet->mmsPro.lCorpID ); m_AdoRS.GetCollect(_T("MmsNum") , pMmsRet->mmsPro.szMmsNum ); m_AdoRS.GetCollect(_T("MmsUsed") , pMmsRet->mmsPro.lMmsUsed ); m_AdoRS.GetCollect(_T("MmsSendAll") , pMmsRet->mmsPro.lMmsSendAll ); m_AdoRS.GetCollect(_T("MmsSendType") , pMmsRet->mmsPro.szSendType ); m_AdoRS.GetCollect(_T("MmsTD") , pMmsRet->mmsPro.szTD ); m_AdoRS.GetCollect(_T("TotalMms") , pMmsRet->mmsPro.lTotalMms ); m_AdoRS.GetCollect(_T("MmsMaxSize") , pMmsRet->mmsPro.lMmsMaxSize ); m_AdoRS.GetCollect(_T("MmsPriceOne") , pMmsRet->mmsPro.fMmsPriceOne ); m_AdoRS.GetCollect(_T("TotalPayMms") , pMmsRet->mmsPro.fTotalPayMms ); m_AdoRS.GetCollect(_T("MmsReportPer") , pMmsRet->mmsPro.lMmsReportPer ); m_AdoRS.GetCollect(_T("MmsNoOut") , pMmsRet->mmsPro.bMmsNoOut ); m_AdoRS.GetCollect(_T("MmsOutAll") , pMmsRet->mmsPro.bMmsOutAll ); m_AdoRS.GetCollect(_T("MmsSY") , pMmsRet->mmsPro.bMmsSY ); m_AdoRS.GetCollect(_T("MmsSH") , pMmsRet->mmsPro.bMmsSH ); m_AdoRS.GetCollect(_T("UpMms") , pMmsRet->mmsPro.szUpMms ); m_AdoRS.GetCollect(_T("MmsDayMaxSend") , pMmsRet->mmsPro.lMmsDayMaxSend ); m_AdoRS.GetCollect(_T("ZTMmsSendAll") , pMmsRet->mmsPro.lZTMmsSendAll ); } else { pMmsRet->lStatus = -1; //没有数据 } SendFrame( SMSFUNC_MMSPRO , (BYTE*)pMmsRet , sizeof(ANS_MmsPro) ); //发送返回 return 0; } long CProcessSocket::Process_WorkPro( REQ_WorkPro * pWork ) { if ( !(m_ulPurview & PURVIEW_CORP_SEE) ) //没有权限修改资料 { ANS_WorkPro * pWorkRet = new ANS_WorkPro; //权限不够,什么也不返回 memset(pWorkRet , 0 , sizeof(ANS_WorkPro)); pWorkRet->req = *pWork; pWorkRet->lStatus = -2; //权限不足 SendFrame( SMSFUNC_WORKPRO , (BYTE*)pWorkRet , sizeof(ANS_WorkPro) ); //发送返回 return 1; } //取用户数据 CString str; str.Format( _T("select * from Users with(nolock) where CorpID=%d") , pWork->lCorpID ); m_AdoRS2.Open(str); long lUserCount = m_AdoRS2.GetRecordCount(); long lSize = sizeof(ANS_WorkPro)+sizeof(ANS_WorkPro_User)*lUserCount; BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize ); ANS_WorkPro * pWorkRet = (ANS_WorkPro *)pData; ANS_WorkPro_User * pUser = (ANS_WorkPro_User * )(pData+sizeof(ANS_WorkPro)); pWorkRet->req = *pWork; if ( lUserCount >0 ) { m_AdoRS2.MoveFirst(); while(!m_AdoRS2.IsEOF() && pWorkRet->workPro.lUserCountworkPro.lUserCount].lUserID ); m_AdoRS2.GetCollect(_T("LoginName") , pUser[pWorkRet->workPro.lUserCount].szLoginName ); m_AdoRS2.GetCollect(_T("Name") , pUser[pWorkRet->workPro.lUserCount].szName ); m_AdoRS2.GetCollect(_T("SDK") , pUser[pWorkRet->workPro.lUserCount].dwSDK ); pWorkRet->workPro.lUserCount ++; m_AdoRS2.MoveNext(); } } //取OA数据 str.Format( _T("select * from mobset2.CorpWork.dbo.app_oacorp where c_corpid=%d") , pWork->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { pWorkRet->lStatus = 1; //有数据,正常 m_AdoRS.GetCollect(_T("c_corpid") , pWorkRet->workPro.lCorpID ); m_AdoRS.GetCollect(_T("c_oa") , pWorkRet->workPro.lOA ); m_AdoRS.GetCollect(_T("c_active") , pWorkRet->workPro.lActive ); m_AdoRS.GetCollect(_T("c_yue") , pWorkRet->workPro.fYe ); m_AdoRS.GetCollect(_T("c_fjspace") , pWorkRet->workPro.ffjspace ); m_AdoRS.GetCollect(_T("c_wjspace") , pWorkRet->workPro.fwjspace ); m_AdoRS.GetCollect(_T("c_zrsspace") , pWorkRet->workPro.fzrsspace ); m_AdoRS.GetCollect(_T("c_smsuserid"), pWorkRet->workPro.lsmsuserid ); } else { pWorkRet->lStatus = -1; //没有数据 pWorkRet->workPro.lCorpID = pWork->lCorpID; pWorkRet->workPro.lOA = 1; //关闭 } //取oa用户数 if ( pWorkRet->lStatus == 1 ) { str.Format( _T("select count(*) as abc from mobset2.CorpWork.dbo.app_oausers where c_corpid=%d") , pWork->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("abc") , pWorkRet->workPro.lOAUserCount ); m_AdoRS.Close(); } } SendFrame( SMSFUNC_WORKPRO , (BYTE*)pWorkRet , lSize ); //发送返回 return 0; } long CProcessSocket::Process_Mms_Pay(REQ_Mms_Pay *pPay) { try { if ( m_ucUserType != LOGINTYPE_KF ) { if ( !(m_ulPurview & PURVIEW_CORP_PAY) ) //没有权限查看支付记录 { ANS_Mms_Pay * pSeePay = new ANS_Mms_Pay; //权限不够,什么也不返回 pSeePay->lCount = -1; SendFrame( SMSFUNC_MMS_PAY , (BYTE*)pSeePay , sizeof(ANS_Mms_Pay) ); //发送返回 return 1; } } CString strSelect; if ( m_ucUserType == LOGINTYPE_AGENT ) //速达特殊处理 { //查询号码有没有重复 strSelect.Format( _T("select * from corp where CorpID=%d and AgentID=%d") , pPay->lCorpID,m_lUserID ); if ( m_AdoRS.Open(strSelect) && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.Close(); } else { m_AdoRS.Close(); ANS_Mms_Pay * pSeePay = new ANS_Mms_Pay; //权限不够,什么也不返回 pSeePay->lCount = -15; SendFrame( SMSFUNC_MMS_PAY , (BYTE*)pSeePay , sizeof(ANS_Mms_Pay) ); //发送返回 return 1; } } long lMmsUsed=0; long lTotalMms=0; double fMmsTotal=0.0f; double fMmsPriceOne=0.0f; strSelect.Format( _T("select * from MmsPro where CorpID=%d") , pPay->lCorpID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("MmsUsed") , lMmsUsed ); m_AdoRS.GetCollect(_T("TotalMms") , lTotalMms ); m_AdoRS.GetCollect(_T("TotalPayMms") , fMmsTotal ); m_AdoRS.GetCollect(_T("MmsPriceOne") , fMmsPriceOne ); } else { ANS_Mms_Pay * pSeePay = new ANS_Mms_Pay; //未设置彩信单价 pSeePay->lCount = -25; SendFrame( SMSFUNC_MMS_PAY , (BYTE*)pSeePay , sizeof(ANS_Mms_Pay) ); //发送返回 return 1; } COleDateTime t=COleDateTime::GetCurrentTime()-COleDateTimeSpan(2,0,0,0); //客服只能查到前2天的充值记录 // CString strSelect; switch ( m_ucUserType ) { case LOGINTYPE_KF: strSelect.Format( _T("select top 5 * from Mms_Pay where CorpID=%d and Del!=1 and PayTime>'%04d%02d%02d' order by PayTime desc") , pPay->lCorpID,t.GetYear(),t.GetMonth(),t.GetDay()); break; case LOGINTYPE_YWY: case LOGINTYPE_AGENT: strSelect.Format( _T("select * from Mms_Pay where CorpID=%d and Del!=1 order by PayTime desc") , pPay->lCorpID); break; default: strSelect.Format( _T("select * from Mms_Pay where CorpID=%d order by PayTime desc") , pPay->lCorpID); break; } BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; //查询会员信息 strSelect.Format( _T("select * from corp_LXR where CorpID=%d and CorpType=0 and Member=1") , pPay->lCorpID ); //查询属于企业的会员信息 BOOL b2 = m_AdoRS2.Open( strSelect ); long lCountLXR = m_AdoRS2.GetRecordCount(); //生成返回数据 if ( lCountLXR <0 ) lCountLXR = 0; long lSize = sizeof(ANS_Mms_Pay) + sizeof(ANS_Mms_PayData)*lCount+sizeof(ANS_Corp_MemberData)*lCountLXR+sizeof(ANS_Corp_Exp); BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Mms_Pay * pPayRet = (ANS_Mms_Pay *)pData; ANS_Mms_PayData * pPayDataRet = (ANS_Mms_PayData *)(pData+sizeof(ANS_Mms_Pay)); ANS_Corp_MemberData * pMemberDataRet = (ANS_Corp_MemberData *)(pData+sizeof(ANS_Mms_Pay)+sizeof(ANS_Mms_PayData)*lCount); ANS_Corp_Exp * pExpData = (ANS_Corp_Exp *)(pData+sizeof(ANS_Mms_Pay)+sizeof(ANS_Mms_PayData)*lCount+sizeof(ANS_Corp_MemberData)*lCountLXR); pExpData->lExpID= CORP_PAY_EXP_ID; pExpData->bOK = true; _tcscpy(pPayRet->szCorpName,pPay->szCorpName); _tcscpy(pPayRet->szSMSNum,pPay->szSMSNum); pPayRet->lSmsUsed=lMmsUsed; pPayRet->fTotal=fMmsTotal; pPayRet->lTotalSms=lTotalMms; pPayRet->fPriceOne=fMmsPriceOne; pPayRet->bYJ=pPay->bYJ; pPayRet->lCorpID= pPay->lCorpID; pPayRet->lItem = pPay->lItem; pPayRet->lCount = lCount; //数据记录 pPayRet->lMemberCount=lCountLXR; //会员记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("PayID") , pPayDataRet->lPayID); m_AdoRS.GetCollect( _T("PayMan") , pPayDataRet->szPayMan); m_AdoRS.GetCollect( _T("PayMode") , pPayDataRet->szPayMode); m_AdoRS.GetCollect( _T("Price") , pPayDataRet->fPrice); m_AdoRS.GetCollect( _T("PriceOne") , pPayDataRet->fPriceOne); m_AdoRS.GetCollect( _T("Present") , pPayDataRet->lPresent); m_AdoRS.GetCollect( _T("SMSCount") , pPayDataRet->lSMSCount); m_AdoRS.GetCollect( _T("CreateUser") , pPayDataRet->szCreateUser); m_AdoRS.GetCollect( _T("PayTime"), t); t.GetAsSystemTime(pPayDataRet->tPayTime); m_AdoRS.GetCollect( _T("OvrTime"), t); t.GetAsSystemTime(pPayDataRet->tOvrTime); m_AdoRS.GetCollect( _T("BZ") , pPayDataRet->szBZ); m_AdoRS.GetCollect( _T("YS") , pPayDataRet->bYS); m_AdoRS.GetCollect( _T("Test") , pPayDataRet->bTest); m_AdoRS.GetCollect( _T("CB") , pPayDataRet->bCB); m_AdoRS.GetCollect( _T("FP") , pPayDataRet->bFP); m_AdoRS.GetCollect( _T("FP_Status") , pPayDataRet->lFPStatus); m_AdoRS.GetCollect( _T("FP_Time"), t); t.GetAsSystemTime(pPayDataRet->tFPTime); m_AdoRS.GetCollect( _T("YS_Time"), t); t.GetAsSystemTime(pPayDataRet->tYSTime); m_AdoRS.GetCollect( _T("LPType") , pPayDataRet->lLPType); m_AdoRS.GetCollect( _T("LPPrice") , pPayDataRet->fLPPrice); m_AdoRS.GetCollect( _T("LXRID") , pPayDataRet->lLXRID); m_AdoRS.GetCollect( _T("YSType") , pPayDataRet->lYSType); //预收类型 m_AdoRS.GetCollect( _T("Commend_VipInt") , pPayDataRet->lCommend_VipInt); //推荐积分 m_AdoRS.MoveNext(); pPayDataRet ++; } } if (b2 && lCountLXR) //执行成功 { m_AdoRS2.MoveFirst(); while( !m_AdoRS2.IsEOF() ) { m_AdoRS2.GetCollect( _T("LXRID") , pMemberDataRet->lLXRID); m_AdoRS2.GetCollect( _T("Name") , pMemberDataRet->szName); m_AdoRS2.MoveNext(); pMemberDataRet ++; } } //查资料是否齐全 if ( m_ucUserType!=LOGINTYPE_AGENT) { //判断联系人是否存在 strSelect.Format( _T("select * from corp_lxr where corpid=%d and corptype=0") , pPay->lCorpID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { CString strName; CString strTel; CString strMobile; m_AdoRS.GetCollect(_T("Name") , strName); m_AdoRS.GetCollect(_T("Tel") , strTel); m_AdoRS.GetCollect(_T("Mobile") , strMobile); if ( strName.GetLength()>1 && (strTel.GetLength()>7 || strMobile.GetLength()>7 ) ) { } else { pExpData->bOK = false; _tcscat( pExpData->szNoData , _T("\r\n联系人资料不全") ); } } else { pExpData->bOK = false; _tcscat( pExpData->szNoData , _T("\r\n联系人资料不存在") ); } //判断合同是否存在 strSelect.Format( _T("select * from corpsmsf.dbo.corp_file where corpid=%d and corptype=0 and FileType like '%%合同%%'") , pPay->lCorpID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { } else { pExpData->bOK = false; _tcscat( pExpData->szNoData , _T("\r\n合同文件不存在") ); } //判断营业执照是否存在 strSelect.Format( _T("select * from corpsmsf.dbo.corp_file where corpid=%d and corptype=0 and FileType like '%%执照%%'") , pPay->lCorpID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { } else { pExpData->bOK = false; _tcscat( pExpData->szNoData , _T("\r\n营业执照不存在") ); } } SendFrame( SMSFUNC_MMS_PAY , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Mms_PayModify(REQ_Mms_PayModify *pModify) { try { if ( m_ucUserType != LOGINTYPE_KF ) { if ( !(m_ulPurview & PURVIEW_CORP_PAY) ) //没有权限修改缴费记录 { ANS_Mms_PayModify * pModifyRet = new ANS_Mms_PayModify; //权限不够,什么也不返回 pModifyRet->lCount = -1; SendFrame( SMSFUNC_MMS_PAYMODIFY , (BYTE*)pModifyRet , sizeof(ANS_Mms_PayModify) ); //发送返回 return 1; } } if ( pModify->lCount <0 ) pModify->lCount = 0; //生成返回数据 long lSize = sizeof(ANS_Mms_PayModify) + sizeof(ANS_Mms_PayData)*pModify->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Mms_PayModify * pPayRet = (ANS_Mms_PayModify *)pData; ANS_Mms_PayData * pPayDataRet = (ANS_Mms_PayData *)(pData+sizeof(ANS_Mms_PayModify)); ANS_Mms_PayData * pPayDataRecv= (ANS_Mms_PayData *)((BYTE*)pModify+sizeof(REQ_Mms_PayModify)); //送过来的数据 pPayRet->fTotal = pModify->fTotal; pPayRet->lTotalSms = pModify->lTotalSms; pPayRet->lItem = pModify->lItem; pPayRet->lSmsUsed = pModify->lSmsUsed; pPayRet->lCount = pModify->lCount; CString strPayID; CString strCorpID; CString strPrice; CString strPriceOne; CString strPresent; CString strSMSCount; CString strPayTime; CString strOvrTime; CString strAgentID=_T("0"); CString strYS; CString strTest; CString strFP; CString strFPStatus; CString strYSTime=_T("NULL"); CString strLPType; CString strLXRID; CString strLPPrice; CString strYSType; //预收类型 CString strCommend_VipInt; //推荐积分 strCorpID.Format( _T("%d") , pModify->lCorpID ); CString strSelect; if ( m_ucUserType == LOGINTYPE_AGENT ) //速达特殊处理 { strAgentID.Format( _T("%d") , m_lUserID ); //充值记录插入代理商ID //查询号码有没有重复 strSelect.Format( _T("select * from corp where CorpID=%d and AgentID=%d") , pModify->lCorpID,m_lUserID ); if ( m_AdoRS.Open(strSelect) && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.Close(); } else { m_AdoRS.Close(); ANS_Mms_PayModify * pModifyRet = new ANS_Mms_PayModify; //权限不够,什么也不返回 pModifyRet->lCount = -15; SendFrame( SMSFUNC_MMS_PAYMODIFY , (BYTE*)pModifyRet , sizeof(ANS_Mms_PayModify) ); //发送返回 return 1; } //查询金额是否足够 if ( m_lAgentType != 2 ) //不是超级代理商,需要检测代理商余额是否足够 { //计算所有短信总量 long lSmsAll2=0; for ( int i = 0 ; i< pModify->lCount ; i++ ) { if ( pPayDataRecv[i].ucStatus == CORP_PAY_ADD) //返回值与请求值一样 lSmsAll2+=pPayDataRecv[i].lSMSCount; } strSelect.Format( _T("select * from agent where AgentID=%d"),this->m_lUserID ); if ( m_AdoRS.Open( strSelect ) && m_AdoRS.GetRecordCount()>0 ) { double fUsed=0.0f; m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Used"),fUsed); m_AdoRS.Close(); //fUsed = fUsed - pPayDataRecv->fPrice; fUsed = fUsed - (float)lSmsAll2/10.0f; if ( fUsed< 0.0f ) { ANS_Mms_PayModify * pModifyRet = new ANS_Mms_PayModify; //权限不够,什么也不返回 pModifyRet->lCount = -12; SendFrame( SMSFUNC_MMS_PAYMODIFY , (BYTE*)pModifyRet , sizeof(ANS_Mms_PayModify) ); //发送返回 return 1; } } } } if ( m_ucUserType == LOGINTYPE_KF ) //客服特殊处理 { //计算所有短信总量 long lSmsAll2=0; for ( int i = 0 ; i< pModify->lCount ; i++ ) { if ( pPayDataRecv[i].ucStatus == CORP_PAY_ADD) //返回值与请求值一样 lSmsAll2+=pPayDataRecv[i].lSMSCount; } strSelect.Format( _T("select * from Manager where ManagerID=%d"), m_lUserID ); if ( m_AdoRS.Open( strSelect ) && m_AdoRS.GetRecordCount()>0 ) { long lAddSmsCount=0; long lAllAddSmsCount=0; m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("AddSmsCount"),lAddSmsCount); m_AdoRS.GetCollect( _T("AllAddSmsCount"),lAllAddSmsCount); m_AdoRS.Close(); if ( (lAllAddSmsCount-lAddSmsCount)< lSmsAll2 ) { ANS_Mms_PayModify * pModifyRet = new ANS_Mms_PayModify; //权限不够,什么也不返回 pModifyRet->lCount = -12; SendFrame( SMSFUNC_MMS_PAYMODIFY , (BYTE*)pModifyRet , sizeof(ANS_Mms_PayModify) ); //发送返回 return 1; } } } for ( int i = 0 ; i< pModify->lCount ; i++ ) { *pPayDataRet = *pPayDataRecv; //返回值与请求值一样 strPrice.Format( _T("%.4f") , pPayDataRet->fPrice); strPriceOne.Format( _T("%.4f") , pPayDataRet->fPriceOne); strPresent.Format( _T("%d") , pPayDataRet->lPresent); strSMSCount.Format( _T("%d") , pPayDataRet->lSMSCount); strYS.Format( _T("%d") , pPayDataRet->bYS ); strTest.Format( _T("%d") , pPayDataRet->bTest ); strFP.Format( _T("%d") , pPayDataRet->bFP ); strFPStatus.Format( _T("%d") , pPayDataRet->lFPStatus ); strLPType.Format( _T("%d") , pPayDataRet->lLPType); strLPPrice.Format( _T("%.2f") , pPayDataRet->fLPPrice); strLXRID.Format( _T("%d") , pPayDataRet->lLXRID); strYSType.Format( _T("%d") , pPayDataRet->lYSType); //预收类型 strCommend_VipInt.Format( _T("%d") , pPayDataRet->lCommend_VipInt); //推荐积分 #ifdef SMSCENTER_ADC strPayType.Format( _T("%d") , pPayDataRet->lPayType); strAdcStatus.Format( _T("%d") , pPayDataRet->lAdcStatus); #endif COleDateTime tTemp(pPayDataRet->tPayTime); if ( tTemp.GetStatus() == COleDateTime::valid ) //if ( pPayDataRet->tPayTime.wYear<1990 && pPayDataRet->tPayTime.wYear>2020 ) strPayTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pPayDataRet->tPayTime.wYear,pPayDataRet->tPayTime.wMonth,pPayDataRet->tPayTime.wDay,pPayDataRet->tPayTime.wHour,pPayDataRet->tPayTime.wMinute,pPayDataRet->tPayTime.wSecond); else strPayTime = _T("NULL"); COleDateTime tTemp2(pPayDataRet->tOvrTime); if ( tTemp2.GetStatus() == COleDateTime::valid ) //if ( pPayDataRet->tOvrTime.wYear<1990 && pPayDataRet->tOvrTime.wYear>2020 ) strOvrTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , pPayDataRet->tOvrTime.wYear,pPayDataRet->tOvrTime.wMonth,pPayDataRet->tOvrTime.wDay,pPayDataRet->tOvrTime.wHour,pPayDataRet->tOvrTime.wMinute,pPayDataRet->tOvrTime.wSecond); else strOvrTime = _T("NULL"); strPayID.Format( _T("%d") , pPayDataRet->lPayID ); if ( !pPayDataRet->bYS ) //收款时间,如果不是应收,表示已立即收到款 { strYSTime = _T("GETDATE()"); } else { strYSTime=_T("NULL"); } if ( m_ucUserType == LOGINTYPE_AGENT && (pPayDataRet->lSMSCount<0 || pPayDataRet->fPrice<0 ) ) //代理商不允许添加负数记录 { pPayDataRet->ucStatus = 0; //修改不成功 pPayDataRet ++; pPayDataRecv ++; continue; } switch( pPayDataRecv->ucStatus ) { case CORP_PAY_MODIFY: { //更改源充值记录数据 strSelect = CString("update Mms_Pay set ") + CString("Price='") + strPrice + CString("',") + CString("SMSCount='") + strSMSCount + CString("',") + CString("BZ='") + CString(pPayDataRet->szBZ) + CString("' ") + CString("where PayID=") + strPayID ; m_AdoRS.Open( strSelect ); //更新数据 //更改企业余额等信息 strSelect.Format( _T("Update MmsPro Set MmsUsed=MmsUsed+%d,TotalPayMms=TotalPayMms+%.4f,TotalMms=TotalMms+%d where CorpID=%s") , pPayDataRet->lPresent,pPayDataRet->fPriceOne , pPayDataRet->lPresent,strCorpID ); m_AdoRS.Open( strSelect ); //更新数据 /* //更改积分信息 strSelect.Format( _T("select * from Corp_VipInt where PayID=%d") , pPayDataRet->lPayID ); if (m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { long lOldJF=0; m_AdoRS.GetCollect( _T("VipInt") , lOldJF ); float fPriceOne = (float)pPayDataRet->fPrice/(float)pPayDataRet->lSMSCount; if ( fPriceOne<0) fPriceOne=-fPriceOne; if ( fPriceOne>0.06f ) { double fJF=(fPriceOne-0.06f)*pPayDataRet->fPrice; long lJF=0; if ( fJF<0 ) lJF = int(fJF-0.5f); else lJF = int(fJF+0.5f); //插入记录 long lType=0; //0,充值加积分。1-介绍客户积分。2-其它奖励积分 CString str,str2; str2.Format( _T("充值自动加积分:%.2f/%d") , pPayDataRet->fPrice ,pPayDataRet->lSMSCount ); str.Format( _T("Update Corp_VipInt Set VipInt=%d , BZ='%s' where PayID=%d") ,lJF,str2 ,pPayDataRet->lPayID ); m_AdoRS.Open(str); str.Format( _T("update corp set VipInt=VipInt+%d where CorpID=%s") , lJF-lOldJF , strCorpID ); m_AdoRS.Open(str); } } */ } strSelect = _T(""); break; case CORP_PAY_ADD: strSelect = CString("insert into Mms_Pay (CorpID,AgentID,PayMan,PayMode,Price,PriceOne,Present,SMSCount,YS,Test,FP,FP_Status,YS_Time,CreateUser,PayTime,OvrTime,LPType,LXRID,LPPrice,YSType,Commend_VipInt,BZ) values(") + CString(" '") + strCorpID + CString("',") + CString(" '") + strAgentID + CString("',") + CString(" '") + CString(pPayDataRet->szPayMan) + CString("',") + CString(" '") + CString(pPayDataRet->szPayMode) + CString("',") + strPrice + CString(",") + strPriceOne + CString(",") + strPresent + CString(",") + strSMSCount + CString(",") + strYS + CString(",") + strTest + CString(",") + strFP + CString(",") + strFPStatus + CString(",") + strYSTime + CString(",") + //收款时间 CString(" '") + CString(m_szLoginName) + CString("',") + //创建人 CString( "GETDATE(),") + // strPayTime + CString(",") + strOvrTime + CString(",") + strLPType + CString(",") + strLXRID + CString(",") + strLPPrice + CString(",") + strYSType + CString(",") + strCommend_VipInt + CString(",") + CString(" '") + CString(pPayDataRet->szBZ) + CString("' )"); break; case CORP_PAY_DEL: strSelect.Format(_T("delete from Mms_Pay where PayID=%d ") , pPayDataRet->lPayID); break; default: pPayDataRet->ucStatus = 0; //修改不成功 pPayDataRet ++; pPayDataRecv ++; continue; } BOOL b = true; if ( strSelect.GetLength()>0 ) b=m_AdoRS.Open( strSelect ); //执行 if ( b && pPayDataRecv->ucStatus == CORP_PAY_ADD ) //将增加的短信总量与金额加入到企业表里 { if ( m_ucUserType == LOGINTYPE_AGENT ) { strSelect.Format(_T("update MmsPro set MmsUsed=MmsUsed+%d,TotalPayMms=TotalPayMms+%.4f,TotalMms=TotalMms+%d ") , pPayDataRet->lSMSCount,pPayDataRet->fPrice,pPayDataRet->lSMSCount); strSelect += CString(_T(" where CorpID=")) + strCorpID ; m_AdoRS.Open( strSelect ); m_AdoRS.Close(); strSelect.Format(_T("update corp set LastPay=GetDate(),OvrTime=") ); strSelect += strOvrTime; strSelect += CString(_T(" where CorpID=")) + strCorpID ; m_AdoRS.Open( strSelect ); m_AdoRS.Close(); //以下为代理商相关处理 if ( this->m_ucUserType == LOGINTYPE_AGENT && m_lAgentType!=2) //超级代理商不用扣减余额 { //扣减代理商费用 //strSelect.Format( _T("update agent set Used=Used-%.4f where AgentID=%d") , (float)pPayDataRet->fPrice,m_lUserID ); strSelect.Format( _T("update agent set MmsUsed=MmsUsed - %.4f where AgentID=%d") , (float)pPayDataRecv->lSMSCount/10.0f,m_lUserID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); } } else { if ( pPayDataRet->lYSType==0 ) //非预收的进行以下处理,预收的暂时不用加量。 { { strSelect.Format(_T("update MmsPro set MmsUsed=MmsUsed+%d,TotalPayMms=TotalPayMms+%.4f,TotalMms=TotalMms+%d ") , pPayDataRet->lSMSCount,pPayDataRet->fPrice,pPayDataRet->lSMSCount); strSelect += CString(_T(" where CorpID=")) + strCorpID ; m_AdoRS.Open( strSelect ); m_AdoRS.Close(); strSelect.Format(_T("update corp set LastPay=GetDate(),OvrTime=") ); strSelect += strOvrTime; strSelect += CString(_T(" where CorpID=")) + strCorpID ; m_AdoRS.Open( strSelect ); m_AdoRS.Close(); } } //以下为赠送平台相关处理 if ( pPayDataRet->lLPType>0 ) { strSelect.Format( _T("update Corp_LXR set TotalCJ=TotalCJ+%.4f,TotalLP=TotalLP+%.2f where LXRID=%d") , pPayDataRet->fPrice,pPayDataRet->fLPPrice,pPayDataRet->lLXRID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); strSelect.Format( _T("update Corp_LXR set MemberBegin=GetDate() where LXRID=%d and MemberBegin is null") , pPayDataRet->lLXRID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); } /* //以下为积分平台相关处理 if ( pPayDataRet->lYSType == 0 && pPayDataRet->lSMSCount!=0 && pPayDataRet->fPrice!=0 ) { strSelect.Format( _T("select * from corp where corpid=%s and agentid<=0") , strCorpID ); //先判断用户不是代理商用户 if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { //取payID strSelect.Format( _T("select top 1 * from Mms_Pay where corpid=%s and Price=%s and SmsCount=%s order by PayTime desc") , strCorpID,strPrice,strSMSCount ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { long lPayID=0; m_AdoRS.GetCollect(_T("PayID") , lPayID ); float fPriceOne = (float)pPayDataRet->fPrice/(float)pPayDataRet->lSMSCount; if ( fPriceOne<0) fPriceOne=-fPriceOne; if ( fPriceOne>0.06f ) { double fJF=(fPriceOne-0.06f)*pPayDataRet->fPrice; long lJF=0; if ( fJF<0 ) lJF = int(fJF-0.5f); else lJF = int(fJF+0.5f); if ( lJF!=0 ) { //插入记录 long lType=0; //0,充值加积分。1-介绍客户积分。2-其它奖励积分 CString str,str2; str2.Format( _T("充值自动加积分3:%.2f/%d") , pPayDataRet->fPrice ,pPayDataRet->lSMSCount ); str.Format( _T("insert into Corp_VipInt (CorpID,PayID,Type,VipInt,CreateTime,CreateUser,BZ) values (%s,%d,%d,%d,GetDate(),'%s','%s')") , strCorpID,lPayID,lType,lJF,_T("AUTO"),str2); m_AdoRS.Open(str); str.Format( _T("update corp set VipInt=VipInt+%d where CorpID=%s") , lJF , strCorpID ); m_AdoRS.Open(str); } } } } } */ } if ( pPayDataRet->lYSType==0 ) //非预收的进行以下处理,预收的暂时不用加量。 { //短信量低报警标志。 strSelect.Format( _T("update MmsPro set SendMmsStatus=0 where CorpID=%s and MmsUsed>MmsSmUsed") , strCorpID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); } //以下为客服平台相关处理 if ( this->m_ucUserType == LOGINTYPE_KF ) //超级代理商不用扣减余额 { //扣减代理商费用 strSelect.Format( _T("update Manager set AddSmsCount=AddSmsCount+%d where ManagerID=%d") , pPayDataRecv->lSMSCount,m_lUserID ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); } /* //更新企业创建时间 if ( this->m_ucUserType == LOGINTYPE_MANAGER && pPayDataRet->fPrice>0 ) { //判断此企业是否有充值记录 strSelect.Format( _T("select count(*) as payCount from Mms_Pay where corpid=%s and Price>0") , strCorpID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { long lPayCount=0; m_AdoRS.GetCollect(_T("payCount") , lPayCount ); m_AdoRS.Close(); if ( lPayCount<=1 ) //允许一条记录是因为上面先插入再检测 { //取企业原来的注册时间 COleDateTime tReg; strSelect.Format( _T("select * from corp where corpid=%s") , strCorpID ); if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("RegTime") , tReg ); m_AdoRS.Close(); if ( tReg.GetStatus() == COleDateTime::valid ) //注册时间为有效日期 { //将注册时间更改为今天 strSelect.Format( _T("Update Corp set RegTime=GetDate() where corpid=%s") , strCorpID); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); //添加企业操作记录 strSelect.Format( _T("insert into corp_oper (CorpID,UserType,OperType,OperMsg,BZ,OperName,CreateUser,CreateTime) Values(%s,0,21,'%04d.%02d.%02d -> now','首次充值,自动更改注册时间','自动','%s',GetDate())"),strCorpID,tReg.GetYear(),tReg.GetMonth(),tReg.GetDay(),m_szLoginName ); m_AdoRS.Open(strSelect); m_AdoRS.Close(); } } } } } */ } pPayDataRet->ucStatus = b; //修改成功/不成功 pPayDataRet ++; pPayDataRecv ++; } SendFrame( SMSFUNC_MMS_PAYMODIFY , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_MmsPay_See(REQ_MmsPay_See *pPay) { try { if ( !(m_ulPurview & PURVIEW_TAB) || m_ucUserType == LOGINTYPE_YWY ) //没有权限查看支付记录 { ANS_MmsPay_See * pSeePay = new ANS_MmsPay_See; //权限不够,什么也不返回 pSeePay->lCount = -1; SendFrame( SMSFUNC_MMSPAY_SEE , (BYTE*)pSeePay , sizeof(ANS_MmsPay_See) ); //发送返回 return 1; } TCHAR szSelect[1024]={0}; TCHAR szCorpID[512]={0}; TCHAR szYWYID[512]={0}; TCHAR szFPType[512]={0}; #ifdef SMSCENTER_ADC TCHAR szType[512]={0}; TCHAR szAdcStatus[512]={0}; #endif if ( m_ucUserType == LOGINTYPE_AGENT ) { if ( pPay->lCorpID > 0 ) _stprintf(szCorpID,_T("Mms_Pay.corpid=%d"),pPay->lCorpID); else _stprintf( szCorpID,_T("Mms_Pay.corpID in (select corpid from corp where agentid=%d)") , m_lUserID); } else { if ( pPay->lCorpID > 0 ) _stprintf(szCorpID,_T("Mms_Pay.corpid=%d"),pPay->lCorpID); else _tcscpy( szCorpID,_T("1=1") ); } if ( pPay->lYWYID >= 0 ) #ifdef SMSCENTER_ADC _stprintf(szYWYID,_T("(Mms_Pay.corpid in (select corpid from corp where YWYID=%d) or (corp.agentid in (select agentid from agent where YWYID=%d) and PayType=1))"),pPay->lYWYID,pPay->lYWYID); #else _stprintf(szYWYID,_T("Mms_Pay.corpid in (select corpid from corp where YWYID=%d)"),pPay->lYWYID); #endif else _tcscpy( szYWYID,_T("1=1")); if ( pPay->lFPType >= 0 && (m_ucUserType == LOGINTYPE_MANAGER || m_ucUserType == LOGINTYPE_KF) ) if ( pPay->lFPType == 0 ) _tcscpy( szFPType,_T(" Mms_Pay.FP=1")); else _stprintf(szFPType,_T(" Mms_Pay.FP=1 and Mms_Pay.FP_Status = %d"),pPay->lFPType-1); else _tcscpy( szFPType,_T("1=1")); #ifdef SMSCENTER_ADC if ( pPay->lType >= 0 && m_ucUserType == LOGINTYPE_MANAGER ) _stprintf(szType,_T("Mms_Pay.PayType=%d"),pPay->lType); else _tcscpy( szType,_T("1=1") ); if ( pPay->lAdcStatus >= 0 && m_ucUserType == LOGINTYPE_MANAGER ) _stprintf(szAdcStatus,_T("Mms_Pay.AdcStatus=%d"),pPay->lAdcStatus); else _tcscpy( szAdcStatus,_T("1=1") ); #endif TCHAR szBegin[32]={0}; TCHAR szEnd[32]={0}; _stprintf( szBegin , _T("'%04d%02d%02d'") , pPay->tBegin.wYear,pPay->tBegin.wMonth,pPay->tBegin.wDay ); _stprintf( szEnd , _T("'%04d%02d%02d 23:59:59'") , pPay->tEnd.wYear,pPay->tEnd.wMonth,pPay->tEnd.wDay ); /* 所有充值 仅有缴费 含用缴费 缴费赠送 仅有赠送 含用赠送 */ switch(pPay->lPayType ) { case 1 : _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and Mms_Pay.Price!=0 and Mms_Pay.Present=0 and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 2 : _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and Mms_Pay.Price!=0 and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 3 : _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and Mms_Pay.Price!=0 and Mms_Pay.Present!=0 and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 4: _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and Mms_Pay.Price=0 and Mms_Pay.Present!=0 and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 5: _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and Mms_Pay.Present!=0 and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 6: _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and Mms_Pay.YS=1 and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 7: _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and Mms_Pay.test=1 and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 8: _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and Mms_Pay.YS!=1 and Mms_Pay.test!=1 and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 9: //有效充值 _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and %s and %s and Mms_Pay.test!=1 and Mms_Pay.YSType=0 and Mms_Pay.price!=0 and Mms_Pay.payid not in (select DYPayID as payid from paytouser where paytouser.UserType=0 and paytouser.DYPayID=Mms_Pay.payid) order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 10://退费 _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and %s and %s and Mms_Pay.test!=1 and Mms_Pay.price!=0 and Mms_Pay.payid in (select DYPayID as payid from paytouser where paytouser.UserType=0 and paytouser.DYPayID=Mms_Pay.payid) order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 11://成本短信 _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and %s and %s and Mms_Pay.CB=1 order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 12://赠送礼品 _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and %s and %s and Mms_Pay.LPType>0 order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 13://开票时间 _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.FP_Time>=%s and Mms_Pay.FP_Time<=%s and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; case 0 : default: _stprintf( szSelect , _T("select corp_lxr.name as lxrname,corp.corpname,corp.RegTime,corp.TCPer,corp.AgentID as corpAgentID,Mms_Pay.* from Mms_Pay LEFT OUTER JOIN corp ON corp.corpid = Mms_Pay.corpid LEFT OUTER JOIN corp_lxr ON corp_lxr.lxrid = Mms_Pay.lxrid where %s and Mms_Pay.PayTime>=%s and Mms_Pay.PayTime<=%s and %s and %s order by Mms_Pay.PayTime") , szCorpID,szBegin,szEnd,szYWYID,szFPType); break; } // TRACE(szSelect); BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_MmsPay_See) + sizeof(ANS_MmsPay_SeeData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_MmsPay_See * pPayRet = (ANS_MmsPay_See *)pData; ANS_MmsPay_SeeData * pPayDataRet = (ANS_MmsPay_SeeData *)(pData+sizeof(ANS_MmsPay_See)); pPayRet->lCount = lCount; if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; double dbTemp=0; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("CorpName") , pPayDataRet->szCorpName); m_AdoRS.GetCollect( _T("CorpID") , pPayDataRet->lCorpID); m_AdoRS.GetCollect( _T("AgentID") , pPayDataRet->lAgentID); m_AdoRS.GetCollect( _T("PayID") , pPayDataRet->lPayID); m_AdoRS.GetCollect( _T("PayMan") , pPayDataRet->szPayMan); m_AdoRS.GetCollect( _T("PayMode") , pPayDataRet->szPayMode); m_AdoRS.GetCollect( _T("Price") , pPayDataRet->fPrice); m_AdoRS.GetCollect( _T("PriceOne") , pPayDataRet->fPriceOne); m_AdoRS.GetCollect( _T("Present") , pPayDataRet->lPresent); m_AdoRS.GetCollect( _T("SMSCount") , pPayDataRet->lSMSCount); m_AdoRS.GetCollect( _T("CreateUser") , pPayDataRet->szCreateUser); m_AdoRS.GetCollect( _T("PayTime"), t); t.GetAsSystemTime(pPayDataRet->tPayTime); m_AdoRS.GetCollect( _T("OvrTime"), t); t.GetAsSystemTime(pPayDataRet->tOvrTime); m_AdoRS.GetCollect( _T("RegTime"), t); t.GetAsSystemTime(pPayDataRet->tRegTime); m_AdoRS.GetCollect( _T("TCPer"), pPayDataRet->lTCPer); m_AdoRS.GetCollect( _T("YS"), pPayDataRet->bYS); m_AdoRS.GetCollect( _T("test"), pPayDataRet->bTest); m_AdoRS.GetCollect( _T("CB"), pPayDataRet->bCB); m_AdoRS.GetCollect( _T("FP") , pPayDataRet->bFP); m_AdoRS.GetCollect( _T("FP_Status") , pPayDataRet->lFPStatus); m_AdoRS.GetCollect( _T("FP_Time"), t); t.GetAsSystemTime(pPayDataRet->tFPTime); m_AdoRS.GetCollect( _T("YS_Time"), t); t.GetAsSystemTime(pPayDataRet->tYSTime); m_AdoRS.GetCollect( _T("LPType") , pPayDataRet->lLPType); m_AdoRS.GetCollect( _T("LPPrice") , pPayDataRet->fLPPrice); m_AdoRS.GetCollect( _T("LXRID") , pPayDataRet->lLXRID); m_AdoRS.GetCollect( _T("lxrname") , pPayDataRet->szLXRName); m_AdoRS.GetCollect( _T("YSType") , pPayDataRet->lYSType); m_AdoRS.GetCollect( _T("Commend_VipInt") , pPayDataRet->lCommend_VipInt); //推荐积分 if ( pPayDataRet->lTCPer<=0 || pPayDataRet->lTCPer>100 ) pPayDataRet->lTCPer = 100; //if ( pPayDataRet->lPayType == 1 ) //ADC充值,直接取企业的代理商 //{ m_AdoRS.GetCollect( _T("corpAgentID") , pPayDataRet->lAgentID);//直接取企业的代理商 //} #ifdef SMSCENTER_ADC m_AdoRS.GetCollect( _T("MQ_SmsCode"), pPayDataRet->szAdcSmsCode); m_AdoRS.GetCollect( _T("MQ_LoginCode"), pPayDataRet->szAdcLoginCode); m_AdoRS.GetCollect( _T("PayType"), pPayDataRet->lPayType); m_AdoRS.GetCollect( _T("AdcStatus"), pPayDataRet->lAdcStatus); m_AdoRS.GetCollect( _T("AdcProcessUser"), pPayDataRet->szAdcProcessUser); m_AdoRS.GetCollect( _T("AdcPayTime"),t);t.GetAsSystemTime(pPayDataRet->tAdcPayTime); m_AdoRS.GetCollect( _T("MQ_ECUSTNAME"), pPayDataRet->szADCCorpName); dbTemp=0;m_AdoRS.GetCollect( _T("AdcTC0"), dbTemp );pPayDataRet->fAdcTC0= (float)dbTemp; dbTemp=0;m_AdoRS.GetCollect( _T("AdcTC1"), dbTemp );pPayDataRet->fAdcTC1= (float)dbTemp; dbTemp=0;m_AdoRS.GetCollect( _T("AdcTC2"), dbTemp );pPayDataRet->fAdcTC2= (float)dbTemp; dbTemp=0;m_AdoRS.GetCollect( _T("AdcTC3"), dbTemp );pPayDataRet->fAdcTC3= (float)dbTemp; dbTemp=0;m_AdoRS.GetCollect( _T("AdcTC4"), dbTemp );pPayDataRet->fAdcTC4= (float)dbTemp; dbTemp=0;m_AdoRS.GetCollect( _T("AdcTC5"), dbTemp );pPayDataRet->fAdcTC5= (float)dbTemp; dbTemp=0;m_AdoRS.GetCollect( _T("AdcTC6"), dbTemp );pPayDataRet->fAdcTC6= (float)dbTemp; dbTemp=0;m_AdoRS.GetCollect( _T("AdcTC7"), dbTemp );pPayDataRet->fAdcTC7= (float)dbTemp; #endif m_AdoRS.GetCollect( _T("BZ") , pPayDataRet->szBZ); m_AdoRS.MoveNext(); pPayDataRet ++; } } SendFrame( SMSFUNC_MMSPAY_SEE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_CheckupMms(REQ_CheckupMms *pCheckup) { try { if ( !(m_ulPurview & PURVIEW_FILT) ) //没有权限修改资料 { ANS_CheckupMms * pCheckupRet = new ANS_CheckupMms; //权限不够,什么也不返回 pCheckupRet->lCount = 0; SendFrame( SMSFUNC_CHECKUPMMS , (BYTE*)pCheckupRet , sizeof(ANS_CheckupMms) ); //发送返回 return 1; } ANS_CheckupMmsData * pCheckupData = (ANS_CheckupMmsData *)((BYTE*)pCheckup+sizeof(REQ_CheckupMms)); long lSize = sizeof(ANS_CheckupMms) + sizeof(ANS_CheckupMmsData)*pCheckup->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_CheckupMms * pCheckupRet = (ANS_CheckupMms * )pData; ANS_CheckupMmsData * pCheckupDataRet= (ANS_CheckupMmsData*)(pData+sizeof(ANS_CheckupMms)); pCheckupRet->lCount = pCheckup->lCount; pCheckupRet->bPass = pCheckup->bPass; pCheckupRet->bAll = pCheckup->bAll; pCheckupRet->lCorpID = pCheckup->lCorpID; _tcscpy(pCheckupRet->szTitle, pCheckup->szTitle); CString strSelect; if ( pCheckup->bAll ) //为通过所有 { } else { for ( int i=0 ; i< pCheckup->lCount ; i++ ) { if ( pCheckupData->bPass ) { //审核通过,状态为提交成功 strSelect.Format( _T("update MmsFile set Audit=1 where MmsFileID=%d and Audit=0") , pCheckupData->lFileID ); if (m_AdoRS.Open( strSelect )) pCheckupDataRet->lFileID = pCheckupData->lFileID; else pCheckupDataRet->lFileID = 0; } else { //审核不通过,状态为审核失败 strSelect.Format( _T("update MmsFile set Audit=7 where MmsFileID=%d and Audit=0") , pCheckupData->lFileID ); if (m_AdoRS.Open( strSelect )) { pCheckupDataRet->lFileID = pCheckupData->lFileID; } else { pCheckupDataRet->lFileID = 0; } //因为审核失败,可用短信应加1,已发短信减1 //CSendThread::SetSmsAddOne(&m_AdoRS,pCheckupDataRet->lSendID); } //继续处理下一条 pCheckupDataRet->lItem = pCheckupData->lItem; pCheckupDataRet ++; pCheckupData++; } } if ( m_AdoRS.Open(_T("BBS"),adCmdTable) ) { //添加一个系统消息 m_AdoRS.AddNew(); m_AdoRS.PutCollect( _T("SCorpID") , 0 ); m_AdoRS.PutCollect( _T("SUserID") , 0 ); m_AdoRS.PutCollect( _T("SCorpName"), _T("系统信息") ); m_AdoRS.PutCollect( _T("SUserName"), _T("系统信息") ); m_AdoRS.PutCollect( _T("RCorpID") , 0 ); //接收用户 m_AdoRS.PutCollect( _T("RUserID") , 0 ); m_AdoRS.PutCollect( _T("SendTime") , COleDateTime::GetCurrentTime()); //发送时间 if ( pCheckup->bAll ) { if (pCheckup->bPass) strSelect.Format( _T("(%s)成功全部审核通过了企业ID(%d)的彩信:%s!"),m_szLoginName,pCheckup->lCorpID,pCheckup->szTitle); else strSelect.Format( _T("(%s)成功全部审核失败了企业ID(%d)的彩信:%s!"),m_szLoginName,pCheckup->lCorpID,pCheckup->szTitle); } else { if (pCheckup->bPass) strSelect.Format( _T("(%s)成功审核通过了企业ID(%d)的彩信:%s!"),m_szLoginName,pCheckup->lCorpID,pCheckup->szTitle); else strSelect.Format( _T("(%s)成功审核失败了企业ID(%d)的彩信:%s!"),m_szLoginName,pCheckup->lCorpID,pCheckup->szTitle); } m_AdoRS.PutCollect( _T("Type") , _T("系统信息") ); m_AdoRS.PutCollect( _T("BZ") , strSelect ); m_AdoRS.PutCollect( _T("Status") , 0 ); m_AdoRS.PutCollect( _T("BBSType") , 10 ); m_AdoRS.Update(); m_AdoRS.Close(); } SendFrame( SMSFUNC_CHECKUPMMS , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_CheckupMms_See(REQ_CheckupMms_See *pSee) { try { if ( !(m_ulPurview & PURVIEW_FILT) ) //没有权限修改资料 { ANS_CheckupMms_See * pSeeRet = new ANS_CheckupMms_See; //权限不够,什么也不返回 pSeeRet->lCount = -1; SendFrame( SMSFUNC_CHECKUPMMS_SEE , (BYTE*)pSeeRet , sizeof(ANS_CheckupMms_See) ); //发送返回 return 1; } CString strSelect; strSelect.Format( _T("select * from MmsFile where Audit=0 and FileSize=FileAllSize") ); m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); if ( lCount < 0 ) lCount = 0; m_AdoRS.MoveFirst(); //移动第一条记录 //计算页数 long lPageMax = lCount/LISTPAGE_RECORD; if ( lPageMax*LISTPAGE_RECORD != lCount ) lPageMax ++; for ( int i=0 ; i< lPageMax ; i++ ) { //lFrameCount,计算当前页的记录数 long lFrameCount = LISTPAGE_RECORD; if ( lFrameCount*(i+1) > lCount ) lFrameCount = lCount - lFrameCount*i; long lSize = sizeof(ANS_CheckupMms_See) + sizeof(ANS_CheckupMms_SeeData)*lFrameCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_CheckupMms_See * pCheckupRet = (ANS_CheckupMms_See *)pData; ANS_CheckupMms_SeeData * pSeeDataRet = (ANS_CheckupMms_SeeData *)(pData+sizeof(ANS_CheckupMms_See)); pCheckupRet->lCount = lFrameCount; pCheckupRet->lPageAll = lPageMax; pCheckupRet->lPageCount = i+1; COleDateTime t; long lTempCount = 0; while( !m_AdoRS.IsEOF() && lTempCountlFileID); m_AdoRS.GetCollect( _T("CorpID") , pSeeDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserID") , pSeeDataRet->lUserID); m_AdoRS.GetCollect( _T("MmsTitle") , pSeeDataRet->szTitle); m_AdoRS.GetCollect( _T("mmSize") , pSeeDataRet->lmmSize); m_AdoRS.GetCollect( _T("CreateTime") , t);t.GetAsSystemTime(pSeeDataRet->tSubTime); m_AdoRS.MoveNext(); pSeeDataRet ++; lTempCount ++; } SendFrame( SMSFUNC_CHECKUPMMS_SEE , (BYTE*)pData , lSize ); //发送返回 } if ( lPageMax <= 0 ) //什么也找不到的返回 { ANS_CheckupMms_See * pList = new ANS_CheckupMms_See; //权限不够,什么也不返回 pList->lCount = 0; pList->lPageCount = 0; pList->lPageAll = 0; SendFrame( SMSFUNC_CHECKUPMMS_SEE , (BYTE*)pList , sizeof(ANS_CheckupMms_See) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Mms_GetFile( REQ_Mms_GetFile* pGet ) { try { if ( !(m_ulPurview & PURVIEW_FILT) ) //没有权限修改资料 { ANS_REQ_Mms_GetFile * pRet = new ANS_REQ_Mms_GetFile; //权限不够,什么也不返回 memset(pRet , 0 , sizeof(ANS_REQ_Mms_GetFile)); pRet->lStatus = 0; //返回失败 SendFrame( SMSFUNC_MMS_GETFILE , (BYTE*)pRet , sizeof(ANS_REQ_Mms_GetFile) ); //发送返回 return 1; } CString str; BOOL bGetOK=false; ANS_REQ_Mms_GetFile mmsRet={0}; str.Format( _T("select * from MmsFile where mmsFileID=%d") , pGet->lFileID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { COleDateTime t; m_AdoRS.GetCollect(_T("CorpID") , mmsRet.lCorpID); m_AdoRS.GetCollect(_T("UserID") , mmsRet.lUserID); m_AdoRS.GetCollect(_T("MmsFileID") , mmsRet.lFileID); m_AdoRS.GetCollect(_T("mmSize") , mmsRet.lmmSize); m_AdoRS.GetCollect(_T("FileSize") , mmsRet.lAllSize); m_AdoRS.GetCollect(_T("CreateTime") , t);t.GetAsSystemTime(mmsRet.tCreateTime); m_AdoRS.GetCollect(_T("MmsTitle") , mmsRet.szTitle); m_AdoRS.Close(); mmsRet.lStatus=0; mmsRet.lDownSize = 0; mmsRet.lSize = 0; //取彩信文件 TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("MmsFile\\") ); //生成查询串 CString strFile; strFile.Format(_T("%s%d.mms") ,szPath, mmsRet.lFileID ); CFile file; if ( file.Open( strFile , CFile::modeRead) ) //文件打开正常 { if ( file.GetLength() == mmsRet.lAllSize ) { while ( true ) { #define MMSFILE_MAXUPFILESIZE 20*1024 //每次下载20K BOOL bEnd=false; mmsRet.lSize = MMSFILE_MAXUPFILESIZE; if ( mmsRet.lDownSize + mmsRet.lSize >= mmsRet.lAllSize ) { mmsRet.lSize = mmsRet.lAllSize-mmsRet.lDownSize; bEnd = true; } mmsRet.lDownSize += mmsRet.lSize; long lSize = sizeof(ANS_REQ_Mms_GetFile) + mmsRet.lSize; BYTE * pData = new BYTE[lSize]; memset( pData , 0 , lSize ); ANS_REQ_Mms_GetFile * pGetRet = (ANS_REQ_Mms_GetFile *)pData; BYTE * pRetBuf = pData + sizeof(ANS_REQ_Mms_GetFile); *pGetRet = mmsRet; file.Read(pRetBuf , mmsRet.lSize ); pGetRet->lStatus = 1; bGetOK = true; SendFrame( SMSFUNC_MMS_GETFILE , pData , lSize ); //发送返回 Sleep(500); if ( bEnd ) break; } } } } if ( !bGetOK ) { ANS_REQ_Mms_GetFile * pRet = new ANS_REQ_Mms_GetFile; //权限不够,什么也不返回 memset(pRet , 0 , sizeof(ANS_REQ_Mms_GetFile)); pRet->lStatus = -1; //返回失败 SendFrame( SMSFUNC_MMS_GETFILE , (BYTE*)pRet , sizeof(ANS_REQ_Mms_GetFile) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_ListMms(REQ_ListMms *pList) { try { BOOL bFail = false; if ( !_tcscmp(pList->szMobile,_T("FAIL")) ) { memset(pList->szMobile , 0 , sizeof(pList->szMobile)); bFail = true; } if (!bFail && !(m_ulPurview & PURVIEW_LIST)) //没有权限修改资料 { ANS_ListMms * pList = new ANS_ListMms; //权限不够,什么也不返回 pList->lCount = 0; pList->lPageCount = 0; pList->lPageAll = 0; SendFrame( SMSFUNC_LISTMMS , (BYTE*)pList , sizeof(ANS_ListMms) ); //发送返回 return 1; } m_bCheckTimeOut = false; //不允许检测超时时间 CString strSelect; TCHAR szBegin[32]={0}; TCHAR szEnd[32]={0}; BOOL bOnlyMobile=false; if (bFail) { _stprintf( szBegin , _T("'%04d%02d%02d %02d:%02d:%02d'") , pList->tBegin.wYear,pList->tBegin.wMonth,pList->tBegin.wDay,pList->tBegin.wHour,pList->tBegin.wMinute,pList->tBegin.wSecond ); _stprintf( szEnd , _T("'%04d%02d%02d %02d:%02d:%02d'") , pList->tEnd.wYear,pList->tEnd.wMonth,pList->tEnd.wDay,pList->tEnd.wHour,pList->tEnd.wMinute,pList->tEnd.wSecond ); } else { _stprintf( szBegin , _T("'%04d%02d%02d'") , pList->tBegin.wYear,pList->tBegin.wMonth,pList->tBegin.wDay ); _stprintf( szEnd , _T("'%04d%02d%02d 23:59:59'") , pList->tEnd.wYear,pList->tEnd.wMonth,pList->tEnd.wDay ); } CString strTemp; if ( pList->lTop >0 ) strSelect.Format( _T("select Top %d * from %%s where SubTime>=%s AND SubTime<=%s"),pList->lTop, szBegin , szEnd ); else strSelect.Format( _T("select * from %%s where SubTime>=%s AND SubTime<=%s"), szBegin , szEnd ); if ( pList->lCorpID >= 0 ) { strTemp.Format( _T(" AND CorpID=%d") , pList->lCorpID ); strSelect += strTemp; } if ( pList->lMobileType >=0 ) { strTemp.Format( _T(" AND RecvNumType=%d") , pList->lMobileType ); strSelect += strTemp; } if ( pList->lMsgType >=0 ) { strTemp.Format( _T(" AND MsgType=%d") , pList->lMsgType ); strSelect += strTemp; } if ( pList->bJF ) { strTemp=_T(" AND (Status=10 OR Status=12)"); strSelect += strTemp; } if ( bFail ) { strTemp=_T(" AND (Status=11 OR Status=13)"); strSelect += strTemp; } if ( _tcslen(pList->szMobile)> 0 ) { if ( pList->lCorpID>0 ) { strTemp.Format( _T(" AND (RecvNum='%s' OR SendNum='%s')") , pList->szMobile,pList->szMobile ); strSelect += strTemp; } else { bOnlyMobile=true; strTemp.Format( _T(" AND TEMPMOBILE='%s'") , pList->szMobile ); strSelect += strTemp; } } strSelect += _T(" order by SubTime desc"); /* //合成查询语句 strTemp.Format( strSelect , "smssend" ); strSelect2 += strTemp; strTemp.Format( strSelect , "corpsmsm.dbo.smssend" ); strSelect2 = strSelect2 + CString(" union ") +strTemp; if ( pList->bOld ) { strTemp.Format( strSelect , "corpsmsb.dbo.smslog" ); strSelect2 = strSelect2 + CString(" union ") +strTemp; } if ( pList->lTop >=0 ) { strTemp.Format("SET ROWCOUNT %d" , pList->lTop ); //只返回特定数量的 m_AdoRS.Open( strTemp ); } */ long lAllCount=0; long lMobileType=0; //for ( int i=0 ; i<4 ; i++ ) for ( int i=0 ; i<1 ; i++ ) { if ( i==0 ) strTemp.Format( strSelect , _T("MmsSend") ); if ( i==1 ) strTemp.Format( strSelect , _T("corpsmsm.dbo.MmsSend") ); if ( i==2 ) strTemp.Format( strSelect , _T("corpsmsm.dbo.MmsSendt") ); if ( i==3 ) { if ( pList->bOld) strTemp.Format( strSelect , _T("corpsmsb.dbo.mmslog") ); else break; } //如果是查询单个号码,控制要重复查询2次,SendNum与RecvNum if ( bOnlyMobile ) { switch(lMobileType) { case 0: strTemp.Replace(_T("TEMPMOBILE") , _T("RecvNum")); break; case 1: strTemp.Replace(_T("TEMPMOBILE") , _T("SendNum")); break; default: strTemp.Replace(_T("TEMPMOBILE") , _T("RecvNum")); break; } lMobileType ++; if ( lMobileType<2 ) { i--; } else { lMobileType=0; } } m_AdoRS.Open( strTemp ); long lCount = m_AdoRS.GetRecordCount(); if ( lCount < 0 ) lCount = 0; m_AdoRS.MoveFirst(); //移动第一条记录 //计算页数 long lPageMax = lCount/LISTPAGE_RECORD; if ( lPageMax*LISTPAGE_RECORD != lCount ) lPageMax ++; for ( int i=0 ; i< lPageMax ; i++ ) { //lFrameCount,计算当前页的记录数 long lFrameCount = LISTPAGE_RECORD; if ( lFrameCount*(i+1) > lCount ) lFrameCount = lCount - lFrameCount*i; long lSize = sizeof(ANS_ListMms) + sizeof(ANS_ListMmsData)*lFrameCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_ListMms * pListRet = (ANS_ListMms *)pData; ANS_ListMmsData * pListDataRet = (ANS_ListMmsData *)(pData+sizeof(ANS_ListMms)); pListRet->lCount = lFrameCount; pListRet->lPageAll = lPageMax; pListRet->lPageCount = i+1; COleDateTime t; long lTempCount = 0; while( !m_AdoRS.IsEOF() && lTempCountlSendID); m_AdoRS.GetCollect( _T("MmsFileID") , pListDataRet->lFileID); m_AdoRS.GetCollect( _T("CorpID") , pListDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserID") , pListDataRet->lUserID); m_AdoRS.GetCollect( _T("Status") , pListDataRet->lStatus); m_AdoRS.GetCollect( _T("MsgID") , pListDataRet->szMsgID); m_AdoRS.GetCollect( _T("MsgType") , pListDataRet->lSmsType); m_AdoRS.GetCollect( _T("mmSize") , pListDataRet->lmmSize); m_AdoRS.GetCollect( _T("Sender") , pListDataRet->szSender); m_AdoRS.GetCollect( _T("Title") , pListDataRet->szTitle); m_AdoRS.GetCollect( _T("SendNum") , pListDataRet->szSendNum); m_AdoRS.GetCollect( _T("Recver") , pListDataRet->szRecver); m_AdoRS.GetCollect( _T("RecvNum") , pListDataRet->szRecvNum); m_AdoRS.GetCollect( _T("SendRet") , pListDataRet->lSendRet); m_AdoRS.GetCollect( _T("RecvStatus"), pListDataRet->szRecvStatus); m_AdoRS.GetCollect( _T("SubTime") , t);t.GetAsSystemTime(pListDataRet->tSubTime); m_AdoRS.GetCollect( _T("SendTime") , t);t.GetAsSystemTime(pListDataRet->tSendTime); m_AdoRS.GetCollect( _T("RecvTime") , t);t.GetAsSystemTime(pListDataRet->tRecvTime); m_AdoRS.GetCollect( _T("Timer") , t);t.GetAsSystemTime(pListDataRet->tTimerTime); m_AdoRS.MoveNext(); pListDataRet ++; lTempCount ++; lAllCount ++; } SendFrame( SMSFUNC_LISTMMS , (BYTE*)pData , lSize ); //发送返回 } } /* if ( pList->lTop >=0 ) { strTemp.Format("SET ROWCOUNT %d" , 0 ); m_AdoRS2.Open( strTemp ); } */ if ( lAllCount <= 0 ) //什么也找不到的返回 { ANS_ListMms * pList = new ANS_ListMms; //权限不够,什么也不返回 pList->lCount = 0; pList->lPageCount = 0; pList->lPageAll = 0; SendFrame( SMSFUNC_LISTMMS , (BYTE*)pList , sizeof(ANS_ListMms) ); //发送返回 m_bCheckTimeOut = true; //允许检测超时时间 return 1; } m_bCheckTimeOut = true; //允许检测超时时间 return 1; } catch (...) { m_bCheckTimeOut = true; //允许检测超时时间 return 0; } m_bCheckTimeOut = true; //允许检测超时时间 return 0; } long CProcessSocket::Process_MySqlApi( REQ_MySqlAPI * pApi ) { #ifdef SMSCENTER_NX try { ANS_MySqlAPI * pRet = new ANS_MySqlAPI; //权限不够,什么也不返回 memset(pRet , 0 , sizeof(ANS_MySqlAPI)); pRet->lReqType = pApi->lReqType; pRet->ret = pApi->req; CString str; if ( !(m_ulPurview & PURVIEW_CORP_SEE) ) //没有权限修改资料 { pRet->lStatus = -2; //权限不足 _tcscpy(pRet->szErrMsg , _T("权限不足") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } CMySqlConnection mysqlConnection; CMySqlRecordSet mysqlRS; //从MySql中检查api用户 if ( !mysqlConnection.Connection( m_pSMSDlg->m_Setup.szDBName3 ,3306, m_pSMSDlg->m_Setup.szDBUser3 , m_pSMSDlg->m_Setup.szDBPasswd3 , _T("mas")) ) { pRet->lStatus = -3; //权限不足 _tcscpy(pRet->szErrMsg , _T("连接MySql数据库失败") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } mysqlRS.SetConnection(&mysqlConnection); if ( pRet->lReqType==0 ) // 查询 { str.Format( _T("select * from tbl_api_info where corpid=%d") , pApi->req.lCorpID ); if (!mysqlRS.Open(str) ) { pRet->lStatus = -4; //权限不足 _tcscpy(pRet->szErrMsg , _T("打开MySql数据库失败") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } if ( !mysqlRS.IsEOF() ) { pRet->ret.lCorpID = _ttol(mysqlRS.GetCollect(_T("corpid"))); pRet->ret.lUserID = _ttol(mysqlRS.GetCollect(_T("userid"))); pRet->ret.if_has_rpt = _ttol(mysqlRS.GetCollect(_T("if_has_rpt"))); pRet->ret.if_status = _ttol(mysqlRS.GetCollect(_T("if_status"))); pRet->ret.lDefPriority = _ttol(mysqlRS.GetCollect(_T("DefPriority"))); pRet->ret.lNoSendTime = _ttol(mysqlRS.GetCollect(_T("NoSendTime"))); _tcscpy(pRet->ret.if_code , mysqlRS.GetCollect(_T("if_code"))); _tcscpy(pRet->ret.if_user , mysqlRS.GetCollect(_T("if_user"))); _tcscpy(pRet->ret.if_pwd , mysqlRS.GetCollect(_T("if_pwd"))); pRet->ret.lMTCount = -1; pRet->ret.lMOCount = -1; pRet->ret.lRPTCount = -1; str.Format( _T("select count(*) from api_mt_%s") , pRet->ret.if_code ); if (mysqlRS.Open(str) && !mysqlRS.IsEOF() ) { pRet->ret.lMTCount = _ttol(mysqlRS.GetCollect(0)); } str.Format( _T("select count(*) from api_mo_%s") , pRet->ret.if_code ); if (mysqlRS.Open(str) && !mysqlRS.IsEOF() ) { pRet->ret.lMOCount = _ttol(mysqlRS.GetCollect(0)); } str.Format( _T("select count(*) from api_rpt_%s") , pRet->ret.if_code ); if (mysqlRS.Open(str) && !mysqlRS.IsEOF() ) { pRet->ret.lRPTCount = _ttol(mysqlRS.GetCollect(0)); } } else { //置默认值 pRet->ret.if_status = 1; //默认状态为1 pRet->ret.lNoSendTime = 1; //启用禁发时间段 pRet->ret.lDefPriority = 50; //默认优先级 pRet->ret.if_has_rpt = 1; //默认有状态报告 } pRet->lStatus = 1; //正确返回 SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } if ( pRet->lReqType==1 ) // 设置 { //如果全部为空,删除api接口 if ( _tcslen(pApi->req.if_code)<=0 && _tcslen(pApi->req.if_user)<=0 ) { str.Format( _T("select * from tbl_api_info where corpid='%d'") , pApi->req.lCorpID ); if (!mysqlRS.Open(str) ) { pRet->lStatus = -4; //权限不足 _tcscpy(pRet->szErrMsg , _T("打开MySql数据库失败") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } memset(&pRet->ret,0,sizeof(ANS_MySqlAPIData)); pRet->ret.lCorpID = _ttol(mysqlRS.GetCollect(_T("corpid"))); pRet->ret.lUserID = _ttol(mysqlRS.GetCollect(_T("userid"))); pRet->ret.if_has_rpt = _ttol(mysqlRS.GetCollect(_T("if_has_rpt"))); pRet->ret.if_status = _ttol(mysqlRS.GetCollect(_T("if_status"))); pRet->ret.lDefPriority = _ttol(mysqlRS.GetCollect(_T("DefPriority"))); pRet->ret.lNoSendTime = _ttol(mysqlRS.GetCollect(_T("NoSendTime"))); _tcscpy(pRet->ret.if_code , mysqlRS.GetCollect(_T("if_code"))); _tcscpy(pRet->ret.if_user , mysqlRS.GetCollect(_T("if_user"))); _tcscpy(pRet->ret.if_pwd , mysqlRS.GetCollect(_T("if_pwd"))); if ( _tcslen(pRet->ret.if_code)>0 || _tcslen(pRet->ret.if_user)>0 ) { BOOL b=true; str.Format( _T("delete from tbl_api_info where corpid='%d'") , pRet->ret.lCorpID ); if ( b) b=b && mysqlRS.Open(str); //先删除表与数据 str.Format( _T("drop table if exists api_mt_%s") , pRet->ret.if_code ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("drop table if exists api_mo_%s") , pRet->ret.if_code ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("drop table if exists api_rpt_%s") , pRet->ret.if_code ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("delete from mysql.tables_priv where user='%s'") , pRet->ret.if_user ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("delete from mysql.user where user='%s'") , pRet->ret.if_user ); if ( b) b=b && mysqlRS.Open(str); } pRet->lStatus = 1; //正确返回 SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } //检查APICode是否为用户名 str.Format( _T("select * from users where corpid=%d and loginname='%s'") , pApi->req.lCorpID , pApi->req.if_code ); if ( !m_AdoRS.Open(str) || m_AdoRS.IsEOF() ) { pRet->lStatus = -5; //权限不足 _tcscpy(pRet->szErrMsg , _T("未找到与API编码相同的用户名,请先开用户") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } m_AdoRS.GetCollect(_T("UserID") , pRet->ret.lUserID ); //取用户ID //检查APICode在mysql中的位置 str.Format( _T("select * from tbl_api_info where corpid=%d") , pApi->req.lCorpID ); if (!mysqlRS.Open(str) ) { pRet->lStatus = -4; //权限不足 _tcscpy(pRet->szErrMsg , _T("打开MySql数据库失败") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } BOOL bInsertAPI=false; BOOL b=true; if ( mysqlRS.IsEOF() ) //原没有记录,新增 { //先检查有没有重复 str.Format( _T("select * from tbl_api_info where if_code='%s' or if_user='%s'") , pApi->req.if_code ,pApi->req.if_user); if (!mysqlRS.Open(str) ) { pRet->lStatus = -4; //权限不足 _tcscpy(pRet->szErrMsg , _T("打开MySql数据库失败") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } if ( !mysqlRS.IsEOF() ) { pRet->lStatus = -5; //权限不足 _tcscpy(pRet->szErrMsg , _T("存在重复的API编码或用户名") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } //插入新的API bInsertAPI = true; } else { long lCorpID = _ttol(mysqlRS.GetCollect(_T("corpid"))); long lUserID = _ttol(mysqlRS.GetCollect(_T("userid"))); CString strApiCode = mysqlRS.GetCollect(_T("if_code")); CString strUser = mysqlRS.GetCollect(_T("if_user")); CString strPasswd = mysqlRS.GetCollect(_T("if_pwd")); if (strApiCode != CString(pApi->req.if_code) || strUser != CString(pApi->req.if_user) || strPasswd != CString(pApi->req.if_pwd) ) { bInsertAPI = true; } else { //仅修改状态 str.Format( _T("Update tbl_api_info set if_has_rpt=%d,if_status=%d,DefPriority=%d,NoSendTime=%d where CorpID=%d") ,pApi->req.if_has_rpt,pApi->req.if_status,pApi->req.lDefPriority,pApi->req.lNoSendTime, pApi->req.lCorpID); b = mysqlRS.Open(str); //判断是否需要清空短信 if ( pApi->req.bClearMT ) { str.Format( _T("delete from api_mt_%s") , strApiCode ); b = mysqlRS.Open(str); } if ( pApi->req.bClearMO ) { str.Format( _T("delete from api_mo_%s") , strApiCode ); b = mysqlRS.Open(str); } if ( pApi->req.bClearRPT ) { str.Format( _T("delete from api_rpt_%s") , strApiCode ); b = mysqlRS.Open(str); } } } if ( bInsertAPI ) { str.Format( _T("delete from tbl_api_info where corpid='%d'") , pApi->req.lCorpID ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("insert into tbl_api_info (if_code,if_Name,if_has_rpt,if_status,if_user,if_pwd,DefPriority,NoSendTime,corpid,userid) values('%s','%s',%d,%d,'%s','%s',%d,%d,%d,%d)") ,pApi->req.if_code,pRet->ret.if_code,pRet->ret.if_has_rpt,pRet->ret.if_status,pRet->ret.if_user,pRet->ret.if_pwd,pRet->ret.lDefPriority,pRet->ret.lNoSendTime,pRet->ret.lCorpID,pRet->ret.lUserID ); if ( b) b=b && mysqlRS.Open(str); //先删除表与数据 str.Format( _T("drop table if exists api_mt_%s") , pApi->req.if_code ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("drop table if exists api_mo_%s") , pApi->req.if_code ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("drop table if exists api_rpt_%s") , pApi->req.if_code ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("delete from mysql.tables_priv where user='%s'") , pApi->req.if_user ); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("delete from mysql.user where user='%s'") , pApi->req.if_user ); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("CREATE TABLE `api_mt_%s` (")\ _T("`AUTO_SN` bigint(20) unsigned NOT NULL auto_increment,")\ _T("`SM_ID` decimal(8,0) unsigned NOT NULL default '0',")\ _T("`SRC_ID` decimal(8,0) unsigned NOT NULL default '0',")\ _T("`MOBILES` longtext NOT NULL,")\ _T("`CONTENT` text NOT NULL,")\ _T("`IS_WAP` tinyint(1) NOT NULL default '0',")\ _T("`URL` varchar(110) NOT NULL default '',")\ _T("`SEND_TIME` datetime default '0000-00-00 00:00:00',")\ _T("`SM_TYPE` tinyint(1) NOT NULL default '0',")\ _T("`MSG_FMT` int(11) NOT NULL default '0',")\ _T("`TP_PID` tinyint(1) NOT NULL default '0',")\ _T("`TP_UDHI` tinyint(1) NOT NULL default '0',")\ _T("`FEE_TERMINAL_ID` varchar(10) NOT NULL default '',")\ _T("`FEE_TYPE` varchar(10) NOT NULL default '',")\ _T("`FEE_CODE` varchar(10) NOT NULL default '',")\ _T("`FEE_USER_TYPE` int(11) NOT NULL default '0',")\ _T("`TRANS_CODE` varchar(16) default '',")\ _T("`ORGAN_CODE` varchar(16) default NULL,")\ _T("`PRIORITY` int(11) default '0',")\ _T("PRIMARY KEY (`AUTO_SN`),")\ _T("UNIQUE KEY `api_mt_index1` (`AUTO_SN`),")\ _T("KEY `api_mt_index2` (`PRIORITY`),")\ _T("KEY `api_mt_index3` (`TRANS_CODE`)")\ _T(") TYPE=InnoDB") , pApi->req.if_code); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("CREATE TABLE `api_mo_%s` (")\ _T("`AUTO_SN` bigint(20) unsigned NOT NULL auto_increment,")\ _T("`SM_ID` decimal(8,0) unsigned NOT NULL default '0',")\ _T("`MOBILE` varchar(15) NOT NULL default '',")\ _T("`CONTENT` text NOT NULL,")\ _T("`MO_TIME` datetime NOT NULL default '0000-00-00 00:00:00',")\ _T("`MSG_FMT` int(11) NOT NULL default '0',")\ _T("PRIMARY KEY (`AUTO_SN`),")\ _T("UNIQUE KEY `api_mo_index1` (`AUTO_SN`),")\ _T("KEY `api_mo_index2` (`SM_ID`)")\ _T(") TYPE=InnoDB;") , pApi->req.if_code); if ( b) b=b && mysqlRS.Open(str); str.Format( _T("CREATE TABLE `api_rpt_%s` (")\ _T("`AUTO_SN` bigint(20) unsigned NOT NULL auto_increment,")\ _T("`SM_ID` decimal(8,0) unsigned NOT NULL default '0',")\ _T("`MOBILE` varchar(15) NOT NULL default '',")\ _T("`RPT_CODE` smallint(6) NOT NULL default '0',")\ _T("`RPT_DESC` varchar(255) default NULL,")\ _T("`RPT_TIME` datetime NOT NULL default '0000-00-00 00:00:00',")\ _T("PRIMARY KEY (`AUTO_SN`),")\ _T("UNIQUE KEY `api_rpt_index1` (`AUTO_SN`),")\ _T("KEY `api_rpt_index2` (`SM_ID`)")\ _T(") TYPE=InnoDB;") , pApi->req.if_code); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("grant insert,select,delete on api_mt_%s to '%s'@'%%' identified by '%s'") , pApi->req.if_code , pApi->req.if_user,pApi->req.if_pwd ); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("grant insert,select,delete on api_mt_%s to '%s'@'localhost' identified by '%s'") , pApi->req.if_code , pApi->req.if_user,pApi->req.if_pwd ); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("grant insert,select,delete on api_mo_%s to '%s'@'%%' identified by '%s'") , pApi->req.if_code , pApi->req.if_user,pApi->req.if_pwd ); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("grant insert,select,delete on api_mo_%s to '%s'@'localhost' identified by '%s'") , pApi->req.if_code , pApi->req.if_user,pApi->req.if_pwd ); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("grant insert,select,delete on api_rpt_%s to '%s'@'%%' identified by '%s'") , pApi->req.if_code , pApi->req.if_user,pApi->req.if_pwd ); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("grant insert,select,delete on api_rpt_%s to '%s'@'localhost' identified by '%s'") , pApi->req.if_code , pApi->req.if_user,pApi->req.if_pwd ); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("grant select on tbl_api_info to '%s'@'%%' identified by '%s'") , pApi->req.if_user,pApi->req.if_pwd ); if ( b) b=b && mysqlRS.Open(str); str.Format(_T("grant select on tbl_api_info to '%s'@'localhost' identified by '%s'") , pApi->req.if_user,pApi->req.if_pwd ); if ( b) b=b && mysqlRS.Open(str); } if ( b ) { pRet->lStatus = 1; //正确返回 SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } else { pRet->lStatus = -6; //权限不足 _tcscpy(pRet->szErrMsg , _T("创建或修改API失败,执行MySql错误") ); SendFrame( SMSFUNC_MYSQLAPI , (BYTE*)pRet , sizeof(ANS_MySqlAPI) ); //发送返回 return 1; } } } catch(...) { } #endif return 0; } long CProcessSocket::Process_Calendar_See2(REQ_Calendar_See2 *pSee) { try { if ( !(m_ulPurview & PURVIEW_CALENDAR) ) //没有权限修改资料 { ANS_Calendar_See2 * pSeeRet = new ANS_Calendar_See2; //权限不够,什么也不返回 pSeeRet->lCount = -1; SendFrame( SMSFUNC_CALENDAR_SEE2 , (BYTE*)pSeeRet , sizeof(ANS_Calendar_See2) ); //发送返回 return 1; } CString strSelect; strSelect.Format( _T("select * from calendar where UserID=%d") , pSee->lUserID); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_Calendar_See2) + sizeof(ANS_Calendar_Data2)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_Calendar_See2 * pSeeRet = (ANS_Calendar_See2 *)pData; ANS_Calendar_Data2 * pDataRet = (ANS_Calendar_Data2 *)(pData+sizeof(ANS_Calendar_See2)); pSeeRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("CalendarID"), pDataRet->lCalendarID); m_AdoRS.GetCollect( _T("CorpID") , pDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserID") , pDataRet->lUserID); m_AdoRS.GetCollect( _T("Type") , pDataRet->lType); m_AdoRS.GetCollect( _T("Msg") , pDataRet->szMsg); m_AdoRS.GetCollect( _T("AddMsg") , pDataRet->szAddMsg); m_AdoRS.GetCollect( _T("AddMobile") , pDataRet->szAddMobile); m_AdoRS.GetCollect( _T("Alarm") , t);t.GetAsSystemTime(pDataRet->tAlarm); m_AdoRS.GetCollect( _T("Status") , pDataRet->lStatus); m_AdoRS.MoveNext(); pDataRet ++; } } SendFrame( SMSFUNC_CALENDAR_SEE2 , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Calendar_Add2(REQ_Calendar_Add2 *pAdd) { try { if ( !(m_ulPurview & PURVIEW_CALENDAR) ) //没有权限修改资料 { ANS_Calendar_Add2 * pAddRet = new ANS_Calendar_Add2; //权限不够,什么也不返回 memset(pAddRet,0,sizeof(ANS_Calendar_Add2)); pAddRet->bOK = false; SendFrame( SMSFUNC_CALENDAR_ADD2 , (BYTE*)pAddRet , sizeof(ANS_Calendar_Add2) ); //发送返回 return 1; } ANS_Calendar_Add2 * pAddRet = new ANS_Calendar_Add2; //权限不够,什么也不返回 memset(pAddRet,0,sizeof(ANS_Calendar_Add2)); pAddRet->bOK = false; //默认不成功 CString strTime; COleDateTime tAlarm(pAdd->tAlarm); if ( tAlarm.GetStatus() == COleDateTime::valid ) //if ( pAdd->tAlarm.wYear<1990 && pAdd->tAlarm.wYear>2020 ) { strTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , tAlarm.GetYear(),tAlarm.GetMonth(),tAlarm.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); } else { strTime = _T("NULL"); } CString strSelect; strSelect.Format( _T("insert into calendar (CorpID,UserID,Type,Msg,AddMsg,AddMobile,Alarm,Status,CreaTime) values(%d,%d,%d,'%s','%s','%s',%s,%d,GETDATE()) ") , pAdd->lCorpID, pAdd->lUserID, pAdd->lType, pAdd->szMsg, pAdd->szAddMsg, pAdd->szAddMobile, strTime, pAdd->lStatus ); if ( m_AdoRS.Open( strSelect ) ) { m_AdoRS.Close(); strSelect.Format( _T("select top 1 * from calendar where UserID=%d order by CreaTime desc"),pAdd->lUserID ); //取序号 if ( m_AdoRS.Open(strSelect) && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("CalendarID") , pAddRet->lCalendarID ); m_AdoRS.Close(); pAddRet->bOK = true; pAddRet->lCorpID = pAdd->lCorpID; pAddRet->lUserID = pAdd->lUserID; pAddRet->lStatus = pAdd->lStatus; pAddRet->lType = pAdd->lType; pAddRet->tAlarm = pAdd->tAlarm; _tcscpy(pAddRet->szMsg , pAdd->szMsg ); _tcscpy(pAddRet->szAddMsg , pAdd->szAddMsg ); _tcscpy(pAddRet->szAddMobile , pAdd->szAddMobile ); } } SendFrame( SMSFUNC_CALENDAR_ADD2 , (BYTE*)pAddRet , sizeof(ANS_Calendar_Add2) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_Calendar_Modify2(REQ_Calendar_Modify2 *pModify) { try { if ( !(m_ulPurview & PURVIEW_CALENDAR) ) //没有权限修改资料 { ANS_Calendar_Modify2 * pModifyRet = new ANS_Calendar_Modify2; //权限不够,什么也不返回 memset(pModifyRet,0,sizeof(ANS_Calendar_Modify2)); pModifyRet->bOK = false; SendFrame( SMSFUNC_CALENDAR_MODIFY2 , (BYTE*)pModifyRet , sizeof(ANS_Calendar_Modify2) ); //发送返回 return 1; } ANS_Calendar_Modify2 * pModifyRet = new ANS_Calendar_Modify2; //权限不够,什么也不返回 memset(pModifyRet,0,sizeof(ANS_Calendar_Modify2)); pModifyRet->bOK = false; //默认不成功 pModifyRet->bOnlyStatus = pModify->bOnlyStatus; pModifyRet->lItemID = pModify->lItemID; pModifyRet->lCalendarID = pModify->lCalendarID; CString strSelect; if ( pModify->bOnlyStatus ) { strSelect.Format( _T("update calendar set Status=%d where CalendarID='%d' ") , pModify->lStatus, pModify->lCalendarID ); } else { CString strTime; COleDateTime tAlarm(pModify->tAlarm); if ( tAlarm.GetStatus() == COleDateTime::valid ) //if ( pModify->tAlarm.wYear<1990 && pModify->tAlarm.wYear>2020 ) { strTime.Format( _T("'%04d%02d%02d %02d:%02d:%02d'") , tAlarm.GetYear(),tAlarm.GetMonth(),tAlarm.GetDay(),tAlarm.GetHour(),tAlarm.GetMinute(),tAlarm.GetSecond() ); } else { strTime = _T("NULL"); } strSelect.Format( _T("update calendar set Type=%d,Msg='%s',AddMsg='%s',AddMobile='%s',Alarm=%s,Status=%d where CalendarID='%d' ") , pModify->lType, pModify->szMsg, pModify->szAddMsg, pModify->szAddMobile, strTime, pModify->lStatus, pModify->lCalendarID ); } if ( m_AdoRS.Open( strSelect ) ) { m_AdoRS.Close(); pModifyRet->bOK = true; pModifyRet->lCorpID = pModify->lCorpID; pModifyRet->lUserID = pModify->lUserID; pModifyRet->lStatus = pModify->lStatus; pModifyRet->lType = pModify->lType; pModifyRet->tAlarm = pModify->tAlarm; _tcscpy(pModifyRet->szMsg , pModify->szMsg ); _tcscpy(pModifyRet->szAddMsg , pModify->szAddMsg ); _tcscpy(pModifyRet->szAddMobile, pModify->szAddMobile ); } SendFrame( SMSFUNC_CALENDAR_MODIFY2 , (BYTE*)pModifyRet , sizeof(ANS_Calendar_Modify2) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } BOOL CProcessSocket::Process_GetTD2(REQ_GetTD2 *pYWY) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_SEE) ) //没有取TD2 { ANS_GetTD2 * pTD2Ret = new ANS_GetTD2; //权限不够,什么也不返回 pTD2Ret->lCount = 0; SendFrame( SMSFUNC_GETTD2 , (BYTE*)pTD2Ret , sizeof(REQ_GetTD2) ); //发送返回 return 1; } CString strSelect; //strSelect.Format( _T("select * from TD2 where TD2ID=%d"),pTD2->lTD2ID); strSelect.Format( _T("select * from TD2 with(nolock)") ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GetTD2) + sizeof(ANS_GetTD2Data)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GetTD2 * pTD2Ret = (ANS_GetTD2 *)pData; ANS_GetTD2Data * pTD2DataRet = (ANS_GetTD2Data *)(pData+sizeof(ANS_GetTD2)); pTD2Ret->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("TDID") , pTD2DataRet->lTDID); m_AdoRS.GetCollect( _T("Status") , pTD2DataRet->lStatus); m_AdoRS.GetCollect( _T("DefaultTD") , pTD2DataRet->lDefaultTD); m_AdoRS.GetCollect( _T("TDType") , pTD2DataRet->lTDType); m_AdoRS.GetCollect( _T("Name") , pTD2DataRet->szName); m_AdoRS.GetCollect( _T("AccessPort") , pTD2DataRet->szAccessPort); m_AdoRS.GetCollect( _T("BZ") , pTD2DataRet->szBZ); m_AdoRS.GetCollect( _T("Ability") , pTD2DataRet->lAbility); m_AdoRS.GetCollect( _T("Limits") , pTD2DataRet->lLimits); m_AdoRS.GetCollect( _T("TDNum") , pTD2DataRet->lTDNum); m_AdoRS.GetCollect( _T("Mode") , pTD2DataRet->lMode); m_AdoRS.GetCollect( _T("SendRet") , pTD2DataRet->lSendRet); m_AdoRS.GetCollect( _T("ContentLen") , pTD2DataRet->lContentLen); m_AdoRS.GetCollect( _T("LongContentLen") , pTD2DataRet->lLongContentLen); m_AdoRS.GetCollect( _T("SignLen") , pTD2DataRet->lSignLen); m_AdoRS.GetCollect( _T("Day_Begin") , t); t.GetAsSystemTime(pTD2DataRet->Day_Begin); m_AdoRS.GetCollect( _T("Day_Submit") , pTD2DataRet->Day_Submit); m_AdoRS.GetCollect( _T("Day_Send") , pTD2DataRet->Day_Send); m_AdoRS.GetCollect( _T("Day_ReportSucess") , pTD2DataRet->Day_ReportSucess); m_AdoRS.GetCollect( _T("Day_ReportFail") , pTD2DataRet->Day_ReportFail); m_AdoRS.GetCollect( _T("Mon_Begin") , t); t.GetAsSystemTime(pTD2DataRet->Mon_Begin); m_AdoRS.GetCollect( _T("Mon_Submit") , pTD2DataRet->Mon_Submit); m_AdoRS.GetCollect( _T("Mon_Send") , pTD2DataRet->Mon_Send); m_AdoRS.GetCollect( _T("Mon_ReportSucess") , pTD2DataRet->Mon_ReportSucess); m_AdoRS.GetCollect( _T("Mon_ReportFail") , pTD2DataRet->Mon_ReportFail); m_AdoRS.MoveNext(); pTD2DataRet ++; } } SendFrame( SMSFUNC_GETTD2 , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TD2_Modify(REQ_TD2_Modify *pModify) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_MODIFY) ) //没有权限修改资料 { ANS_TD2_Modify * pTD2Ret = new ANS_TD2_Modify; //权限不够,什么也不返回 pTD2Ret->lItem = pModify->lItem; pTD2Ret->lCount = 0; SendFrame( SMSFUNC_TD2_MODIFY , (BYTE*)pTD2Ret , sizeof(ANS_TD2_Modify) ); //发送返回 return 1; } ANS_GetTD2Data * pData = (ANS_GetTD2Data *)((BYTE*)pModify+sizeof(REQ_TD2_Modify)); CString strSelect; CString strTDID; CString strTDType; CString strStatus; CString strDefaultTD; CString strName; CString strAccessPort; CString strBZ; CString strAbility; CString strLimits; CString strTDNum; CString strMode; CString strSendRet; CString strContentLen; CString strLongContentLen; CString strSignLen; strTDID.Format( _T("%d") , pData->lTDID ); strTDType.Format( _T("%d") , pData->lTDType ); strStatus.Format( _T("%d") , pData->lStatus ); strDefaultTD.Format( _T("%d") , pData->lDefaultTD ); strName = pData->szName; strName.Replace( _T("'") , _T("''") ); strAccessPort = pData->szAccessPort; strAccessPort.Replace( _T("'") , _T("''") ); strBZ = pData->szBZ;strBZ.Replace( _T("'") , _T("''") ); strAbility.Format( _T("%d") , pData->lAbility ); strLimits.Format( _T("%d") , pData->lLimits ); strTDNum.Format( _T("%d") , pData->lTDNum ); strMode.Format( _T("%d") , pData->lMode ); strSendRet.Format( _T("%d") , pData->lSendRet ); strContentLen.Format( _T("%d") , pData->lContentLen ); strLongContentLen.Format( _T("%d") , pData->lLongContentLen ); strSignLen.Format( _T("%d") , pData->lSignLen ); strSelect = CString("update TD2 set ") + CString("TDType='") + strTDType + CString("',") + CString("Name='") + strName + CString("',") + CString("AccessPort='") + strAccessPort + CString("',") + CString("BZ='") + strBZ + CString("',") + CString("Status='") + strStatus + CString("',") + CString("Ability=") + strAbility + CString(",") + CString("Limits=") + strLimits + CString(",") + CString("TDNum=") + strTDNum + CString(",") + CString("Mode=") + strMode + CString(",") + CString("SendRet=") + strSendRet + CString(",") + CString("ContentLen=") + strContentLen + CString(",") + CString("LongContentLen=") + strLongContentLen + CString(",") + CString("SignLen=") + strSignLen + CString(",") + CString("DefaultTD=") + strDefaultTD + CString(" ") + CString("where TDID=") + strTDID ; BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_TD2_Modify) + sizeof(ANS_GetTD2Data); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_TD2_Modify * pModifyRet = (ANS_TD2_Modify *)pDataRet; ANS_GetTD2Data * pModifyDataRet = (ANS_GetTD2Data *)(pDataRet+sizeof(ANS_TD2_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pData; SendFrame( SMSFUNC_TD2_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_TD2_Modify * pTD2Ret = new ANS_TD2_Modify; //权限不够,什么也不返回 pTD2Ret->lItem = pModify->lItem; pTD2Ret->lCount = 0; SendFrame( SMSFUNC_TD2_MODIFY , (BYTE*)pTD2Ret , sizeof(ANS_TD2_Modify) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TD2_Add(REQ_TD2_Add *pAdd) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_ADD) ) //没有权限修改资料 { ANS_TD2_Add * pAddRet = new ANS_TD2_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_TD2_ADD , (BYTE*)pAddRet , sizeof(ANS_TD2_Add) ); //发送返回 return 1; } ANS_GetTD2Data * pData = (ANS_GetTD2Data *)((BYTE*)pAdd+sizeof(REQ_TD2_Add)); CString strSelect; CString strTDID; CString strTDType; CString strStatus; CString strDefaultTD; CString strName; CString strAccessPort; CString strBZ; CString strAbility; CString strLimits; CString strTDNum; CString strMode; CString strSendRet; CString strContentLen; CString strLongContentLen; CString strSignLen; strTDID.Format( _T("%d") , pData->lTDID ); strTDType.Format( _T("%d") , pData->lTDType ); strStatus.Format( _T("%d") , pData->lStatus ); strDefaultTD.Format( _T("%d") , pData->lDefaultTD ); strName = pData->szName; strName.Replace( _T("'") , _T("''") ); strAccessPort = pData->szAccessPort; strAccessPort.Replace( _T("'") , _T("''") ); strBZ = pData->szBZ;strBZ.Replace( _T("'") , _T("''") ); strAbility.Format( _T("%d") , pData->lAbility ); strLimits.Format( _T("%d") , pData->lLimits ); strTDNum.Format( _T("%d") , pData->lTDNum ); strMode.Format( _T("%d") , pData->lMode ); strSendRet.Format( _T("%d") , pData->lSendRet ); strContentLen.Format( _T("%d") , pData->lContentLen ); strLongContentLen.Format( _T("%d") , pData->lLongContentLen ); strSignLen.Format( _T("%d") , pData->lSignLen ); strSelect = CString("insert into TD2 (TDType,Name,AccessPort,BZ,Status,Ability,Limits,TDNum,Mode,SendRet,ContentLen,LongContentLen,SignLen,DefaultTD) values(") + CString(" '") + strTDType + CString("',") + CString(" '") + strName + CString("',") + CString(" '") + strAccessPort + CString("',") + CString(" '") + strBZ + CString("',") + CString(" '") + strStatus + CString("',") + CString(" '") + strAbility + CString("',") + CString(" '") + strLimits + CString("',") + CString(" '") + strTDNum + CString("',") + CString(" '") + strMode + CString("',") + CString(" '") + strSendRet + CString("',") + CString(" '") + strContentLen + CString("',") + CString(" '") + strLongContentLen + CString("',") + CString(" '") + strSignLen + CString("',") + CString(" '") + strDefaultTD + CString("' )"); BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_TD2_Add) + sizeof(ANS_GetTD2Data); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_TD2_Add * pAddRet = (ANS_TD2_Add *)pDataRet; ANS_GetTD2Data * pAddDataRet = (ANS_GetTD2Data *)(pDataRet+sizeof(ANS_TD2_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pData; //以下为取得新添加记录的ID号 strSelect = _T("SELECT SCOPE_IDENTITY()") ; if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect((long)0 , pAddDataRet->lTDID ); } SendFrame( SMSFUNC_TD2_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_TD2_Add * pAddRet = new ANS_TD2_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_TD2_ADD , (BYTE*)pAddRet , sizeof(ANS_TD2_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TD2_Del(REQ_TD2_Del *pDel) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_DEL) ) //没有权限修改资料 { ANS_TD2_Del * pDelRet = new ANS_TD2_Del; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_TD2_DEL , (BYTE*)pDelRet , sizeof(ANS_TD2_Del) ); //发送返回 return 1; } ANS_TD2_DelData * pDelData = (ANS_TD2_DelData *)((BYTE*)pDel+sizeof(REQ_TD2_Del)); long lSize = sizeof(ANS_TD2_Del) + sizeof(ANS_TD2_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_TD2_Del * pDelRet = (ANS_TD2_Del * )pData; ANS_TD2_DelData * pDelDataRet= (ANS_TD2_DelData*)(pData+sizeof(ANS_TD2_Del)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from TD2 where TDID=%d") , pDelData->lTDID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lTDID = pDelData->lTDID; else pDelDataRet->lTDID = 0; pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_TD2_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } BOOL CProcessSocket::Process_GetTransCode(REQ_GetTransCode *pYWY) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_SEE) ) //没有取TD2 { ANS_GetTransCode * pTransCodeRet = new ANS_GetTransCode; //权限不够,什么也不返回 pTransCodeRet->lCount = 0; SendFrame( SMSFUNC_GETTRANSCODE , (BYTE*)pTransCodeRet , sizeof(REQ_GetTransCode) ); //发送返回 return 1; } CString strSelect; //strSelect.Format( _T("select * from TransCode where TransCodeID=%d"),pTransCode->lTransCodeID); strSelect.Format( _T("select * from NX_TransCode") ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GetTransCode) + sizeof(ANS_GetTransCodeData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GetTransCode * pTransCodeRet = (ANS_GetTransCode *)pData; ANS_GetTransCodeData * pTransCodeDataRet = (ANS_GetTransCodeData *)(pData+sizeof(ANS_GetTransCode)); pTransCodeRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("TransCodeID") , pTransCodeDataRet->lTransCodeID); m_AdoRS.GetCollect( _T("TransCode") , pTransCodeDataRet->szTransCode); m_AdoRS.GetCollect( _T("Priority") , pTransCodeDataRet->lPriority); m_AdoRS.GetCollect( _T("NoSendTime") , pTransCodeDataRet->lNoSendTime); m_AdoRS.GetCollect( _T("BZ") , pTransCodeDataRet->szBZ); m_AdoRS.MoveNext(); pTransCodeDataRet ++; } } SendFrame( SMSFUNC_GETTRANSCODE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TransCode_Modify(REQ_TransCode_Modify *pModify) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_MODIFY) ) //没有权限修改资料 { ANS_TransCode_Modify * pTransCodeRet = new ANS_TransCode_Modify; //权限不够,什么也不返回 pTransCodeRet->lItem = pModify->lItem; pTransCodeRet->lCount = 0; SendFrame( SMSFUNC_TRANSCODE_MODIFY , (BYTE*)pTransCodeRet , sizeof(ANS_TransCode_Modify) ); //发送返回 return 1; } ANS_GetTransCodeData * pData = (ANS_GetTransCodeData *)((BYTE*)pModify+sizeof(REQ_TransCode_Modify)); CString strSelect; CString strTransCodeID; CString strPriority; CString strNoSendTime; CString strTransCode; CString strBZ; strTransCodeID.Format( _T("%d") , pData->lTransCodeID ); strPriority.Format( _T("%d") , pData->lPriority ); strNoSendTime.Format( _T("%d") , pData->lNoSendTime ); strTransCode = pData->szTransCode; strTransCode.Replace( _T("'") , _T("''") ); strBZ = pData->szBZ;strBZ.Replace( _T("'") , _T("''") ); strSelect = CString("update NX_TransCode set ") + CString("Priority=") + strPriority + CString(",") + CString("TransCode='") + strTransCode + CString("',") + CString("BZ='") + strBZ + CString("',") + CString("NoSendTime=") + strNoSendTime + CString(" ") + CString("where TransCodeID=") + strTransCodeID ; BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_TransCode_Modify) + sizeof(ANS_GetTransCodeData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_TransCode_Modify * pModifyRet = (ANS_TransCode_Modify *)pDataRet; ANS_GetTransCodeData * pModifyDataRet = (ANS_GetTransCodeData *)(pDataRet+sizeof(ANS_TransCode_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pData; SendFrame( SMSFUNC_TRANSCODE_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_TransCode_Modify * pTransCodeRet = new ANS_TransCode_Modify; //权限不够,什么也不返回 pTransCodeRet->lItem = pModify->lItem; pTransCodeRet->lCount = 0; SendFrame( SMSFUNC_TRANSCODE_MODIFY , (BYTE*)pTransCodeRet , sizeof(ANS_TransCode_Modify) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TransCode_Add(REQ_TransCode_Add *pAdd) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_ADD) ) //没有权限修改资料 { ANS_TransCode_Add * pAddRet = new ANS_TransCode_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_TRANSCODE_ADD , (BYTE*)pAddRet , sizeof(ANS_TransCode_Add) ); //发送返回 return 1; } ANS_GetTransCodeData * pData = (ANS_GetTransCodeData *)((BYTE*)pAdd+sizeof(REQ_TransCode_Add)); CString strSelect; CString strTransCodeID; CString strPriority; CString strNoSendTime; CString strTransCode; CString strBZ; strTransCodeID.Format( _T("%d") , pData->lTransCodeID ); strPriority.Format( _T("%d") , pData->lPriority ); strNoSendTime.Format( _T("%d") , pData->lNoSendTime ); strTransCode = pData->szTransCode; strTransCode.Replace( _T("'") , _T("''") ); strBZ = pData->szBZ;strBZ.Replace( _T("'") , _T("''") ); strSelect = CString("insert into NX_TransCode (Priority,TransCode,BZ,NoSendTime) values(") + CString(" '") + strPriority + CString("',") + CString(" '") + strTransCode + CString("',") + CString(" '") + strBZ + CString("',") + CString(" '") + strNoSendTime + CString("' )"); BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_TransCode_Add) + sizeof(ANS_GetTransCodeData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_TransCode_Add * pAddRet = (ANS_TransCode_Add *)pDataRet; ANS_GetTransCodeData * pAddDataRet = (ANS_GetTransCodeData *)(pDataRet+sizeof(ANS_TransCode_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pData; //以下为取得新添加记录的ID号 strSelect = _T("SELECT SCOPE_IDENTITY()") ; if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect((long)0 , pAddDataRet->lTransCodeID ); } SendFrame( SMSFUNC_TRANSCODE_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_TransCode_Add * pAddRet = new ANS_TransCode_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_TRANSCODE_ADD , (BYTE*)pAddRet , sizeof(ANS_TransCode_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_TransCode_Del(REQ_TransCode_Del *pDel) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_DEL) ) //没有权限修改资料 { ANS_TransCode_Del * pDelRet = new ANS_TransCode_Del; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_TRANSCODE_DEL , (BYTE*)pDelRet , sizeof(ANS_TransCode_Del) ); //发送返回 return 1; } ANS_TransCode_DelData * pDelData = (ANS_TransCode_DelData *)((BYTE*)pDel+sizeof(REQ_TransCode_Del)); long lSize = sizeof(ANS_TransCode_Del) + sizeof(ANS_TransCode_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_TransCode_Del * pDelRet = (ANS_TransCode_Del * )pData; ANS_TransCode_DelData * pDelDataRet= (ANS_TransCode_DelData*)(pData+sizeof(ANS_TransCode_Del)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from NX_TransCode where TransCodeID=%d") , pDelData->lTransCodeID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lTransCodeID = pDelData->lTransCodeID; else pDelDataRet->lTransCodeID = 0; pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_TRANSCODE_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } BOOL CProcessSocket::Process_GetNoSendTime(REQ_GetNoSendTime *pYWY) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_SEE) ) //没有取TD2 { ANS_GetNoSendTime * pNoSendTimeRet = new ANS_GetNoSendTime; //权限不够,什么也不返回 pNoSendTimeRet->lCount = 0; SendFrame( SMSFUNC_GETNOSENDTIME , (BYTE*)pNoSendTimeRet , sizeof(REQ_GetNoSendTime) ); //发送返回 return 1; } CString strSelect; strSelect.Format( _T("select * from NX_NoSendTime") ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_GetNoSendTime) + sizeof(ANS_GetNoSendTimeData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_GetNoSendTime * pNoSendTimeRet = (ANS_GetNoSendTime *)pData; ANS_GetNoSendTimeData * pNoSendTimeDataRet = (ANS_GetNoSendTimeData *)(pData+sizeof(ANS_GetNoSendTime)); pNoSendTimeRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); COleDateTime t; while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("NoSendTimeID") , pNoSendTimeDataRet->lNoSendTimeID); m_AdoRS.GetCollect( _T("Status") , pNoSendTimeDataRet->lStatus); m_AdoRS.GetCollect( _T("BeginTime") , pNoSendTimeDataRet->tBegin); m_AdoRS.GetCollect( _T("EndTime") , pNoSendTimeDataRet->tEnd); m_AdoRS.GetCollect( _T("BZ") , pNoSendTimeDataRet->szBZ); m_AdoRS.MoveNext(); pNoSendTimeDataRet ++; } } SendFrame( SMSFUNC_GETNOSENDTIME , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_NoSendTime_Modify(REQ_NoSendTime_Modify *pModify) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_MODIFY) ) //没有权限修改资料 { ANS_NoSendTime_Modify * pNoSendTimeRet = new ANS_NoSendTime_Modify; //权限不够,什么也不返回 pNoSendTimeRet->lItem = pModify->lItem; pNoSendTimeRet->lCount = 0; SendFrame( SMSFUNC_NOSENDTIME_MODIFY , (BYTE*)pNoSendTimeRet , sizeof(ANS_NoSendTime_Modify) ); //发送返回 return 1; } ANS_GetNoSendTimeData * pData = (ANS_GetNoSendTimeData *)((BYTE*)pModify+sizeof(REQ_NoSendTime_Modify)); CString strSelect; CString strNoSendTimeID; CString strStatus; CString strBegin; CString strEnd; CString strBZ; strNoSendTimeID.Format( _T("%d") , pData->lNoSendTimeID ); strStatus.Format( _T("%d") , pData->lStatus ); strBZ = pData->szBZ;strBZ.Replace( _T("'") , _T("''") ); strBegin.Format( _T("'2000-01-01 %02d:%02d:00'") , pData->tBegin.wHour , pData->tBegin.wMinute ); strEnd.Format( _T("'2000-01-01 %02d:%02d:00'") , pData->tEnd.wHour , pData->tEnd.wMinute ); strSelect = CString("update NX_NoSendTime set ") + CString("Status=") + strStatus + CString(",") + CString("BeginTime=") + strBegin + CString(",") + CString("EndTime=") + strEnd + CString(",") + CString("BZ='") + strBZ + CString("' ") + CString("where NoSendTimeID=") + strNoSendTimeID ; BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_NoSendTime_Modify) + sizeof(ANS_GetNoSendTimeData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_NoSendTime_Modify * pModifyRet = (ANS_NoSendTime_Modify *)pDataRet; ANS_GetNoSendTimeData * pModifyDataRet = (ANS_GetNoSendTimeData *)(pDataRet+sizeof(ANS_NoSendTime_Modify)); pModifyRet->lItem = pModify->lItem; pModifyRet->lCount = 1; //数据记录 *pModifyDataRet = *pData; SendFrame( SMSFUNC_NOSENDTIME_MODIFY , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_NoSendTime_Modify * pNoSendTimeRet = new ANS_NoSendTime_Modify; //权限不够,什么也不返回 pNoSendTimeRet->lItem = pModify->lItem; pNoSendTimeRet->lCount = 0; SendFrame( SMSFUNC_NOSENDTIME_MODIFY , (BYTE*)pNoSendTimeRet , sizeof(ANS_NoSendTime_Modify) ); //发送返回 return 1; } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_NoSendTime_Add(REQ_NoSendTime_Add *pAdd) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_ADD) ) //没有权限修改资料 { ANS_NoSendTime_Add * pAddRet = new ANS_NoSendTime_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_NOSENDTIME_ADD , (BYTE*)pAddRet , sizeof(ANS_NoSendTime_Add) ); //发送返回 return 1; } ANS_GetNoSendTimeData * pData = (ANS_GetNoSendTimeData *)((BYTE*)pAdd+sizeof(REQ_NoSendTime_Add)); CString strSelect; CString strNoSendTimeID; CString strStatus; CString strBegin; CString strEnd; CString strBZ; strNoSendTimeID.Format( _T("%d") , pData->lNoSendTimeID ); strStatus.Format( _T("%d") , pData->lStatus ); strBZ = pData->szBZ;strBZ.Replace( _T("'") , _T("''") ); strBegin.Format( _T("'2000-01-01 %02d:%02d:00'") , pData->tBegin.wHour , pData->tBegin.wMinute ); strEnd.Format( _T("'2000-01-01 %02d:%02d:00'") , pData->tEnd.wHour , pData->tEnd.wMinute ); strSelect = CString("insert into NX_NoSendTime (Status,BeginTime,EndTime,BZ) values(") + CString(" '") + strStatus + CString("',") + CString(" ") + strBegin + CString(",") + CString(" ") + strEnd + CString(",") + CString(" '") + strBZ + CString("' )"); BOOL b = m_AdoRS.Open( strSelect ); //long lCount = m_AdoRS.GetRecordCount(); if ( b ) { long lSize = sizeof(ANS_NoSendTime_Add) + sizeof(ANS_GetNoSendTimeData); BYTE * pDataRet = new BYTE[lSize];memset(pDataRet,0,lSize); ANS_NoSendTime_Add * pAddRet = (ANS_NoSendTime_Add *)pDataRet; ANS_GetNoSendTimeData * pAddDataRet = (ANS_GetNoSendTimeData *)(pDataRet+sizeof(ANS_NoSendTime_Add)); pAddRet->lCount = 1; //数据记录 *pAddDataRet = *pData; //以下为取得新添加记录的ID号 strSelect = _T("SELECT SCOPE_IDENTITY()") ; if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect((long)0 , pAddDataRet->lNoSendTimeID ); } SendFrame( SMSFUNC_NOSENDTIME_ADD , (BYTE*)pDataRet , lSize ); //发送返回 } else { ANS_NoSendTime_Add * pAddRet = new ANS_NoSendTime_Add; //权限不够,什么也不返回 pAddRet->lCount = 0; SendFrame( SMSFUNC_NOSENDTIME_ADD , (BYTE*)pAddRet , sizeof(ANS_NoSendTime_Add) ); //发送返回 } return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_NoSendTime_Del(REQ_NoSendTime_Del *pDel) { try { if ( !(m_ulPurview & PURVIEW_MANAGER_DEL) ) //没有权限修改资料 { ANS_NoSendTime_Del * pDelRet = new ANS_NoSendTime_Del; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_NOSENDTIME_DEL , (BYTE*)pDelRet , sizeof(ANS_NoSendTime_Del) ); //发送返回 return 1; } ANS_NoSendTime_DelData * pDelData = (ANS_NoSendTime_DelData *)((BYTE*)pDel+sizeof(REQ_NoSendTime_Del)); long lSize = sizeof(ANS_NoSendTime_Del) + sizeof(ANS_NoSendTime_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_NoSendTime_Del * pDelRet = (ANS_NoSendTime_Del * )pData; ANS_NoSendTime_DelData * pDelDataRet= (ANS_NoSendTime_DelData*)(pData+sizeof(ANS_NoSendTime_Del)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from NX_NoSendTime where NoSendTimeID=%d") , pDelData->lNoSendTimeID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lNoSendTimeID = pDelData->lNoSendTimeID; else pDelDataRet->lNoSendTimeID = 0; pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_NOSENDTIME_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLFile_See( REQ_PLFile_See * pSee ) { try { if ( !(m_ulPurview & PURVIEW_PL) || !(m_ulPurview & PURVIEW_GADDRESS_SEE) ) //没有取TD2 { ANS_PLFile_See * pPLFileRet = new ANS_PLFile_See; //权限不够,什么也不返回 pPLFileRet->lCount = 0; SendFrame( SMSFUNC_PLFILE_SEE , (BYTE*)pPLFileRet , sizeof(ANS_PLFile_See) ); //发送返回 return 1; } CString strSelect; strSelect.Format( _T("select * from PLFile where CorpID=%d order by PLFileID desc") , pSee->lCorpID ); BOOL b = m_AdoRS.Open( strSelect ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_PLFile_See) + sizeof(ANS_PLFile_SeeData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_PLFile_See * pPLFileRet = (ANS_PLFile_See *)pData; ANS_PLFile_SeeData * pPLFileDataRet = (ANS_PLFile_SeeData *)(pData+sizeof(ANS_PLFile_See)); pPLFileRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("PLFileID") , pPLFileDataRet->lPLFileID); m_AdoRS.GetCollect( _T("Status") , pPLFileDataRet->lStatus); m_AdoRS.GetCollect( _T("Name") , pPLFileDataRet->szName); m_AdoRS.GetCollect( _T("MobileCount"), pPLFileDataRet->lMobileCount); m_AdoRS.GetCollect( _T("CorpID") , pPLFileDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserID") , pPLFileDataRet->lUserID); m_AdoRS.GetCollect( _T("CreateUser") , pPLFileDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime") , pPLFileDataRet->tCreateTime); m_AdoRS.MoveNext(); pPLFileDataRet ++; } } SendFrame( SMSFUNC_PLFILE_SEE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLFile_Del(REQ_PLFile_Del *pDel) { try { if (!(m_ulPurview & PURVIEW_PL) || !(m_ulPurview & PURVIEW_GADDRESS_DEL) ) //没有权限修改资料 { ANS_PLFile_Del * pDelRet = new ANS_PLFile_Del; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_PLFILE_DEL , (BYTE*)pDelRet , sizeof(ANS_PLFile_Del) ); //发送返回 return 1; } ANS_PLFile_DelData * pDelData = (ANS_PLFile_DelData *)((BYTE*)pDel+sizeof(REQ_PLFile_Del)); long lSize = sizeof(ANS_PLFile_Del) + sizeof(ANS_PLFile_DelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_PLFile_Del * pDelRet = (ANS_PLFile_Del * )pData; ANS_PLFile_DelData * pDelDataRet= (ANS_PLFile_DelData*)(pData+sizeof(ANS_PLFile_Del)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { BOOL bInUse = false; /* strSelect.Format( _T("select * from PLTaskSmsItem where status=0 and type=1 and MobileID='%d'") , pDelData->lPLFileID ); if (m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF()) { bInUse = true; } strSelect.Format( _T("select * from PLTaskSmsItem where status=0 and type=1 and MobileID='%d'") , pDelData->lPLFileID ); if (m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF()) { bInUse = true; } */ strSelect.Format( _T("delete from PLFile where PLFileID=%d") , pDelData->lPLFileID ); if (!bInUse && m_AdoRS.Open( strSelect )) { pDelDataRet->lPLFileID = pDelData->lPLFileID; TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("MobileFile\\") ); //生成查询串 CString strFile; strFile.Format(_T("%s%d.mdb") ,szPath, pDelData->lPLFileID ); ::DeleteFile(strFile); strFile.Format(_T("%s%d.txt") ,szPath, pDelData->lPLFileID ); ::DeleteFile(strFile); } else pDelDataRet->lPLFileID = 0; pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_PLFILE_DEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLFile_ID(REQ_PLFile_ID * pID ) { try { CString strSelect; ANS_PLFile_ID * pRet = new ANS_PLFile_ID; memset(pRet , 0 , sizeof(ANS_PLFile_ID)); pRet->bReUp = true; pRet->lCorpID = pID->lCorpID; pRet->lUserID = pID->lUserID; pRet->lMobileCount = pID->lMobileCount; _tcscpy(pRet->szErrMsg , _T("未知错误")); /* if ( pID->lMmsFileID>0 ) //客户端已有ID,需要判断ID是否存在及文件是否完整 { strSelect.Format(_T("select * from MmsFile where MmsFileID=%d") , pID->lMmsFileID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { long lAllSize=0; long lUpSize=0; long lmmSize=0; BOOL bOK=false; BOOL bOK2=false; m_AdoRS.GetCollect(_T("FileAllSize") , lAllSize ); m_AdoRS.GetCollect(_T("FileSize") , lUpSize ); m_AdoRS.GetCollect(_T("mmSize") , lmmSize ); if ( lAllSize == lUpSize && lmmSize == pID->lmmSize ) { bOK = true; } TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("MmsFile\\") ); //生成查询串 CString strFile; strFile.Format(_T("%s%d.mms") ,szPath, pID->lMmsFileID ); //检测文件是否存在与取文件大小 WIN32_FILE_ATTRIBUTE_DATA filedata={0}; if ( GetFileAttributesEx(strFile,GetFileExInfoStandard,&filedata) && filedata.nFileSizeLow==lUpSize && filedata.nFileSizeLow==lAllSize ) //判断文件是否已上传完整 { bOK2=true; } if ( bOK && bOK2) pRet->bReUp =false; } } */ pRet->lPLFileID = 0; //重新生成 if ( pRet->bReUp ) //需要重新生成ID { pRet->lPLFileID = 0; //重新生成 //判断号码数量是否足够 long lAddressCount=0; long lPLFileCount=999999; strSelect.Format(_T("select * from corp with(nolock) where CorpID=%d") , pID->lCorpID); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("AddressCount") , lAddressCount ); if ( lAddressCount>0 ) { lAddressCount = lAddressCount/50; //允许上传号码文件数量为公用通讯录数量的50分之一 } } strSelect.Format( _T("select count(*) as abc from PLFile with(nolock) where CorpID=%d") , pID->lCorpID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("abc") , lPLFileCount ); } if ( lPLFileCount >= lAddressCount ) { _tcscpy(pRet->szErrMsg , _T("你的号码文件数量已达上限,无法再添加!") ); } else { CString strName = pID->szName; strName.Replace(_T("'") , _T("''")); strSelect.Format(_T("insert into PLFile (Status,CorpID,UserID,Name,MobileCount,CreateUser, CreateTime) values (0,%d,%d,'%s',%d ,'%s', GetDate())") , pID->lCorpID,pID->lUserID,strName ,pID->lMobileCount,m_szLoginName); if ( m_AdoRS.Open(strSelect) ) { strSelect = _T("SELECT SCOPE_IDENTITY()") ; if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect((long)0 , pRet->lPLFileID ); _tcscpy(pRet->szErrMsg , _T("成功")); } } } } SendFrame( SMSFUNC_PLFILE_ID , (BYTE*)pRet , sizeof(ANS_PLFile_ID) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLFile_Up(REQ_PLFile_Up * pUp ) { try { BYTE * pFileData = (BYTE *)((BYTE*)pUp+sizeof(REQ_PLFile_Up)); CString strSelect; ANS_PLFile_Up * pRet = new ANS_PLFile_Up; memset(pRet , 0 , sizeof(ANS_PLFile_Up)); pRet->bOK = false; pRet->lCorpID = pUp->lCorpID; pRet->lUserID = pUp->lUserID; pRet->lPLFileID = pUp->lPLFileID; pRet->lAllLen = pUp->lAllLen; pRet->lUpLen = pUp->lUpLen; pRet->lDataLen = pUp->lDataLen; if ( pUp->lPLFileID>0 ) //客户端已有ID,需要判断ID是否存在及文件是否完整 { strSelect.Format(_T("select * from PLFile where PLFileID=%d") , pUp->lPLFileID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { BOOL bOK2=true; TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("MobileFile\\") ); //生成查询串 CString strFile; strFile.Format(_T("%s%d.mdb") ,szPath, pUp->lPLFileID ); //检测文件是否存在与取文件大小 if ( pUp->lUpLen>0 ) { WIN32_FILE_ATTRIBUTE_DATA filedata={0}; if ( !GetFileAttributesEx(strFile,GetFileExInfoStandard,&filedata) || filedata.nFileSizeLow!=pUp->lUpLen ) //文件大小与已上传的不同 { bOK2=false; } } if ( bOK2 ) //保存文件 { CFile file; BOOL bFirst=false; if ( pRet->lUpLen==0 ) //这个文件是首次上传 bFirst = true; BOOL bFile = false; if ( bFirst ) { bFile = file.Open(strFile , CFile::modeReadWrite|CFile::modeCreate); } else { bFile = file.Open(strFile , CFile::modeReadWrite); } if ( bFile ) { file.SeekToEnd(); file.Write(pFileData,pUp->lDataLen); pRet->bOK = true; pRet->lUpLen += pUp->lDataLen; file.Close(); } else { bOK2 =false; } if ( pRet->lUpLen>=pRet->lAllLen ) { //上传完毕,更改状态 strSelect.Format(_T("Update PLFile set Status=1 where PLFileID=%d") , pUp->lPLFileID ); m_AdoRS.Open(strSelect); m_AdoRS.Close(); /* //附件已上传完毕,判断是否需要审核 long lMmsSH=1; strSelect.Format(_T("select * from MmsPro where corpid=%d") , pUp->lCorpID ); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("MmsSH") , lMmsSH ); if ( lMmsSH!=1 ) //如果无需审核,直接改写审核状态为审核通过 { strSelect.Format(_T("update MmsFile Set Audit=1 where MmsFileID=%d") , pUp->lMmsFileID ); m_AdoRS.Open(strSelect); } } if ( lMmsSH==1 ) //彩信需要审核,发送短信通知客服 { if ( pUp->lNumCount>0 ) strSelect.Format(_T("%d准备提交%d条彩信,请审核。") , pUp->lCorpID,pUp->lNumCount ); else strSelect.Format(_T("%d准备提交彩信,请审核。") , pUp->lCorpID ); SendReportMsg(strSelect,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 } */ } } } } SendFrame( SMSFUNC_PLFILE_UP , (BYTE*)pRet , sizeof(ANS_PLFile_Up) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLTaskSms_Add(REQ_PLTaskSms_Add * pAdd ) { try { ANS_PLTaskSms_AddData * pAddData = (ANS_PLTaskSms_AddData *)(((BYTE *)pAdd)+sizeof(REQ_PLTaskSms_Add)); CString str; ANS_PLTaskSms_Add * pRet = new ANS_PLTaskSms_Add; memset(pRet , 0 , sizeof(ANS_PLTaskSms_Add)); _tcscpy(pRet->szErrMsg , _T("未知错误")); BOOL bCorpOK=false; long AutoTG_GL=0; long AutoTG_GJZ=0; long FiltStep=0; CString strCorpName; CString strSName; str.Format( _T("select * from corp where corpid=%d") , pAdd->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("FiltStep") , FiltStep ); m_AdoRS.GetCollect(_T("AutoTG_GL") , AutoTG_GL ); m_AdoRS.GetCollect(_T("AutoTG_GJZ") , AutoTG_GJZ ); m_AdoRS.GetCollect( _T("CorpName") , strCorpName ); m_AdoRS.GetCollect( _T("SName") , strSName); m_AdoRS.GetCollect(_T("Status") , str ); if ( str == CString(_T("0"))) bCorpOK = true; } if ( !bCorpOK ) { _tcscpy(pRet->szErrMsg , _T("企业状态异常")); SendFrame( SMSFUNC_PLTASKSMS_ADD , (BYTE*)pRet , sizeof(ANS_PLTaskSms_Add) ); //发送返回 return 1; } COleDateTime t2(pAdd->tTimer); if ( t2.GetStatus() == COleDateTime::valid ) { if ( t2-COleDateTime::GetCurrentTime()>COleDateTimeSpan(31,0,0,0) ) { _tcscpy(pRet->szErrMsg , _T("定时时间不能超1个月")); SendFrame( SMSFUNC_PLTASKSMS_ADD , (BYTE*)pRet , sizeof(ANS_PLTaskSms_Add) ); //发送返回 return 1; } } //判断是否超过预算 //判断号码数量是否足够 long lAddressCount=0; long lPLFileCount=999999; long lPriority=1000; str.Format(_T("select * from corp with(nolock) where CorpID=%d") , pAdd->lCorpID); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("AddressCount") , lAddressCount ); m_AdoRS.GetCollect(_T("Priority") , lPriority ); if ( lAddressCount>0 ) { lAddressCount = lAddressCount/50; //允许上传号码文件数量为公用通讯录数量的50分之一 } } str.Format( _T("select count(*) as abc from PLTaskSms with(nolock) where CorpID=%d and status<=2 ") , pAdd->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("abc") , lPLFileCount ); } if ( lPLFileCount >= lAddressCount ) { _tcscpy(pRet->szErrMsg , _T("你的待发短信任务数量已达上限,无法再添加!") ); } else { //插入任务ID long lStatus=0; //0-正在上传,1-待发送,2-审核,3-审核失败,4-正在发送,5-余额不足,6-强制停止,7-发送完成 CString strTimer=_T("NULL"); COleDateTime t(pAdd->tTimer); if ( t.GetStatus() == COleDateTime::valid ) { strTimer.Format(_T("'%04d%02d%02d %02d:%02d:%02d'") , t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute(),t.GetSecond()); } CString strMsg = pAdd->szMsg; strMsg.Replace(_T("'") , _T("''")); str.Format(_T("insert into PLTaskSms (Status,CorpID,UserID,Timer,Msg,MobileCount,LongSms,FD,Priority,CreateUser) values (0,%d,%d,%s,'%s',%d,%d,%d,%d,'%s')") , pAdd->lCorpID,pAdd->lUserID,strTimer,strMsg,pAdd->lMobileCount,pAdd->lLongSms,pAdd->lFD,lPriority,m_szLoginName); if ( m_AdoRS.Open(str) ) { str = _T("SELECT SCOPE_IDENTITY()") ; if ( m_AdoRS.Open( str ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect((long)0 , pRet->lPLTaskSmsID ); } } else { _tcscpy(pRet->szErrMsg , _T("添加新短信任务失败") ); } if ( pRet->lPLTaskSmsID >0 ) //添加项目 { for ( int i=0 ; i< pAdd->lCount ; i++ ) { CString strName=pAddData[i].szMobileName; strName.Replace(_T("'") , _T("''")); str.Format( _T("insert into PLTaskSmsItem (PLTaskSmsID,Status,CorpID,UserID,Type,MobileID,MobileName,MobileCount) values (%d,0,%d,%d,%d,'%s','%s',%d)"), pRet->lPLTaskSmsID,pAdd->lCorpID,pAdd->lUserID,pAddData[i].lType,pAddData[i].szMobileID,strName,pAddData[i].lMobileCount); m_AdoRS.Open(str); } lStatus = 1; //待发送 BOOL bTZ=false; if ( pAdd->lFilt>0 ) //需要审核,通知管理员 { lStatus=2; CString strSendReportMsg; strSendReportMsg.Format( _T("%d->%s提交带敏感字(%s)的短信任务%d条!失败:SF%d;通过:SG%d") ,pAdd->lCorpID,m_szLoginName,pAdd->szFiltWord, pAdd->lMobileCount,pRet->lPLTaskSmsID , pRet->lPLTaskSmsID); SendReportMsg(strSendReportMsg,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 SendReportMsg(pAdd->szMsg,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 if ( AutoTG_GJZ>0 ) { Checkup up={0}; up.lCorpID = pAdd->lCorpID ; up.lUserID = pAdd->lUserID ; up.bCheckup= true; up.dwStartTime = GetTickCount(); up.lType = 10; //批量任务 up.lPLTaskID = pRet->lPLTaskSmsID; _tcscpy(up.szCorpName , strCorpName ); //企业名称 _tcscpy(up.szSName , strSName ); //企业简称 _tcscpy(up.szUserName , m_szLoginName ); //用户名 _tcscpy(up.szMsg , pAdd->szMsg ); //信息内容 up.dwAutoTGTime=up.dwStartTime+AutoTG_GJZ*60*1000; //自动通过时间 m_pSMSDlg->SmsCheckup_Add(up); bTZ = true; } } if ( lStatus!=2 && FiltStep>0 && pAdd->lMobileCount>FiltStep) { lStatus=2; CString strSendReportMsg; strSendReportMsg.Format( _T("%d->%s提交短信任务%d条!失败:SF%d;通过:SG%d") ,pAdd->lCorpID,m_szLoginName, pAdd->lMobileCount,pRet->lPLTaskSmsID , pRet->lPLTaskSmsID); SendReportMsg(strSendReportMsg,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 SendReportMsg(pAdd->szMsg,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 if ( AutoTG_GL>0 ) { Checkup up={0}; up.lCorpID = pAdd->lCorpID ; up.lUserID = pAdd->lUserID ; up.bCheckup= true; up.dwStartTime = GetTickCount(); up.lType = 10; //批量任务 up.lPLTaskID = pRet->lPLTaskSmsID; _tcscpy(up.szCorpName , strCorpName ); //企业名称 _tcscpy(up.szSName , strSName ); //企业简称 _tcscpy(up.szUserName , m_szLoginName ); //用户名 _tcscpy(up.szMsg , pAdd->szMsg ); //信息内容 up.dwAutoTGTime=up.dwStartTime+AutoTG_GL*60*1000; //自动通过时间 m_pSMSDlg->SmsCheckup_Add(up); bTZ = true; } } str.Format( _T("update PLTaskSms set Status=%d where PLTaskSmsID=%d") , lStatus , pRet->lPLTaskSmsID); m_AdoRS.Open(str); } } SendFrame( SMSFUNC_PLTASKSMS_ADD , (BYTE*)pRet , sizeof(ANS_PLTaskSms_Add) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLTaskSms_See(REQ_PLTaskSms_See * pSee ) { try { CString str; // ANS_PLTaskSms_See * pRet = new ANS_PLTaskSms_See; // memset(pRet , 0 , sizeof(ANS_PLTaskSms_See)); // _tcscpy(pRet->szErrMsg , _T("未知错误")); CString strWhere=_T(" 1=1"); if ( pSee->lCorpID>0 ) { str.Format( _T(" and pltasksms.CorpID=%d") , pSee->lCorpID ); strWhere = strWhere+str; } if ( pSee->lUserID>0 ) { str.Format( _T(" and pltasksms.UserID=%d") , pSee->lUserID ); strWhere = strWhere+str; } if ( pSee->lStatus>=0 ) { str.Format( _T(" and pltasksms.Status=%d") , pSee->lStatus ); strWhere = strWhere+str; } COleDateTime tBegin(pSee->tBegin); COleDateTime tEnd(pSee->tEnd); if ( tBegin.GetStatus() == COleDateTime::valid ) { str.Format( _T(" and pltasksms.CreateTime>='%04d%02d%02d'") , tBegin.GetYear(),tBegin.GetMonth(),tBegin.GetDay() ); strWhere = strWhere+str; } if ( tEnd.GetStatus() == COleDateTime::valid ) { str.Format( _T(" and pltasksms.CreateTime<='%04d%02d%02d 23:59:59'") , tEnd.GetYear(),tEnd.GetMonth(),tEnd.GetDay() ); strWhere = strWhere+str; } CString strTop; switch(pSee->lTop) { case 0: strTop = _T(" top 200 "); //默认查询100条 break; case -1: strTop = _T(" "); //查询所有 break; default: strTop.Format( _T(" top %d") , pSee->lTop); break; } str.Format( _T("select %s pltasksms.*,corp.corpname from pltasksms left join corp on corp.corpid=pltasksms.corpid where %s order by pltasksms.createtime desc") ,strTop, strWhere ); BOOL b = m_AdoRS.Open( str ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_PLTaskSms_See) + sizeof(ANS_PLTaskSms_SeeData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_PLTaskSms_See * pPLFileRet = (ANS_PLTaskSms_See *)pData; ANS_PLTaskSms_SeeData * pPLFileDataRet = (ANS_PLTaskSms_SeeData *)(pData+sizeof(ANS_PLTaskSms_See)); pPLFileRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("PLTaskSmsID") , pPLFileDataRet->lPLTaskSmsID); m_AdoRS.GetCollect( _T("Status") , pPLFileDataRet->lStatus); m_AdoRS.GetCollect( _T("CorpName") , pPLFileDataRet->szCorpName); m_AdoRS.GetCollect( _T("CorpID") , pPLFileDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserID") , pPLFileDataRet->lUserID); m_AdoRS.GetCollect( _T("Timer"), pPLFileDataRet->tTimer); m_AdoRS.GetCollect( _T("Msg"), pPLFileDataRet->szMsg); m_AdoRS.GetCollect( _T("MobileCount"), pPLFileDataRet->lMobileCount); m_AdoRS.GetCollect( _T("YFMobileCount"), pPLFileDataRet->lYFMobileCount); m_AdoRS.GetCollect( _T("KF") , pPLFileDataRet->lKF); m_AdoRS.GetCollect( _T("CreateUser") , pPLFileDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime") , pPLFileDataRet->tCreateTime); m_AdoRS.MoveNext(); pPLFileDataRet ++; } } SendFrame( SMSFUNC_PLTASKSMS_SEE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLTaskSms_Del( REQ_PLTaskSms_Del * pDel ) { try { //ANS_PLTaskSms_DelData * pAddData = (ANS_PLTaskSms_DelData *)(((BYTE *)pDel)+sizeof(REQ_PLTaskSms_Del)); CString str; ANS_PLTaskSms_Del * pRet = new ANS_PLTaskSms_Del; memset(pRet , 0 , sizeof(ANS_PLTaskSms_Del)); _tcscpy(pRet->szErrMsg , _T("未知错误")); return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLTaskSms_Modify(REQ_PLTaskSms_Modify * pModify ) { try { CString str; ANS_PLTaskSms_Modify * pRet = new ANS_PLTaskSms_Modify; memset(pRet , 0 , sizeof(ANS_PLTaskSms_Modify)); pRet->lItem = pModify->lItem; pRet->lOldStatus = pModify->lOldStatus; pRet->lStatus = pModify->lStatus; pRet->lPLTaskSmsID = pModify->lPLTaskSmsID; pRet->bOK = false; _tcscpy(pRet->szErrMsg , _T("未知错误")); str.Format( _T("update PLTaskSms set Status=%d where PLTaskSmsID=%d and Status=%d") , pModify->lStatus , pModify->lPLTaskSmsID , pModify->lOldStatus ); if ( m_AdoRS.Open(str) ) { pRet->bOK = true; } else { pRet->bOK = false; _tcscpy(pRet->szErrMsg , _T("操作数据库失败")); } SendFrame( SMSFUNC_PLTASKSMS_MODIFY , (BYTE*)pRet , sizeof(ANS_PLTaskSms_Modify) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLTaskMms_Add(REQ_PLTaskMms_Add * pAdd ) { try { ANS_PLTaskMms_AddData * pAddData = (ANS_PLTaskMms_AddData *)(((BYTE *)pAdd)+sizeof(REQ_PLTaskMms_Add)); CString str; ANS_PLTaskMms_Add * pRet = new ANS_PLTaskMms_Add; memset(pRet , 0 , sizeof(ANS_PLTaskMms_Add)); _tcscpy(pRet->szErrMsg , _T("未知错误")); BOOL bCorpOK=false; long AutoTG_GL=0; long AutoTG_GJZ=0; long FiltStep=0; CString strCorpName; CString strSName; str.Format( _T("select * from corp where corpid=%d") , pAdd->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("FiltStep") , FiltStep ); m_AdoRS.GetCollect(_T("AutoTG_GL") , AutoTG_GL ); m_AdoRS.GetCollect(_T("AutoTG_GJZ") , AutoTG_GJZ ); m_AdoRS.GetCollect( _T("CorpName") , strCorpName ); m_AdoRS.GetCollect( _T("SName") , strSName); m_AdoRS.GetCollect(_T("Status") , str ); if ( str == CString(_T("0"))) bCorpOK = true; } if ( !bCorpOK ) { _tcscpy(pRet->szErrMsg , _T("企业状态异常")); SendFrame( SMSFUNC_PLTASKMMS_ADD , (BYTE*)pRet , sizeof(ANS_PLTaskMms_Add) ); //发送返回 return 1; } COleDateTime t2(pAdd->tTimer); if ( t2.GetStatus() == COleDateTime::valid ) { if ( t2-COleDateTime::GetCurrentTime()>COleDateTimeSpan(31,0,0,0) ) { _tcscpy(pRet->szErrMsg , _T("定时时间不能超1个月")); SendFrame( SMSFUNC_PLTASKMMS_ADD , (BYTE*)pRet , sizeof(ANS_PLTaskMms_Add) ); //发送返回 return 1; } } //判断是否超过预算 //判断号码数量是否足够 long lAddressCount=0; long lPLFileCount=999999; long lPriority=1000; str.Format(_T("select * from corp where CorpID=%d") , pAdd->lCorpID); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("AddressCount") , lAddressCount ); m_AdoRS.GetCollect(_T("Priority") , lPriority ); if ( lAddressCount>0 ) { lAddressCount = lAddressCount/50; //允许上传号码文件数量为公用通讯录数量的50分之一 } } str.Format( _T("select count(*) as abc from PLTaskMms where CorpID=%d and status<=2 ") , pAdd->lCorpID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("abc") , lPLFileCount ); } if ( lPLFileCount >= lAddressCount ) { _tcscpy(pRet->szErrMsg , _T("你的待发彩信任务数量已达上限,无法再添加!") ); } else { //插入任务ID long lStatus=0; //0-正在上传,1-待发送,2-审核,3-审核失败,4-正在发送,5-余额不足,6-强制停止,7-发送完成 CString strTimer=_T("NULL"); COleDateTime t(pAdd->tTimer); if ( t.GetStatus() == COleDateTime::valid ) { strTimer.Format(_T("'%04d%02d%02d %02d:%02d:%02d'") , t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute(),t.GetSecond()); } CString strTitle = pAdd->szTitle; strTitle.Replace(_T("'") , _T("''")); str.Format(_T("insert into PLTaskMms (Status,CorpID,UserID,Timer,MmsFileID,Title,mmSize,MobileCount,Priority,CreateUser) values (0,%d,%d,%s,%d,'%s',%d,%d,%d,'%s')") , pAdd->lCorpID,pAdd->lUserID,strTimer,pAdd->lMmsFileID,strTitle,pAdd->lmmSize,pAdd->lMobileCount,lPriority,m_szLoginName); if ( m_AdoRS.Open(str) ) { str = _T("SELECT SCOPE_IDENTITY()") ; if ( m_AdoRS.Open( str ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect((long)0 , pRet->lPLTaskMmsID ); } } else { _tcscpy(pRet->szErrMsg , _T("添加新短信任务失败") ); } if ( pRet->lPLTaskMmsID >0 ) //添加项目 { for ( int i=0 ; i< pAdd->lCount ; i++ ) { CString strName=pAddData[i].szMobileName; strName.Replace(_T("'") , _T("''")); str.Format( _T("insert into PLTaskMmsItem (PLTaskMmsID,Status,CorpID,UserID,Type,MobileID,MobileName,MobileCount) values (%d,0,%d,%d,%d,'%s','%s',%d)"), pRet->lPLTaskMmsID,pAdd->lCorpID,pAdd->lUserID,pAddData[i].lType,pAddData[i].szMobileID,strName,pAddData[i].lMobileCount); m_AdoRS.Open(str); } lStatus = 1; //待发送 BOOL bTZ=false; /* if ( pAdd->lFilt>0 ) //需要审核,通知管理员 { lStatus=2; CString strSendReportMsg; strSendReportMsg.Format( _T("%d->%s提交带敏感字(%s)的短信任务%d条!失败:SF%d;通过:SG%d") ,pAdd->lCorpID,m_szLoginName,pAdd->szFiltWord, pAdd->lMobileCount,pRet->lPLTaskMmsID , pRet->lPLTaskMmsID); SendReportMsg(strSendReportMsg,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 SendReportMsg(pAdd->szMsg,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 if ( AutoTG_GJZ>0 ) { Checkup up={0}; up.lCorpID = pAdd->lCorpID ; up.lUserID = pAdd->lUserID ; up.bCheckup= true; up.dwStartTime = GetTickCount(); up.lType = 10; //批量任务 up.lPLTaskID = pRet->lPLTaskMmsID; _tcscpy(up.szCorpName , strCorpName ); //企业名称 _tcscpy(up.szSName , strSName ); //企业简称 _tcscpy(up.szUserName , m_szLoginName ); //用户名 _tcscpy(up.szMsg , pAdd->szMsg ); //信息内容 up.dwAutoTGTime=up.dwStartTime+AutoTG_GJZ*60*1000; //自动通过时间 m_pSMSDlg->SmsCheckup_Add(up); bTZ = true; } } */ if ( lStatus!=2 && FiltStep>0 && pAdd->lMobileCount>FiltStep) { lStatus=2; CString strSendReportMsg; strSendReportMsg.Format( _T("%d->%s提交彩信任务%d条!失败:MSF%d;通过:MSG%d。%s") ,pAdd->lCorpID,m_szLoginName, pAdd->lMobileCount,pRet->lPLTaskMmsID , pRet->lPLTaskMmsID,pAdd->szTitle); SendReportMsg(strSendReportMsg,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 //SendReportMsg(pAdd->szMsg,REPORT_CHECKUP,&m_AdoRS,&m_AdoRS2,m_pSMSDlg); //发送通知短信 if ( AutoTG_GL>0 ) { Checkup up={0}; up.lCorpID = pAdd->lCorpID ; up.lUserID = pAdd->lUserID ; up.bCheckup= true; up.dwStartTime = GetTickCount(); up.lType = 20; //批量彩信任务 up.lPLTaskID = pRet->lPLTaskMmsID; _tcscpy(up.szCorpName , strCorpName ); //企业名称 _tcscpy(up.szSName , strSName ); //企业简称 _tcscpy(up.szUserName , m_szLoginName ); //用户名 _tcscpy(up.szMsg , pAdd->szTitle ); //信息内容 up.dwAutoTGTime=up.dwStartTime+AutoTG_GL*60*1000; //自动通过时间 m_pSMSDlg->SmsCheckup_Add(up); bTZ = true; } } str.Format( _T("update PLTaskMms set Status=%d where PLTaskMmsID=%d") , lStatus , pRet->lPLTaskMmsID); m_AdoRS.Open(str); } } SendFrame( SMSFUNC_PLTASKMMS_ADD , (BYTE*)pRet , sizeof(ANS_PLTaskMms_Add) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLTaskMms_See(REQ_PLTaskMms_See * pSee ) { try { CString str; // ANS_PLTaskMms_See * pRet = new ANS_PLTaskMms_See; // memset(pRet , 0 , sizeof(ANS_PLTaskMms_See)); // _tcscpy(pRet->szErrMsg , _T("未知错误")); CString strWhere=_T(" 1=1"); if ( pSee->lCorpID>0 ) { str.Format( _T(" and pltaskMms.CorpID=%d") , pSee->lCorpID ); strWhere = strWhere+str; } if ( pSee->lUserID>0 ) { str.Format( _T(" and pltaskMms.UserID=%d") , pSee->lUserID ); strWhere = strWhere+str; } if ( pSee->lStatus>=0 ) { str.Format( _T(" and pltaskMms.Status=%d") , pSee->lStatus ); strWhere = strWhere+str; } COleDateTime tBegin(pSee->tBegin); COleDateTime tEnd(pSee->tEnd); if ( tBegin.GetStatus() == COleDateTime::valid ) { str.Format( _T(" and pltaskMms.CreateTime>='%04d%02d%02d'") , tBegin.GetYear(),tBegin.GetMonth(),tBegin.GetDay() ); strWhere = strWhere+str; } if ( tEnd.GetStatus() == COleDateTime::valid ) { str.Format( _T(" and pltaskMms.CreateTime<='%04d%02d%02d 23:59:59'") , tEnd.GetYear(),tEnd.GetMonth(),tEnd.GetDay() ); strWhere = strWhere+str; } CString strTop; switch(pSee->lTop) { case 0: strTop = _T(" top 200 "); //默认查询100条 break; case -1: strTop = _T(" "); //查询所有 break; default: strTop.Format( _T(" top %d") , pSee->lTop); break; } str.Format( _T("select %s pltaskMms.*,corp.corpname from pltaskMms left join corp on corp.corpid=pltaskMms.corpid where %s order by pltaskMms.createtime desc") ,strTop, strWhere ); BOOL b = m_AdoRS.Open( str ); long lCount = m_AdoRS.GetRecordCount(); //生成返回数据 if ( lCount <0 ) lCount = 0; long lSize = sizeof(ANS_PLTaskMms_See) + sizeof(ANS_PLTaskMms_SeeData)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_PLTaskMms_See * pPLFileRet = (ANS_PLTaskMms_See *)pData; ANS_PLTaskMms_SeeData * pPLFileDataRet = (ANS_PLTaskMms_SeeData *)(pData+sizeof(ANS_PLTaskMms_See)); pPLFileRet->lCount = lCount; //数据记录 if (b && lCount) //执行成功 { m_AdoRS.MoveFirst(); while( !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("PLTaskMmsID") , pPLFileDataRet->lPLTaskMmsID); m_AdoRS.GetCollect( _T("Status") , pPLFileDataRet->lStatus); m_AdoRS.GetCollect( _T("CorpName") , pPLFileDataRet->szCorpName); m_AdoRS.GetCollect( _T("CorpID") , pPLFileDataRet->lCorpID); m_AdoRS.GetCollect( _T("UserID") , pPLFileDataRet->lUserID); m_AdoRS.GetCollect( _T("Timer"), pPLFileDataRet->tTimer); m_AdoRS.GetCollect( _T("MmsFileID"), pPLFileDataRet->lMmsFileID); m_AdoRS.GetCollect( _T("Title"), pPLFileDataRet->szTitle); m_AdoRS.GetCollect( _T("mmSize"), pPLFileDataRet->lmmSize); m_AdoRS.GetCollect( _T("MobileCount"), pPLFileDataRet->lMobileCount); m_AdoRS.GetCollect( _T("YFMobileCount"), pPLFileDataRet->lYFMobileCount); m_AdoRS.GetCollect( _T("KF") , pPLFileDataRet->lKF); m_AdoRS.GetCollect( _T("CreateUser") , pPLFileDataRet->szCreateUser); m_AdoRS.GetCollect( _T("CreateTime") , pPLFileDataRet->tCreateTime); m_AdoRS.MoveNext(); pPLFileDataRet ++; } } SendFrame( SMSFUNC_PLTASKMMS_SEE , (BYTE*)pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLTaskMms_Del(REQ_PLTaskMms_Del * pDel ) { try { ANS_PLTaskMms_AddData * pAddData = (ANS_PLTaskMms_AddData *)(((BYTE *)pDel)+sizeof(REQ_PLTaskMms_Add)); CString str; ANS_PLTaskMms_Add * pRet = new ANS_PLTaskMms_Add; memset(pRet , 0 , sizeof(ANS_PLTaskMms_Add)); _tcscpy(pRet->szErrMsg , _T("未知错误")); return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_PLTaskMms_Modify(REQ_PLTaskMms_Modify * pModify ) { try { CString str; ANS_PLTaskMms_Modify * pRet = new ANS_PLTaskMms_Modify; memset(pRet , 0 , sizeof(ANS_PLTaskMms_Modify)); pRet->lItem = pModify->lItem; pRet->lOldStatus = pModify->lOldStatus; pRet->lStatus = pModify->lStatus; pRet->lPLTaskMmsID = pModify->lPLTaskMmsID; pRet->bOK = false; _tcscpy(pRet->szErrMsg , _T("未知错误")); str.Format( _T("update PLTaskMms set Status=%d where PLTaskMmsID=%d and Status=%d") , pModify->lStatus , pModify->lPLTaskMmsID , pModify->lOldStatus ); if ( m_AdoRS.Open(str) ) { pRet->bOK = true; } else { pRet->bOK = false; _tcscpy(pRet->szErrMsg , _T("操作数据库失败")); } SendFrame( SMSFUNC_PLTASKMMS_MODIFY , (BYTE*)pRet , sizeof(ANS_PLTaskMms_Modify) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_GetUrl(REQ_UBox_GetUrl * pGetUrl) { try { ANS_UBox_GetUrl * pUrl = new ANS_UBox_GetUrl; memset(pUrl , 0 , sizeof(ANS_UBox_GetUrl)); pUrl->lCorpID = pGetUrl->lCorpID; pUrl->lUserID = pGetUrl->lUserID; _tcscpy(pUrl->szUrl, _T("http://www.mobset.com/product/pm.asp")); SendFrame( SMSFUNC_UBOX_GETURL , (BYTE*)pUrl , sizeof(ANS_UBox_GetUrl) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_GetPro(REQ_UBox_GetPro * pGetPro) { try { ANS_UBox_GetPro getPro={0}; getPro.lCorpID = pGetPro->lCorpID; getPro.lUserID = pGetPro->lUserID; getPro.lTickCount=pGetPro->lTickCount; getPro.lAddressType = pGetPro->lAddressType; getPro.lKH_UserID = pGetPro->lKH_UserID; //取企业信息 CString str; CString strTemp; if ( m_lCorpID == 100000 && pGetPro->bGetCorpPro ) //需要取企业的信息 { str.Format(_T("select corp_lxr.*,corp.corpname from corp_lxr with(nolock) join corp on corp.corpid=corp_lxr.corpid where corp_lxr.mobile='%s' or corp_lxr.tel='%s'"),pGetPro->szCallNumber,pGetPro->szCallNumber); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { getPro.bGetCorpPro = true; getPro.lAddressType = 2; m_AdoRS.GetCollect(_T("CorpID"),getPro.lKH_UserID); m_AdoRS.GetCollect(_T("Name") , getPro.szKH_Name); m_AdoRS.GetCollect(_T("CorpName") , strTemp); _stprintf(getPro.szKH_LTD , _T("%d-%s") , getPro.lKH_UserID,strTemp); m_AdoRS.GetCollect(_T("Branch") , getPro.szKH_Job); m_AdoRS.GetCollect(_T("Mobile") , getPro.szKH_Mobile); m_AdoRS.GetCollect(_T("Tel") , getPro.szKH_Tel); } } //取号段信息 CString strSelect; //查询短信归属地 //ExMobileGZM(pGetPro->szCallNumber); long lType = CProcessSocket::MobileNumType(pGetPro->szCallNumber); strTemp = pGetPro->szCallNumber; CString strProv; CString strCity; if ( lType==MOBILE_TYPE_PHS) //小灵通,查邮政编码表 { for ( int i=3 ; i<5 ; i++ ) { strSelect.Format(_T("select * from HDB_XLT where Code='%s' order by XLTID") , strTemp.Left(i)); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Prov") , strProv ); m_AdoRS.GetCollect( _T("City") , strCity ); break; } } strTemp=strProv; if ( strCity.GetLength()>0 ) strTemp = strProv + CString(_T("-")) + strCity; if ( strTemp.GetLength()<=0 ) strTemp = _T("未知归属地"); } else { //手机号,查号段表 strSelect.Format(_T("select * from HDB_ALL where HD='%s'") , strTemp.Left(7),strTemp.Left(7)); if ( m_AdoRS.Open(strSelect) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("Prov") , strProv ); m_AdoRS.GetCollect( _T("City") , strCity ); } strTemp=strProv; if ( strCity.GetLength()>0 ) strTemp = strProv + CString(_T("-")) + strCity; if ( strTemp.GetLength()<=0 ) strTemp = _T("未知归属地"); } _tcscpy(getPro.szCall_Local , strTemp ); //查类型 CArray CallType; str.Format(_T("select * from UBoxCallType where CorpID=%d order by TypeIndex") , pGetPro->lCorpID); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { while(!m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("TypeName") , strTemp ); ANS_UBox_CallType callType={0}; _tcscpy(callType.szType , strTemp ); CallType.Add(callType); m_AdoRS.MoveNext(); } } else { ANS_UBox_CallType callType={0}; strTemp=_T("产品咨询电话"); _tcscpy(callType.szType , strTemp ); CallType.Add(callType); str.Format(_T("insert into UBoxCallType(CorpID,TypeIndex,TypeName,CreateUser) values (%d,0,'%s','%s')"),pGetPro->lCorpID , strTemp,m_szLoginName); m_AdoRS.Open(str); strTemp=_T("技术咨询电话"); _tcscpy(callType.szType , strTemp ); CallType.Add(callType); str.Format(_T("insert into UBoxCallType(CorpID,TypeIndex,TypeName,CreateUser) values (%d,0,'%s','%s')"),pGetPro->lCorpID , strTemp,m_szLoginName); m_AdoRS.Open(str); strTemp=_T("意见建议电话"); _tcscpy(callType.szType , strTemp ); CallType.Add(callType); str.Format(_T("insert into UBoxCallType(CorpID,TypeIndex,TypeName,CreateUser) values (%d,0,'%s','%s')"),pGetPro->lCorpID , strTemp,m_szLoginName); m_AdoRS.Open(str); strTemp=_T("产品投诉电话"); _tcscpy(callType.szType , strTemp ); CallType.Add(callType); str.Format(_T("insert into UBoxCallType(CorpID,TypeIndex,TypeName,CreateUser) values (%d,0,'%s','%s')"),pGetPro->lCorpID , strTemp,m_szLoginName); m_AdoRS.Open(str); strTemp=_T("服务投诉电话"); _tcscpy(callType.szType , strTemp ); CallType.Add(callType); str.Format(_T("insert into UBoxCallType(CorpID,TypeIndex,TypeName,CreateUser) values (%d,0,'%s','%s')"),pGetPro->lCorpID , strTemp,m_szLoginName); m_AdoRS.Open(str); strTemp=_T("其它类型电话"); _tcscpy(callType.szType , strTemp ); CallType.Add(callType); str.Format(_T("insert into UBoxCallType(CorpID,TypeIndex,TypeName,CreateUser) values (%d,0,'%s','%s')"),pGetPro->lCorpID , strTemp,m_szLoginName); m_AdoRS.Open(str); } //查询通话日志 str.Format(_T("select * from UBoxLog where CallNumber='%s' or (KHUserID>0 and KHAddressType=%d and KHUserID=%d) order by CallTime desc") , pGetPro->szCallNumber , getPro.lAddressType,getPro.lKH_UserID); m_AdoRS.Open(str); CArray CallLog; while(!m_AdoRS.IsEOF() ) { ANS_UBox_CallLog callLog= {0}; m_AdoRS.GetCollect(_T("UBoxLogID") , callLog.lUBoxLogID); m_AdoRS.GetCollect(_T("CorpID") , callLog.lCorpID); m_AdoRS.GetCollect(_T("UserID") , callLog.lUserID); m_AdoRS.GetCollect(_T("UserName") , callLog.szUserName); m_AdoRS.GetCollect(_T("CallStatus"), callLog.lCallStatus); m_AdoRS.GetCollect(_T("CallWay") , callLog.lCallWay); m_AdoRS.GetCollect(_T("CallTime") , callLog.tCallTime); m_AdoRS.GetCollect(_T("CallLocal") , callLog.szCallLocal); m_AdoRS.GetCollect(_T("CallNumber"), callLog.szCallNumber); m_AdoRS.GetCollect(_T("CallType") , callLog.szCallType); m_AdoRS.GetCollect(_T("CallSC") , callLog.lCallSC); m_AdoRS.GetCollect(_T("CallBZ") , callLog.szCallBZ); m_AdoRS.GetCollect(_T("KHAddressType") , callLog.lKHAddressType); m_AdoRS.GetCollect(_T("KHUserID") , callLog.lKHUserID); m_AdoRS.GetCollect(_T("KHName") , callLog.szKHName); m_AdoRS.GetCollect(_T("KHLTD") , callLog.szKHLTD); m_AdoRS.GetCollect(_T("CreateTime") , callLog.tCreateTime); m_AdoRS.GetCollect(_T("RecordSize") , callLog.lRecordSize); m_AdoRS.GetCollect(_T("RecordUpSize") , callLog.lRecordUpSize); CallLog.Add(callLog); m_AdoRS.MoveNext(); } #if _MSC_VER<1300 getPro.lCallTypeCount = CallType.GetSize(); getPro.lCallLogCount = CallLog.GetSize(); #else getPro.lCallTypeCount = CallType.GetCount(); getPro.lCallLogCount = CallLog.GetCount(); #endif long lDataLen = sizeof(ANS_UBox_GetPro)+sizeof(ANS_UBox_CallType)*getPro.lCallTypeCount+sizeof(ANS_UBox_CallLog)*getPro.lCallLogCount; BYTE * pData = new BYTE[lDataLen]; memset(pData , 0 , lDataLen ); ANS_UBox_GetPro * pRetGetPro = (ANS_UBox_GetPro*)pData; ANS_UBox_CallType * pRetCallType = (ANS_UBox_CallType*)(pData+sizeof(ANS_UBox_GetPro)); ANS_UBox_CallLog * pRetCallLog = (ANS_UBox_CallLog*)(pData+sizeof(ANS_UBox_GetPro)+sizeof(ANS_UBox_CallType)*getPro.lCallTypeCount); *pRetGetPro = getPro; for ( long i=0 ; ireq = *pUpload; CString str; CString strCallTime =_T("NULL"); COleDateTime t(pUpload->callLog.tCallTime); if ( t.GetStatus() == COleDateTime::valid ) { strCallTime.Format(_T("'%04d%02d%02d %02d:%02d:%02d'") , t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute(),t.GetSecond()); } if ( pUpload->callLog.lUBoxLogID<=0 ) //没有ID,需要新增 { str.Format(_T("insert into UBoxLog(CorpID,UserID,UserName,CallStatus,CallWay,CallTime,CallLocal,CallNumber,CallType,CallSC,CallBZ,KHAddressType,KHUserID,KHName,KHLTD) values(%d,%d,'%s',%d,%d,%s,'%s','%s','%s',%d,'%s',%d,%d,'%s','%s')") , pUpload->callLog.lCorpID, pUpload->callLog.lUserID, this->m_szLoginName, pUpload->callLog.lCallStatus, pUpload->callLog.lCallWay, strCallTime, SqlStr(pUpload->callLog.szCallLocal), SqlStr(pUpload->callLog.szCallNumber), SqlStr(pUpload->callLog.szCallType), pUpload->callLog.lCallSC, SqlStr(pUpload->callLog.szCallBZ), pUpload->callLog.lKHAddressType, pUpload->callLog.lKHUserID, SqlStr(pUpload->callLog.szKHName), SqlStr(pUpload->callLog.szKHLTD) ); if ( m_AdoRS.Open(str) ) { pRetUpload->lUploadStatus = 1; //取ID str = _T("SELECT SCOPE_IDENTITY()") ; if ( m_AdoRS.Open( str ) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect((long)0 , pRetUpload->req.callLog.lUBoxLogID ); } } } else { str.Format(_T("Update UBoxLog Set CallStatus=%d,CallLocal='%s',CallType='%s',CallSC=%d,CallBZ='%s',KHAddressType=%d,KHUserID=%d,KHName='%s',KHLTD='%s' where UBoxLogID=%d"), pUpload->callLog.lCallStatus, SqlStr(pUpload->callLog.szCallLocal), SqlStr(pUpload->callLog.szCallType), pUpload->callLog.lCallSC, SqlStr(pUpload->callLog.szCallBZ), pUpload->callLog.lKHAddressType, pUpload->callLog.lKHUserID, SqlStr(pUpload->callLog.szKHName), SqlStr(pUpload->callLog.szKHLTD), pUpload->callLog.lUBoxLogID); if ( m_AdoRS.Open(str)) { pRetUpload->lUploadStatus = 1; } } SendFrame( SMSFUNC_UBOX_UPLOAD , (BYTE*)pRetUpload , sizeof(ANS_UBox_UpLoad) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_GetLog(REQ_UBox_GetLog * pGetLog) { try { CString str; CString strTemp; str.Format( _T("CorpID=%d and CallTime>='%04d%02d%02d' and CallTime<='%04d%02d%02d 23:59:59'") , pGetLog->lCorpID,pGetLog->tBegin.wYear,pGetLog->tBegin.wMonth,pGetLog->tBegin.wDay,pGetLog->tEnd.wYear,pGetLog->tEnd.wMonth,pGetLog->tEnd.wDay); if ( pGetLog->lUserID>0 ) { strTemp.Format( _T(" and UserID=%d") , pGetLog->lUserID); str = str + strTemp; } if ( pGetLog->lWay>0 ) { strTemp.Format( _T(" and CallWay=%d") , pGetLog->lWay-1); str = str + strTemp; } if ( pGetLog->lStatus>0 ) { strTemp.Format( _T(" and CallStatus=%d") , pGetLog->lStatus-1); str = str + strTemp; } if ( _tcslen(pGetLog->szType)>0 ) { strTemp.Format( _T(" and CallType='%s'") , ::SqlStr(pGetLog->szType)); str = str + strTemp; } if ( _tcslen(pGetLog->szKey)>0 ) { CString strKey=SqlStr(pGetLog->szKey); strTemp.Format( _T(" and (KHName like '%%%s%%' or KHLTD like '%%%s%%' or CallBZ like '%%%s%%')") , strKey,strKey,strKey); str = str + strTemp; } m_bCheckTimeOut = false; //不允许检测超时时间 long lAllCount=0; strTemp.Format(_T("select * from UBoxLog where %s order by CallTime desc") , str ); m_AdoRS.Open( strTemp ); long lCount = m_AdoRS.GetRecordCount(); if ( lCount < 0 ) lCount = 0; if ( lCount>0 ) m_AdoRS.MoveFirst(); //移动第一条记录 //计算页数 long lPageMax = lCount/UBOXLOG_RECORD; if ( lPageMax*UBOXLOG_RECORD != lCount ) lPageMax ++; for ( int j=0 ; j< lPageMax ; j++ ) { //lFrameCount,计算当前页的记录数 long lFrameCount = UBOXLOG_RECORD; if ( lFrameCount*(j+1) > lCount ) lFrameCount = lCount - lFrameCount*j; long lSize = sizeof(ANS_UBox_GetLog) + sizeof(ANS_UBox_CallLog)*lFrameCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_UBox_GetLog * pListRet = (ANS_UBox_GetLog *)pData; ANS_UBox_CallLog * pListDataRet = (ANS_UBox_CallLog *)(pData+sizeof(ANS_UBox_GetLog)); pListRet->lCorpID = pGetLog->lCorpID; pListRet->lUserID = pGetLog->lUserID; pListRet->lTagUserID = pGetLog->lTagUserID; pListRet->lCount = lFrameCount; pListRet->lPageAll = lPageMax; pListRet->lPageCount = j+1; COleDateTime t; long lTempCount = 0; while( !m_AdoRS.IsEOF() && lTempCountlUBoxLogID); m_AdoRS.GetCollect(_T("CorpID") , pListDataRet->lCorpID); m_AdoRS.GetCollect(_T("UserID") , pListDataRet->lUserID); m_AdoRS.GetCollect(_T("UserName") , pListDataRet->szUserName); m_AdoRS.GetCollect(_T("CallStatus"), pListDataRet->lCallStatus); m_AdoRS.GetCollect(_T("CallWay") , pListDataRet->lCallWay); m_AdoRS.GetCollect(_T("CallTime") , pListDataRet->tCallTime); m_AdoRS.GetCollect(_T("CallLocal") , pListDataRet->szCallLocal); m_AdoRS.GetCollect(_T("CallNumber"), pListDataRet->szCallNumber); m_AdoRS.GetCollect(_T("CallType") , pListDataRet->szCallType); m_AdoRS.GetCollect(_T("CallSC") , pListDataRet->lCallSC); m_AdoRS.GetCollect(_T("CallBZ") , pListDataRet->szCallBZ); m_AdoRS.GetCollect(_T("KHAddressType") , pListDataRet->lKHAddressType); m_AdoRS.GetCollect(_T("KHUserID") , pListDataRet->lKHUserID); m_AdoRS.GetCollect(_T("KHName") , pListDataRet->szKHName); m_AdoRS.GetCollect(_T("KHLTD") , pListDataRet->szKHLTD); m_AdoRS.GetCollect(_T("CreateTime") , pListDataRet->tCreateTime); m_AdoRS.GetCollect(_T("RecordSize") , pListDataRet->lRecordSize); m_AdoRS.GetCollect(_T("RecordUpSize") , pListDataRet->lRecordUpSize); m_AdoRS.MoveNext(); pListDataRet ++; lTempCount ++; lAllCount ++; } SendFrame( SMSFUNC_UBOX_GETLOG , (BYTE*)pData , lSize ); //发送返回 } if ( lAllCount <= 0 ) //什么也找不到的返回 { ANS_UBox_GetLog * pListRet = new ANS_UBox_GetLog; //权限不够,什么也不返回 memset(pListRet , 0 ,sizeof(ANS_UBox_GetLog)); pListRet->lCorpID = pGetLog->lCorpID; pListRet->lUserID = pGetLog->lUserID; pListRet->lTagUserID = pGetLog->lTagUserID; pListRet->lCount = 0; pListRet->lPageAll = 0; pListRet->lPageCount = 0; SendFrame( SMSFUNC_UBOX_GETLOG , (BYTE*)pListRet , sizeof(ANS_UBox_GetLog) ); //发送返回 m_bCheckTimeOut = true; //允许检测超时时间 return 1; } m_bCheckTimeOut = true; //允许检测超时时间 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_GetType(long lFuncID,REQ_UBox_GetType * pGetType) { try { CString str; str.Format( _T("select * from UBoxCallType where CorpID=%d order by TypeIndex") , pGetType->lCorpID ); m_AdoRS.Open(str); long lCount = m_AdoRS.GetRecordCount(); if (lCount<0 ) lCount =0 ; if ( lCount>0 ) m_AdoRS.MoveFirst(); long lSize = sizeof(ANS_UBox_GetType) + sizeof(ANS_UBox_GetTypeData)*lCount; BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize); ANS_UBox_GetType * pRet = (ANS_UBox_GetType *)pData; ANS_UBox_GetTypeData * pRetData = (ANS_UBox_GetTypeData *)(pData+sizeof(ANS_UBox_GetType)); pRet->lCorpID = pGetType->lCorpID; pRet->lUserID = pGetType->lUserID; pRet->lCount = lCount; long lIndex=0; while( !m_AdoRS.IsEOF() && lIndexlUBoxCallTypeID); m_AdoRS.GetCollect(_T("TypeName") , pRetData->szType); m_AdoRS.GetCollect(_T("TypeIndex") , pRetData->lTypeIndex); m_AdoRS.MoveNext(); pRetData ++; lIndex++; } SendFrame( lFuncID , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_Upload2(REQ_UBox_UpLoad2 * pUpload) { try { ANS_UBox_UpLoad2 * pRetUpload = new ANS_UBox_UpLoad2; memset(pRetUpload , 0 , sizeof(ANS_UBox_UpLoad2)); pRetUpload->req = *pUpload; CString str; str.Format(_T("Update UBoxLog Set CallType='%s',CallBZ='%s' where UBoxLogID=%d"), SqlStr(pUpload->callLog.szCallType), SqlStr(pUpload->callLog.szCallBZ), pUpload->callLog.lUBoxLogID); if ( m_AdoRS.Open(str)) { pRetUpload->lUploadStatus = 1; } SendFrame( SMSFUNC_UBOX_UPLOAD2 , (BYTE*)pRetUpload , sizeof(ANS_UBox_UpLoad2) ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_LogDel(REQ_UBox_LogDel * pDel) { try { /* if ( !(m_ulPurview & PURVIEW_MANAGER_DEL) ) //没有权限修改资料 { ANS_UBox_LogDel * pDelRet = new ANS_UBox_LogDel; //权限不够,什么也不返回 pDelRet->lCount = 0; SendFrame( SMSFUNC_UBOX_LOGDEL , (BYTE*)pDelRet , sizeof(ANS_UBox_LogDel) ); //发送返回 return 1; } */ ANS_UBox_LogDelData * pDelData = (ANS_UBox_LogDelData *)((BYTE*)pDel+sizeof(REQ_UBox_LogDel)); long lSize = sizeof(ANS_UBox_LogDel) + sizeof(ANS_UBox_LogDelData)*pDel->lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_UBox_LogDel * pDelRet = (ANS_UBox_LogDel * )pData; ANS_UBox_LogDelData * pDelDataRet= (ANS_UBox_LogDelData*)(pData+sizeof(ANS_UBox_LogDel)); pDelRet->lCount = pDel->lCount; CString strSelect; for ( int i=0 ; i< pDel->lCount ; i++ ) { strSelect.Format( _T("delete from UBoxLog where UBoxLogID=%d") , pDelData->lUBoxLogID ); if (m_AdoRS.Open( strSelect )) pDelDataRet->lUBoxLogID = pDelData->lUBoxLogID; else pDelDataRet->lUBoxLogID = 0; pDelDataRet->lItem = pDelData->lItem; pDelData ++; pDelDataRet++; } SendFrame( SMSFUNC_UBOX_LOGDEL , pData , lSize ); //发送返回 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_Type_Upload(REQ_UBox_Type_Upload * pUpload) { try { CString str; str.Format(_T("delete from UBoxCallType where CorpID=%d") , pUpload->lCorpID ); m_AdoRS.Open(str); long lOKCount=0; ANS_UBox_GetTypeData * pGetData = (ANS_UBox_GetTypeData *) (((BYTE*)pUpload) + sizeof(REQ_UBox_Type_Upload)); for ( int i=0 ; ilCount;i++ ) { str.Format( _T("insert into UBoxCallType (CorpID,TypeINdex,TypeName,CreateUser,CreateTime) Values (%d,%d,'%s','%s',GetDate())"),pUpload->lCorpID,pGetData->lTypeIndex,SqlStr(pGetData->szType),this->m_szLoginName); if ( m_AdoRS.Open(str) ) lOKCount++; pGetData++; } ANS_UBox_Type_Upload * pRetUpload = new ANS_UBox_Type_Upload; memset(pRetUpload , 0 , sizeof(ANS_UBox_Type_Upload) ); pRetUpload->lCorpID = pUpload->lCorpID; pRetUpload->lUserID = pUpload->lUserID; pRetUpload->lCount = lOKCount; SendFrame(SMSFUNC_UBOX_TYPE_UPLOAD,(BYTE*)pRetUpload,sizeof(ANS_UBox_Type_Upload)); } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_GetLog2(REQ_UBox_GetLog2 * pGetLog) { try { CString str; str.Format(_T("select top %d * from UBoxLog where UserID=%d and KHAddressType=%d and KHUserID=%d order by CallTIme desc"),MAX_RET_RECORD,pGetLog->lUserID,pGetLog->lAddressType,pGetLog->lKH_UserID); m_bCheckTimeOut = false; //不允许检测超时时间 long lAllCount=0; m_AdoRS.Open( str ); long lCount = m_AdoRS.GetRecordCount(); if ( lCount < 0 ) lCount = 0; if ( lCount>0 ) m_AdoRS.MoveFirst(); //移动第一条记录 long lSize = sizeof(ANS_UBox_GetLog2) + sizeof(ANS_UBox_CallLog)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); ANS_UBox_GetLog2 * pListRet = (ANS_UBox_GetLog2 *)pData; ANS_UBox_CallLog * pListDataRet = (ANS_UBox_CallLog *)(pData+sizeof(ANS_UBox_GetLog2)); pListRet->req = *pGetLog; pListRet->lCount = lCount; COleDateTime t; long lTempCount = 0; while( !m_AdoRS.IsEOF() && lTempCountlUBoxLogID); m_AdoRS.GetCollect(_T("CorpID") , pListDataRet->lCorpID); m_AdoRS.GetCollect(_T("UserID") , pListDataRet->lUserID); m_AdoRS.GetCollect(_T("UserName") , pListDataRet->szUserName); m_AdoRS.GetCollect(_T("CallStatus"), pListDataRet->lCallStatus); m_AdoRS.GetCollect(_T("CallWay") , pListDataRet->lCallWay); m_AdoRS.GetCollect(_T("CallTime") , pListDataRet->tCallTime); m_AdoRS.GetCollect(_T("CallLocal") , pListDataRet->szCallLocal); m_AdoRS.GetCollect(_T("CallNumber"), pListDataRet->szCallNumber); m_AdoRS.GetCollect(_T("CallType") , pListDataRet->szCallType); m_AdoRS.GetCollect(_T("CallSC") , pListDataRet->lCallSC); m_AdoRS.GetCollect(_T("CallBZ") , pListDataRet->szCallBZ); m_AdoRS.GetCollect(_T("KHAddressType") , pListDataRet->lKHAddressType); m_AdoRS.GetCollect(_T("KHUserID") , pListDataRet->lKHUserID); m_AdoRS.GetCollect(_T("KHName") , pListDataRet->szKHName); m_AdoRS.GetCollect(_T("KHLTD") , pListDataRet->szKHLTD); m_AdoRS.GetCollect(_T("CreateTime") , pListDataRet->tCreateTime); m_AdoRS.GetCollect(_T("RecordSize") , pListDataRet->lRecordSize); m_AdoRS.GetCollect(_T("RecordUpSize") , pListDataRet->lRecordUpSize); m_AdoRS.MoveNext(); pListDataRet ++; lTempCount ++; } SendFrame( SMSFUNC_UBOX_GETLOG2 , (BYTE*)pData , lSize ); //发送返回 m_bCheckTimeOut = true; //允许检测超时时间 return 1; } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_Record_Up(REQ_UBox_Record_Up * pUp) { try { BYTE * pFileData = ((BYTE*)pUp)+sizeof(REQ_UBox_Record_Up); ANS_UBox_Record_Up * pRetUp = new ANS_UBox_Record_Up; memset(pRetUp , 0 , sizeof(ANS_UBox_Record_Up)); pRetUp->lCorpID = pUp->lCorpID; pRetUp->lUserID = pUp->lUserID; pRetUp->lUBoxLogID = pUp->lUBoxLogID; pRetUp->lAllLen = pUp->lAllLen; pRetUp->lUpLen = pUp->lUpLen; pRetUp->lDataLen = pUp->lDataLen; pRetUp->bOK = false; CString str; str.Format(_T("select * from UBoxLog where UBoxLogID=%d"), pUp->lUBoxLogID); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { long lRecordSize=0; long lRecordUpSize=0; m_AdoRS.GetCollect(_T("RecordSize") , lRecordSize); m_AdoRS.GetCollect(_T("RecordUpSize") , lRecordUpSize); TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("UBoxRecord\\") ); //生成查询串 CString strFile; strFile.Format(_T("%s%d.mp3") ,szPath, pUp->lUBoxLogID ); CFile file; BOOL bFile; if ( lRecordSize==0 && lRecordUpSize==0 ) //未有数据,新上传 { bFile = file.Open(strFile , CFile::modeReadWrite|CFile::modeCreate); } else { bFile = file.Open(strFile , CFile::modeReadWrite); if ( bFile ) { if ( bFile && lRecordUpSize==lRecordSize && file.GetLength()==lRecordUpSize ) //已正常的文件,不用再处理 { bFile = false; } if ( bFile && file.GetLength() != lRecordUpSize ) //上传有误,直接删除文件算了 { file.Close(); bFile = false; ::DeleteFile(strFile); str.Format(_T("update UBoxLog set RecordSize=0,RecordUpSize=0 where UBoxLogID=%d") ,pUp->lUBoxLogID); m_AdoRS2.Open(str); } } } if ( bFile ) { file.SeekToEnd(); file.Write(pFileData , pUp->lDataLen ); file.Close(); pRetUp->lUpLen = pUp->lUpLen + pUp->lDataLen; //实际已上传的数据 str.Format(_T("update UBoxLog set RecordSize=%d,RecordUpSize=%d where UBoxLogID=%d") , pRetUp->lAllLen,pRetUp->lUpLen,pUp->lUBoxLogID); if ( m_AdoRS2.Open(str) ) pRetUp->bOK = true; } } SendFrame( SMSFUNC_UBOX_RECORD_UP , (BYTE*)pRetUp , sizeof(REQ_UBox_Record_Up) ); //发送返回 } catch (...) { return 0; } return 0; } long CProcessSocket::Process_UBox_Record_Down(REQ_UBox_Record_Down * pDown) { try { CString str; BOOL bGetOK=false; ANS_UBox_Record_Down downRet={0}; str.Format( _T("select * from UBoxLog where UBoxLogID=%d") , pDown->lUBoxLogID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { long lUpSize=0; m_AdoRS.GetCollect(_T("CorpID") , downRet.lCorpID); m_AdoRS.GetCollect(_T("UserID") , downRet.lUserID); m_AdoRS.GetCollect(_T("UBoxLogID") , downRet.lUBoxLogID); m_AdoRS.GetCollect(_T("RecordSize") , downRet.lAllSize); m_AdoRS.GetCollect(_T("RecordUpSize") , lUpSize); m_AdoRS.Close(); downRet.lStatus=0; downRet.lDownSize = 0; downRet.lSize = 0; //声音文件 TCHAR szPath[512]={0}; m_pSMSDlg->GetCurrentPath(szPath); _tcscat( szPath , _T("UBoxRecord\\") ); //生成查询串 CString strFile; strFile.Format(_T("%s%d.mp3") ,szPath, pDown->lUBoxLogID ); CFile file; if ( file.Open( strFile , CFile::modeRead) ) //文件打开正常 { if ( file.GetLength() == downRet.lAllSize ) { while ( true ) { BOOL bEnd=false; downRet.lSize = UBOX_RECORD_ATTACH_UPLEN; if ( downRet.lDownSize + downRet.lSize >= downRet.lAllSize ) { downRet.lSize = downRet.lAllSize-downRet.lDownSize; bEnd = true; } downRet.lDownSize += downRet.lSize; long lSize = sizeof(ANS_UBox_Record_Down) + downRet.lSize; BYTE * pData = new BYTE[lSize]; memset( pData , 0 , lSize ); ANS_UBox_Record_Down * pGetRet = (ANS_UBox_Record_Down *)pData; BYTE * pRetBuf = pData + sizeof(ANS_UBox_Record_Down); *pGetRet = downRet; file.Read(pRetBuf , downRet.lSize ); pGetRet->lStatus = 1; bGetOK = true; SendFrame( SMSFUNC_UBOX_RECORD_DOWN , pData , lSize ); //发送返回 Sleep(300); if ( bEnd ) break; } } } } if ( !bGetOK ) { ANS_UBox_Record_Down * pRet = new ANS_UBox_Record_Down; //权限不够,什么也不返回 memset(pRet , 0 , sizeof(ANS_UBox_Record_Down)); pRet->lStatus = -1; //返回失败 SendFrame( SMSFUNC_UBOX_RECORD_DOWN , (BYTE*)pRet , sizeof(ANS_UBox_Record_Down) ); //发送返回 return 1; } } catch (...) { return 0; } return 0; }