1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985 |
- #include "StdAfx.h"
- #include "ServerPtr.h"
- #include "OnlineUser.h"
- #include <time.h>
- #include "CritSection.h"
- #include "../hp-src/SendPackage.h"
- #include "../ODBCPOOL/UserInfo.h"
- #include "../ODBCPOOL/UserDetail.h"
- #include "../ODBCPOOL/StaffInfo.h"
- #include "../ODBCPOOL/ProductType.h"
- #include "../ODBCPOOL/ProductInfo.h"
- #include "../ODBCPOOL/SceneryInfo.h"
- #include "../ODBCPOOL/PackageType.h"
- #include "../ODBCPOOL/PackageInfo.h"
- #include "../ODBCPOOL/PackageItems.h"
- #include "../ODBCPOOL/CustomerFrom.h"
- #include "../ODBCPOOL/CustomerInfo.h"
- #include "../ODBCPOOL/OrderType.h"
- #include "../ODBCPOOL/OrderInfo.h"
- #include "../ODBCPOOL/OrderScenery.h"
- #include "../ODBCPOOL/OrderPackageItems.h"
- #include "../ODBCPOOL/SysConfig.h"
- #include "../ODBCPOOL/StudioLog.h"
- #include "../ODBCPOOL/StudioInfo.h"
- #include "../ODBCPOOL/DepartmentInfo.h"
- #include "../ODBCPOOL/PackageItemDetail.h"
- #include "../ODBCPOOL/PackageItemView.h"
- time_t g_systm;
- // 服务通信对象;
- CServerPtr* CServerPtr::m_spThis = NULL;
- CServerPtr::CServerPtr(void)
- {
- // 创建监听器对象
- m_pListener = ::Create_HP_TcpServerListener();
- // 创建 Socket 对象
- m_pServer = ::Create_HP_TcpPackServer(m_pListener);
- // 设置 Socket 监听器回调函数
- ::HP_Set_FN_Server_OnPrepareListen(m_pListener, OnPrepareListen);
- ::HP_Set_FN_Server_OnAccept(m_pListener, OnAccept);
- ::HP_Set_FN_Server_OnSend(m_pListener, OnSend);
- ::HP_Set_FN_Server_OnReceive(m_pListener, OnReceive);
- ::HP_Set_FN_Server_OnClose(m_pListener, OnClose);
- ::HP_Set_FN_Server_OnShutdown(m_pListener, OnShutdown);
- // 获取机器时间;
- time(&g_systm); // g_systm = time(NULL);
- }
- CServerPtr::~CServerPtr(void)
- {
- // 销毁 Socket 对象
- ::Destroy_HP_TcpPackServer(m_spThis->m_pServer);
- // 销毁监听器对象
- ::Destroy_HP_TcpServerListener(m_pListener);
- }
- void CServerPtr::Release()
- {
- if (m_spThis)
- delete m_spThis;
- m_spThis = NULL;
- }
- BOOL CServerPtr::Start()
- {
- if (m_spThis == NULL)
- return FALSE;
- ::HP_TcpPackServer_SetMaxPackSize(m_spThis->m_pServer, 0x3FFFFF);
- ::HP_TcpPackServer_SetPackHeaderFlag(m_spThis->m_pServer, 0x3FE);
- if (::HP_Server_Start(m_spThis->m_pServer, _T("0.0.0.0"), Global::g_dwSvrPort))
- {
- //::LogServerStart(ADDRESS, PORT);
- OutputDebugString(_T("服务器启动成功!\n"));
- //SetAppState(ST_STARTED);
- }
- else
- {
- //::LogServerStartFail(::HP_Server_GetLastError(m_spThis->m_pServer), ::HP_Server_GetLastErrorDesc(m_spThis->m_pServer));
- OutputDebugString(_T("服务器启动失败!\n"));
- //SetAppState(ST_STOPPED);
- }
- return TRUE;
- }
- BOOL CServerPtr::Stop()
- {
- if (::HP_Server_Stop(m_spThis->m_pServer))
- {
- OutputDebugString(_T("停止服务器成功!\n"));
- ::LogServerStop();
- //SetAppState(ST_STOPPED);
- }
- else
- {
- ASSERT(FALSE);
- }
- return TRUE;
- }
- BOOL CServerPtr::Disconnect(IN const DWORD& dwConnId)
- {
- if (::HP_Server_Disconnect(m_spThis->m_pServer, dwConnId, TRUE))
- {
- // 移除登录的用户信息;
- COnlineUser::GetInstance()->EraseOnlineUser(dwConnId);
- ::LogDisconnect(dwConnId);
- }
- else
- {
- ::LogDisconnectFail(dwConnId);
- }
- return TRUE;
- }
- En_HP_HandleResult CServerPtr::OnPrepareListen(SOCKET soListen)
- {
- TCHAR szAddress[40];
- int iAddressLen = sizeof(szAddress) / sizeof(TCHAR);
- USHORT usPort;
- ::HP_Server_GetListenAddress(m_spThis->m_pServer, szAddress, &iAddressLen, &usPort);
- ::PostOnPrepareListen(szAddress, usPort);
- return HR_OK;
- }
- En_HP_HandleResult CServerPtr::OnAccept(HP_CONNID dwConnID, SOCKET soClient)
- {
- BOOL bPass = TRUE;
- TCHAR szAddress[40];
- int iAddressLen = sizeof(szAddress) / sizeof(TCHAR);
- USHORT usPort;
- ::HP_Server_GetRemoteAddress(m_spThis->m_pServer, dwConnID, szAddress, &iAddressLen, &usPort);
- if (!m_spThis->m_strAddress.IsEmpty())
- {
- if (m_spThis->m_strAddress.CompareNoCase(szAddress) == 0)
- bPass = FALSE;
- }
- //::PostOnAccept(dwConnID, szAddress, usPort, bPass);
- TRACE(_T("新客户端连接:%d, %s, %d!\n"), dwConnID, szAddress, usPort);
- return bPass ? HR_OK : HR_ERROR;
- }
- En_HP_HandleResult CServerPtr::OnSend(HP_CONNID dwConnID, const BYTE* pData, int iLength)
- {
- TRACE(_T("发送数据给客户端:%d, %s, %d!\n"), dwConnID, pData, iLength);
- //::PostOnSend(dwConnID, pData, iLength);
- return HR_OK;
- }
- En_HP_HandleResult CServerPtr::OnReceive(HP_CONNID dwConnID, const BYTE* pData, int iLength)
- {
- TheProPackage thepackage;
- memcpy(&thepackage, pData, sizeof(TheProPackage));
- EnHandleResult nResult = HR_OK;
- BYTE *pSendData = NULL;
- DWORD dwSendLen = 0;
- switch (thepackage.nCmd)
- {
- // 客户端请求登录;
- case C2CCMD_REQ_LOGIN:
- {
- Req_Login(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求登出;
- case C2CCMD_REQ_LOGOUT:
- {
- Req_LogOut(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求添加部门;
- case C2CCMD_NEW_DEPARTMENT:
- {
- New_Department(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除部门;
- case C2CCMD_DEL_DEPARTMENT:
- {
- Del_Department(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改部门;
- case C2CCMD_MOD_DEPARTMENT:
- {
- // 暂未使用;
- Mod_Department(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询部门;
- case C2CCMD_QRY_DEPARTMENT:
- {
- nResult = Ask_Department(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加员工;
- case C2CCMD_NEW_STAFFINFO:
- {
- New_StaffInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除员工;
- case C2CCMD_DEL_STAFFINFO:
- {
- Del_StaffInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改员工;
- case C2CCMD_MOD_STAFFINFO:
- {
- Mod_StaffInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询员工;
- case C2CCMD_QRY_STAFFINFO:
- {
- nResult = Ask_StaffInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加用户;
- case C2CCMD_NEW_USERINFO:
- {
- New_UerInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除用户;
- case C2CCMD_DEL_USERINFO:
- {
- Del_UerInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改用户;
- case C2CCMD_MOD_USERINFO:
- {
- Mod_UerInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询用户;
- case C2CCMD_QRY_USERINFO:
- {
- nResult = Ask_UerInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加商品类型;
- case C2CCMD_NEW_PRODUCTTYPE:
- {
- New_ProductType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除商品类型;
- case C2CCMD_DEL_PRODUCTTYPE:
- {
- Del_ProductType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改商品类型;
- case C2CCMD_MOD_PRODUCTTYPE:
- {
- Mod_ProductType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询商品类型;
- case C2CCMD_QRY_PRODUCTTYPE:
- {
- nResult = Ask_ProductType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加商品信息;
- case C2CCMD_NEW_PRODUCT:
- {
- New_ProductInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除商品信息;
- case C2CCMD_DEL_PRODUCT:
- {
- Del_ProductInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改商品信息;
- case C2CCMD_MOD_PRODUCT:
- {
- Mod_ProductInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询商品信息;
- case C2CCMD_QRY_PRODUCT:
- {
- nResult = Ask_ProductInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加景点;
- case C2CCMD_NEW_SCENERY:
- {
- New_Scenery(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除景点;
- case C2CCMD_DEL_SCENERY:
- {
- Del_Scenery(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改景点;
- case C2CCMD_MOD_SCENERY:
- {
- Mod_Scenery(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询景点;
- case C2CCMD_QRY_SCENERY:
- {
- nResult = Ask_Scenery(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加套餐类型信息;
- case C2CCMD_NEW_PACKAGETYPE:
- {
- New_PackageType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除套餐类型信息;
- case C2CCMD_DEL_PACKAGETYPE:
- {
- Del_PackageType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改套餐类型信息;
- case C2CCMD_MOD_PACKAGETYPE:
- {
- Mod_PackageType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询套餐类型信息;
- case C2CCMD_QRY_PACKAGETYPE:
- {
- nResult = Ask_PackageType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加套餐信息;
- case C2CCMD_NEW_PACKAGEINFO:
- {
- New_PackageInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除套餐信息;
- case C2CCMD_DEL_PACKAGEINFO:
- {
- Del_PackageInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改套餐信息;
- case C2CCMD_MOD_PACKAGEINFO:
- {
- Mod_PackageInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询套餐信息;
- case C2CCMD_QRY_PACKAGEINFO:
- {
- nResult = Ask_PackageInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加套餐类型信息;
- case C2CCMD_NEW_PACKAGEITEM:
- {
- New_PackageItem(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- case C2CCMD_NEW_PACKAGEITEM2:
- {
- New_PackageItem2(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求添加套餐类型信息;
- case C2CCMD_DEL_PACKAGEITEM:
- {
- Del_PackageItem(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求添加套餐类型信息;
- case C2CCMD_MOD_PACKAGEITEM:
- {
- Mod_PackageItem(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求添加套餐类型信息;
- case C2CCMD_QRY_PACKAGEITEM:
- {
- nResult = Ask_PackageItem(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求查询套系项详情;
- case C2CCMD_QRY_PACKAGEITEM_DETAIL:
- {
- nResult = Ask_PackageItemDetail(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求查询套系项信息;
- case C2CCMD_QRY_PACKAGEITEM_VIEW:
- {
- nResult = Ask_PackageItemView(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加顾客来源信息;
- case C2CCMD_NEW_CUSTOMERFROM:
- {
- New_CustomerFrom(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除顾客来源信息;
- case C2CCMD_DEL_CUSTOMERFROM:
- {
- Del_CustomerFrom(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改顾客来源信息;
- case C2CCMD_MOD_CUSTOMERFROM:
- {
- Mod_CustomerFrom(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询顾客来源信息;
- case C2CCMD_QRY_CUSTOMERFROM:
- {
- nResult = Ask_CustomerFrom(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加顾客信息;
- case C2CCMD_NEW_CUSTOMERINFO:
- {
- New_CustomerInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除顾客信息;
- case C2CCMD_DEL_CUSTOMERINFO:
- {
- Del_CustomerInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改顾客信息;
- case C2CCMD_MOD_CUSTOMERINFO:
- {
- Mod_CustomerInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询顾客信息;
- case C2CCMD_QRY_CUSTOMERINFO:
- {
- nResult = Ask_CustomerInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加订单类型;
- case C2CCMD_NEW_ORDERTYPE:
- {
- New_OrderType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除订单类型;
- case C2CCMD_DEL_ORDERTYPE:
- {
- Del_OrderType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改订单类型;
- case C2CCMD_MOD_ORDERTYPE:
- {
- Mod_OrderType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询订单类型;
- case C2CCMD_QRY_ORDERTYPE:
- {
- nResult = Ask_OrderType(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求开单;
- case C2CCMD_NEW_ORDERINFO:
- {
- New_OrderInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除订单;
- case C2CCMD_DEL_ORDERINFO:
- {
- Del_OrderInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改订单;
- case C2CCMD_MOD_ORDERINFO:
- {
- Mod_OrderInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- case C2CCMD_MOD_ORDERINFO2:
- {
- Mod_OrderInfo2(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询订单;
- case C2CCMD_QRY_ORDERINFO:
- {
- nResult = Ask_OrderInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求添加订单套餐项;
- case C2CCMD_NEW_ORDERPACKAGEITEM:
- {
- New_OrderPackageItem(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- case C2CCMD_NEW_ORDERPACKAGEITEM2:
- {
- New_OrderPackageItem2(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求删除订单套餐项;
- case C2CCMD_DEL_ORDERPACKAGEITEM:
- {
- Del_OrderPackageItem(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改订单套餐项;
- case C2CCMD_MOD_ORDERPACKAGEITEM:
- {
- Mod_OrderPackageItem(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求查询订单套餐项;
- case C2CCMD_QRY_ORDERPACKAGEITEM:
- {
- nResult = Ask_OrderPackageItem(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 客户端请求修改影楼信息;
- case C2CCMD_NEW_STUDIOINFO:
- {
- New_StudioInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改影楼信息;
- case C2CCMD_DEL_STUDIOINFO:
- {
- Del_StudioInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改影楼信息;
- case C2CCMD_MOD_STUDIOINFO:
- {
- Mod_StudioInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 客户端请求修改影楼信息;
- case C2CCMD_QRY_STUDIOINFO:
- {
- nResult = Ask_StudioInfo(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 添加订单景点信息;
- case C2CCMD_NEW_ORDERSCENERY:
- {
- New_OrderScenery(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 删除订单景点信息;
- case C2CCMD_DEL_ORDERSCENERY:
- {
- Del_OrderScenery(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- case C2CCMD_DEL_ORDERSCENERY2:
- {
- Del_OrderScenery2(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 修改订单景点信息;
- case C2CCMD_MOD_ORDERSCENERY:
- {
- Mod_OrderScenery(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 查询订单景点信息;
- case C2CCMD_QRY_ORDERSCENERY:
- {
- nResult = Ask_OrderScenery(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- if (nResult != HR_IGNORE)
- return nResult;
- }
- break;
- // 获取订单序号;
- case C2CCMD_GET_ORDER_SERIALNUMBER:
- {
- Ask_OrderSerialNum(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- // 获取打印序号;
- case C2CCMD_GET_PRINT_SERIALNUMBER:
- {
- Ask_PrintSerialNum(dwConnID, pData, iLength, thepackage, pSendData, dwSendLen);
- }
- break;
- //////////////////////////////////////////////////////////////////////////
- default:
- break;
- }
- BOOL bSendResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- return bSendResult ? HR_OK : HR_ERROR;
- }
- En_HP_HandleResult CServerPtr::OnClose(HP_CONNID dwConnID, En_HP_SocketOperation enOperation, int iErrorCode)
- {
- // 移除登录的用户信息;
- COnlineUser::GetInstance()->EraseOnlineUser(dwConnID);
- iErrorCode == SE_OK ? ::PostOnClose(dwConnID) : ::PostOnError(dwConnID, enOperation, iErrorCode);
- return HR_OK;
- }
- En_HP_HandleResult CServerPtr::OnShutdown()
- {
- ::PostOnShutdown();
- return HR_OK;
- }
- //////////////////////////////////////////////////////////////////////////
- void CServerPtr::Req_Login(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- if (COnlineUser::GetInstance()->IsAccountExist(thepackage.szStudioId, thepackage.szAccount) == -1)
- {// 用户没在线;
- // 查询数据库是否存在用户;
- INT nRet = USER_NULL;
- CUserDetail tagUserDetail;
- nRet = g_pODBCPool->QueryUserDetail(thepackage.szStudioId, thepackage.szAccount, thepackage.szPassword, &tagUserDetail);
- if (nRet == USER_LOGIN)
- {
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagUserDetail.Serialize(ar);
- ar.Close();
- DWORD dwArchive = mf.GetLength();
- dwSendLen = sizeof(TheProPackage) - 2 + dwArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = dwArchive;
- pPackage->dwReserve = USER_LOGIN;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, dwArchive);
- if (pMf)
- delete pMf;
- // 记录在线用户;
- COnlineUser::GetInstance()->InsertOnlineUser(dwConnID, thepackage.szStudioId, thepackage.szAccount);
- }
- else
- {
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = C2CCMD_REQ_LOGIN;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = nRet;
- OutputDebugString(_T("用户密码不对\n"));
- }
- }
- else
- {
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = C2CCMD_REQ_LOGIN;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = USER_HAVE_LOGIN;
- OutputDebugString(_T("用户已登录\n"));
- }
- }
- void CServerPtr::Req_LogOut(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- }
- void CServerPtr::New_Department(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CAddDepartment tagAddDepartment;
- tagAddDepartment.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL;
- strSQL.Format(_T("INSERT INTO [DepartmentInfo](")
- _T("[StudioID], [DepartmentName], [DepartmentNote]) values ('%s', '%s', '%s')"),
- thepackage.szStudioId, tagAddDepartment.m_strDepartmentName, tagAddDepartment.m_strDepartmentNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_Department(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CAddDepartment tagAddDepartment;
- tagAddDepartment.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [DepartmentInfo] WHERE [StudioID] = '%s' and [DepartmentName] = '%s' "), thepackage.szStudioId, tagAddDepartment.m_strDepartmentName);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_Department(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- }
- EnHandleResult CServerPtr::Ask_Department(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagDpmList;
- INT nRet = g_pODBCPool->QueryDepartmentInfo(thepackage.szStudioId, &tagDpmList);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagDpmList.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagDpmList.GetHeadPosition();
- while (pos)
- {
- CDepartmentInfoObj *pdpmObj = (CDepartmentInfoObj*)tagDpmList.GetNext(pos);
- if (pdpmObj)
- delete pdpmObj;
- }
- tagDpmList.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nRet;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nRet;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 员工;
- void CServerPtr::New_StaffInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CStaffInfoObj tagStaffInfo;
- tagStaffInfo.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [StaffInfo](")
- _T("[StudioID],")
- _T("[StaffSN],")
- _T("[StaffName],")
- _T("[StaffGender],")
- _T("[StaffAddress],")
- _T("[StaffOffice],")
- _T("[StaffBirthday],")
- _T("[StaffPhone],")
- _T("[StaffNote]) ")
- _T("VALUES ('%s','%s', '%s', %d, '%s','%s','%s','%s','%s')"),
- thepackage.szStudioId,
- tagStaffInfo.m_StaffSN,
- tagStaffInfo.m_StaffName,
- tagStaffInfo.m_StaffGender,
- tagStaffInfo.m_StaffAddress,
- tagStaffInfo.m_StaffOffice,
- tagStaffInfo.m_StaffBirthday,
- tagStaffInfo.m_StaffPhone,
- tagStaffInfo.m_StaffNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_StaffInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CString strSQL = _T("");
- strSQL.Format(_T("DELETE FROM [StaffInfo] WHERE [StudioID] = '%s' and [AutoID] = %d"), thepackage.szStudioId, thepackage.dwReserve);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_StaffInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CStaffInfoObj tagStaffObj;
- tagStaffObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [StaffInfo] SET ")
- _T("[StaffName] = '%s',")
- _T("[StaffGender] = %d, ")
- _T("[StaffAddress] = '%s',")
- _T("[StaffOffice] = '%s',")
- _T("[StaffBirthday] = '%s',")
- _T("[StaffPhone] = '%s',")
- _T("[StaffStatus] = %d,")
- _T("[StaffNote] = '%s' ")
- _T("WHERE [StudioID] = '%s' AND [AutoID] = %d"),
- tagStaffObj.m_StaffName,
- tagStaffObj.m_StaffGender,
- tagStaffObj.m_StaffAddress,
- tagStaffObj.m_StaffOffice,
- tagStaffObj.m_StaffBirthday,
- tagStaffObj.m_StaffPhone,
- tagStaffObj.m_StaffStatus,
- tagStaffObj.m_StaffNote,
- thepackage.szStudioId, tagStaffObj.m_AutoID);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_StaffInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagStaffArray;
- INT nCount = g_pODBCPool->QueryStaffInfo(thepackage.szStudioId, &tagStaffArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagStaffArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagStaffArray.GetHeadPosition();
- while (pos)
- {
- CStaffInfoObj *pStaffObj = (CStaffInfoObj*)tagStaffArray.GetNext(pos);
- if (pStaffObj)
- delete pStaffObj;
- }
- tagStaffArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 用户;
- void CServerPtr::New_UerInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CUserInfoObj tagUserInfoObj;
- tagUserInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [UserInfo] (")
- _T("[StudioID],[StaffSN],[UserAccount],[UserPassword],[UserNickName],[UserLevel],[UserRights],[UserEnable])")
- _T(" VALUES ('%s','%s','%s','%s','%s',%d,'%s',%d)"),
- thepackage.szStudioId,
- tagUserInfoObj.m_StaffSN,
- tagUserInfoObj.m_UserAccount,
- tagUserInfoObj.m_UserPassword,
- tagUserInfoObj.m_UserNickName,
- tagUserInfoObj.m_UserLevel,
- tagUserInfoObj.m_UserRights, tagUserInfoObj.m_UserEnable);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_UerInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR szUserAccount[17] = { 0 }; // 注:长度16是数据库中设定的长度;
- memcpy(szUserAccount, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [UserInfo] WHERE [StudioID] = '%s' and [UserAccount] = '%s' "), thepackage.szStudioId, szUserAccount);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_UerInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CUserInfoObj tagUserInfoObj;
- tagUserInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [UserInfo] SET ")
- _T("[StaffSN] = '%s',")
- _T("[UserPassword] = '%s',")
- _T("[UserNickName] = '%s',")
- _T("[UserLevel] = %d,")
- _T("[UserRights] = '%s',")
- _T("[UserEnable] = %d ")
- _T("WHERE [StudioID] = '%s' AND [UserAccount] = '%s'"),
- tagUserInfoObj.m_StaffSN,
- tagUserInfoObj.m_UserPassword,
- tagUserInfoObj.m_UserNickName,
- tagUserInfoObj.m_UserLevel,
- tagUserInfoObj.m_UserRights,
- tagUserInfoObj.m_UserEnable,
- thepackage.szStudioId, tagUserInfoObj.m_UserAccount);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_UerInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagUserInfoArray;
- INT nCount = g_pODBCPool->QueryUserInfo(thepackage.szStudioId, &tagUserInfoArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagUserInfoArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagUserInfoArray.GetHeadPosition();
- while (pos)
- {
- CUserInfoObj *pUserObj = (CUserInfoObj*)tagUserInfoArray.GetNext(pos);
- if (pUserObj)
- delete pUserObj;
- }
- tagUserInfoArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 商品类型;
- void CServerPtr::New_ProductType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CProductTypeObj tagProductTypeObj;
- tagProductTypeObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [ProductType] ([StudioID],[ProductTypeName],[ProductTypeNote]) VALUES ('%s','%s','%s')"),
- thepackage.szStudioId, tagProductTypeObj.m_ProductTypeName, tagProductTypeObj.m_ProductTypeNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_ProductType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR szProductTypeName[17] = { 0 }; // 注:长度16是数据库中设定的长度;
- memcpy(szProductTypeName, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [ProductType] WHERE [StudioID] = '%s' and [ProductTypeName] = '%s' "), thepackage.szStudioId, szProductTypeName);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_ProductType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CProductTypeObj tagProductTypeObj;
- tagProductTypeObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [ProductType] SET [ProductTypeNote] = '%s' WHERE [StudioID] = '%s' AND [ProductTypeName] = '%s'"),
- tagProductTypeObj.m_ProductTypeNote, thepackage.szStudioId, tagProductTypeObj.m_ProductTypeName);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_ProductType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagProductTypeArray;
- INT nCount = g_pODBCPool->QueryProductType(thepackage.szStudioId, &tagProductTypeArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagProductTypeArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagProductTypeArray.GetHeadPosition();
- while (pos)
- {
- CProductTypeObj *pProductType = (CProductTypeObj*)tagProductTypeArray.GetNext(pos);
- if (pProductType)
- delete pProductType;
- }
- tagProductTypeArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 商品信息;
- void CServerPtr::New_ProductInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CProductInfoObj tagProductInfoObj;
- tagProductInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [ProductInfo] (")
- _T("[StudioID],")
- _T("[ProductSN],")
- _T("[ProductName],")
- _T("[ProductCost],")
- _T("[ProductPrice],")
- _T("[ProductTypes],")
- _T("[ProductUnit],")
- _T("[ProductShelves],")
- _T("[ProductNote]) ")
- _T("VALUES ('%s','%s','%s',%lf,%lf,'%s','%s',%d,'%s')"),
- thepackage.szStudioId,
- tagProductInfoObj.m_ProductSN,
- tagProductInfoObj.m_ProductName,
- tagProductInfoObj.m_ProductCost,
- tagProductInfoObj.m_ProductPrice,
- tagProductInfoObj.m_ProductTypes,
- tagProductInfoObj.m_ProductUnit,
- tagProductInfoObj.m_ProductShelves, tagProductInfoObj.m_ProductNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_ProductInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [ProductInfo] WHERE [StudioID] = '%s' and [AutoID] = %d "), thepackage.szStudioId, thepackage.dwReserve);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_ProductInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CProductInfoObj tagProductInfoObj;
- tagProductInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [ProductInfo] SET ")
- _T("[ProductSN] = '%s',")
- _T("[ProductName] = '%s',")
- _T("[ProductCost] = %lf,")
- _T("[ProductPrice] = %lf,")
- _T("[ProductTypes] = '%s',")
- _T("[ProductUnit] = '%s',")
- _T("[ProductShelves] = %d,")
- _T("[ProductNote] = '%s' ")
- _T("WHERE [StudioID] = '%s' AND [AutoID] = %d"),
- tagProductInfoObj.m_ProductSN,
- tagProductInfoObj.m_ProductName,
- tagProductInfoObj.m_ProductCost,
- tagProductInfoObj.m_ProductPrice,
- tagProductInfoObj.m_ProductTypes,
- tagProductInfoObj.m_ProductUnit,
- tagProductInfoObj.m_ProductShelves,
- tagProductInfoObj.m_ProductNote,
- thepackage.szStudioId, tagProductInfoObj.m_AutoID);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_ProductInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagProductInfoArray;
- INT nCount = g_pODBCPool->QueryProductInfo(thepackage.szStudioId, &tagProductInfoArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagProductInfoArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagProductInfoArray.GetHeadPosition();
- while (pos)
- {
- CProductInfoObj *pProductInfo = (CProductInfoObj*)tagProductInfoArray.GetNext(pos);
- if (pProductInfo)
- delete pProductInfo;
- }
- tagProductInfoArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 景点;
- void CServerPtr::New_Scenery(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CSceneryInfoObj tagSceneryInfoObj;
- tagSceneryInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [SceneryInfo](")
- _T("[StudioID],")
- _T("[ScenerySN],")
- _T("[SceneryName],")
- _T("[SceneryCostPrice],")
- _T("[ScenerySalePrice],")
- _T("[SceneryShelves],")
- _T("[SceneryNote])VALUES('%s','%s','%s',%lf,%lf,%d,'%s')"),
- thepackage.szStudioId,
- tagSceneryInfoObj.m_ScenerySN,
- tagSceneryInfoObj.m_SceneryName,
- tagSceneryInfoObj.m_SceneryCostPrice,
- tagSceneryInfoObj.m_ScenerySalePrice,
- tagSceneryInfoObj.m_SceneryShelves,
- tagSceneryInfoObj.m_SceneryNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_Scenery(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [SceneryInfo] WHERE [StudioID] = '%s' and [AutoID] = %d "), thepackage.szStudioId, thepackage.dwReserve);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_Scenery(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CSceneryInfoObj tagSceneryInfoObj;
- tagSceneryInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [SceneryInfo] SET ")
- _T("[ScenerySN] = '%s',")
- _T("[SceneryName] = '%s',")
- _T("[SceneryCostPrice] = %lf,")
- _T("[ScenerySalePrice] = %lf,")
- _T("[SceneryShelves] = %d,")
- _T("[SceneryNote] = '%s' ")
- _T("WHERE [StudioID] = '%s' AND [AutoID] = %d"),
- tagSceneryInfoObj.m_ScenerySN,
- tagSceneryInfoObj.m_SceneryName,
- tagSceneryInfoObj.m_SceneryCostPrice,
- tagSceneryInfoObj.m_ScenerySalePrice,
- tagSceneryInfoObj.m_SceneryShelves,
- tagSceneryInfoObj.m_SceneryNote,
- thepackage.szStudioId, tagSceneryInfoObj.m_AutoID);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_Scenery(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagSceneryInfoArray;
- INT nCount = g_pODBCPool->QuerySceneryInfo(thepackage.szStudioId, &tagSceneryInfoArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagSceneryInfoArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagSceneryInfoArray.GetHeadPosition();
- while (pos)
- {
- CSceneryInfoObj *pSceneryInfo = (CSceneryInfoObj*)tagSceneryInfoArray.GetNext(pos);
- if (pSceneryInfo)
- delete pSceneryInfo;
- }
- tagSceneryInfoArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 套餐类型;
- void CServerPtr::New_PackageType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CPackageTypeObj tagPackageTypeObj;
- tagPackageTypeObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [PackageType]([StudioID],[PackageTypesName],[PackageTypesNote])VALUES('%s','%s','%s')"),
- thepackage.szStudioId, tagPackageTypeObj.m_PackageTypesName, tagPackageTypeObj.m_PackageTypesNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_PackageType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR szPackageTypeName[17] = { 0 }; // 注:长度16是数据库中设定的长度;
- memcpy(szPackageTypeName, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [PackageType] WHERE [StudioID] = '%s' and [PackageTypesName] = '%s' "), thepackage.szStudioId, szPackageTypeName);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_PackageType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CPackageTypeObj tagPackageTypeObj;
- tagPackageTypeObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [PackageType] SET [PackageTypesNote] = '%s' WHERE [StudioID] = '%s' AND [PackageTypesName] = '%s'"),
- tagPackageTypeObj.m_PackageTypesNote, thepackage.szStudioId, tagPackageTypeObj.m_PackageTypesName);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_PackageType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagPackageTypeArray;
- INT nCount = g_pODBCPool->QueryPackageType(thepackage.szStudioId, &tagPackageTypeArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagPackageTypeArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagPackageTypeArray.GetHeadPosition();
- while (pos)
- {
- CPackageTypeObj *pPackageType = (CPackageTypeObj*)tagPackageTypeArray.GetNext(pos);
- if (pPackageType)
- delete pPackageType;
- }
- tagPackageTypeArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 套餐信息;
- void CServerPtr::New_PackageInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CPackageInfoObj tagPackageInfoObj;
- tagPackageInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [PackageInfo]")
- _T("([StudioID]")
- _T(", [PackageSN]")
- _T(", [PackageTypes]")
- _T(", [PackageName]")
- _T(", [PackageCostPrice]")
- _T(", [PackageSalesPrice]")
- _T(", [PackageAlbum]")
- _T(", [PackageFilm]")
- _T(", [PackageShelves]")
- _T(", [PackageNote])")
- _T("VALUES('%s', '%s', '%s', '%s', '%lf', '%lf', '%d', '%d', '%d', '%s')"),
- thepackage.szStudioId, tagPackageInfoObj.m_PackageSN, tagPackageInfoObj.m_PackageTypes, tagPackageInfoObj.m_PackageName,
- tagPackageInfoObj.m_PackageCostPrice, tagPackageInfoObj.m_PackageSalesPrice, tagPackageInfoObj.m_PackageAlbum, tagPackageInfoObj.m_PackageFilm,
- tagPackageInfoObj.m_PackageShelves, tagPackageInfoObj.m_PackageNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_PackageInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [PackageInfo] WHERE [StudioID] = '%s' and [AutoID] = %d "), thepackage.szStudioId, thepackage.dwReserve);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_PackageInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CPackageInfoObj tagPackageInfoObj;
- tagPackageInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [PackageInfo] SET ")
- _T(" [PackageSN] = '%s',")
- _T(" [PackageTypes] = '%s',")
- _T(" [PackageName] = '%s',")
- _T(" [PackageCostPrice] = '%lf',")
- _T(" [PackageSalesPrice] = '%lf',")
- _T(" [PackageAlbum] = '%d',")
- _T(" [PackageFilm] = '%d',")
- _T(" [PackageShelves] = '%d',")
- _T(" [PackageNote] = '%s' WHERE [StudioID] = '%s' AND [AutoID] = %d"),
- tagPackageInfoObj.m_PackageSN,
- tagPackageInfoObj.m_PackageTypes,
- tagPackageInfoObj.m_PackageName,
- tagPackageInfoObj.m_PackageCostPrice,
- tagPackageInfoObj.m_PackageSalesPrice,
- tagPackageInfoObj.m_PackageAlbum,
- tagPackageInfoObj.m_PackageFilm,
- tagPackageInfoObj.m_PackageShelves,
- tagPackageInfoObj.m_PackageNote,
- thepackage.szStudioId, tagPackageInfoObj.m_AutoID);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_PackageInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagPackageInfoArray;
- INT nCount = g_pODBCPool->QueryPackageInfo(thepackage.szStudioId, &tagPackageInfoArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagPackageInfoArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagPackageInfoArray.GetHeadPosition();
- while (pos)
- {
- CPackageInfoObj *pPackageInfo = (CPackageInfoObj*)tagPackageInfoArray.GetNext(pos);
- if (pPackageInfo)
- delete pPackageInfo;
- }
- tagPackageInfoArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 套餐项目信息;
- void CServerPtr::New_PackageItem(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CPackageItemsObj tagPackageItemsObj;
- tagPackageItemsObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [PackageItems](")
- _T("[StudioID],")
- _T("[PackageSN],")
- _T("[PackageItemSN],")
- _T("[PackageItemName],")
- _T("[PackageItemType],")
- _T("[PackageItemCount],")
- _T("[PackageItemNote]) VALUES ('%s','%s','%s','%s','%s',%d,'%s')"),
- thepackage.szStudioId,
- tagPackageItemsObj.m_PackageSN,
- tagPackageItemsObj.m_PackageItemSN,
- tagPackageItemsObj.m_PackageItemName,
- tagPackageItemsObj.m_PackageItemType,
- tagPackageItemsObj.m_PackageItemCount,
- tagPackageItemsObj.m_PackageItemNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::New_PackageItem2(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CObList Objlist;
- Objlist.Serialize(ar);
- ar.Close();
- mf.Detach();
- // 更新所有操作;
- BOOL bRet = TRUE;
- CString strSQL = _T("");
- POSITION pos = Objlist.GetHeadPosition();
- while (pos)
- {
- CPackageItemsObj *pObj = (CPackageItemsObj*)Objlist.GetNext(pos);
- switch (pObj->m_byOpType)
- {
- case OPT_NEW: // 新记录;
- {
- strSQL.Format(_T("INSERT INTO [PackageItems](")
- _T("[StudioID],")
- _T("[PackageSN],")
- _T("[PackageItemSN],")
- _T("[PackageItemName],")
- _T("[PackageItemType],")
- _T("[PackageItemCount],")
- _T("[PackageItemNote]) VALUES ('%s','%s','%s','%s','%s',%d,'%s')"),
- thepackage.szStudioId,
- pObj->m_PackageSN,
- pObj->m_PackageItemSN,
- pObj->m_PackageItemName,
- pObj->m_PackageItemType,
- pObj->m_PackageItemCount,
- pObj->m_PackageItemNote);
- }
- break;
- case OPT_ORG | OPT_DEL: // 原数据删除;
- {
- strSQL.Format(_T("DELETE FROM [PackageItems] WHERE StudioID = '%s' AND PackageSN = '%s' AND PackageItemName = '%s' AND PackageItemType = '%s'"),
- thepackage.szStudioId, pObj->m_PackageSN, pObj->m_PackageItemName, pObj->m_PackageItemType);
- }
- break;
- case OPT_ORG | OPT_UPD: // 原数据更新;
- {
- strSQL.Format(_T("UPDATE [PackageItems] SET ")
- _T("[PackageItemCount] = %d,")
- _T("[PackageItemNote] = '%s' WHERE [StudioID] = '%s' AND PackageSN = '%s' AND PackageItemSN = '%s' AND PackageItemName = '%s' AND PackageItemType = '%s'"),
- pObj->m_PackageItemCount,
- pObj->m_PackageItemNote,
- thepackage.szStudioId,
- pObj->m_PackageSN,
- pObj->m_PackageItemSN,
- pObj->m_PackageItemName,
- pObj->m_PackageItemType);
- }
- break;
- default:
- strSQL.Empty();
- break;
- }
- if (!strSQL.IsEmpty())
- {
- if (!g_pODBCPool->ExecuteSQL(strSQL))
- bRet = FALSE;
- }
- }
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_PackageItem(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [PackageItems] WHERE [StudioID] = '%s' and [AutoID] = %d "), thepackage.szStudioId, thepackage.dwReserve);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_PackageItem(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CPackageItemsObj tagPackageItemsObj;
- tagPackageItemsObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [PackageItems] SET ")
- _T("[PackageSN] = '%s',")
- _T("[PackageItemSN] = '%s',")
- _T("[PackageItemName] = '%s',")
- _T("[PackageItemType] = '%s',")
- _T("[PackageItemCount] = %d,")
- _T("[PackageItemNote] = '%s' WHERE [StudioID] = '%s' AND [AutoID] = %d"),
- tagPackageItemsObj.m_PackageSN,
- tagPackageItemsObj.m_PackageItemSN,
- tagPackageItemsObj.m_PackageItemName,
- tagPackageItemsObj.m_PackageItemType,
- tagPackageItemsObj.m_PackageItemCount,
- tagPackageItemsObj.m_PackageItemNote,
- thepackage.szStudioId,
- tagPackageItemsObj.m_AutoID);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_PackageItem(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagPackageItemsArray;
- INT nCount = g_pODBCPool->QueryPackageItems(thepackage.szStudioId, &tagPackageItemsArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagPackageItemsArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagPackageItemsArray.GetHeadPosition();
- while (pos)
- {
- CPackageItemsObj *pPackageItems = (CPackageItemsObj*)tagPackageItemsArray.GetNext(pos);
- if (pPackageItems)
- delete pPackageItems;
- }
- tagPackageItemsArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- EnHandleResult CServerPtr::Ask_PackageItemDetail(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR szPackageSN[17] = { 0 }; // 注:长度16是数据库中设定的长度;
- if (nlen)
- memcpy(szPackageSN, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CObList Objlist;
- INT nCount = g_pODBCPool->QueryPackageItemsDetail(thepackage.szStudioId, szPackageSN, &Objlist);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- Objlist.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = Objlist.GetHeadPosition();
- while (pos)
- {
- CPackageItemDetailObj *pObj = (CPackageItemDetailObj*)Objlist.GetNext(pos);
- if (pObj)
- delete pObj;
- }
- Objlist.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- EnHandleResult CServerPtr::Ask_PackageItemView(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList Objlist;
- INT nCount = g_pODBCPool->QueryPackageItemsView(thepackage.szStudioId, &Objlist);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- Objlist.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = Objlist.GetHeadPosition();
- while (pos)
- {
- CPackageItemViewObj *pObj = (CPackageItemViewObj*)Objlist.GetNext(pos);
- if (pObj)
- delete pObj;
- }
- Objlist.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 顾客信息;
- void CServerPtr::New_CustomerInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CCustomerInfoObj tagCustomerInfoObj;
- tagCustomerInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [CustomerInfo](")
- _T("[StudioID],")
- _T("[CustomerID],")
- _T("[CustomerName],")
- _T("[CustomerGender],")
- _T("[CustomerPhone],")
- _T("[CustomerQQ],")
- _T("[CustomerWX],")
- _T("[CustomerEMail],")
- _T("[CustomerFrom],")
- _T("[CustomerAddress],")
- _T("[CustomerBirthday],")
- _T("[CustomerNote])")
- _T("VALUES('%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"),
- thepackage.szStudioId,
- tagCustomerInfoObj.m_CustomerID,
- tagCustomerInfoObj.m_CustomerName,
- tagCustomerInfoObj.m_CustomerGender,
- tagCustomerInfoObj.m_CustomerPhone,
- tagCustomerInfoObj.m_CustomerQQ,
- tagCustomerInfoObj.m_CustomerWX,
- tagCustomerInfoObj.m_CustomerEMail,
- tagCustomerInfoObj.m_CustomerFrom,
- tagCustomerInfoObj.m_CustomerAddress,
- tagCustomerInfoObj.m_CustomerBirthday,
- tagCustomerInfoObj.m_CustomerNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_CustomerInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR szCustomerID[33] = { 0 }; // 注:长度16是数据库中设定的长度;
- memcpy(szCustomerID, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [CustomerInfo] WHERE [StudioID] = '%s' AND [CustomerID] = '%s' "), thepackage.szStudioId, szCustomerID);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_CustomerInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CCustomerInfoObj tagCustomerInfoObj;
- tagCustomerInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [CustomerInfo] SET ")
- _T("[CustomerName] = '%s', ")
- _T("[CustomerGender] = %d,")
- _T("[CustomerPhone] = '%s',")
- _T("[CustomerQQ] = '%s',")
- _T("[CustomerWX] = '%s',")
- _T("[CustomerEMail] = '%s',")
- _T("[CustomerFrom] = '%s',")
- _T("[CustomerAddress] = '%s',")
- _T("[CustomerBirthday] = '%s',")
- _T("[CustomerNote] = '%s' ")
- _T("WHERE [StudioID] = '%s' AND [CustomerID] = '%s'"),
- tagCustomerInfoObj.m_CustomerName,
- tagCustomerInfoObj.m_CustomerGender,
- tagCustomerInfoObj.m_CustomerPhone,
- tagCustomerInfoObj.m_CustomerQQ,
- tagCustomerInfoObj.m_CustomerWX,
- tagCustomerInfoObj.m_CustomerEMail,
- tagCustomerInfoObj.m_CustomerFrom,
- tagCustomerInfoObj.m_CustomerAddress,
- tagCustomerInfoObj.m_CustomerNote,
- thepackage.szStudioId,
- tagCustomerInfoObj.m_CustomerID);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_CustomerInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR *pFilter = NULL;
- if (nlen != 0)
- {
- pFilter = new TCHAR[nlen];
- memcpy(pFilter, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- }
- CObList tagCustomerInfoArray;
- INT nCount = g_pODBCPool->QueryCustomerInfo(thepackage.szStudioId, &tagCustomerInfoArray, pFilter);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagCustomerInfoArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagCustomerInfoArray.GetHeadPosition();
- while (pos)
- {
- CCustomerInfoObj *pCustomerInfoObj = (CCustomerInfoObj*)tagCustomerInfoArray.GetNext(pos);
- if (pCustomerInfoObj)
- delete pCustomerInfoObj;
- }
- tagCustomerInfoArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 顾客来源;
- void CServerPtr::New_CustomerFrom(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CCustomerFromObj tagCustomerFromObj;
- tagCustomerFromObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [dbo].[CustomerFrom]([StudioID],[CustomerFrom],[CustomerFromNote])VALUES('%s','%s','%s')"),
- thepackage.szStudioId, tagCustomerFromObj.m_CustomerFrom, tagCustomerFromObj.m_CustomerFromNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_CustomerFrom(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR szCustomerFrom[17] = { 0 }; // 注:长度16是数据库中设定的长度;
- memcpy(szCustomerFrom, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [dbo].[CustomerFrom] WHERE [StudioID] = '%s' and [CustomerFrom] = '%s' "), thepackage.szStudioId, szCustomerFrom);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_CustomerFrom(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CCustomerFromObj tagCustomerFromObj;
- tagCustomerFromObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [dbo].[CustomerFrom] SET [CustomerFromNote] = '%s' WHERE [StudioID] = '%s' AND [CustomerFrom] = '%s'"),
- tagCustomerFromObj.m_CustomerFromNote, thepackage.szStudioId, tagCustomerFromObj.m_CustomerFrom);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_CustomerFrom(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagCustomerFromArray;
- INT nCount = g_pODBCPool->QueryCustomerType(thepackage.szStudioId, &tagCustomerFromArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagCustomerFromArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagCustomerFromArray.GetHeadPosition();
- while (pos)
- {
- CCustomerFromObj *pCustomerFromObj = (CCustomerFromObj*)tagCustomerFromArray.GetNext(pos);
- if (pCustomerFromObj)
- delete pCustomerFromObj;
- }
- tagCustomerFromArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 订单类型;
- void CServerPtr::New_OrderType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderTypeObj tagOrderTypeObj;
- tagOrderTypeObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [OrderType]([StudioID],[OrderTypesName],[OrderTypesNote]) VALUES ('%s','%s','%s')"),
- thepackage.szStudioId, tagOrderTypeObj.m_OrderTypesName, tagOrderTypeObj.m_OrderTypesNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_OrderType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR szOrderTypeName[9] = { 0 }; // 注:长度16是数据库中设定的长度;
- memcpy(szOrderTypeName, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [OrderType] WHERE [StudioID] = '%s' and [OrderTypesName] = '%s' "), thepackage.szStudioId, szOrderTypeName);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_OrderType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderType tagOrderTypeObj;
- tagOrderTypeObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [OrderType] SET [OrderTypesNote] = '%s' WHERE [StudioID] = '%s' AND [OrderTypesName] = '%s')"),
- tagOrderTypeObj.m_OrderTypesNote, thepackage.szStudioId, tagOrderTypeObj.m_OrderTypesName);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_OrderType(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CObList tagOrderTypeArray;
- INT nCount = g_pODBCPool->QueryOrderType(thepackage.szStudioId, &tagOrderTypeArray);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagOrderTypeArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagOrderTypeArray.GetHeadPosition();
- while (pos)
- {
- COrderTypeObj *pOrderTypeObj = (COrderTypeObj*)tagOrderTypeArray.GetNext(pos);
- if (pOrderTypeObj)
- delete pOrderTypeObj;
- }
- tagOrderTypeArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 订单信息;
- void CServerPtr::New_OrderInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderInfoObj tagOrderInfoObj;
- tagOrderInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- INT nMaxId = Ask_OrderSerialNum(thepackage.szStudioId);
- tagOrderInfoObj.m_OrderNum.Format(_T("%s-%03d"), CTime::GetCurrentTime().Format(_T("%Y%m%d")), ++nMaxId);
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [OrderInfo](")
- _T("[StudioID]")
- _T(",[OrderNum]")
- _T(",[CustomerFrom]")
- _T(",[CustomerName]")
- _T(",[CustomerGender]")
- _T(",[CustomerPhone]")
- _T(",[OrderAmountPaid]")
- _T(",[OrderSignPerson]")
- _T(",[OrderTypes]")
- _T(",[OrderSubsist]")
- _T(",[OrderPackageAlbum]")
- _T(",[OrderPackageFilm]")
- _T(",[OrderFinishStatus]")
- _T(",[OrderFinishTime]")
- _T(",[OrderGenerateDate]")
- _T(",[OrderSelectionStatus]")
- _T(",[OrderExraPhoto]")
- _T(",[OrderAdditionalAmount]")
- _T(",[OrderLateStageAmount]")
- _T(",[OrderPackageName]")
- _T(",[OrderPackageSales]")
- _T(",[OrderPackageType]")
- _T(",[OrderSelectionAppointment]")
- _T(",[OrderSelectionFinishDate]")
- _T(",[OrderNote]")
- _T(",[OrderSelectionNote])")
- _T("VALUES ('%s','%s','%s','%s',%d,'%s',%lf,'%s','%s',%lf,%d, %d, %d, '%s','%s',%d,%d,%lf,%lf,'%s',%lf,'%s','%s','%s','%s','%s')"),
- thepackage.szStudioId,
- tagOrderInfoObj.m_OrderNum,
- tagOrderInfoObj.m_CustomerFrom,
- tagOrderInfoObj.m_CustomerName,
- tagOrderInfoObj.m_CustomerGender,
- tagOrderInfoObj.m_CustomerPhone,
- tagOrderInfoObj.m_OrderAmountPaid,
- tagOrderInfoObj.m_OrderSignPerson,
- tagOrderInfoObj.m_OrderTypes,
- tagOrderInfoObj.m_OrderSubsist,
- tagOrderInfoObj.m_OrderPackageAlbum,
- tagOrderInfoObj.m_OrderPackageFilm,
- tagOrderInfoObj.m_OrderFinishStatus,
- tagOrderInfoObj.m_OrderFinishTime,
- tagOrderInfoObj.m_OrderGenerateDate,
- tagOrderInfoObj.m_OrderSelectionStatus,
- tagOrderInfoObj.m_OrderExtraPhoto,
- tagOrderInfoObj.m_OrderAdditionalAmount,
- tagOrderInfoObj.m_OrderLateStageAmount,
- tagOrderInfoObj.m_OrderPackageName,
- tagOrderInfoObj.m_OrderPackageSales,
- tagOrderInfoObj.m_OrderPackageType,
- tagOrderInfoObj.m_OrderSelectionAppointment,
- tagOrderInfoObj.m_OrderSelectionFinishDate,
- tagOrderInfoObj.m_OrderNote,
- tagOrderInfoObj.m_OrderSelectionNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_OrderInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR szOrderNum[25] = { 0 }; // 注:长度16是数据库中设定的长度;
- memcpy(szOrderNum, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [OrderInfo] WHERE [StudioID] = '%s' and [OrderNum] = '%s' "), thepackage.szStudioId, szOrderNum);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_OrderInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderInfoObj tagOrderInfoObj;
- tagOrderInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [OrderInfo]")
- _T("SET [CustomerFrom] = '%s'")
- _T(",[CustomerName] = '%s'")
- _T(",[CustomerGender] = %d")
- _T(",[CustomerPhone] = '%s'")
- _T(",[OrderAmountPaid] = %lf")
- _T(",[OrderSignPerson] = '%s'")
- _T(",[OrderTypes] = '%s'")
- _T(",[OrderSubsist] = %lf")
- _T(",[OrderFinishStatus] = %d")
- _T(",[OrderFinishTime] = '%s'")
- _T(",[OrderGenerateDate] = '%s'")
- _T(",[OrderSelectionStatus] = %d")
- _T(",[OrderExraPhoto] = %d")
- _T(",[OrderAdditionalAmount] = %lf")
- _T(",[OrderLateStageAmount] = %lf")
- _T(",[OrderPackageName] = '%s'")
- _T(",[OrderPackageSales] = %lf")
- _T(",[OrderPackageType] = '%s'")
- _T(",[OrderSelectionAppointment] = '%s'")
- _T(",[OrderSelectionFinishDate] = '%s'")
- _T(",[OrderNote] = '%s'")
- _T(",[OrderSelectionNote] = '%s'")
- _T(",[CustomerRequirements] = '%s'")
- _T("WHERE [StudioID] = '%s' AND [OrderNum] = '%s'"),
- tagOrderInfoObj.m_CustomerFrom,
- tagOrderInfoObj.m_CustomerName,
- tagOrderInfoObj.m_CustomerGender,
- tagOrderInfoObj.m_CustomerPhone,
- tagOrderInfoObj.m_OrderAmountPaid,
- tagOrderInfoObj.m_OrderSignPerson,
- tagOrderInfoObj.m_OrderTypes,
- tagOrderInfoObj.m_OrderSubsist,
- tagOrderInfoObj.m_OrderFinishStatus,
- tagOrderInfoObj.m_OrderFinishTime,
- tagOrderInfoObj.m_OrderGenerateDate,
- tagOrderInfoObj.m_OrderSelectionStatus,
- tagOrderInfoObj.m_OrderExtraPhoto,
- tagOrderInfoObj.m_OrderAdditionalAmount,
- tagOrderInfoObj.m_OrderLateStageAmount,
- tagOrderInfoObj.m_OrderPackageName,
- tagOrderInfoObj.m_OrderPackageSales,
- tagOrderInfoObj.m_OrderPackageType,
- tagOrderInfoObj.m_OrderSelectionAppointment,
- tagOrderInfoObj.m_OrderSelectionFinishDate,
- tagOrderInfoObj.m_OrderNote,
- tagOrderInfoObj.m_OrderSelectionNote,
- tagOrderInfoObj.m_CustomerRequirements,
- thepackage.szStudioId,
- tagOrderInfoObj.m_OrderNum);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_OrderInfo2(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderInfoObj tagOrderInfoObj;
- tagOrderInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [OrderInfo] SET ")
- _T("[OrderSelectionStatus] = %d")
- _T(",[OrderExraPhoto] = %d")
- _T(",[OrderAdditionalAmount] = %lf")
- _T(",[OrderLateStageAmount] = %lf")
- _T(",[OrderSelectionAppointment] = '%s'")
- _T(",[OrderSelectionFinishDate] = '%s'")
- _T(",[OrderSelectionNote] = '%s'")
- _T(",[CustomerRequirements] = '%s'")
- _T("WHERE [StudioID] = '%s' AND [OrderNum] = '%s'"),
- tagOrderInfoObj.m_OrderSelectionStatus,
- tagOrderInfoObj.m_OrderExtraPhoto,
- tagOrderInfoObj.m_OrderAdditionalAmount,
- tagOrderInfoObj.m_OrderLateStageAmount,
- tagOrderInfoObj.m_OrderSelectionAppointment,
- tagOrderInfoObj.m_OrderSelectionFinishDate,
- tagOrderInfoObj.m_OrderSelectionNote,
- tagOrderInfoObj.m_CustomerRequirements,
- thepackage.szStudioId,
- tagOrderInfoObj.m_OrderNum);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_OrderInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR *pFilter = new TCHAR[nlen];
- memcpy(pFilter, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CObList tagOrderInfoArray;
- INT nCount = g_pODBCPool->QueryOrderInfo(thepackage.szStudioId, &tagOrderInfoArray, pFilter);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagOrderInfoArray.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagOrderInfoArray.GetHeadPosition();
- while (pos)
- {
- COrderInfoObj *pOrderInfoObj = (COrderInfoObj*)tagOrderInfoArray.GetNext(pos);
- if (pOrderInfoObj)
- delete pOrderInfoObj;
- }
- tagOrderInfoArray.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- BYTE *pMf = mf.Detach();
- #if 0 // 使用lzmar压缩数据比不压缩要慢更多;
- byte prop[5] = { 0 };
- size_t nPropSize = 5;
- size_t nDesLen = nArchive;
- BYTE *pDesData = new BYTE[nDesLen];
- int nRet = LzmaCompress(pDesData, &nDesLen, pMf, nArchive, prop, &nPropSize, 9, 1 << 24, 3, 0, 2, 32, 2);
- while (SZ_ERROR_OUTPUT_EOF == nRet)
- {//申请内存不足;
- delete[]pDesData;
- nDesLen += nArchive;
- pDesData = new BYTE[nDesLen];
- nRet = LzmaCompress(pDesData, &nDesLen, pMf, nArchive, prop, &nPropSize, 9, (1 << 24), 3, 0, 2, 32, 2);
- }
- if (pMf)
- delete[]pMf;
- if ((nDesLen + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nDesLen;
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nUnCompressLen = nArchive;
- pPackage->nDataLen = nDesLen;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byProp, prop, 5);
- memcpy(pPackage->byBody, pDesData + nDesLen - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pDesData)
- delete pDesData;
- return HR_ERROR;
- }
- }
- if (pDesData)
- delete pDesData;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nDesLen;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nUnCompressLen = nArchive;
- pPackage->nDataLen = nDesLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byProp, prop, 5);
- memcpy(pPackage->byBody, pDesData, nDesLen);
- if (pDesData)
- delete pDesData;
- }
- #else
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- #endif
- return HR_IGNORE;
- }
- // 订单套餐信息;
- void CServerPtr::New_OrderPackageItem(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderPackageItemsObj tagOrderItemsObj;
- tagOrderItemsObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [OrderPackageItems]")
- _T("([StudioID]")
- _T(",[OrderNum]")
- _T(",[PackageItemSN]")
- _T(",[PackageItemName]")
- _T(",[PackageItemType]")
- _T(",[PackageItemCost]")
- _T(",[PackageItemSales]")
- _T(",[PackageItemUnit]")
- _T(",[PackageItemCount]")
- _T(",[ItemRelatedPhotos]")
- _T(",[ItemNote])")
- _T("VALUES ('%s','%s','%s','%s','%s',%lf,%lf,'%s',%d,'%s','%s')"),
- thepackage.szStudioId,
- tagOrderItemsObj.m_OrderNum,
- tagOrderItemsObj.m_PackageItemSN,
- tagOrderItemsObj.m_PackageItemName,
- tagOrderItemsObj.m_PackageItemType,
- tagOrderItemsObj.m_PackageItemCost,
- tagOrderItemsObj.m_PackageItemSales,
- tagOrderItemsObj.m_PackageItemUnit,
- tagOrderItemsObj.m_PackageItemCount,
- tagOrderItemsObj.m_ItemRelatedPhotos,
- tagOrderItemsObj.m_ItemNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::New_OrderPackageItem2(IN HP_CONNID dwConnID, IN const BYTE * pReceiveData, IN INT nReceiveLength, IN TheProPackage & thepackage, OUT BYTE *& pSendData, OUT DWORD & dwSendLen)
- {
- CMemFile mf;
- mf.Attach(const_cast<BYTE*>(pReceiveData) + sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CObList Objlist;
- Objlist.Serialize(ar);
- ar.Close();
- mf.Detach();
- // 更新所有操作;
- BOOL bRet = TRUE;
- BOOL bDeleted = FALSE;
- CString strSQL = _T("");
- POSITION pos = Objlist.GetHeadPosition();
- while (pos)
- {
- COrderPackageItemsObj *pObj = (COrderPackageItemsObj*)Objlist.GetNext(pos);
- if (!bDeleted)
- {
- strSQL.Format(_T("delete from [OrderPackageItems] where [StudioID] = '%s' and [OrderNum] = '%s'"), thepackage.szStudioId, pObj->m_OrderNum );
- g_pODBCPool->ExecuteSQL(strSQL);
- bDeleted = TRUE;
- }
- strSQL.Format(_T("INSERT INTO [OrderPackageItems]")
- _T("([StudioID]")
- _T(",[OrderNum]")
- _T(",[PackageItemSN]")
- _T(",[PackageItemName]")
- _T(",[PackageItemType]")
- _T(",[PackageItemCost]")
- _T(",[PackageItemSales]")
- _T(",[PackageItemUnit]")
- _T(",[PackageItemCount]")
- _T(",[ItemRelatedPhotos]")
- _T(",[ItemNote])")
- _T("VALUES ('%s','%s','%s','%s','%s',%lf,%lf,'%s',%d,'%s','%s')"),
- thepackage.szStudioId,
- pObj->m_OrderNum,
- pObj->m_PackageItemSN,
- pObj->m_PackageItemName,
- pObj->m_PackageItemType,
- pObj->m_PackageItemCost,
- pObj->m_PackageItemSales,
- pObj->m_PackageItemUnit,
- pObj->m_PackageItemCount,
- pObj->m_ItemRelatedPhotos,
- pObj->m_ItemNote);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- }
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_OrderPackageItem(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [OrderPackageItems] WHERE [StudioID] = '%s' and [AutoID] = '%s' "), thepackage.szStudioId, thepackage.dwReserve);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_OrderPackageItem(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderPackageItemsObj tagOrderItemsObj;
- tagOrderItemsObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [OrderPackageItems]")
- _T("SET [PackageItemName] = '%s'")
- _T(",[PackageItemType] = '%s'")
- _T(",[PackageItemCost] = %lf")
- _T(",[PackageItemSales] = %lf")
- _T(",[PackageItemUnit] = '%s'")
- _T(",[PackageItemCount] = %d")
- _T(",[ItemRelatedPhotos] = '%s'")
- _T(",[ItemNote] = '%s'")
- _T("WHERE [StudioID] = '%s' AND [OrderNum] = '%s' AND [AutoID] = %d"),
- tagOrderItemsObj.m_PackageItemName,
- tagOrderItemsObj.m_PackageItemType,
- tagOrderItemsObj.m_PackageItemCost,
- tagOrderItemsObj.m_PackageItemSales,
- tagOrderItemsObj.m_PackageItemUnit,
- tagOrderItemsObj.m_PackageItemCount,
- tagOrderItemsObj.m_ItemRelatedPhotos,
- tagOrderItemsObj.m_ItemNote,
- thepackage.szStudioId,
- tagOrderItemsObj.m_OrderNum,
- tagOrderItemsObj.m_AutoID);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_OrderPackageItem(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR *pFilter = new TCHAR[nlen];
- memcpy(pFilter, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CObList tagObList;
- INT nCount = g_pODBCPool->QueryOrderPackageItems(thepackage.szStudioId, &tagObList, pFilter);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagObList.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagObList.GetHeadPosition();
- while (pos)
- {
- COrderPackageItemsObj *pOrderPackageItemsObj = (COrderPackageItemsObj*)tagObList.GetNext(pos);
- if (pOrderPackageItemsObj)
- delete pOrderPackageItemsObj;
- }
- tagObList.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 影楼信息;
- void CServerPtr::New_StudioInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CStudioInfoObj tagStudioInfoObj;
- tagStudioInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- tagStudioInfoObj.m_StudioQRCode.SetSize(thepackage.nSubDataLen);
- memcpy(tagStudioInfoObj.m_StudioQRCode.GetData(), const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2 + thepackage.nDataLen, thepackage.nSubDataLen);
- BOOL bRet = g_pODBCPool->InsertStudioInfo(&tagStudioInfoObj);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_StudioInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- }
- void CServerPtr::Mod_StudioInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- CStudioInfoObj tagStudioInfoObj;
- tagStudioInfoObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- tagStudioInfoObj.m_StudioQRCode.SetSize(thepackage.nSubDataLen);
- memcpy(tagStudioInfoObj.m_StudioQRCode.GetData(), const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2 + thepackage.nDataLen, thepackage.nSubDataLen);
- BOOL bRet = g_pODBCPool->UpdateStudioInfo(&tagStudioInfoObj);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_StudioInfo(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CStudioInfoObj tagStudioInfoObj;
- INT nCount = g_pODBCPool->QueryStudioInfo(thepackage.szStudioId, &tagStudioInfoObj);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagStudioInfoObj.Serialize(ar);
- ar.Close();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 订单景点信息;
- void CServerPtr::New_OrderScenery(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderSceneryObj tagObj;
- tagObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("INSERT INTO [OrderScenery](")
- _T("[StudioID]")
- _T(", [OrderNum]")
- _T(", [ScenerySN]")
- _T(", [SceneryName]")
- _T(", [SceneryPhotog]")
- _T(", [SceneryMakeupArtist]")
- _T(", [SceneryPhotogAssistant]")
- _T(", [SceneryMakeupArtistAssistant]")
- _T(", [SceneryAppointment]")
- _T(", [SceneryFinishDate]")
- _T(", [SceneryPhotoStatus]")
- _T(", [SceneryNote])")
- _T("VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s')"),
- thepackage.szStudioId,
- tagObj.m_OrderNum,
- tagObj.m_ScenerySN,
- tagObj.m_SceneryName,
- tagObj.m_SceneryPhotog,
- tagObj.m_SceneryMakeupArtist,
- tagObj.m_SceneryPhotogAssistant,
- tagObj.m_SceneryMakeupArtistAssistant,
- tagObj.m_SceneryAppointment,
- tagObj.m_SceneryFinishDate,
- tagObj.m_SceneryPhotoStatus,
- tagObj.m_SceneryNote
- );
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_OrderScenery(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CString strSQL;
- strSQL.Format(_T("DELETE FROM [OrderScenery] WHERE [StudioID] = '%s' and [AutoID] = '%s' "), thepackage.szStudioId, thepackage.dwReserve);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Del_OrderScenery2(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderSceneryObj tagObj;
- tagObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("DELETE FROM [OrderScenery] WHERE [StudioID] = '%s' and [OrderNum] = '%s' and [SceneryName] = '%s'"), thepackage.szStudioId, tagObj.m_OrderNum, tagObj.m_SceneryName);
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- void CServerPtr::Mod_OrderScenery(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- CMemFile mf;
- //mf.Attach(thepackage.szBody, thepackage.nDataLen);//错误方式;
- mf.Attach(const_cast<BYTE*>(pReceiveData)+sizeof(TheProPackage) - 2, thepackage.nDataLen);
- CArchive ar(&mf, CArchive::load);
- COrderSceneryObj tagObj;
- tagObj.Serialize(ar);
- ar.Close();
- mf.Detach();
- CString strSQL = _T("");
- strSQL.Format(_T("UPDATE [OrderScenery] SET ")
- _T("[SceneryName] = '%s'")
- _T(", [SceneryPhotog] = '%s'")
- _T(", [SceneryMakeupArtist] = '%s'")
- _T(", [SceneryPhotogAssistant] = '%s'")
- _T(", [SceneryMakeupArtistAssistant] = '%s'")
- _T(", [SceneryAppointment] = '%s'")
- _T(", [SceneryFinishDate] = '%s'")
- _T(", [SceneryPhotoStatus] = %d")
- _T(", [SceneryNote] = '%s'")
- _T(" WHERE [StudioID] = '%s' and [AutoID] = %d"),
- tagObj.m_SceneryName,
- tagObj.m_SceneryPhotog,
- tagObj.m_SceneryMakeupArtist,
- tagObj.m_SceneryPhotogAssistant,
- tagObj.m_SceneryMakeupArtistAssistant,
- tagObj.m_SceneryAppointment,
- tagObj.m_SceneryFinishDate,
- tagObj.m_SceneryPhotoStatus,
- tagObj.m_SceneryNote,
- thepackage.szStudioId,
- tagObj.m_nAutoID
- );
- BOOL bRet = g_pODBCPool->ExecuteSQL(strSQL);
- // 返回信息;
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = bRet;
- }
- EnHandleResult CServerPtr::Ask_OrderScenery(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- INT nlen = nReceiveLength - sizeof(TheProPackage) + 2;
- TCHAR *pFilter = new TCHAR[nlen];
- memcpy(pFilter, pReceiveData + sizeof(TheProPackage) - 2, nlen);
- CObList tagObList;
- INT nCount = g_pODBCPool->QueryOrderScenery(thepackage.szStudioId, &tagObList, pFilter);
- CMemFile mf;
- CArchive ar(&mf, CArchive::store);
- tagObList.Serialize(ar);
- ar.Close();
- // 删除列表对象;
- POSITION pos = tagObList.GetHeadPosition();
- while (pos)
- {
- COrderSceneryObj *pObj = (COrderSceneryObj*)tagObList.GetNext(pos);
- if (pObj)
- delete pObj;
- }
- tagObList.RemoveAll();
- BOOL bResult = FALSE;
- __int64 nArchive = mf.GetLength();
- if ((nArchive + sizeof(TheProPackage) - 2) > 0x3FFFFF)
- {
- __int64 nSubLen = nArchive;
- BYTE *pMf = mf.Detach();
- while (nSubLen > 0)
- {
- if (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2 > 0)
- dwSendLen = 0x3FFFFF;
- else
- dwSendLen = nSubLen + sizeof(TheProPackage) - 2;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_MULTIPLE;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->nSubDataLen = (nSubLen - 0x3FFFFF + sizeof(TheProPackage) - 2) > 0 ? (0x3FFFFF - sizeof(TheProPackage) + 2) : nSubLen;
- pPackage->dwReserve = nCount;
- memcpy(pPackage->byBody, pMf + nArchive - nSubLen, pPackage->nSubDataLen);
- nSubLen -= (0x3FFFFF - sizeof(TheProPackage) + 2);
- bResult = ::HP_Server_Send(m_spThis->m_pServer, dwConnID, pSendData, dwSendLen);
- if (pSendData)
- delete[]pSendData;
- pSendData = NULL;
- if (!bResult)
- {
- if (pMf)
- delete pMf;
- return HR_ERROR;
- }
- }
- if (pMf)
- delete pMf;
- return HR_OK;
- }
- else
- {// 单包;
- dwSendLen = sizeof(TheProPackage) - 2 + nArchive;
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = nArchive;
- pPackage->dwReserve = nCount;
- BYTE *pMf = mf.Detach();
- memcpy(pPackage->byBody, pMf, nArchive);
- if (pMf)
- delete pMf;
- }
- return HR_IGNORE;
- }
- // 订单序号;
- INT CServerPtr::Ask_OrderSerialNum(IN LPCTSTR lpStudioId)
- {
- static ThreadSection critSection;
- AutoThreadSection aSection(&critSection);
- return g_pODBCPool->QueryMaxOrderId(lpStudioId);
- }
- void CServerPtr::Ask_OrderSerialNum(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = Ask_OrderSerialNum(thepackage.szStudioId);
- }
- // 打印序号;
- INT CServerPtr::Ask_PrintSerialNum(IN LPCTSTR lpStudioId)
- {
- static ThreadSection critSection;
- AutoThreadSection aSection(&critSection);
- return g_pODBCPool->QueryMaxPrintId(lpStudioId);
- }
- void CServerPtr::Ask_PrintSerialNum(IN HP_CONNID dwConnID, IN const BYTE* pReceiveData, IN INT nReceiveLength, IN TheProPackage &thepackage, OUT BYTE*& pSendData, OUT DWORD &dwSendLen)
- {
- dwSendLen = sizeof(TheProPackage);
- pSendData = new BYTE[dwSendLen];
- TheProPackage *pPackage = (TheProPackage*)pSendData;
- pPackage->flag = PACKAGE_ONESELF;
- pPackage->nCmd = thepackage.nCmd;
- pPackage->nDataLen = 0;
- pPackage->dwReserve = Ask_PrintSerialNum(thepackage.szStudioId);
- }
|