AboutSundry.php 113 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881
  1. <?php
  2. defined('ONLY_ONLY_ONLY') or exit('Access Denied');
  3. /*****************杂项实体逻辑相关******************/
  4. /**********************平台配置相关逻辑**************************************/
  5. function bizbase_platConfigEntityHandle($subSystem, $handleMode, $baseUser, $ajaxdata, $GPC){
  6. switch($handleMode){
  7. case "fetchRecuritRule":
  8. $oldConfig = basecfg_getConfig("PLAT_PCWEB","RecuritRule");
  9. return $oldConfig;
  10. break;
  11. case "fetchRecuritRuleByTrader":
  12. $oldConfig = bizbase_fetchBaseConfig("RecuritRule",true);
  13. return $oldConfig;
  14. break;
  15. case "updateRecuritRule":
  16. $cfgData=isset($ajaxdata["cfgData"])?$ajaxdata["cfgData"]:$GPC["cfgData"];
  17. if(empty($cfgData)) throw new GeneralException("","没有传递必要的cfgData参数");
  18. //$oldConfig = basecfg_getConfig("PLAT_PCWEB","RecuritRule");
  19. $CONFIGNAME="freeCount";
  20. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  21. $cfgData[$CONFIGNAME] = intval($cfgData[$CONFIGNAME]);
  22. if($cfgData[$CONFIGNAME]<0) $cfgData[$CONFIGNAME]=0;
  23. $CONFIGNAME="freeCount2";
  24. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  25. $cfgData[$CONFIGNAME] = intval($cfgData[$CONFIGNAME]);
  26. if($cfgData[$CONFIGNAME]<0) $cfgData[$CONFIGNAME]=0;
  27. $CONFIGNAME="pricePer";
  28. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  29. $cfgData[$CONFIGNAME] = round(floatval($cfgData[$CONFIGNAME]),2);
  30. if($cfgData[$CONFIGNAME]<0) $cfgData[$CONFIGNAME]=0;
  31. $CONFIGNAME="feeper_min";//每人招聘费用的最低额 feeper_min 至少1元
  32. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  33. $cfgData[$CONFIGNAME] = round(floatval($cfgData[$CONFIGNAME]),2);
  34. if($cfgData[$CONFIGNAME]<1) $cfgData[$CONFIGNAME]=1;
  35. $CONFIGNAME="enroll_premoney";//会员报名押金额 enroll_premoney
  36. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  37. $cfgData[$CONFIGNAME] = round(floatval($cfgData[$CONFIGNAME]),2);
  38. if($cfgData[$CONFIGNAME]<0) $cfgData[$CONFIGNAME]=0;
  39. $CONFIGNAME="plater_getrate";//默认平台分成比例plater_getrate 每人招聘费用的百分比
  40. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  41. $cfgData[$CONFIGNAME] = intval($cfgData[$CONFIGNAME]);
  42. if($cfgData[$CONFIGNAME]<0) $cfgData[$CONFIGNAME]=0;
  43. if($cfgData[$CONFIGNAME]>90) $cfgData[$CONFIGNAME]=90;
  44. $CONFIGNAME="share_getrate";//默认分佣比例share_getrate 基于平台分成下的百分比
  45. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  46. $cfgData[$CONFIGNAME] = intval($cfgData[$CONFIGNAME]);
  47. if($cfgData[$CONFIGNAME]<0) $cfgData[$CONFIGNAME]=0;
  48. if($cfgData[$CONFIGNAME]>90) $cfgData[$CONFIGNAME]=90;
  49. $CONFIGNAME="tbreak_cutrate";//商家违约会员的扣除比例tbreak_cutrate 基于每人招聘费用的百分比
  50. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  51. $cfgData[$CONFIGNAME] = intval($cfgData[$CONFIGNAME]);
  52. if($cfgData[$CONFIGNAME]<0) $cfgData[$CONFIGNAME]=0;
  53. if($cfgData[$CONFIGNAME]>90) $cfgData[$CONFIGNAME]=90;
  54. $CONFIGNAME="enroll_overate";//溢报倍数enroll_overate //至少是1倍
  55. if(!isset($cfgData[$CONFIGNAME])) throw new GeneralException("","没有传递必要的{$CONFIGNAME}配置属性");
  56. $cfgData[$CONFIGNAME] = round(floatval($cfgData[$CONFIGNAME]),2);
  57. if($cfgData[$CONFIGNAME]<1) $cfgData[$CONFIGNAME]=1;
  58. basecfg_setConfig("PLAT_PCWEB","RecuritRule",$cfgData);
  59. $afterConfig = basecfg_getConfig("PLAT_PCWEB","RecuritRule");
  60. return $afterConfig;
  61. break;
  62. default:
  63. throw new GeneralException("","不支持的handleMode!");
  64. }
  65. }
  66. function bizbase_fetchBaseConfig($configName,$needVerify){
  67. switch($configName){
  68. case "RecuritRule":
  69. $oldConfig = basecfg_getConfig("PLAT_PCWEB","RecuritRule");
  70. if(empty($oldConfig)) throw new GeneralException("","还没有配置平台招聘规则");
  71. if(intval($oldConfig["freeCount"])<0) $oldConfig["freeCount"]=0;
  72. if(intval($oldConfig["freeCount2"])<0) $oldConfig["freeCount2"]=0;
  73. if(round(floatval($oldConfig["pricePer"]), 2)<0) $oldConfig["pricePer"]=0;
  74. //每人招聘费用的最低额 feeper_min
  75. $oldConfig["feeper_min"]=round(floatval($oldConfig["feeper_min"]), 2);
  76. //会员报名押金额 enroll_premoney
  77. $oldConfig["enroll_premoney"]=round(floatval($oldConfig["enroll_premoney"]), 2);
  78. //默认平台分成比例plater_getrate 每人招聘费用的百分比
  79. $oldConfig["plater_getrate"]=intval($oldConfig["plater_getrate"]);
  80. //默认分佣比例share_getrate 基于平台分成下的百分比
  81. $oldConfig["share_getrate"]=intval($oldConfig["share_getrate"]);
  82. //商家违约会员的扣除比例tbreak_cutrate 基于每人招聘费用的百分比
  83. $oldConfig["tbreak_cutrate"]=intval($oldConfig["tbreak_cutrate"]);
  84. //溢报倍数enroll_overate //至少是1倍
  85. $oldConfig["enroll_overate"]=round(floatval($oldConfig["enroll_overate"]), 2);
  86. return $oldConfig;
  87. default:
  88. throw new GeneralException("","不支持的configName!");
  89. }
  90. }
  91. /**********************平台协议信息相关逻辑**************************************/
  92. function bizbase_agreementEntityHandle($fromSubSystem,$handleMode, $ajaxdata, $GPC){
  93. switch($handleMode){
  94. case "fetch":
  95. // $sql = "SELECT * FROM biz_todowork WHERE biz_recruitid = 473";
  96. // $res = pdo_fetch($sql,array());
  97. // var_dump($res);die;
  98. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  99. if (empty($bizId)) throw new GeneralException("", "没有传递必要的bizId参数");
  100. $backdata = pdo_fetch("select * from biz_common_agreement where id=" . intval($bizId));
  101. if(empty($backdata)) throw new GeneralException("", "无此记录,请核查bizId是否正确!");
  102. if (intval($backdata["deleted"]) != 0)
  103. throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  104. //数据转换 //属性映射
  105. $backdata["picurls"]=json_decode($backdata["picurls"],true);
  106. return $backdata;
  107. break;
  108. case "fetchall":
  109. $backdata = pdo_fetchall("select * from biz_common_agreement where `deleted`=0 order by id asc;");
  110. //数据转换 //属性映射
  111. foreach($backdata as &$data){
  112. $data["picurls"]=json_decode($data["picurls"],true);
  113. }
  114. return $backdata;
  115. break;
  116. case "update":
  117. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  118. if (empty($bizId)) throw new GeneralException("", "没有传递必要的bizId参数");
  119. $title = isset($ajaxdata["title"]) ? $ajaxdata["title"] : $GPC["title"];
  120. $content = isset($ajaxdata["content"]) ? $ajaxdata["content"] : $GPC["content"];
  121. $picurls = isset($ajaxdata["picurls"]) ? $ajaxdata["picurls"] : $GPC["picurls"];
  122. $saveData=array();
  123. $saveData["title"]=trim($title);
  124. $saveData["content"]=trim($content);
  125. $saveData["picurls"]=json_encode($picurls);
  126. $oldData = pdo_fetch("select * from biz_common_agreement where id=" . intval($bizId));
  127. if (empty($oldData)) throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  128. $saveData["updatetime"]=time();
  129. $backdata = pdo_update("biz_common_agreement", $saveData,array("id"=>$bizId));
  130. return $backdata;
  131. break;
  132. default:
  133. throw new GeneralException("","不支持的handleMode!");
  134. }
  135. }
  136. /**********************轮播图相关逻辑**************************************/
  137. function bizbase_cyclePicShowEntityHandle($fromSubSystem,$handleMode, $ajaxdata, $GPC){
  138. switch($handleMode){
  139. case "fetch":
  140. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  141. if (empty($bizId)) throw new GeneralException("", "没有传递必要的bizId参数");
  142. $backdata = pdo_fetch("select brv.*
  143. ,bsr.title as bsr_title
  144. ,bma.title as bma_title
  145. from biz_recruit_videopics brv
  146. left join biz_trader_recruit bsr on bsr.id=brv.biz_recruitid
  147. left join biz_market_activity bma on bma.id=brv.biz_recruitid
  148. where brv.id=" . intval($bizId));
  149. if(empty($backdata)) throw new GeneralException("", "无此记录,请核查bizId是否正确!");
  150. if (intval($backdata["deleted"]) != 0)
  151. throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  152. //数据转换 //属性映射
  153. $backdata["slideshowImg"]=$backdata["headpic"]; unset($backdata["headpic"]);
  154. $backdata["ofType"]=intval($backdata["catalog"]);
  155. $backdata["detailshowImg"]=$backdata["detailpic"]; unset($backdata["detailpic"]);
  156. $backdata["detailedIntroduction"]=$backdata["bsr_title"]; unset($backdata["bsr_title"]);
  157. return $backdata;
  158. break;
  159. case "fetchall":
  160. case "fetchallAPP":
  161. $biz_catalog = isset($ajaxdata["biz_catalog"]) ? $ajaxdata["biz_catalog"] : $GPC["biz_catalog"];
  162. $backdata = pdo_fetchall("select brv.*
  163. ,bsr.title as bsr_title
  164. ,bma.title as bma_title
  165. from biz_recruit_videopics brv
  166. left join biz_trader_recruit bsr on bsr.id=brv.biz_recruitid
  167. left join biz_market_activity bma on bma.id=brv.biz_recruitid
  168. where brv.`deleted`=0
  169. order by brv.id asc;",array(
  170. //":biz_catalog"=>intval($biz_catalog),
  171. ));
  172. foreach($backdata as &$item){
  173. if($handleMode=="fetchallAPP"){//APP端
  174. $item["headpic"]=WEBAPI_IMG_HOSTURL."".$item["headpic"];
  175. $item["detailpic"]=WEBAPI_IMG_HOSTURL."".$item["detailpic"];
  176. }else{
  177. //数据转换 //属性映射
  178. $item["slideshowImg"]=$item["headpic"]; unset($item["headpic"]);
  179. $item["ofType"]=intval($item["catalog"]);
  180. $item["detailshowImg"]=$item["detailpic"]; unset($item["detailpic"]);
  181. $item["detailedIntroduction"]=$item["bsr_title"]; unset($item["bsr_title"]);
  182. }
  183. }
  184. return $backdata;
  185. break;
  186. case "upsert":
  187. $bizData = isset($ajaxdata["bizData"]) ? $ajaxdata["bizData"] : $GPC["bizData"];
  188. if (empty($bizData)) throw new GeneralException("", "没有传递必要的bizData参数");
  189. //属性映射 //数据转换
  190. /***字段参数收集并校验**start***/
  191. $saveData=array();
  192. $saveData["biz_catalog"]=intval($bizData["biz_catalog"]);//0-招聘轮播图;1-活动轮播图;
  193. $saveData["headpic"]=trim($bizData["slideshowImg"]);
  194. if(empty($saveData["headpic"])) throw new GeneralException("", "轮播图不能为空!");
  195. $saveData["catalog"]=intval($bizData["ofType"]);//0-独立宣传页;1-关联招聘记录;
  196. switch($saveData["catalog"]){
  197. case 3:
  198. $saveData["detailpic"]=trim($bizData["detailshowImg"]);
  199. if(empty($saveData["detailpic"])) throw new GeneralException("", "宣传页不能为空!");
  200. break;
  201. default:
  202. $saveData["biz_recruitid"]=intval($bizData["biz_recruitid"]);
  203. if($saveData["biz_recruitid"]<=0) throw new GeneralException("", "关联的信息记录ID不能为空!");
  204. break;
  205. }
  206. /***字段参数收集并校验**finish***/
  207. if(intval($bizData["id"])<=0){
  208. $saveData["createtime"]=time();
  209. $insertId = pdo_insert("biz_recruit_videopics",$saveData);
  210. if (intval($insertId)<=0) throw new GeneralException("", "没有返回insertId,插入失败!");
  211. return $insertId;
  212. }else{
  213. $oldData = pdo_fetch("select `id` from biz_recruit_videopics where id=" . intval($bizData["id"]));
  214. if (empty($oldData)) throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  215. $saveData["updatetime"]=time();
  216. $backdata = pdo_update("biz_recruit_videopics", $saveData,array("id"=>$bizData["id"]));
  217. return $backdata;
  218. }
  219. break;
  220. default:
  221. throw new GeneralException("","不支持的handleMode!");
  222. }
  223. }
  224. /**********************次数账户相关逻辑**************************************/
  225. function bizbase_naccountEntityHandle($fromSubSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC){
  226. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  227. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  228. switch($handleMode){
  229. case "buyPrepay":
  230. //---------------------------------------
  231. $buyCount = isset($ajaxdata["buyCount"]) ? $ajaxdata["buyCount"] : $GPC["buyCount"];
  232. if (intval($buyCount)<=0) throw new GeneralException("", "buyCount购买次数不能为空啊");
  233. $recuritRule = bizbase_fetchBaseConfig("RecuritRule",true);
  234. $pricePer = round(floatval($recuritRule["pricePer"]), 2);
  235. $payTotal = round($buyCount * $pricePer, 2);
  236. if ($payTotal <= 0) throw new GeneralException("", "购买金额竟然小于等于0");
  237. // $backdata = pdo_fetch("select
  238. // (sum(case when bta.type=0 then ifnull(money,0) else 0 end)-
  239. // sum(case when bta.type=1 then ifnull(money,0) else 0 end)) as money_balance
  240. // from biz_trader_account bta
  241. // where bta.deleted=0 and bta.biz_traderid=:biz_traderid
  242. // and bta.`biz_roletype`=:money_roletype and bta.biz_userid=:money_userid
  243. // and bta.`status`=1",array(
  244. // ":biz_traderid"=>$bizTrader["id"],
  245. // ":money_userid"=>$bizTrader["id"],
  246. // ":money_roletype"=>0,
  247. // ));
  248. // $money_balance = round(floatval($backdata["money_balance"]), 2);
  249. $accountInfo=bizbase_traderAccountInfo($bizTrader);
  250. $money_balance =round(floatval($accountInfo["balance"]), 2);
  251. $nowPayMoney = round(floatval($payTotal - $money_balance), 2);
  252. eeglobal_log_handler('numpaySettle','info'," money_balance={$money_balance} payTotal={$payTotal} paymoney={$nowPayMoney} ");
  253. if ($nowPayMoney <= 0) $nowPayMoney = 0;//将来在收支明细中过滤掉money=0的记录;
  254. $sqlParam=array();
  255. $sqlParam[":nowtime"]=time();
  256. $sqlParam[":biz_traderid"]=intval($bizTrader["id"]);
  257. $sqlParam[":buyCount"]=intval($buyCount);
  258. $sqlParam[":pricePer"]=$pricePer;
  259. $sqlParam[":paymoney"]=$nowPayMoney;
  260. $sqlParam[":money"]=$payTotal;
  261. $sqlParam[":paypreno"]="CS".date("YmdHis",time())."ID";
  262. $sqlTemp="";
  263. $sqlTemp.=" insert into biz_trader_numaccount set createtime=:nowtime";
  264. $sqlTemp.=" ,biz_traderid=:biz_traderid ";
  265. $sqlTemp.=" ,type=0,biz_catalog=0,biz_id=0,`status`=0,`count`=:buyCount,`pricePer`=:pricePer,`paymoney`=:paymoney,`money`=:money";
  266. $sqlTemp.=" ,remark='购买次数';";
  267. $sqlTemp.=" update biz_trader_numaccount set biz_idtag=concat(:paypreno,LAST_INSERT_ID()) where id=LAST_INSERT_ID(); ";
  268. $sqlTemp.=" select * from biz_trader_numaccount where id=LAST_INSERT_ID();";
  269. $dataset = pdo_query3($sqlTemp, $sqlParam);
  270. $bizInfo= $dataset[count($dataset)-1][0];
  271. if (empty($bizInfo)) throw new GeneralException("", "构建次数支付订单异常");
  272. $payBizCatalog = "0"; //0-次数购买业务
  273. $payBizId = $bizInfo["id"];
  274. $payScene = "JSAPI";
  275. $prePayArgs = array(
  276. "payBackBizCatalog" => $payBizCatalog,
  277. "payBackBizId" => $payBizId,
  278. "payScene" => $payScene,
  279. );
  280. if ($nowPayMoney <= 0) {
  281. bizbase_paySuccess($payBizCatalog, $payBizId, false);
  282. return array("payResult" => true);
  283. } else {
  284. //---------------------------------------
  285. $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
  286. if (empty(trim($minaCode))) throw new GeneralException("", "没有传递必要的minaCode参数");
  287. $bizArgs=array(
  288. "minaCode"=>$minaCode,
  289. "bizInfo"=>$bizInfo,
  290. "bizTrader"=>$bizTrader,
  291. );
  292. require_once WEB_PHY_ROOT."/base/wxsrv.php";
  293. $prePayInfo=weixin_prepayBuildV3($prePayArgs,$bizArgs,function($bizCatalog, $bizId, $bizArgs){
  294. $minaCode = $bizArgs["minaCode"];
  295. $bizInfo = $bizArgs["bizInfo"];
  296. $bizTrader = $bizArgs["bizTrader"];
  297. $prePayInfo= array();
  298. switch($bizCatalog){
  299. default:
  300. //---------------------------------------
  301. $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_CAPITAL_MINA);
  302. $wxmina_appid = $resObj["wxmina_appid"];
  303. $wxmina_openid = $resObj["openid"];
  304. $payTotal = round(floatval($bizInfo["paymoney"]), 2);
  305. if ($payTotal <= 0) throw new GeneralException("", "购买金额竟然小于等于0");
  306. $payTotal = $payTotal * 100;//转为分
  307. //---------------------------------------
  308. $sqlParam=array();
  309. $sqlParam[":id"]=intval($bizInfo["id"]);
  310. $sqlParam[":wxmina_appid"]=$wxmina_appid;
  311. $sqlParam[":wxmina_openid"]=$wxmina_openid;
  312. $sqlTemp=" update biz_trader_numaccount set";
  313. $sqlTemp.=" wxmina_appid=:wxmina_appid,wxmina_openid=:wxmina_openid ";
  314. $sqlTemp.=" where id=:id; ";
  315. $dataset = pdo_query3($sqlTemp, $sqlParam);
  316. //---------------------------------------
  317. $prePayInfo["appid"]=$wxmina_appid;
  318. $prePayInfo["mchId"]=WeiXinPay_mchId;
  319. $prePayInfo["mch_paykeyV2"]=WeiXinPay_apiKey;
  320. $prePayInfo["mch_paykeyV3"]=WeiXinPay_apiKeyV3;
  321. $prePayInfo["out_trade_no"]=$bizInfo["biz_idtag"];
  322. $prePayInfo["total"]="{$payTotal}";
  323. $prePayInfo["description"]="购买发布人次";
  324. $prePayInfo["openid"]=$wxmina_openid;
  325. break;
  326. }
  327. return $prePayInfo;
  328. });
  329. }
  330. $prePayInfo =array_merge($prePayArgs, $prePayInfo);
  331. return $prePayInfo;
  332. break;
  333. default:
  334. throw new GeneralException("","不支持的handleMode!");
  335. }
  336. }
  337. /**********************微信相关逻辑**************************************/
  338. function bizbase_weixinEntityHandle($fromSubSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC){
  339. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  340. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  341. switch($handleMode){
  342. case "confirmPaySuccess":
  343. $payBizCatalog = isset($ajaxdata["payBizCatalog"]) ? $ajaxdata["payBizCatalog"] : $GPC["payBizCatalog"];
  344. $payBizId = isset($ajaxdata["payBizId"]) ? $ajaxdata["payBizId"] : $GPC["payBizId"];
  345. $backdata = bizbase_paySuccess($payBizCatalog, $payBizId, true);
  346. return $backdata;
  347. break;
  348. default:
  349. throw new GeneralException("","不支持的handleMode!");
  350. }
  351. }
  352. /**********************资金账相关逻辑**************************************/
  353. function bizbase_accountEntityHandle($subSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC){
  354. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  355. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  356. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL2_MINA) $bizTrader2 = $bizUser;
  357. $subSystem = intval($baseUser["subsystem"]);
  358. switch($handleMode){
  359. case "withdrawByWorker":
  360. $lockid = $bizWorker["id"];
  361. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  362. $money = isset($ajaxdata["money"]) ? $ajaxdata["money"] : $GPC["money"];
  363. $trueName = isset($ajaxdata["trueName"]) ? $ajaxdata["trueName"] : $GPC["trueName"];
  364. $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
  365. $params = array("subSystem"=>$subSystem, "bizWorker" => $bizWorker, "todo" => $todo, "money" => $money,"trueName"=>$trueName,"minaCode"=>$minaCode);
  366. $result = biz_flkForWorker($lockid, $params, function ($params) {
  367. $subSystem = $params["subSystem"];
  368. $bizWorker = $params["bizWorker"];
  369. $todo = $params["todo"];
  370. $money = $params["money"];
  371. $trueName = $params["trueName"];
  372. $minaCode = $params["minaCode"];
  373. switch(trim($todo)){
  374. case "all":
  375. $accountInfo=bizbase_workerAccountInfo($bizWorker);
  376. $money = round(floatval($accountInfo["balance"]), 2);
  377. break;
  378. case "part":
  379. $money = round(floatval($money), 2);
  380. break;
  381. default:throw new GeneralException("","不支持的todo!");
  382. }
  383. bizbase_accountWithdrawCheck($subSystem, $bizWorker, $money);
  384. require_once WEB_PHY_ROOT."/base/wxsrv.php";
  385. $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_LABOUR_MINA);
  386. $wxmina_appid = $resObj["wxmina_appid"];
  387. $wxmina_openid = $resObj["openid"];
  388. $sqlParam=array();
  389. $sqlParam[":nowtime"]=time();
  390. $sqlParam[":biz_workerid"]=$bizWorker["id"];
  391. $sqlParam[":wxmina_appid"]=$wxmina_appid;
  392. $sqlParam[":wxmina_openid"]=$wxmina_openid;
  393. $sqlParam[":money"]=$money;
  394. $sqlParam[":prefix"] = "TX" . date("YmdHis", time()) . "ID";
  395. $sqlTemp="";
  396. $sqlTemp.=" insert into biz_worker_account set createtime=:nowtime ";
  397. $sqlTemp.=" ,biz_workerid=:biz_workerid ";
  398. $sqlTemp.=" ,type=1, biz_catalog=0, money=:money ";
  399. $sqlTemp.=" ,wxmina_appid=:wxmina_appid, wxmina_openid=:wxmina_openid; ";
  400. $sqlTemp.=" update biz_worker_account set biz_idtag=concat(:prefix,id) where id=LAST_INSERT_ID(); ";
  401. $sqlTemp.=" select * from biz_worker_account where id=LAST_INSERT_ID(); ";
  402. $dataset=pdo_query3($sqlTemp,$sqlParam);
  403. $account = $dataset[count($dataset) - 1][0];
  404. $insertId=intval($account["id"]);
  405. $withdrawNO=trim($account["biz_idtag"]);
  406. try{
  407. $trueName = empty($trueName) ? $bizWorker["true_name"] : $trueName;
  408. $remark = "会员快来优钱包提现";
  409. include_once WEB_PHY_ROOT."/base/wxsrv.php";
  410. $transResult = weixin_transfers($wxmina_appid, $wxmina_openid, $withdrawNO, $trueName, $money * 100, $remark);
  411. $sqlParam=array();
  412. $sqlParam[":id"]=$insertId;
  413. $sqlParam[":nowtime"]=time();
  414. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 提现成功 \n";
  415. $sqlTemp="";
  416. $sqlTemp.=" update biz_worker_account set updatetime=:nowtime ";
  417. $sqlTemp.=" ,`status`=1 ,remark=concat(:remark,ifnull(remark,'')) ";
  418. $sqlTemp.=" where id=:id;";
  419. $backdata= pdo_query($sqlTemp,$sqlParam);
  420. return $transResult;
  421. }catch(Throwable $ex){
  422. throw new GeneralException("", "提现异常" . $ex->getMessage());
  423. }
  424. });
  425. return $result;
  426. break;
  427. case "withdrawByTrader":
  428. $lockid = $bizTrader["id"];
  429. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  430. $money = isset($ajaxdata["money"]) ? $ajaxdata["money"] : $GPC["money"];
  431. $trueName = isset($ajaxdata["trueName"]) ? $ajaxdata["trueName"] : $GPC["trueName"];
  432. $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
  433. $params = array("subSystem"=>$subSystem, "bizTrader" => $bizTrader, "todo" => $todo, "money" => $money,"trueName"=>$trueName,"minaCode"=>$minaCode);
  434. $result = biz_flkForTrader($lockid, $params, function ($params) {
  435. $subSystem = $params["subSystem"];
  436. $bizTrader = $params["bizTrader"];
  437. $todo = $params["todo"];
  438. $money = $params["money"];
  439. $trueName = $params["trueName"];
  440. $minaCode = $params["minaCode"];
  441. switch(trim($todo)){
  442. case "all":
  443. $accountInfo=bizbase_traderAccountInfo($bizTrader);
  444. $money = round(floatval($accountInfo["balance"]), 2);
  445. break;
  446. case "part":
  447. $money = round(floatval($money), 2);
  448. break;
  449. default:throw new GeneralException("","不支持的todo!");
  450. }
  451. bizbase_accountWithdrawCheck($subSystem, $bizTrader, $money);
  452. require_once WEB_PHY_ROOT."/base/wxsrv.php";
  453. $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_CAPITAL_MINA);
  454. $wxmina_appid = $resObj["wxmina_appid"];
  455. $wxmina_openid = $resObj["openid"];
  456. $sqlParam=array();
  457. $sqlParam[":nowtime"]=time();
  458. $sqlParam[":biz_traderid"]=$bizTrader["id"];
  459. $sqlParam[":wxmina_appid"]=$wxmina_appid;
  460. $sqlParam[":wxmina_openid"]=$wxmina_openid;
  461. $sqlParam[":money"]=$money;
  462. $sqlParam[":prefix"] = "TXT" . date("YmdHis", time()) . "ID";
  463. $sqlTemp="";
  464. $sqlTemp.=" insert into biz_trader_account set createtime=:nowtime ";
  465. $sqlTemp.=" ,biz_traderid=:biz_traderid ";
  466. $sqlTemp.=" ,biz_roletype=0, biz_userid=:biz_traderid ";
  467. $sqlTemp.=" ,type=1, biz_catalog=5, money=:money ";
  468. $sqlTemp.=" ,wxmina_appid=:wxmina_appid, wxmina_openid=:wxmina_openid; ";
  469. $sqlTemp.=" update biz_trader_account set biz_idtag=concat(:prefix,id) where id=LAST_INSERT_ID(); ";
  470. $sqlTemp.=" select * from biz_trader_account where id=LAST_INSERT_ID(); ";
  471. $dataset=pdo_query3($sqlTemp,$sqlParam);
  472. $account = $dataset[count($dataset) - 1][0];
  473. $insertId=intval($account["id"]);
  474. $withdrawNO=trim($account["biz_idtag"]);
  475. try{
  476. $trueName = $trueName;
  477. $remark = "商家快来优钱包提现";
  478. include_once WEB_PHY_ROOT."/base/wxsrv.php";
  479. $transResult = weixin_transfers($wxmina_appid, $wxmina_openid, $withdrawNO, $trueName, $money * 100, $remark);
  480. $sqlParam=array();
  481. $sqlParam[":id"]=$insertId;
  482. $sqlParam[":nowtime"]=time();
  483. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 提现成功 \n";
  484. $sqlTemp="";
  485. $sqlTemp.=" update biz_trader_account set updatetime=:nowtime ";
  486. $sqlTemp.=" ,`status`=1 ,remark=concat(:remark,ifnull(remark,'')) ";
  487. $sqlTemp.=" where id=:id;";
  488. $backdata= pdo_query($sqlTemp,$sqlParam);
  489. return $transResult;
  490. }catch(Throwable $ex){
  491. throw new GeneralException("", "提现异常" . $ex->getMessage());
  492. }
  493. });
  494. return $result;
  495. break;
  496. default: throw new GeneralException("","不支持的handleMode!");
  497. }
  498. }
  499. function bizbase_accountWithdrawCheck($subSystem, $bizUser, $money){
  500. $minDate=1;
  501. $maxDate=31;
  502. $today=date("d",time());//提现日期
  503. if($today<$minDate || $today>$maxDate) throw new GeneralException("NotInWithdrawDateScope",array(
  504. "minDate" => $minDate, "maxDate" => $maxDate, "today" => date("Y-m-d", time()),
  505. ));
  506. $minMoney=0.3;//提现最小额
  507. if ($money < $minMoney) throw new GeneralException("WithdrawTooLittle", array(
  508. "minMoney" => $minMoney,
  509. ));
  510. }
  511. function bizbase_accountCatalogName($fromSubSystem, $type, $bizCatalog){
  512. $backdata=array();
  513. $backdata["typeName"] = (intval($type) <= 0) ? "收入" : "支出";
  514. switch(intval($fromSubSystem)){
  515. case SUBSYS_LABOUR_MINA:
  516. if(intval($type) <= 0){//工人收入
  517. switch(intval($bizCatalog)){
  518. case 0:
  519. $backdata["bizCatalogName"]="工资收入";
  520. break;
  521. case 1:
  522. $backdata["bizCatalogName"]="佣金收入";
  523. break;
  524. case 2:
  525. $backdata["bizCatalogName"]="支付活动报名";
  526. break;
  527. case 3:
  528. $backdata["bizCatalogName"]="微信充值";
  529. break;
  530. case 4:
  531. $backdata["bizCatalogName"]="支付报名押金";
  532. break;
  533. case 5:
  534. $backdata["bizCatalogName"]="报名押金退还";
  535. break;
  536. case 6:
  537. $backdata["bizCatalogName"]="违约罚金收入";
  538. break;
  539. case 7:
  540. $backdata["bizCatalogName"]="解冻报名押金";
  541. break;
  542. }
  543. }else{//工人支出
  544. switch(intval($bizCatalog)){
  545. case 0:
  546. $backdata["bizCatalogName"]="余额提现";
  547. break;
  548. case 1:
  549. $backdata["bizCatalogName"]="营销活动支出";
  550. break;
  551. case 2:
  552. $backdata["bizCatalogName"]="报名押金冻结";
  553. break;
  554. case 3:
  555. $backdata["bizCatalogName"]="报名押金罚没";
  556. break;
  557. }
  558. }
  559. break;
  560. case SUBSYS_CAPITAL_MINA:
  561. if(intval($type) <= 0){//商家收入
  562. switch(intval($bizCatalog)){
  563. case 0:
  564. $backdata["bizCatalogName"]="次数支付";
  565. break;
  566. case 1:
  567. $backdata["bizCatalogName"]="订单支付";
  568. break;
  569. case 2:
  570. $backdata["bizCatalogName"]="微信充值";
  571. break;
  572. case 3:
  573. $backdata["bizCatalogName"]="转帐收入";
  574. break;
  575. case 4:
  576. $backdata["bizCatalogName"]="平台代支付工单";
  577. break;
  578. case 5:
  579. $backdata["bizCatalogName"]="工单费用部分退还";
  580. break;
  581. case 6:
  582. $backdata["bizCatalogName"]="工单费用解冻";
  583. break;
  584. case 7:
  585. $backdata["bizCatalogName"]="会员违约金收入";
  586. break;
  587. }
  588. }else{//商家支出
  589. switch(intval($bizCatalog)){
  590. case 0:
  591. $backdata["bizCatalogName"]="次数支出";
  592. break;
  593. case 1:
  594. $backdata["bizCatalogName"]="订单平台分成支出";
  595. break;
  596. case 2:
  597. $backdata["bizCatalogName"]="订单佣金支出";
  598. break;
  599. case 3:
  600. $backdata["bizCatalogName"]="订单工资支出";
  601. break;
  602. case 4:
  603. $backdata["bizCatalogName"]="转帐支出";
  604. break;
  605. case 5:
  606. $backdata["bizCatalogName"]="提现支出";
  607. break;
  608. case 6:
  609. $backdata["bizCatalogName"]="订单费用支出";
  610. break;
  611. case 7:
  612. $backdata["bizCatalogName"]="平台代为支付订单费用";
  613. break;
  614. case 8:
  615. $backdata["bizCatalogName"]="工单费用冻结";
  616. break;
  617. case 9:
  618. $backdata["bizCatalogName"]="工单违约罚金";
  619. break;
  620. }
  621. }
  622. break;
  623. default: throw new GeneralException("","不支持的fromSubSystem!");
  624. }
  625. return $backdata;
  626. }
  627. function bizbase_accountEntityAboutQuery($fromSubSystem,$baseUser, $bizUser, $handleMode, $pageIndex, $pageSize,$ajaxdata, $GPC){
  628. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  629. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  630. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL2_MINA) $bizTrader2 = $bizUser;
  631. $subSystem=intval($baseUser["subsystem"]);
  632. switch($handleMode){
  633. case "fetchallByTrader":
  634. $sqlParam=array();
  635. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  636. if (empty($query) && !is_array($query)){//验证一下query信息集
  637. $query=" and 1=1 ";
  638. }else{
  639. $queryNew=" and 1=1 ";
  640. foreach($query as $fdName=>$fdValue){
  641. if(empty($fdName) || empty($fdValue)) continue;
  642. switch($fdName){
  643. case "catalog":
  644. switch(intval($fdValue)) {
  645. case 1:
  646. if(!empty($bizTrader)){//专款专户
  647. $query.=" and bta.biz_roletype=0 ";
  648. }
  649. break;
  650. case 2:
  651. if(!empty($bizTrader)){//专款专户
  652. $query.=" and bta.biz_roletype=1 ";
  653. }
  654. break;
  655. }
  656. break;
  657. case "type":
  658. $queryNew .= " and bta.type=" . (intval($fdValue) - 1) . " ";
  659. break;
  660. case "bizCatalog":
  661. $queryNew .= " and bta.biz_catalog=" . (intval($fdValue) - 1) . " ";
  662. break;
  663. case "traderId":
  664. $queryNew .= " and bta.biz_traderid=".intval($fdValue)." ";
  665. break;
  666. case "companyName":
  667. $paramName = ":qy_companyName";
  668. $queryNew .=" and (bt.company_name like concat('%',{$paramName},'%') ) ";
  669. $sqlParam[$paramName] = $fdValue;
  670. break;
  671. case "occurdate":
  672. $yestoday=strtotime("-1 day",strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))));
  673. $tomorrow=strtotime("+1 day",strtotime(date("Y-m-d 00:00:00", strtotime($fdValue))));
  674. $queryNew .= " and bta.createtime>$yestoday and bta.createtime<$tomorrow ";
  675. break;
  676. }
  677. }
  678. $query=$queryNew;
  679. }
  680. if(!empty($bizTrader)){//专款专户
  681. $query.=" and bta.biz_traderid=".intval($bizTrader["id"])." ";
  682. }
  683. //排序处理
  684. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  685. switch(intval($orderby)){
  686. case 1:
  687. $orderby=" order by bta.money desc ";
  688. break;
  689. default://创建时间倒序
  690. $orderby=" order by bta.id desc ";
  691. break;
  692. }
  693. //构建sql串
  694. $sqlBody="";
  695. $sqlBody.=" from biz_trader_account bta ";
  696. $sqlBody.=" left join biz_trader bt on bt.id=bta.biz_traderid ";
  697. $sqlBody.=" left join base_user bu on bu.id=bt.base_userid ";
  698. $sqlBody.=" left join biz_trader2 bt2 on bta.biz_roletype=1 and bt2.id=bta.biz_userid ";
  699. $sqlBody.=" left join base_user bu2 on bu2.id=bt2.base_userid ";
  700. $sqlBody.=" where 1=1 and bta.deleted=0 and bta.`status`=1 and bta.money<>0 ".$query;
  701. //查询sql及统计sql
  702. $start = (intval($pageIndex) - 1) * $pageSize;
  703. $sqlFetch =" select bta.* ";
  704. $sqlFetch.=" ,bt.company_name as bt_company_name,bu.mobile as bu_mobile";
  705. $sqlFetch.=" ,bt2.true_name as bt2_true_name,bu2.mobile as bu2_mobile";
  706. $sqlFetch.=" {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  707. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  708. //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射;
  709. foreach($pageData as &$data){//数据转换/映射
  710. $accountCatalogInfo=bizbase_accountCatalogName($subSystem,$data["type"],$data["biz_catalog"]);
  711. foreach ($accountCatalogInfo as $key => $value) $data["".$key] = $value;
  712. $data["occurdatetime"] = date("Y-m-d H:i:s", $data["createtime"]);
  713. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  714. }
  715. $sqlSummary=" select count(*) as count,sum(money) as moneytotal ".$sqlBody.";";
  716. $sumData=pdo_fetch($sqlSummary,$sqlParam);
  717. return array(
  718. "pageData" => $pageData,
  719. "count" => intval($sumData["count"]),
  720. "moneytotal" => round(floatval($sumData["moneytotal"]), 2),
  721. );
  722. break;
  723. case "fetchallByWorker":
  724. $sqlParam=array();
  725. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  726. if (empty($query) && !is_array($query)){//验证一下query信息集
  727. $query=" and 1=1 ";
  728. }else{
  729. $queryNew=" and 1=1 ";
  730. foreach($query as $fdName=>$fdValue){
  731. if(empty($fdName) || empty($fdValue)) continue;
  732. switch($fdName){
  733. case "type":
  734. $queryNew .= " and bwa.type=" . (intval($fdValue) - 1) . " ";
  735. break;
  736. case "bizCatalog":
  737. $queryNew .= " and bwa.biz_catalog=" . (intval($fdValue) - 1) . " ";
  738. break;
  739. case "workerId":
  740. $queryNew .= " and bwa.biz_workerid=".intval($fdValue)." ";
  741. break;
  742. case "memberName":
  743. $paramName = ":qy_memberName";
  744. $queryNew .=" and (wk.true_name like concat('%',{$paramName},'%') ) ";
  745. $sqlParam[$paramName] = $fdValue;
  746. break;
  747. case "occurdate":
  748. $yestoday=strtotime("-1 day",strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))));
  749. $tomorrow=strtotime("+1 day",strtotime(date("Y-m-d 00:00:00", strtotime($fdValue))));
  750. $queryNew .= " and bwa.createtime>$yestoday and bwa.createtime<$tomorrow ";
  751. break;
  752. }
  753. }
  754. $query=$queryNew;
  755. }
  756. if(!empty($bizWorker)){
  757. $query.=" and bwa.biz_workerid=".intval($bizWorker["id"])." ";
  758. }
  759. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  760. switch(intval($orderby)){
  761. case 1:
  762. $orderby=" order by bwa.money desc ";
  763. break;
  764. default://创建时间倒序
  765. $orderby=" order by bwa.id desc ";
  766. break;
  767. }
  768. //构建sql串
  769. $sqlBody="";
  770. $sqlBody.=" from biz_worker_account bwa ";
  771. $sqlBody.=" left join biz_worker wk on wk.id=bwa.biz_workerid ";
  772. $sqlBody.=" left join base_user bu on bu.id=wk.base_userid ";
  773. $sqlBody.=" where 1=1 and bwa.deleted=0 and bwa.`status`=1 and bwa.money<>0 ".$query;
  774. //查询sql及统计sql
  775. $start = (intval($pageIndex) - 1) * $pageSize;
  776. $sqlFetch =" select bwa.* ";
  777. $sqlFetch.=" ,wk.true_name as wk_true_name,bu.mobile as bu_mobile";
  778. $sqlFetch.=" {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  779. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  780. foreach($pageData as &$data){ //数据转换/映射
  781. $accountCatalogInfo=bizbase_accountCatalogName($subSystem,$data["type"],$data["biz_catalog"]);
  782. foreach ($accountCatalogInfo as $key => $value) $data["".$key] = $value;
  783. $data["occurdatetime"] = date("Y-m-d H:i:s", $data["createtime"]);
  784. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  785. }
  786. $sqlSummary=" select count(*) as count,sum(money) as moneytotal ".$sqlBody.";";
  787. $sumData=pdo_fetch($sqlSummary,$sqlParam);
  788. return array(
  789. "pageData" => $pageData,
  790. "count" => intval($sumData["count"]),
  791. "moneytotal" => round(floatval($sumData["moneytotal"]), 2),
  792. );
  793. break;
  794. default:
  795. throw new GeneralException("","不支持的handleMode!");
  796. }
  797. }
  798. /**********************通知公告信息相关逻辑**************************************/
  799. function bizbase_noticeEntityHandle($fromSubSystem, $baseUser, $bizUser,$handleMode, $ajaxdata, $GPC){
  800. switch($handleMode){
  801. case "fetch":
  802. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  803. if (empty($bizId)) throw new GeneralException("", "没有传递必要的bizId参数");
  804. $backdata = pdo_fetch("select * from biz_pubic_notice where id=" . intval($bizId));
  805. if(empty($backdata)) throw new GeneralException("", "无此记录,请核查bizId是否正确!");
  806. if (intval($backdata["deleted"]) != 0)
  807. throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  808. //数据转换 //属性映射
  809. return $backdata;
  810. break;
  811. case "delete":
  812. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  813. if (empty($bizId)) throw new GeneralException("", "没有传递必要的bizId参数");
  814. $backdata = pdo_fetch("select * from biz_pubic_notice where id=" . intval($bizId));
  815. if(empty($backdata)) throw new GeneralException("", "无此记录,请核查bizId是否正确!");
  816. if (intval($backdata["deleted"]) != 0)
  817. throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  818. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  819. $backdata=pdo_query("update biz_pubic_notice set updatetime=:nowtime
  820. ,`deleted`=1,remark=concat(:remark,ifnull(remark,'')) where id=:id",array(
  821. ":nowtime"=>time(),
  822. ":id"=>intval($bizId),
  823. ":remark"=>"[".date("Y-m-d H:i:s")."] 删除 $reason ",
  824. ));
  825. return $backdata;
  826. break;
  827. case "upsert":
  828. $bizData = isset($ajaxdata["bizData"]) ? $ajaxdata["bizData"] : $GPC["bizData"];
  829. if (empty($bizData)) throw new GeneralException("", "没有传递必要的bizData参数");
  830. $id = intval($bizData["id"]);
  831. $catalog = intval($bizData["catalog"]);
  832. $title = trim($bizData["title"]);
  833. $content = trim($bizData["content"]);
  834. //-----------------------------------
  835. $saveData=array();
  836. $saveData["catalog"]=$catalog;
  837. $saveData["title"]=trim($title);
  838. $saveData["content"]=trim($content);
  839. if(mb_strlen(trim($saveData["content"]))<1) throw new GeneralException("","内容不能为空!");
  840. if ($id > 0) {
  841. $oldData = pdo_fetch("select * from biz_pubic_notice where id=" . intval($id));
  842. if (empty($oldData)) throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  843. $saveData["updatetime"]=time();
  844. $saveData["updateuserid"]=intval($baseUser["id"]);
  845. $backdata = pdo_update("biz_pubic_notice", $saveData,array("id"=>$id));
  846. return $backdata;
  847. }else{
  848. $saveData["createtime"]=time();
  849. $saveData["createuserid"]=intval($baseUser["id"]);
  850. $backdata = pdo_insert("biz_pubic_notice", $saveData);
  851. return $backdata;
  852. }
  853. break;
  854. default:
  855. throw new GeneralException("","不支持的handleMode!");
  856. }
  857. }
  858. function bizbase_noticeAboutQuery($fromSubSystem,$baseUser,$bizUser,$handleMode,$pageIndex,$pageSize,$ajaxdata, $GPC){
  859. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  860. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  861. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL2_MINA) $bizTrader2 = $bizUser;
  862. switch($handleMode){
  863. case "fetchall":
  864. $sqlParam=array();
  865. //查询处理
  866. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  867. if (empty($query) && !is_array($query)){//验证一下query信息集
  868. $query=" and 1=1 ";
  869. }else{
  870. $queryNew=" and 1=1 ";
  871. foreach($query as $fdName=>$fdValue){
  872. if(empty($fdName) || empty($fdValue)) continue;
  873. switch($fdName){
  874. case "catalog":
  875. $queryNew .=" and bpn.catalog=".(intval($fdValue)-1)." ";
  876. break;
  877. case "keywords":
  878. $paramName = ":qy_keywords";
  879. $queryNew .=" and (bpn.title like concat('%',{$paramName},'%') or bpn.content like concat('%',{$paramName},'%')) ";
  880. $sqlParam[$paramName] = $fdValue;
  881. break;
  882. }
  883. }
  884. $query=$queryNew;
  885. }
  886. //排序处理
  887. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  888. switch(intval($orderby)){
  889. default://创建时间倒序
  890. $orderby=" order by bpn.id desc ";
  891. break;
  892. }
  893. //构建sql串
  894. $sqlBody="";
  895. $sqlBody.=" from biz_pubic_notice bpn ";
  896. $sqlBody.=" left join base_user buc on buc.id=bpn.createuserid ";
  897. $sqlBody.=" left join base_user buu on buu.id=bpn.updateuserid ";
  898. $sqlBody.=" where bpn.`deleted`=0 ".$query;
  899. //查询sql及统计sql
  900. $start = (intval($pageIndex) - 1) * $pageSize;
  901. $sqlFetch =" select bpn.*,buc.login_name as buc_login_name,buu.login_name as buu_login_name ";
  902. $sqlFetch.=" {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  903. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  904. //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射;
  905. foreach($pageData as &$data){//数据转换/映射
  906. $data["pasttimeTips"]=bizbase_pasttimeTips($data["createtime"]);
  907. $data["createtime"]=date("Y-m-d H:i:s",$data["createtime"]);
  908. if(!empty($bizTrader)){
  909. $biz_usertype=1;
  910. $biz_userid=$bizTrader["id"];
  911. }
  912. if(!empty($bizWorker)){
  913. $biz_usertype=2;
  914. $biz_userid=$bizWorker["id"];
  915. }
  916. if(!empty($biz_userid)){
  917. $sqlTemp="";
  918. $sqlTemp.=" set @handle_id=0; ";
  919. $sqlTemp.=" select @handle_id:=id from biz_basetrace bbt";
  920. $sqlTemp.=" where bbt.deleted=0 and bbt.biz_catalog=1 and bbt.biz_id=:noticeid and bbt.biz_usertype=:biz_usertype and bbt.biz_userid=:biz_userid; ";
  921. $sqlTemp.=" insert into biz_basetrace(`biz_catalog`, biz_id, biz_usertype, biz_userid, count)";
  922. $sqlTemp.=" select 1,:noticeid,:biz_usertype,:biz_userid, 1";
  923. $sqlTemp.=" from dual where ifnull(@handle_id,0)=0 ;";
  924. $backdata = pdo_query3($sqlTemp, array(
  925. ":noticeid"=>$data["id"],
  926. ":biz_usertype"=>$biz_usertype,
  927. ":biz_userid"=>$biz_userid,
  928. ));
  929. }
  930. }
  931. $sqlSummary=" select count(*) as count ".$sqlBody.";";
  932. $sumData=pdo_fetch($sqlSummary,$sqlParam);
  933. return array(
  934. "pageData" => $pageData,
  935. "count" => intval($sumData["count"]),
  936. );
  937. break;
  938. default:
  939. throw new GeneralException("","不支持的handleMode!");
  940. }
  941. }
  942. /**********************评价信息相关逻辑**************************************/
  943. function bizbase_appraisalEntityHandle($subSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC){
  944. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  945. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  946. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL2_MINA) $bizTrader2 = $bizUser;
  947. switch($handleMode){
  948. case "fetch":
  949. // $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  950. // if (empty($bizId)) throw new GeneralException("", "没有传递必要的bizId参数");
  951. // $backdata = pdo_fetch("select * from biz_pubic_notice where id=" . intval($bizId));
  952. // if(empty($backdata)) throw new GeneralException("", "无此记录,请核查bizId是否正确!");
  953. // if (intval($backdata["deleted"]) != 0)
  954. // throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  955. // return $backdata;
  956. break;
  957. case "delete":
  958. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  959. if (empty($bizId)) throw new GeneralException("", "没有传递必要的bizId参数");
  960. $backdata = pdo_fetch("select * from biz_appraisal where id=" . intval($bizId));
  961. if(empty($backdata)) throw new GeneralException("", "无此记录,请核查bizId是否正确!");
  962. if (intval($backdata["deleted"]) != 0)
  963. throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  964. $backdata = pdo_query("delete from biz_appraisal where id=" . intval($bizId));
  965. return $backdata;
  966. break;
  967. default:
  968. throw new GeneralException("","不支持的handleMode!");
  969. }
  970. }
  971. function bizbase_appraisalAboutQuery($subSystem, $baseUser, $bizUser,$handleMode,$pageIndex,$pageSize,$ajaxdata, $GPC){
  972. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  973. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  974. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL2_MINA) $bizTrader2 = $bizUser;
  975. switch($handleMode){
  976. case "fetchall":
  977. $sqlParam=array();
  978. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  979. if (empty($query) && !is_array($query)){//验证一下query信息集
  980. $query=" and 1=1 ";
  981. }else{
  982. $queryNew=" and 1=1 ";
  983. foreach($query as $fdName=>$fdValue){
  984. if(empty($fdName) || empty($fdValue)) continue;
  985. switch($fdName){
  986. case "bizCatalog":
  987. $queryNew .=" and apa.biz_catalog=".(intval($fdValue)-1)." ";
  988. break;
  989. case "fromWorkerId":
  990. $queryNew .=" and (apa.biz_catalog=0 or apa.biz_catalog=1) ";
  991. $queryNew .=" and apa.fromerid=".intval($fdValue)." ";
  992. break;
  993. case "fromTraderId":
  994. $queryNew .=" and (apa.biz_catalog=2) ";
  995. $queryNew .=" and apa.fromerid=".intval($fdValue)." ";
  996. break;
  997. case "toWorkerId":
  998. $queryNew .=" and (apa.biz_catalog=2) ";
  999. $queryNew .=" and apa.toerid=".intval($fdValue)." ";
  1000. break;
  1001. case "toTraderId":
  1002. $queryNew .=" and (apa.biz_catalog=1) ";
  1003. $queryNew .=" and apa.toerid=".intval($fdValue)." ";
  1004. break;
  1005. case "activityId":
  1006. $queryNew .=" and (apa.biz_catalog=0) ";
  1007. $queryNew .=" and bmao.market_activityid=".intval($fdValue)." ";
  1008. break;
  1009. case "recuritId":
  1010. $queryNew .=" and (apa.biz_catalog=1 or apa.biz_catalog=2) ";
  1011. $queryNew .=" and tdwk.biz_recruitid=".intval($fdValue)." ";
  1012. break;
  1013. case "title":
  1014. $paramName = ":qy_keywords";
  1015. $queryNew .=" and (btr.title like concat('%',{$paramName},'%') or bma.title like concat('%',{$paramName},'%')) ";
  1016. $sqlParam[$paramName] = $fdValue;
  1017. break;
  1018. case "memberName":
  1019. $paramName = ":qy_memberName";
  1020. $queryNew .=" and (fwk.true_name like concat('%',{$paramName},'%') or twk.true_name like concat('%',{$paramName},'%')) ";
  1021. $sqlParam[$paramName] = $fdValue;
  1022. break;
  1023. case "companyName":
  1024. $paramName = ":qy_companyName";
  1025. $queryNew .=" and (fbt.company_name like concat('%',{$paramName},'%') or tbt.company_name like concat('%',{$paramName},'%')) ";
  1026. $sqlParam[$paramName] = $fdValue;
  1027. break;
  1028. }
  1029. }
  1030. $query=$queryNew;
  1031. }
  1032. $orderby11 = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  1033. switch(intval($orderby11)){
  1034. default://创建时间倒序
  1035. $orderby=" order by apa.id desc ";
  1036. break;
  1037. }
  1038. $roleCatalog = isset($ajaxdata["roleCatalog"]) ? $ajaxdata["roleCatalog"] : $GPC["roleCatalog"];
  1039. $sqlBodyExt="";
  1040. $sqlFetchExt="";
  1041. $sqlSummaryPre="";
  1042. $sqlSummaryPost="";
  1043. switch(intval($roleCatalog)){
  1044. case 0://所有首页用 明细模式
  1045. $sqlBodyExt=" group by apa.id ";
  1046. $sqlFetchExt=" ,count(apa.id) as apa_total";
  1047. $sqlSummaryPre=" from (select apa.id ";
  1048. $sqlSummaryPost=" ) as temp ";
  1049. switch(intval($orderby11)){
  1050. default:
  1051. $orderby=" order by apa.id desc ";
  1052. break;
  1053. }
  1054. break;
  1055. case 1://会员评价
  1056. $query.=" and (apa.biz_catalog=0 or apa.biz_catalog=1) ";
  1057. $sqlBodyExt=" group by apa.fromerid ";
  1058. $sqlFetchExt=" ,count(apa.id) as apa_total";
  1059. $sqlSummaryPre=" from (select apa.id ";
  1060. $sqlSummaryPost=" ) as temp ";
  1061. switch(intval($orderby11)){
  1062. default:
  1063. $orderby=" order by apa_total desc ";
  1064. break;
  1065. }
  1066. break;
  1067. case 2://商家评价
  1068. $query.=" and (apa.biz_catalog=2) ";
  1069. $sqlBodyExt=" group by apa.fromerid ";
  1070. $sqlFetchExt=" ,count(apa.id) as apa_total";
  1071. $sqlSummaryPre=" from (select apa.id ";
  1072. $sqlSummaryPost=" ) as temp ";
  1073. switch(intval($orderby11)){
  1074. default:
  1075. $orderby=" order by apa_total desc ";
  1076. break;
  1077. }
  1078. break;
  1079. case 3://会员被评价
  1080. $query.=" and (apa.biz_catalog=2) ";
  1081. $sqlBodyExt=" group by apa.toerid ";
  1082. $sqlFetchExt=" ,count(apa.id) as apa_total,avg(apa.result_level) as apa_avg";
  1083. $sqlSummaryPre=" from (select apa.id ";
  1084. $sqlSummaryPost=" ) as temp ";
  1085. switch(intval($orderby11)){
  1086. case 1:
  1087. $orderby=" order by apa_total desc ";
  1088. break;
  1089. case 2:
  1090. $orderby=" order by apa_avg desc ";
  1091. break;
  1092. default:
  1093. $orderby=" order by apa.id desc ";
  1094. break;
  1095. }
  1096. break;
  1097. case 4://商家被评价
  1098. $query.=" and (apa.biz_catalog=1) ";
  1099. $sqlBodyExt=" group by apa.toerid ";
  1100. $sqlFetchExt=" ,count(apa.id) as apa_total,avg(apa.result_level) as apa_avg";
  1101. $sqlSummaryPre=" from (select apa.id ";
  1102. $sqlSummaryPost=" ) as temp ";
  1103. switch(intval($orderby11)){
  1104. case 1:
  1105. $orderby=" order by apa_total desc ";
  1106. break;
  1107. case 2:
  1108. $orderby=" order by apa_avg desc ";
  1109. break;
  1110. default:
  1111. $orderby=" order by apa.id desc ";
  1112. break;
  1113. }
  1114. break;
  1115. case 5://活动评价
  1116. $query.=" and (apa.biz_catalog=0) ";
  1117. $sqlBodyExt=" group by bmao.market_activityid ";
  1118. $sqlFetchExt=" ,count(apa.id) as apa_total,avg(apa.result_level) as apa_avg";
  1119. $sqlSummaryPre=" from (select apa.id ";
  1120. $sqlSummaryPost=" ) as temp ";
  1121. switch(intval($orderby11)){
  1122. default:
  1123. $orderby=" order by apa_avg desc ";
  1124. break;
  1125. }
  1126. break;
  1127. case 6://招聘评价
  1128. $query.=" and (apa.biz_catalog=1 or apa.biz_catalog=2) ";
  1129. $sqlBodyExt=" group by tdwk.biz_recruitid ";
  1130. $sqlFetchExt=" ,count(apa.id) as apa_total,avg(apa.result_level) as apa_avg";
  1131. $sqlSummaryPre=" from (select apa.id ";
  1132. $sqlSummaryPost=" ) as temp ";
  1133. switch(intval($orderby11)){
  1134. default:
  1135. $orderby=" order by apa_avg desc ";
  1136. break;
  1137. }
  1138. break;
  1139. }
  1140. $sqlBody="";
  1141. $sqlBody.=" from biz_appraisal apa ";
  1142. $sqlBody.=" left join biz_worker fwk on fwk.id=apa.fromerid";
  1143. $sqlBody.=" left join base_user fwkbu on fwkbu.id=fwk.base_userid";
  1144. $sqlBody.=" left join biz_trader fbt on fbt.id=apa.fromerid";
  1145. $sqlBody.=" left join base_user fbtbu on fbtbu.id=fbt.base_userid";
  1146. $sqlBody.=" left join biz_worker twk on twk.id=apa.toerid";
  1147. $sqlBody.=" left join base_user twkbu on twkbu.id=twk.base_userid";
  1148. $sqlBody.=" left join biz_trader tbt on tbt.id=apa.toerid";
  1149. $sqlBody.=" left join base_user tbtbu on tbtbu.id=tbt.base_userid";
  1150. $sqlBody.=" left join biz_market_activity_order bmao on bmao.id=apa.biz_id and apa.biz_catalog=0";
  1151. $sqlBody.=" left join biz_market_activity bma on bma.id=bmao.market_activityid";
  1152. $sqlBody.=" left join biz_todowork tdwk on tdwk.id=apa.biz_id and (apa.biz_catalog=1 or apa.biz_catalog=2)";
  1153. $sqlBody.=" left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid";
  1154. $sqlBody.=" where apa.`deleted`=0 ".$query;
  1155. $sqlBody.=$sqlBodyExt;
  1156. //查询sql及统计sql
  1157. $start = (intval($pageIndex) - 1) * $pageSize;
  1158. $sqlFetch =" select apa.* ";
  1159. $sqlFetch.=" ,(case when fwk.true_name<>'' then fwk.true_name else fwk.nickname end) as fwk_truename,fwkbu.mobile as fwkbu_mobile ";
  1160. $sqlFetch.=" ,(case when twk.true_name<>'' then twk.true_name else twk.nickname end) as twk_truename,twkbu.mobile as twkbu_mobile ";
  1161. $sqlFetch.=" ,fbt.company_name as fbt_companyname,fbtbu.mobile as fbtbu_mobile ";
  1162. $sqlFetch.=" ,tbt.company_name as tbt_companyname,tbtbu.mobile as tbtbu_mobile ";
  1163. $sqlFetch.=" ,bmao.market_activityid, bma.title as bma_title ";
  1164. $sqlFetch.=" ,tdwk.biz_recruitid, btr.title as btr_title ";
  1165. $sqlFetch.=" ,ifnull(avg(apa.result_level),0) as avg_level ";
  1166. $sqlFetch.=" ,count(apa.id) as apa_count ";
  1167. $sqlFetch.=" {$sqlFetchExt} {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  1168. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  1169. foreach($pageData as &$data){//数据转换/映射
  1170. unset($data["remark"]);
  1171. $data["avg_level"]=round($data["avg_level"],1);
  1172. $data["pasttimeTips"]=bizbase_pasttimeTips($data["createtime"]);
  1173. $data["createtime"]=date("Y-m-d H:i:s",$data["createtime"]);
  1174. $data["fromWorkerId"]=$data["fromerid"];
  1175. $data["fromTraderId"]=$data["fromerid"];
  1176. $data["toWorkerId"]=$data["toerid"];
  1177. $data["toTraderId"]=$data["toerid"];
  1178. $data["activityId"]=$data["market_activityid"];
  1179. $data["recuritId"]=$data["biz_recruitid"];
  1180. switch(intval($data["biz_catalog"])){
  1181. case 0:
  1182. $data["biz_catalogName"]="会员对活动评价";
  1183. $data["apa_biztitle"]=$data["bma_title"];
  1184. $data["apaer_name"]=$data["fwk_truename"];
  1185. $data["apaer_mobile"]=$data["fwkbu_mobile"];
  1186. $data["apaee_name"]="";
  1187. $data["apaee_mobile"]="";
  1188. break;
  1189. case 1:
  1190. $data["biz_catalogName"]="会员基于工作过程对雇主评价";
  1191. $data["apa_biztitle"]=$data["btr_title"];
  1192. $data["apaer_name"]=$data["fwk_truename"];
  1193. $data["apaer_mobile"]=$data["fwkbu_mobile"];
  1194. $data["apaee_name"]=$data["tbt_companyname"];
  1195. $data["apaee_mobile"]=$data["tbtbu_mobile"];
  1196. break;
  1197. case 2:
  1198. $data["biz_catalogName"]="商家基于工作过程对会员评价";
  1199. $data["apa_biztitle"]=$data["btr_title"];
  1200. $data["apaer_name"]=$data["fbt_companyname"];
  1201. $data["apaer_mobile"]=$data["fbtbu_mobile"];
  1202. $data["apaee_name"]=$data["twk_truename"];
  1203. $data["apaee_mobile"]=$data["twkbu_mobile"];
  1204. break;
  1205. }
  1206. }
  1207. $sqlSummary=" select count(*) as count ".$sqlSummaryPre.$sqlBody.$sqlSummaryPost.";";
  1208. $sumData=pdo_fetch($sqlSummary,$sqlParam);
  1209. return array(
  1210. "pageData" => $pageData,
  1211. "count" => intval($sumData["count"]),
  1212. );
  1213. break;
  1214. default:
  1215. throw new GeneralException("","不支持的handleMode!");
  1216. }
  1217. }
  1218. /**********************交互沟通相关逻辑**************************************/
  1219. function bizbase_interactionEntityHandle($subSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC){
  1220. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  1221. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  1222. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL2_MINA) $bizTrader2 = $bizUser;
  1223. switch($handleMode){
  1224. case "fetchLastSuggestion":
  1225. $lastdata = bizbase_interactionLastSuggestion($bizUser);
  1226. if(empty($lastdata)) return false;
  1227. $lastdata["statusName"]=bizbase_interactionStatusName($lastdata["status"]);
  1228. return $lastdata;
  1229. break;
  1230. case "fetchSuggestion":
  1231. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  1232. $sqlTemp="";
  1233. $sqlTemp.=" select ita.*";
  1234. $sqlTemp.=" ,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_truename,wkbu.mobile as wkbu_mobile,wk.profile_photo as wk_profile_photo ";
  1235. $sqlTemp.=" ,bt.company_name as bt_truename,btbu.mobile as btbu_mobile ";
  1236. $sqlTemp.=" ,(select content from biz_interaction_talk where parentid=ita.id and catalog=0 order by id asc limit 1) as ask_content";
  1237. $sqlTemp.=" ,(select picurls from biz_interaction_talk where parentid=ita.id and catalog=0 order by id asc limit 1) as ask_picurls";
  1238. $sqlTemp.=" ,(select content from biz_interaction_talk where parentid=ita.id and catalog=1 order by id asc limit 1) as answer_content";
  1239. $sqlTemp.=" ,(select picurls from biz_interaction_talk where parentid=ita.id and catalog=1 order by id asc limit 1) as answer_picurls";
  1240. $sqlTemp.=" from biz_interaction ita";
  1241. $sqlTemp.=" left join biz_worker wk on wk.id=ita.fromerid ";
  1242. $sqlTemp.=" left join base_user wkbu on wkbu.id=wk.base_userid ";
  1243. $sqlTemp.=" left join biz_trader bt on bt.id=ita.fromerid ";
  1244. $sqlTemp.=" left join base_user btbu on btbu.id=bt.base_userid ";
  1245. $sqlTemp.=" where ita.id=".intval($bizId);
  1246. $datainfo = pdo_fetch($sqlTemp);
  1247. if(empty($datainfo)) throw new GeneralException("","没有定位到记录!");
  1248. if (intval($datainfo["biz_catalog"]) >1) throw new GeneralException("", "当前记录不是意见反馈类别");
  1249. $datainfo["createtime"]=date("Y-m-d H:i:s",$datainfo["createtime"]);
  1250. $datainfo["finishtime"]=date("Y-m-d H:i:s",$datainfo["finishtime"]);
  1251. $datainfo["statusName"]=bizbase_interactionStatusName($datainfo["status"]);
  1252. unset($datainfo["remark"]);
  1253. if(intval($baseUser["subsystem"])==SUBSYS_PLAT_PCWEB){
  1254. $sqlParam=array();
  1255. $sqlParam[":nowtime"]=time();
  1256. $sqlParam[":biz_id"]=intval($datainfo["id"]);
  1257. $sqlTemp ="";
  1258. $sqlTemp.=" set @handle_id=0; ";
  1259. $sqlTemp.=" select @handle_id:=id from biz_interaction where id=:biz_id and ifnull(readed,0)=0 limit 1;";
  1260. $sqlTemp.=" update biz_interaction set `updatetime`=:nowtime,readed=1 where ifnull(@handle_id,0)=0 and id=:biz_id;";
  1261. $dataset = pdo_query3($sqlTemp,$sqlParam);
  1262. }
  1263. return $datainfo;
  1264. break;
  1265. case "submitNewSuggestion":
  1266. if(empty($bizWorker) && empty($bizTrader)) throw new GeneralException("","当前用户类别不正确!");
  1267. $lastdata = bizbase_interactionLastSuggestion($bizUser);
  1268. if(!empty($lastdata) && intval($lastdata["status"])<3) throw new GeneralException("","当前意见反馈还未完结");
  1269. $content = isset($ajaxdata["content"]) ? $ajaxdata["content"] : $GPC["content"];
  1270. if (empty(trim($content))) throw new GeneralException("", "没有传递必要的content参数或内容为空");
  1271. $sqlParam=array(
  1272. ":nowtime"=>time(),
  1273. ":userid"=>$bizUser["id"],
  1274. ":biz_catalog" => (empty($bizTrader) ? 0 : 1),
  1275. ":content"=>$content,
  1276. );
  1277. $sqlTemp="";
  1278. $sqlTemp.=" insert into biz_interaction set createtime=:nowtime, biz_catalog=:biz_catalog, fromerid=:userid, `status`=1;";
  1279. $sqlTemp.=" insert into biz_interaction_talk set createtime=:nowtime ";
  1280. $sqlTemp.=" , parentid=LAST_INSERT_ID(), catalog=0, content=:content; ";
  1281. $backdata = pdo_query($sqlTemp,$sqlParam);
  1282. return $backdata;
  1283. break;
  1284. case "finishSuggestion":
  1285. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  1286. $datainfo = pdo_fetch("select * from biz_interaction where id=" . intval($bizId));
  1287. if(empty($datainfo)) throw new GeneralException("","没有定位到记录!");
  1288. if (intval($datainfo["status"]) != 1) throw new GeneralException("", "当前意见反馈不是待回复状态");
  1289. if (intval($datainfo["biz_catalog"]) >= 2) throw new GeneralException("", "当前记录不是意见反馈类别");
  1290. $replyContent = isset($ajaxdata["replyContent"]) ? $ajaxdata["replyContent"] : $GPC["replyContent"];
  1291. $sqlTemp="";
  1292. $sqlTemp.=" update biz_interaction set updatetime=:nowtime, finishtime=:nowtime, `status`=3, remark=concat(:remark,ifnull(remark,'')) where id=:itaid;";
  1293. $sqlTemp.=" insert into biz_interaction_talk set createtime=:nowtime ";
  1294. $sqlTemp.=" , parentid=:itaid, catalog=1, content=:content; ";
  1295. $backdata = pdo_query($sqlTemp,array(
  1296. ":nowtime"=>time(),":itaid"=>$datainfo["id"],
  1297. ":content"=>$replyContent,":remark"=>"[".date("Y-m-d H:i:s",time())."] 回复后结单 \n"));
  1298. return $backdata;
  1299. break;
  1300. case "deleteSuggestion":
  1301. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  1302. $datainfo = pdo_fetch("select * from biz_interaction where id=" . intval($bizId));
  1303. if(empty($datainfo)) throw new GeneralException("","没有定位到记录!");
  1304. if (intval($datainfo["deleted"]) != 0) throw new GeneralException("", "当前意见反馈已删除了,不能重复删除");
  1305. if (intval($datainfo["status"]) != 3) throw new GeneralException("", "当前意见反馈不是已完结状态,不能删除");
  1306. if (intval($datainfo["biz_catalog"]) >= 2) throw new GeneralException("", "当前记录不是意见反馈类别");
  1307. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  1308. $sqlTemp="";
  1309. $sqlTemp.=" update biz_interaction set updatetime=:nowtime, `deleted`=1, remark=concat(:remark,ifnull(remark,'')) where id=:itaid;";
  1310. $backdata = pdo_query($sqlTemp,array(
  1311. ":nowtime"=>time(),":itaid"=>$datainfo["id"],
  1312. ":remark"=>"[".date("Y-m-d H:i:s",time())."] 删除 {$reason} \n"));
  1313. return $backdata;
  1314. break;
  1315. case "fetchComplaint":
  1316. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  1317. $sqlTemp="";
  1318. $sqlTemp.=" select ita.*";
  1319. $sqlTemp.=" ,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_truename,wkbu.mobile as wkbu_mobile,wk.profile_photo as wk_profile_photo ";
  1320. $sqlTemp.=" ,bt.company_name as bt_truename,btbu.mobile as btbu_mobile ";
  1321. $sqlTemp.=" ,btr.title as btr_title ";
  1322. $sqlTemp.=" ,(select content from biz_interaction_talk where parentid=ita.id and catalog=0 order by id asc limit 1) as ask_content";
  1323. $sqlTemp.=" ,(select picurls from biz_interaction_talk where parentid=ita.id and catalog=0 order by id asc limit 1) as ask_picurls";
  1324. $sqlTemp.=" ,(select content from biz_interaction_talk where parentid=ita.id and catalog=1 order by id asc limit 1) as answer_content";
  1325. $sqlTemp.=" ,(select picurls from biz_interaction_talk where parentid=ita.id and catalog=1 order by id asc limit 1) as answer_picurls";
  1326. $sqlTemp.=" from biz_interaction ita ";
  1327. $sqlTemp.=" left join biz_worker wk on wk.id=ita.fromerid ";
  1328. $sqlTemp.=" left join base_user wkbu on wkbu.id=wk.base_userid ";
  1329. $sqlTemp.=" left join biz_trader bt on ita.biz_catalog>=2 and bt.id=ita.objectid ";
  1330. $sqlTemp.=" left join base_user btbu on ita.biz_catalog>=2 and btbu.id=bt.base_userid ";
  1331. $sqlTemp.=" left join biz_todowork tdwk on ita.biz_catalog>=2 and tdwk.id=ita.biz_id";
  1332. $sqlTemp.=" left join biz_trader_recruit btr on ita.biz_catalog>=2 and (btr.id=tdwk.biz_recruitid or btr.id=ita.biz_id)";
  1333. $sqlTemp.=" where ita.id=".intval($bizId);
  1334. $datainfo = pdo_fetch($sqlTemp);
  1335. if(empty($datainfo)) throw new GeneralException("","没有定位到记录!");
  1336. if (intval($datainfo["biz_catalog"]) <2) throw new GeneralException("", "当前记录不是投诉类别");
  1337. if (!empty($bizWorker) && intval($datainfo["fromerid"]) !=intval($bizWorker["id"])) throw new GeneralException("", "当前记录不是您发起的");
  1338. $datainfo["createtime"]=date("Y-m-d H:i:s",$datainfo["createtime"]);
  1339. $datainfo["finishtime"]=date("Y-m-d H:i:s",$datainfo["finishtime"]);
  1340. $datainfo["statusName"]=bizbase_interactionStatusName($datainfo["status"]);
  1341. unset($datainfo["remark"]);
  1342. if(intval($baseUser["subsystem"])==SUBSYS_PLAT_PCWEB){
  1343. $sqlParam=array();
  1344. $sqlParam[":nowtime"]=time();
  1345. $sqlParam[":biz_id"]=intval($datainfo["id"]);
  1346. $sqlTemp ="";
  1347. $sqlTemp.=" set @handle_id=0; ";
  1348. $sqlTemp.=" select @handle_id:=id from biz_interaction where id=:biz_id and ifnull(readed,0)=0 limit 1;";
  1349. $sqlTemp.=" update biz_interaction set `updatetime`=:nowtime,readed=1 where ifnull(@handle_id,0)=0 and id=:biz_id;";
  1350. $dataset = pdo_query3($sqlTemp,$sqlParam);
  1351. }
  1352. return $datainfo;
  1353. break;
  1354. case "submitNewComplaint":
  1355. $content = isset($ajaxdata["content"]) ? $ajaxdata["content"] : $GPC["content"];
  1356. if (empty(trim($content))) throw new GeneralException("", "没有传递必要的content参数或内容为空");
  1357. $sqlParam=array();
  1358. $sqlParam[":nowtime"]=time();
  1359. $sqlParam[":workerid"]=$bizWorker["id"];
  1360. $sqlParam[":content"]=$content;
  1361. $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  1362. if(intval($workId)>0){
  1363. $workInfo = pdo_fetch("select tdwk.*
  1364. ,btr.biz_traderid, btr.feetotal as pay_feetotal
  1365. from biz_todowork tdwk
  1366. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  1367. where tdwk.id=" . intval($workId));
  1368. if (empty($workInfo)) throw new GeneralException("", "订单id没有对应的记录,请核查!");
  1369. if (intval($workInfo["biz_traderid"])<=0) throw new GeneralException("", "订单id没有对应的商家记录,请核查!");
  1370. $sqlParam[":biz_catalog"]=3;
  1371. $sqlParam[":biz_id"]=intval($workId);
  1372. $sqlParam[":objectid"]=intval($workInfo["biz_traderid"]);
  1373. $lastData = pdo_fetch("select * from biz_interaction
  1374. where fromerid=:workerid and biz_catalog=:biz_catalog and `biz_id`=:biz_id and `objectid`=:objectid
  1375. order by id desc limit 1",array(
  1376. ":workerid"=>$sqlParam[":workerid"],
  1377. ":biz_catalog"=>$sqlParam[":biz_catalog"],
  1378. ":biz_id"=>$sqlParam[":biz_id"],
  1379. ":objectid"=>$sqlParam[":objectid"],
  1380. ));
  1381. if (!empty($lastData) && intval($lastData["status"])<3) throw new GeneralException("waitSettle", "此订单的投诉还未处理,请等待处理后再提交新的投诉吧!");
  1382. }else{
  1383. bizbase_verifyUserAccount($bizWorker, true, "无法投诉");
  1384. $recuritid = isset($ajaxdata["recuritid"]) ? $ajaxdata["recuritid"] : $GPC["recuritid"];
  1385. if(intval($recuritid)<=0) throw new GeneralException("", "没有传递必要的workid/recuritid参数或值为空");
  1386. $recuritInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recuritid));
  1387. if (empty($recuritInfo)) throw new GeneralException("", "招聘id没有对应的记录,请核查!");
  1388. if (intval($recuritInfo["biz_traderid"])<=0) throw new GeneralException("", "招聘id没有对应的商家记录,请核查!");
  1389. $sqlParam[":biz_catalog"]=2;
  1390. $sqlParam[":biz_id"]=intval($recuritid);
  1391. $sqlParam[":objectid"]=intval($recuritInfo["biz_traderid"]);
  1392. $lastData = pdo_fetch("select * from biz_interaction
  1393. where fromerid=:workerid and biz_catalog=:biz_catalog and `biz_id`=:biz_id and `objectid`=:objectid
  1394. order by id desc limit 1",array(
  1395. ":workerid"=>$sqlParam[":workerid"],
  1396. ":biz_catalog"=>$sqlParam[":biz_catalog"],
  1397. ":biz_id"=>$sqlParam[":biz_id"],
  1398. ":objectid"=>$sqlParam[":objectid"],
  1399. ));
  1400. if (!empty($lastData) && intval($lastData["status"])<3) throw new GeneralException("waitSettle", "此招聘的投诉还未处理,请等待处理后再提交新的投诉吧!");
  1401. }
  1402. $sqlTemp="";
  1403. $sqlTemp.=" insert into biz_interaction set createtime=:nowtime";
  1404. $sqlTemp.=" ,biz_catalog=:biz_catalog, `biz_id`=:biz_id ";
  1405. $sqlTemp.=" ,fromerid=:workerid, objectid=:objectid, `status`=1; ";
  1406. $sqlTemp.=" insert into biz_interaction_talk set createtime=:nowtime ";
  1407. $sqlTemp.=" ,parentid=LAST_INSERT_ID(), catalog=0, content=:content; ";
  1408. $backdata = pdo_query($sqlTemp, $sqlParam);
  1409. return $backdata;
  1410. break;
  1411. case "finishComplaint":
  1412. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  1413. $datainfo = pdo_fetch("select * from biz_interaction where id=" . intval($bizId));
  1414. if(empty($datainfo)) throw new GeneralException("","没有定位到记录!");
  1415. if (intval($datainfo["status"]) != 1) throw new GeneralException("", "当前投诉记录不是待回复状态");
  1416. if (intval($datainfo["biz_catalog"]) <2) throw new GeneralException("", "当前记录不是投诉类别");
  1417. $replyContent = isset($ajaxdata["replyContent"]) ? $ajaxdata["replyContent"] : $GPC["replyContent"];
  1418. $sqlTemp="";
  1419. $sqlTemp.=" update biz_interaction set updatetime=:nowtime, finishtime=:nowtime, `status`=3, remark=concat(:remark,ifnull(remark,'')) where id=:itaid;";
  1420. $sqlTemp.=" insert into biz_interaction_talk set createtime=:nowtime ";
  1421. $sqlTemp.=" , parentid=:itaid, catalog=1, content=:content; ";
  1422. $backdata = pdo_query($sqlTemp,array(
  1423. ":nowtime"=>time(),":itaid"=>$datainfo["id"],
  1424. ":content"=>$replyContent,":remark"=>"[".date("Y-m-d H:i:s",time())."] 回复后结单 \n"));
  1425. return $backdata;
  1426. break;
  1427. case "deleteComplaint":
  1428. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  1429. $datainfo = pdo_fetch("select * from biz_interaction where id=" . intval($bizId));
  1430. if(empty($datainfo)) throw new GeneralException("","没有定位到记录!");
  1431. if (intval($datainfo["deleted"]) != 0) throw new GeneralException("", "当前投诉记录已删除了,不能重复删除");
  1432. if (intval($datainfo["status"]) != 3) throw new GeneralException("", "当前投诉记录不是已完结状态,不能删除");
  1433. if (intval($datainfo["biz_catalog"]) <2) throw new GeneralException("", "当前记录不是投诉类别");
  1434. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  1435. $sqlTemp="";
  1436. $sqlTemp.=" update biz_interaction set updatetime=:nowtime, `deleted`=1, remark=concat(:remark,ifnull(remark,'')) where id=:itaid;";
  1437. $backdata = pdo_query($sqlTemp,array(
  1438. ":nowtime"=>time(),":itaid"=>$datainfo["id"],
  1439. ":remark"=>"[".date("Y-m-d H:i:s",time())."] 删除 {$reason} \n"));
  1440. return $backdata;
  1441. break;
  1442. default:
  1443. throw new GeneralException("","不支持的handleMode!");
  1444. }
  1445. }
  1446. function bizbase_interactionStatusName($status){
  1447. $statusName="";
  1448. switch(intval($status)){
  1449. case 0:
  1450. $statusName="待提交草稿";
  1451. break;
  1452. case 1:
  1453. $statusName="已提交待回复";
  1454. break;
  1455. case 2:
  1456. $statusName="已回复待继续咨询";
  1457. break;
  1458. case 3:
  1459. $statusName="已结束会话待发起者评价";
  1460. break;
  1461. case 4:
  1462. $statusName="发起者评价待处理者评价";
  1463. break;
  1464. case 5:
  1465. $statusName="处理者已评价结单";
  1466. break;
  1467. }
  1468. return $statusName;
  1469. }
  1470. function bizbase_interactionLastSuggestion($bizWorkerTrader){
  1471. $sqlParam=array();
  1472. switch(intval($bizWorkerTrader["subsystem"])){
  1473. case SUBSYS_LABOUR_MINA:
  1474. $sqlParam[":biz_catalog"]=0;
  1475. $sqlParam[":userid"]=$bizWorkerTrader["id"];
  1476. break;
  1477. case SUBSYS_CAPITAL_MINA:
  1478. $sqlParam[":biz_catalog"]=1;
  1479. $sqlParam[":userid"]=$bizWorkerTrader["id"];
  1480. break;
  1481. default:throw new GeneralException("","不支持的subsystem!");
  1482. }
  1483. $sqlTemp="";
  1484. $sqlTemp.=" select *";
  1485. $sqlTemp.=" ,(select content from biz_interaction_talk where parentid=ita.id and catalog=0 order by id asc limit 1) as ask_content";
  1486. $sqlTemp.=" ,(select picurls from biz_interaction_talk where parentid=ita.id and catalog=0 order by id asc limit 1) as ask_picurls";
  1487. $sqlTemp.=" ,(select content from biz_interaction_talk where parentid=ita.id and catalog=1 order by id asc limit 1) as answer_content";
  1488. $sqlTemp.=" ,(select picurls from biz_interaction_talk where parentid=ita.id and catalog=1 order by id asc limit 1) as answer_picurls";
  1489. $sqlTemp.=" from biz_interaction ita";
  1490. $sqlTemp.=" where ita.biz_catalog=:biz_catalog and ita.fromerid=:userid";
  1491. $sqlTemp.=" order by ita.id desc ";
  1492. $sqlTemp.=" limit 1 ";
  1493. $lastdata = pdo_fetch($sqlTemp, $sqlParam);
  1494. return $lastdata;
  1495. }
  1496. function bizbase_interactionAboutQuery($subSystem, $baseUser, $bizUser,$handleMode,$pageIndex,$pageSize,$ajaxdata, $GPC){
  1497. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  1498. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  1499. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL2_MINA) $bizTrader2 = $bizUser;
  1500. switch($handleMode){
  1501. case "fetchallSuggestion":
  1502. case "fetchallComplaint":
  1503. $sqlParam=array();
  1504. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  1505. if (empty($query) && !is_array($query)){//验证一下query信息集
  1506. $query=" and 1=1 ";
  1507. }else{
  1508. $queryNew=" and 1=1 ";
  1509. foreach($query as $fdName=>$fdValue){
  1510. if(empty($fdName) || empty($fdValue)) continue;
  1511. switch($fdName){
  1512. case "catalog":
  1513. switch(intval($fdValue)){
  1514. case 1:
  1515. $queryNew .=" and ita.`status`<3 ";
  1516. break;
  1517. case 2:
  1518. $queryNew .=" and ita.`status`>=3 ";
  1519. break;
  1520. }
  1521. break;
  1522. case "memberName":
  1523. $paramName = ":qy_memberName";
  1524. $queryNew .=" and (wk.true_name like concat('%',{$paramName},'%') or wk.nickname like concat('%',{$paramName},'%')) ";
  1525. $sqlParam[$paramName] = $fdValue;
  1526. break;
  1527. case "traderName":
  1528. $paramName = ":qy_traderName";
  1529. $queryNew .=" and (bt.company_name like concat('%',{$paramName},'%')) ";
  1530. $sqlParam[$paramName] = $fdValue;
  1531. break;
  1532. case "biz_catalog":
  1533. $queryNew .=" and ita.`biz_catalog` =".(int)$fdValue;
  1534. break;
  1535. }
  1536. }
  1537. $query=$queryNew;
  1538. }
  1539. if(!empty($bizWorker)){
  1540. $query .= " and ita.fromerid=" . intval($bizWorker["id"]) . " ";
  1541. }
  1542. if(!empty($bizTrader)){
  1543. $query .= " and ita.fromerid=" . intval($bizTrader["id"]) . " ";
  1544. }
  1545. switch($handleMode){
  1546. case "fetchallSuggestion":
  1547. $query .= " and ita.biz_catalog<2 ";
  1548. break;
  1549. case "fetchallComplaint":
  1550. $query .= " and ita.biz_catalog>=2 ";
  1551. break;
  1552. }
  1553. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  1554. switch(intval($orderby)){
  1555. default://创建时间倒序
  1556. $orderby=" order by ita.id desc ";
  1557. break;
  1558. }
  1559. $sqlBody="";
  1560. $sqlBody.=" from biz_interaction ita ";
  1561. $sqlBody.=" left join biz_worker wk on wk.id=ita.fromerid ";
  1562. $sqlBody.=" left join base_user wkbu on wkbu.id=wk.base_userid ";
  1563. $sqlBody.=" left join biz_trader bt0 on bt0.id=ita.fromerid ";
  1564. $sqlBody.=" left join base_user btbu0 on btbu0.id=bt0.base_userid ";
  1565. $sqlBody.=" left join biz_trader bt on ita.biz_catalog>=2 and bt.id=ita.objectid ";
  1566. $sqlBody.=" left join base_user btbu on ita.biz_catalog>=2 and btbu.id=bt.base_userid ";
  1567. $sqlBody.=" left join biz_todowork tdwk on ita.biz_catalog>=2 and tdwk.id=ita.biz_id";
  1568. $sqlBody.=" left join biz_trader_recruit btr on ita.biz_catalog>=2 and (btr.id=tdwk.biz_recruitid or btr.id=ita.biz_id)";
  1569. $sqlBody.=" where ita.`deleted`=0 ".$query;
  1570. //查询sql及统计sql
  1571. $start = (intval($pageIndex) - 1) * $pageSize;
  1572. $sqlFetch =" select ita.* ";
  1573. $sqlFetch.=" ,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_truename,wkbu.mobile as wkbu_mobile ";
  1574. $sqlFetch.=" ,bt0.company_name as bt0_truename,btbu0.mobile as btbu0_mobile ";
  1575. $sqlFetch.=" ,bt.company_name as bt_truename,btbu.mobile as btbu_mobile ";
  1576. $sqlFetch.=" ,btr.title as btr_title ";
  1577. $sqlFetch.=" ,(select content from biz_interaction_talk where parentid=ita.id and catalog=0 order by id asc limit 1) as ask_content";
  1578. $sqlFetch.=" ,(select picurls from biz_interaction_talk where parentid=ita.id and catalog=0 order by id asc limit 1) as ask_picurls";
  1579. $sqlFetch.=" ,(select content from biz_interaction_talk where parentid=ita.id and catalog=1 order by id asc limit 1) as answer_content";
  1580. $sqlFetch.=" ,(select picurls from biz_interaction_talk where parentid=ita.id and catalog=1 order by id asc limit 1) as answer_picurls";
  1581. $sqlFetch.=" {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  1582. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  1583. foreach($pageData as &$data){//数据转换/映射
  1584. $data["pasttimeTips"]=bizbase_pasttimeTips($data["createtime"]);
  1585. $data["createtime"]=date("Y-m-d H:i:s",$data["createtime"]);
  1586. $data["finishtime"]=date("Y-m-d H:i:s",$data["finishtime"]);
  1587. $data["statusName"]=bizbase_interactionStatusName($data["status"]);
  1588. unset($data["remark"]);
  1589. }
  1590. $sqlSummary=" select count(*) as count ".$sqlBody.";";
  1591. $sumData=pdo_fetch($sqlSummary,$sqlParam);
  1592. return array(
  1593. "pageData" => $pageData,
  1594. "count" => intval($sumData["count"]),
  1595. );
  1596. break;
  1597. default:
  1598. throw new GeneralException("","不支持的handleMode!");
  1599. }
  1600. }
  1601. /**********************综合统计相关逻辑**************************************/
  1602. function bizbase_statisticsEntityHandle($subSystem, $handleMode, $baseUser, $bizUser, $ajaxdata, $GPC){
  1603. if(intval($baseUser["subsystem"])==SUBSYS_LABOUR_MINA) $bizWorker = $bizUser;
  1604. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL_MINA) $bizTrader = $bizUser;
  1605. if(intval($baseUser["subsystem"])==SUBSYS_CAPITAL2_MINA) $bizTrader2 = $bizUser;
  1606. switch($handleMode){
  1607. case "fetchUndoList":
  1608. $backdata=bizPlater_undoList();
  1609. return $backdata;
  1610. break;
  1611. case "fetchallByPlater":
  1612. case "fetchmoneyByPlater":
  1613. case "fetchmemberByPlater":
  1614. $qstartDate = isset($ajaxdata["startDate"]) ? $ajaxdata["startDate"] : $GPC["startDate"];
  1615. $qendDate = isset($ajaxdata["endDate"]) ? $ajaxdata["endDate"] : $GPC["endDate"];
  1616. $qstartDate=strtotime($qstartDate);
  1617. $qendDate=strtotime($qendDate);
  1618. $qendDate=$qendDate>0?$qendDate:39506057756;
  1619. //-------------------------------------------------
  1620. $monthFirstDate = strtotime(date("Y-m-01",time()));
  1621. $monthLastDate = strtotime("+1 month -1 day",$monthFirstDate);
  1622. $todayStart = strtotime(date("Y-m-d",time()));
  1623. $todayFinish = strtotime(date("Y-m-d 23:59:59",time()));
  1624. $yestodayStart =strtotime("-1 day",strtotime(date("Y-m-d",time())));
  1625. $yestodayFinish = strtotime(date("Y-m-d 23:59:59",$yestodayStart));
  1626. $backdata=array();
  1627. if ($handleMode != "fetchmoneyByPlater") {
  1628. $backdata["trader_total"]=pdo_fetchcolumn("select count(*) from biz_trader where deleted=0;");
  1629. $backdata["worker_total"]=pdo_fetchcolumn("select count(*) from biz_worker where deleted=0;");
  1630. $backdata["worker_trace_total"]=pdo_fetchcolumn("select ifnull(count(*),0) from biz_worker_trace where deleted=0;");
  1631. $backdata["worker_month_total"]=pdo_fetchcolumn("select count(*) from biz_worker
  1632. where deleted=0 and createtime>=:month1 and createtime<=:month2",array(
  1633. ":month1"=>$monthFirstDate,
  1634. ":month2"=>$monthLastDate,
  1635. ));
  1636. $backdata["worker_today_total"]=pdo_fetchcolumn("select count(*) from biz_worker
  1637. where deleted=0 and createtime>=:today1 and createtime<=:today2",array(
  1638. ":today1"=>$todayStart,
  1639. ":today2"=>$todayFinish,
  1640. ));
  1641. $backdata["trader_total_query"]=pdo_fetchcolumn("select count(*) from biz_trader
  1642. where deleted=0 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1643. ":qstartDate"=>$qstartDate,
  1644. ":qendDate"=>$qendDate,
  1645. ));
  1646. $backdata["worker_total_query"]=pdo_fetchcolumn("select count(*) from biz_worker
  1647. where deleted=0 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1648. ":qstartDate"=>$qstartDate,
  1649. ":qendDate"=>$qendDate,
  1650. ));
  1651. $backdata["recruit_total_query1"]=pdo_fetchcolumn("select count(*) from biz_trader_recruit
  1652. where deleted=0 and `status`>=0 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1653. ":qstartDate"=>$qstartDate,
  1654. ":qendDate"=>$qendDate,
  1655. ));
  1656. $backdata["recruit_total_query2"]=pdo_fetchcolumn("select count(*) from biz_trader_recruit
  1657. where deleted=0 and `status`>=2 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1658. ":qstartDate"=>$qstartDate,
  1659. ":qendDate"=>$qendDate,
  1660. ));
  1661. $backdata["need_total_query"]=pdo_fetchcolumn("select sum(need_total) from biz_trader_recruit
  1662. where deleted=0 and `status`>=0 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1663. ":qstartDate"=>$qstartDate,
  1664. ":qendDate"=>$qendDate,
  1665. ));
  1666. $backdata["wkrefuse_total_query"]=pdo_fetchcolumn("select count(*) from biz_todowork
  1667. where deleted=0 and `status`=-1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1668. ":qstartDate"=>$qstartDate,
  1669. ":qendDate"=>$qendDate,
  1670. ));
  1671. $backdata["wkenroll_total_query"]=pdo_fetchcolumn("select count(*) from biz_todowork
  1672. where deleted=0 and `status`>=0 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1673. ":qstartDate"=>$qstartDate,
  1674. ":qendDate"=>$qendDate,
  1675. ));
  1676. $backdata["wkpass_total_query"]=pdo_fetchcolumn("select count(*) from biz_todowork
  1677. where deleted=0 and `status`>=2 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1678. ":qstartDate"=>$qstartDate,
  1679. ":qendDate"=>$qendDate,
  1680. ));
  1681. $backdata["wkexcept_total_query"]=pdo_fetchcolumn("select count(*) from biz_todowork
  1682. where deleted=0 and `status`<0 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1683. ":qstartDate"=>$qstartDate,
  1684. ":qendDate"=>$qendDate,
  1685. ));
  1686. $backdata["wkfinish_total_query"]=pdo_fetchcolumn("select count(*) from biz_todowork
  1687. where deleted=0 and `status`=5 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1688. ":qstartDate"=>$qstartDate,
  1689. ":qendDate"=>$qendDate,
  1690. ));
  1691. }
  1692. if ($handleMode != "fetchmoneyByPlater") {//--------moneyAbout-----------------------------
  1693. $backdata["number_income_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_trader_numaccount
  1694. where deleted=0 and `type`=0 and biz_catalog=0 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1695. ":qstartDate"=>$qstartDate,
  1696. ":qendDate"=>$qendDate,
  1697. ));
  1698. $backdata["activity_income_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_worker_account
  1699. where deleted=0 and `type`=1 and biz_catalog=1 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1700. ":qstartDate"=>$qstartDate,
  1701. ":qendDate"=>$qendDate,
  1702. ));
  1703. $backdata["work_income_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_trader_account
  1704. where deleted=9 and `type`=1 and biz_catalog>=1 and biz_catalog<=3 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1705. ":qstartDate"=>$qstartDate,
  1706. ":qendDate"=>$qendDate,
  1707. ));
  1708. $backdata["share_outgo_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_trader_account
  1709. where deleted=9 and `type`=1 and biz_catalog=2 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1710. ":qstartDate"=>$qstartDate,
  1711. ":qendDate"=>$qendDate,
  1712. ));
  1713. $backdata["salary_outgo_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_trader_account
  1714. where deleted=9 and `type`=1 and biz_catalog=3 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1715. ":qstartDate"=>$qstartDate,
  1716. ":qendDate"=>$qendDate,
  1717. ));
  1718. $backdata["plat_agentpay_total_query"]=round(pdo_fetchcolumn("select ifnull(sum(money),0) from biz_trader_account
  1719. where deleted=0 and `type`=1 and biz_catalog=7 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1720. ":qstartDate"=>$qstartDate,
  1721. ":qendDate"=>$qendDate,
  1722. )),2);
  1723. $backdata["plat_workincome_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_trader_account
  1724. where deleted=9 and `type`=1 and biz_catalog=1 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1725. ":qstartDate"=>$qstartDate,
  1726. ":qendDate"=>$qendDate,
  1727. ));
  1728. $backdata["worker_income_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_worker_account
  1729. where deleted=0 and `type`=0 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1730. ":qstartDate"=>$qstartDate,
  1731. ":qendDate"=>$qendDate,
  1732. ));
  1733. $backdata["worker_outgo_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_worker_account
  1734. where deleted=0 and `type`=1 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1735. ":qstartDate"=>$qstartDate,
  1736. ":qendDate"=>$qendDate,
  1737. ));
  1738. $backdata["worker_balance_total_query"]=round(floatval($backdata["worker_income_total_query"])-floatval($backdata["worker_outgo_total_query"]),2);
  1739. $backdata["worker_withdraw_total_query"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_worker_account
  1740. where deleted=0 and `type`=1 and biz_catalog=0 and `status`>=1 and createtime>=:qstartDate and createtime<=:qendDate",array(
  1741. ":qstartDate"=>$qstartDate,
  1742. ":qendDate"=>$qendDate,
  1743. ));
  1744. $backdata["worker_income_total"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_worker_account
  1745. where deleted=0 and `type`=0 and `status`>=1",array());
  1746. $backdata["worker_outgo_total"]=pdo_fetchcolumn("select ifnull(sum(money),0) from biz_worker_account
  1747. where deleted=0 and `type`=1 and `status`>=1 ",array());
  1748. $backdata["worker_balance_total"]=round(floatval($backdata["worker_income_total"])-floatval($backdata["worker_outgo_total"]),2);
  1749. $backdata["trader_debt2plat_total_query"]=round(pdo_fetchcolumn("select
  1750. ifnull(sum(case when debt>0 then debt else 0 end),0) as debt from
  1751. (select ifnull(sum(case when `type`=1 then money when `type`=0 then -money else 0 end),0) as debt from biz_trader_account
  1752. where deleted=0 and `status`>=1 and biz_roletype=0 and createtime>=:qstartDate and createtime<=:qendDate
  1753. group by biz_traderid) as temp
  1754. ",array(
  1755. ":qstartDate"=>$qstartDate,
  1756. ":qendDate"=>$qendDate,
  1757. )),2);
  1758. $backdata["plat_income_total_query"]=round($backdata["plat_workincome_total_query"]+$backdata["number_income_total_query"]+$backdata["activity_income_total_query"],2);
  1759. $backdata["plat_outgo_total_query"]=$backdata["trader_debt2plat_total_query"];
  1760. $backdata["plat_balance_total_query"]=round($backdata["plat_income_total_query"]-$backdata["plat_outgo_total_query"],2);
  1761. }
  1762. if($handleMode == "fetchallByPlater"){
  1763. $outSql=" select sum(ifnull(money,0)) as total";
  1764. $outSql.=" from biz_trader_account ";
  1765. $outSql.=" where biz_roletype = 0 and type = 1 and deleted = 0 and status= 1 and biz_catalog=8";
  1766. $shopOutlist = pdo_fetchall($outSql, array()); //冻结工单费用
  1767. $frozenSql=" select sum(ifnull(money,0)) as total ";
  1768. $frozenSql.=" from biz_trader_account ";
  1769. $frozenSql.=" where biz_roletype = 0 and type = 0 and deleted=0 and status=1 and biz_catalog = 6";
  1770. $shopFrozenIn = pdo_fetchall($frozenSql, array());//工单费用解冻
  1771. $shopFrozenBalance=round(floatval($shopOutlist[0]["total"]), 2)-round(floatval($shopFrozenIn[0]["total"]), 2);//商户冻结余额,即当前实际冻结的金额
  1772. $userOut=" select sum(ifnull(money,0)) as total ";
  1773. $userOut.=" from biz_worker_account ";
  1774. $userOut.=" where deleted=0 and `status`=1 and type=0";
  1775. $userOutList = pdo_fetchall($userOut, array());
  1776. $userFrozenSql =" select sum(ifnull(money,0)) as total ";
  1777. $userFrozenSql.=" from biz_worker_account ";
  1778. $userFrozenSql.=" where deleted=0 and `status`=1 and type=1";
  1779. $userFrozenIn = pdo_fetchall($userFrozenSql, array());
  1780. $userFrozenBalance=round(floatval($userOutList[0]["total"]), 2)-round(floatval($userFrozenIn[0]["total"]), 2);//用户冻结余额,即当前实际冻结的金额
  1781. // 商户总共支付会员---总金额
  1782. $sumSql ="select sum(ifnull(money,0)) as total from biz_trader_account where (deleted=9 or deleted=0) and `status`=1 and type=1 and biz_catalog = 3";
  1783. $sumPay = pdo_fetchall($sumSql, array());
  1784. $sumPay = round(floatval($sumPay[0]["total"]), 2);
  1785. // 平台收益
  1786. $adminSql =" select sum(ifnull(money,0)) as total ";
  1787. $adminSql.=" from biz_worker_account ";
  1788. $adminSql.=" where (deleted=9 or deleted=0) and `status`=1 and type=1 and biz_catalog = 1";
  1789. $adminSql = pdo_fetchall($adminSql, array());
  1790. $adminSum = round(floatval($adminSql[0]["total"]), 2);
  1791. // 未提现金额:所有会员&商家的账户余额(即待提现金额)的总和
  1792. $shop_sum_sql =" select type,money as total ";
  1793. $shop_sum_sql.=" from biz_trader_account ";
  1794. $shop_sum_sql.=" where biz_roletype=0 and `deleted`=0 and `status`=1";
  1795. $totalList = pdo_fetchall($shop_sum_sql, array());
  1796. $income=0.0;
  1797. $outgoing=0.0;
  1798. foreach($totalList as $item){
  1799. switch(intval($item["type"])){
  1800. case 0://收入
  1801. $income += round(floatval($item["total"]), 2);
  1802. break;
  1803. case 1://支出
  1804. $outgoing += round(floatval($item["total"]), 2);
  1805. break;
  1806. }
  1807. }
  1808. $shopBalance = round(floatval($income - $outgoing),2);
  1809. $user_sum_sql =" select type,money as total ";
  1810. $user_sum_sql.=" from biz_worker_account ";
  1811. $user_sum_sql.=" where deleted=0 and `status`=1 ";
  1812. $totalList = pdo_fetchall($user_sum_sql, array());
  1813. $user_income=0.0;
  1814. $user_outgoing=0.0;
  1815. foreach($totalList as $item){
  1816. switch(intval($item["type"])){
  1817. case 0://收入
  1818. $user_income += round(floatval($item["total"]), 2);
  1819. break;
  1820. case 1://支出
  1821. $user_outgoing = round(floatval($item["total"]), 2);
  1822. break;
  1823. }
  1824. }
  1825. $userBalance = round($user_income - $user_outgoing,2);
  1826. $sum = $shopBalance + $userBalance;
  1827. $newSum = [
  1828. 'shopFrozenBalance'=>round($shopFrozenBalance,2) ,
  1829. 'userFrozenBalance'=>round($userFrozenBalance,2) ,
  1830. 'sumPay'=>round($sumPay,2) ,
  1831. 'adminSum'=>round($adminSum,2) ,
  1832. 'remaining_sum'=> round($sum,2)
  1833. ];
  1834. $backdata['newSum'] = $newSum;
  1835. }
  1836. return $backdata;
  1837. break;
  1838. default:
  1839. throw new GeneralException("","不支持的handleMode!");
  1840. }
  1841. }