AboutWorker.php 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967
  1. <?php
  2. defined('ONLY_ONLY_ONLY') or exit('Access Denied');
  3. /*****************劳方以自身劳动获取收益的人相关******************/
  4. function bizWorker_verifyToken()
  5. {
  6. $subSystem = intval(SUBSYS_LABOUR_MINA);
  7. $GPC = input_param_handle(false);
  8. $ajaxdata = input_getPostObj();
  9. $phone = isset($ajaxdata["phone"]) ? $ajaxdata["phone"] : $GPC["phone"];
  10. //这里是测试
  11. // $phone="18602638946";
  12. // $subSystem=1;
  13. if (empty($phone)) {
  14. throw new GeneralException("", "没有传递必要的phone参数");
  15. }
  16. $baseUser = pdo_fetch("select * from base_user where subsystem=:subsystem and `mobile`=:mobile limit 1;", array(
  17. ":subsystem" => intval($subSystem),
  18. ":mobile" => trim($phone),
  19. ));
  20. if (empty($baseUser)) {
  21. throw new GeneralException("", "没有定位到此phone的登录用户记录!");
  22. }
  23. $bizWorker = pdo_fetch("select wk.*,bu.id as buid,bu.mobile,bu.subsystem
  24. from biz_worker wk
  25. left join base_user bu on bu.id=wk.base_userid
  26. where wk.base_userid=:base_userid limit 1;", array(":base_userid" => $baseUser["id"]));
  27. if (empty($bizWorker)) {
  28. throw new GeneralException("", "没有定位到此phone的业务用户记录!");
  29. }
  30. base_verifyForendToken($baseUser); //前端会话TOKEN校验
  31. return array("baseUser" => $baseUser, "bizWorker" => $bizWorker);
  32. }
  33. function bizbase_workerIdCardCheck($ajaxdata, $GPC)
  34. {
  35. $trueName = isset($ajaxdata["trueName"]) ? $ajaxdata["trueName"] : $GPC["trueName"];
  36. $idCard = isset($ajaxdata["idCard"]) ? $ajaxdata["idCard"] : $GPC["idCard"];
  37. if (empty($bizTrader)) {
  38. throw new GeneralException("", "没有以商家身份登录,请核查!");
  39. }
  40. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  41. txcloud_idcardCheck($trueName, $idCard);
  42. $sqlParam = array();
  43. $sqlParam[":nowtime"] = time();
  44. $sqlParam[":traderId"] = intval($bizTrader["id"]);
  45. $sqlParam[":lawer_name"] = $trueName;
  46. $sqlParam[":lawer_idcard"] = $idCard;
  47. $sqlParam[":linker_gender"] = ((intval(mb_substr($idCard, 17, 1)) % 2) <= 0 ? 1 : 0);
  48. $sqlParam[":linker_birthday"] = strtotime(mb_substr($idCard, 6, 4) . "-" . mb_substr($idCard, 10, 2) . "-" . mb_substr($idCard, 12, 2));
  49. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 实名认证 \n";
  50. $sqlTemp = "";
  51. $sqlTemp .= " update biz_trader set updatetime=:nowtime ";
  52. $sqlTemp .= " ,lawer_name=:lawer_name,lawer_idcard=:lawer_idcard ";
  53. $sqlTemp .= " ,linker_gender=:linker_gender,linker_birthday=:linker_birthday ";
  54. $sqlTemp .= " ,remark=concat(:remark,ifnull(remark,'')) ";
  55. $sqlTemp .= " where id =:traderId;";
  56. $backdata = pdo_query3($sqlTemp, $sqlParam);
  57. return $backdata;
  58. }
  59. function bizbase_workerAccountInfo($bizWorker)
  60. {
  61. $sqlTemp = "";
  62. $sqlTemp .= " select type,sum(ifnull(money,0)) as total ";
  63. $sqlTemp .= " from biz_worker_account ";
  64. $sqlTemp .= " where deleted=0 and `status`=1 and biz_workerid=" . intval($bizWorker["id"]);
  65. $sqlTemp .= " group by type";
  66. $totalList = pdo_fetchall($sqlTemp, array());
  67. $income = 0.0;
  68. $outgoing = 0.0;
  69. foreach ($totalList as $item) {
  70. switch (intval($item["type"])) {
  71. case 0: //收入
  72. $income = round(floatval($item["total"]), 2);
  73. break;
  74. case 1: //支出
  75. $outgoing = round(floatval($item["total"]), 2);
  76. break;
  77. }
  78. }
  79. $frozenIn = 0.0; //解冻总额
  80. $frozenOut = 0.0; //冻结总额
  81. $frozenBalance = 0.0; //冻结余额,即当前实际冻结的金额
  82. //支出统计
  83. $sqlTemp = "";
  84. $sqlTemp .= " select biz_catalog,sum(ifnull(money,0)) as total ";
  85. $sqlTemp .= " from biz_worker_account ";
  86. $sqlTemp .= " where deleted=0 and `status`=1 and biz_workerid=" . intval($bizWorker["id"]) . " and type=1 ";
  87. $sqlTemp .= " group by biz_catalog ";
  88. $outlist = pdo_fetchall($sqlTemp, array());
  89. $withdrawout = 0.0;
  90. $activityout = 0.0;
  91. foreach ($outlist as $item) {
  92. switch (intval($item["biz_catalog"])) {
  93. case 0: //提现支出
  94. $withdrawout = round(floatval($item["total"]), 2);
  95. break;
  96. case 1: //活动支出
  97. $activityout = round(floatval($item["total"]), 2);
  98. break;
  99. case 2: //冻结总额
  100. $frozenOut = round(floatval($item["total"]), 2);
  101. break;
  102. }
  103. }
  104. $sqlTemp = "";
  105. $sqlTemp .= " select biz_catalog,sum(ifnull(money,0)) as total ";
  106. $sqlTemp .= " from biz_worker_account ";
  107. $sqlTemp .= " where deleted=0 and `status`=1 and biz_workerid=" . intval($bizWorker["id"]) . " and type=0 ";
  108. $sqlTemp .= " group by biz_catalog ";
  109. $inlist = pdo_fetchall($sqlTemp, array());
  110. $salaryin = 0.0;
  111. $commissionin = 0.0;
  112. $activityin = 0.0;
  113. $wxchargein = 0.0;
  114. foreach ($inlist as $item) {
  115. switch (intval($item["biz_catalog"])) {
  116. case 0: //工资收入
  117. $salaryin = round(floatval($item["total"]), 2);
  118. break;
  119. case 1: //佣金收入
  120. $commissionin = round(floatval($item["total"]), 2);
  121. break;
  122. case 2: //营销活动支付
  123. $activityin = round(floatval($item["total"]), 2);
  124. break;
  125. case 3: //微信充值
  126. $wxchargein = round(floatval($item["total"]), 2);
  127. break;
  128. case 7: //解冻报名押金
  129. $frozenIn = round(floatval($item["total"]), 2);
  130. break;
  131. }
  132. }
  133. $frozenBalance = round($frozenOut - $frozenIn, 2); //冻结余额,即当前实际冻结的金额
  134. $balance = round($income - $outgoing, 2);
  135. return array(
  136. "balance" => $balance,
  137. "income" => $income,
  138. "outgoing" => $outgoing,
  139. "salaryin" => $salaryin,
  140. "commissionin" => $commissionin,
  141. "activityin" => $activityin,
  142. "wxchargein" => $wxchargein,
  143. "withdrawout" => $withdrawout,
  144. "activityout" => $activityout,
  145. "frozenBalance" => $frozenBalance,
  146. // "frozenBalance"=> $frozenIn,
  147. );
  148. }
  149. function bizbase_workerStatistics($bizWorker)
  150. {
  151. $sqlTemp = "";
  152. $sqlTemp .= " select sum(workTotal) as workTotal ";
  153. $sqlTemp .= " ,sum(waitEnrollTotal) as waitEnrollTotal,sum(enrollTotal) as enrollTotal ";
  154. $sqlTemp .= " ,sum(workingTotal) as workingTotal,sum(waitSettleTotal) as waitSettleTotal ";
  155. $sqlTemp .= " ,sum(finishedTotal) as finishedTotal,sum(exceptTotal) as exceptTotal ";
  156. $sqlTemp .= " ,sum(refuseTotal) as refuseTotal,sum(breakoffTotal) as breakoffTotal ";
  157. $sqlTemp .= " ,sum(cancelTotal) as cancelTotal,sum(cancel2Total) as cancel2Total,sum(denypayTotal) as denypayTotal ";
  158. $sqlTemp .= " ,sum(noStartWorkTotal) as noStartWorkTotal,sum(noFinishWorkTotal) as noFinishWorkTotal ";
  159. $unreadStatusMin = -8;
  160. $unreadStatusMax = 5;
  161. $unreadStatusPrefix = "unreadWKTotal";
  162. for ($iii = $unreadStatusMin; $iii <= $unreadStatusMax; $iii++) {
  163. $iiiExt = $iii < 0 ? "_" . abs($iii) : $iii;
  164. $alias = "{$unreadStatusPrefix}{$iiiExt}";
  165. $sqlTemp .= " ,sum({$alias}) as {$alias} ";
  166. }
  167. $sqlTemp .= " from ( select sum(case when tdwk.id>0 then 1 else 0 end) as workTotal ";
  168. $sqlTemp .= " ,sum(case when tdwk.`status`=1 then 1 else 0 end) as waitEnrollTotal ";
  169. $sqlTemp .= " ,sum(case when tdwk.`status`>=2 then 1 else 0 end) as enrollTotal ";
  170. $sqlTemp .= " ,sum(case when (tdwk.`status`=2 or tdwk.`status`=3) then 1 else 0 end) as workingTotal ";
  171. $sqlTemp .= " ,sum(case when tdwk.`status`=4 then 1 else 0 end) as waitSettleTotal ";
  172. $sqlTemp .= " ,sum(case when tdwk.`status`>=5 then 1 else 0 end) as finishedTotal ";
  173. $sqlTemp .= " ,sum(case when tdwk.`status`<0 then 1 else 0 end) as exceptTotal ";
  174. $sqlTemp .= " ,sum(case when tdwk.`status`=-1 then 1 else 0 end) as refuseTotal ";
  175. $sqlTemp .= " ,sum(case when tdwk.`status`=-3 then 1 else 0 end) as breakoffTotal ";
  176. $sqlTemp .= " ,sum(case when tdwk.`status`=-2 then 1 else 0 end) as cancelTotal ";
  177. $sqlTemp .= " ,sum(case when tdwk.`status`=-4 then 1 else 0 end) as cancel2Total ";
  178. $sqlTemp .= " ,sum(case when (tdwk.`status`=-5 or tdwk.`status`=-8) then 1 else 0 end) as denypayTotal ";
  179. $sqlTemp .= " ,sum(case when tdwk.`status`=-6 then 1 else 0 end) as noStartWorkTotal ";
  180. $sqlTemp .= " ,sum(case when tdwk.`status`=-7 then 1 else 0 end) as noFinishWorkTotal ";
  181. for ($iii = $unreadStatusMin; $iii <= $unreadStatusMax; $iii++) {
  182. $iiiExt = $iii < 0 ? "_" . abs($iii) : $iii;
  183. $alias = "{$unreadStatusPrefix}{$iiiExt}";
  184. $sqlTemp .= " ,sum(case when (tdwk.`status`={$iii} and !FIND_IN_SET(tdwk.`status`, tdwk.worker_readed)) then 1 else 0 end) as {$alias} ";
  185. }
  186. $sqlTemp .= " from biz_todowork tdwk ";
  187. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  188. $sqlTemp .= " where tdwk.biz_workerid=" . intval($bizWorker["id"]);
  189. $sqlTemp .= " group by tdwk.biz_recruitid";
  190. $sqlTemp .= " ) as temp ";
  191. $totalInfo = pdo_fetch($sqlTemp, array());
  192. $backdata = array(
  193. "workTotal" => intval($totalInfo["workTotal"]),
  194. "work_erolledtotal" => intval($totalInfo["waitEnrollTotal"]) + intval($totalInfo["enrollTotal"]),
  195. "waitEnrollTotal" => intval($totalInfo["waitEnrollTotal"]),
  196. "enrollTotal" => intval($totalInfo["enrollTotal"]),
  197. "workingTotal" => intval($totalInfo["workingTotal"]),
  198. "waitSettleTotal" => intval($totalInfo["waitSettleTotal"]),
  199. "finishedTotal" => intval($totalInfo["finishedTotal"]),
  200. "exceptTotal" => intval($totalInfo["exceptTotal"]),
  201. "refuseTotal" => intval($totalInfo["refuseTotal"]),
  202. "breakoffTotal" => intval($totalInfo["breakoffTotal"]),
  203. "cancelTotal" => intval($totalInfo["cancelTotal"]),
  204. "cancel2Total" => intval($totalInfo["cancel2Total"]),
  205. "denypayTotal" => intval($totalInfo["denypayTotal"]),
  206. "noStartWorkTotal" => intval($totalInfo["noStartWorkTotal"]),
  207. "noFinishWorkTotal" => intval($totalInfo["noFinishWorkTotal"]),
  208. "othersTotal" => intval($totalInfo["noStartWorkTotal"]) + intval($totalInfo["noFinishWorkTotal"]),
  209. "exceptTotal2" => intval($totalInfo["refuseTotal"]) + intval($totalInfo["breakoffTotal"])
  210. + intval($totalInfo["cancelTotal"]) + intval($totalInfo["cancel2Total"]) + intval($totalInfo["denypayTotal"]),
  211. );
  212. $aliasALL = "{$unreadStatusPrefix}_ALL";
  213. $backdata[$aliasALL] = 0;
  214. $aliasOther = "{$unreadStatusPrefix}_Other";
  215. $backdata[$aliasOther] = 0;
  216. for ($iii = $unreadStatusMin; $iii < $unreadStatusMax; $iii++) {
  217. $iiiExt = $iii < 0 ? "_" . abs($iii) : $iii;
  218. $alias = "{$unreadStatusPrefix}{$iiiExt}";
  219. $backdata[$alias] = intval($totalInfo[$alias]);
  220. if ($iii < 0) {
  221. $backdata[$aliasALL] += intval($totalInfo[$alias]);
  222. }
  223. if ($iii == -6) {
  224. $backdata[$aliasOther] += intval($totalInfo[$alias]);
  225. }
  226. if ($iii == -7) {
  227. $backdata[$aliasOther] += intval($totalInfo[$alias]);
  228. }
  229. }
  230. $backdata["{$unreadStatusPrefix}_5"] = intval($backdata["{$unreadStatusPrefix}_5"]) + intval($backdata["{$unreadStatusPrefix}_8"]);
  231. return $backdata;
  232. }
  233. function bizbase_workerUndoList($bizWorker)
  234. {
  235. $backdata = array();
  236. $backdata["notice_unreaded"] = intval(pdo_fetchcolumn("select count(*) from biz_pubic_notice bpn
  237. left join biz_basetrace bbt on bbt.deleted=0 and bbt.biz_catalog=1 and bbt.biz_id=bpn.id and bbt.biz_usertype=2 and bbt.biz_userid=" . intval($bizWorker["id"]) . "
  238. where bpn.deleted=0 and bpn.catalog=1
  239. and ifnull(bbt.id,0)<=0;"));
  240. return $backdata;
  241. }
  242. function bizbase_workerEntityHandle($fromSubSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC)
  243. {
  244. if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) {
  245. $bizWorker = $bizUser;
  246. }
  247. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) {
  248. $bizTrader = $bizUser;
  249. }
  250. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) {
  251. $bizTrader2 = $bizUser;
  252. }
  253. switch ($handleMode) {
  254. case "idCardCheck":
  255. $trueName = isset($ajaxdata["trueName"]) ? $ajaxdata["trueName"] : $GPC["trueName"];
  256. $idCard = isset($ajaxdata["idCard"]) ? $ajaxdata["idCard"] : $GPC["idCard"];
  257. if (empty($bizWorker)) {
  258. throw new GeneralException("", "没有用户信息,请核查!");
  259. }
  260. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  261. txcloud_idcardCheck($trueName, $idCard);
  262. $sqlParam = array();
  263. $sqlParam[":realname_handletime"] = time();
  264. $sqlParam[":id"] = intval($bizWorker["id"]);
  265. $sqlParam[":true_name"] = $trueName;
  266. $sqlParam[":idcard"] = $idCard;
  267. $sqlParam[":realname_handle_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 实名认证 \n";
  268. $sqlTemp = "";
  269. $sqlTemp .= " update biz_worker set realname_handletime=:realname_handletime ";
  270. $sqlTemp .= " ,true_name=:true_name,idcard=:idcard ";
  271. $sqlTemp .= " ,realname_handle_remark=concat(:realname_handle_remark,ifnull(realname_handle_remark,'')) ";
  272. $sqlTemp .= " where id =:id;";
  273. $backdata = pdo_query3($sqlTemp, $sqlParam);
  274. return $backdata;
  275. break;
  276. case "fetchByPlater":
  277. case "fetchByTrader":
  278. case "fetchByTrader2":
  279. case "fetchByWorker":
  280. if (!empty($bizWorker)) {
  281. $workerId = $bizWorker["id"];
  282. } else {
  283. $workerId = isset($ajaxdata["workerId"]) ? $ajaxdata["workerId"] : $GPC["workerId"];
  284. }
  285. $sqlTemp = "select wk.*,bu.mobile as bu_mobile,bu.subsystem as subsystem,bu.wxapp_appid,bu.wxapp_openid,bu.wxmina_appid,bu.wxmina_openid";
  286. $sqlTemp .= " ,(select ifnull(avg(result_level),0) from biz_appraisal bapr where bapr.biz_catalog=2 and bapr.toerid=wk.id ) as worker_appraisal_avg ";
  287. $sqlTemp .= " from biz_worker wk";
  288. $sqlTemp .= " left join base_user bu on bu.id =wk.base_userid";
  289. $sqlTemp .= " where wk.id=:bizUserId limit 1;";
  290. $bizWorker = pdo_fetch($sqlTemp, array(":bizUserId" => $workerId));
  291. if (empty($bizWorker)) {
  292. throw new GeneralException("", "没有传递必要的workerId参数或没有对应的记录,请核查!");
  293. }
  294. $wokerInfo = array();
  295. $wokerInfo["id"] = $bizWorker["id"];
  296. $wokerInfo["workerId"] = $bizWorker["id"];
  297. $wokerInfo["profile_photo"] = $bizWorker["profile_photo"];
  298. $wokerInfo["regtime"] = date("Y-m-d", $bizWorker["createtime"]);
  299. $wokerInfo["true_name"] = $bizWorker["true_name"];
  300. $wokerInfo["realname_handled"] = $bizWorker["realname_handled"];
  301. $wokerInfo["nickname"] = $bizWorker["nickname"];
  302. $wokerInfo["blocked"] = intval($bizWorker["hanging"]) == 4 ? "1" : "0";
  303. $wokerInfo["blockedName"] = intval($wokerInfo["blocked"]) <= 0 ? "非黑名单" : "黑名单";
  304. $wokerInfo["memberRealed"] = empty(trim($bizWorker["idcard"])) ? false : true;
  305. $accountInfo = bizbase_workerAccountInfo($bizWorker);
  306. foreach ($accountInfo as $key => $value) {
  307. $wokerInfo["finance_" . $key] = $value;
  308. }
  309. $statistics = bizbase_workerStatistics($bizWorker);
  310. foreach ($statistics as $key => $value) {
  311. $wokerInfo["ss_" . $key] = $value;
  312. }
  313. $uodoList = bizbase_workerUndoList($bizWorker);
  314. foreach ($uodoList as $key => $value) {
  315. $wokerInfo["ss_" . $key] = $value;
  316. }
  317. $wokerInfo["mobile"] = $bizWorker["bu_mobile"];
  318. $wokerInfo["idcard"] = $bizWorker["idcard"];
  319. $wokerInfo["nation_name"] = $bizWorker["nation_name"];
  320. $wokerInfo["worker_appraisal_avg"] = round($bizWorker["worker_appraisal_avg"], 1);
  321. $wokerInfo["birthaddr"] = $bizWorker["birthaddr"];
  322. $wokerInfo["gender"] = (intval($bizWorker["gender"]) < 0 ? "" : (intval($bizWorker["gender"]) == 0 ? "男" : "女"));
  323. $wokerInfo["age"] = "";
  324. if (intval($bizWorker["birthday"]) > 0) {
  325. $birthdate = date("Ymd", $bizWorker["birthday"]);
  326. $datetime1 = date_create_from_format("Ymd", $birthdate);
  327. $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1)));
  328. $datetime2 = new \DateTime(date("Y-m-d", time()));
  329. $interval = $datetime1->diff($datetime2);
  330. $wokerInfo["age"] = intval($interval->format('%Y'));
  331. }
  332. $wokerInfo["birthday"] = (intval($bizWorker["birthday"]) <= 0 ? "" : date("Y-m-d", $bizWorker["birthday"]));
  333. $wokerInfo["body_height"] = $bizWorker["body_height"];
  334. $wokerInfo["body_height"] = $bizWorker["body_height"];
  335. $wokerInfo["linker_phone"] = $bizWorker["linker_phone"];
  336. $wokerInfo["nowaddr"] = $bizWorker["nowaddr"];
  337. $wokerInfo["edulevel"] = $bizWorker["edulevel"];
  338. $wokerInfo["edulevel_name"] = $bizWorker["edulevel_name"];
  339. $wokerInfo["idcard_ppic"] = $bizWorker["idcard_ppic"]; //前端拼接头
  340. $wokerInfo["idcard_npic"] = $bizWorker["idcard_npic"]; //前端拼接头
  341. $wokerInfo["work_history"] = $bizWorker["work_history"];
  342. $wokerInfo["work_skills"] = $bizWorker["work_skills"];
  343. $wokerInfo["self_evaluation"] = $bizWorker["self_evaluation"];
  344. $wokerInfo["certificates"] = json_decode($bizWorker["certificates"], true);
  345. $breakInfo = pdo_fetchall("select catalog,count(*) as total from biz_worker_breaklaw where biz_workerid=" . intval($bizWorker["id"]) . " group by catalog");
  346. $wokerInfo["breakTotal0"] = 0;
  347. $wokerInfo["breakTotal1"] = 0;
  348. $wokerInfo["breakTotal2"] = 0;
  349. $wokerInfo["breakTotal3"] = 0;
  350. foreach ($breakInfo as $item) {
  351. $wokerInfo["breakTotal" . intval($item["catalog"])] = intval($item["total"]);
  352. }
  353. return $wokerInfo;
  354. break;
  355. case "blackhandle":
  356. $workerId = isset($ajaxdata["workerId"]) ? $ajaxdata["workerId"] : $GPC["workerId"];
  357. $sqlTemp = "select wk.*,bu.mobile as bu_mobile,bu.subsystem as subsystem,bu.wxapp_appid,bu.wxapp_openid,bu.wxmina_appid,bu.wxmina_openid";
  358. $sqlTemp .= " from biz_worker wk";
  359. $sqlTemp .= " left join base_user bu on bu.id =wk.base_userid";
  360. $sqlTemp .= " where wk.id=:bizUserId limit 1;";
  361. $bizWorker = pdo_fetch($sqlTemp, array(":bizUserId" => $workerId));
  362. if (empty($bizWorker)) {
  363. throw new GeneralException("", "没有传递必要的workerId参数或没有对应的记录,请核查!");
  364. }
  365. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  366. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  367. switch (trim($todo)) {
  368. case "set":
  369. if (intval($bizWorker["hanging"]) >= 4) {
  370. throw new GeneralException("", "已是黑名单状态了啊,请核查!");
  371. }
  372. $sqlTemp = "";
  373. $sqlTemp .= " update biz_worker set updatetime=:nowtime,`hanging`=4,remark=concat(:remark,ifnull(remark,'')) where id=:id;";
  374. $backdata = pdo_query($sqlTemp, array(
  375. ":nowtime" => time(),
  376. ":id" => intval($bizWorker["id"]),
  377. ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 设置为黑名单 {$reason} \n"));
  378. return $backdata;
  379. break;
  380. case "reset":
  381. if (intval($bizWorker["hanging"]) < 4) {
  382. throw new GeneralException("", "当前处于非黑名单状态,请核查!");
  383. }
  384. $sqlTemp = "";
  385. $sqlTemp .= " update biz_worker set updatetime=:nowtime,`hanging`=0,remark=concat(:remark,ifnull(remark,'')) where id=:id;";
  386. $backdata = pdo_query($sqlTemp, array(
  387. ":nowtime" => time(),
  388. ":id" => intval($bizWorker["id"]),
  389. ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 取消黑名单 {$reason} \n"));
  390. return $backdata;
  391. break;
  392. default:throw new GeneralException("", "不支持的todo");
  393. }
  394. break;
  395. case "wxRecharge":
  396. $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
  397. if (empty(trim($minaCode))) {
  398. throw new GeneralException("", "没有传递必要的minaCode参数");
  399. }
  400. $money = isset($ajaxdata["money"]) ? $ajaxdata["money"] : $GPC["money"];
  401. $money = round(floatval($money), 2);
  402. if ($money <= 0) {
  403. throw new GeneralException("", "没有传递必要的money参数或小于等于0了");
  404. }
  405. $sqlParam = array();
  406. $sqlParam[":nowtime"] = time();
  407. $sqlParam[":biz_workerid"] = intval($bizWorker["id"]);
  408. $sqlParam[":type"] = 0; //收支类型:0-收入;1-支出;
  409. $sqlParam[":money"] = $money; //收入:0-次数支付;1-支付工单;
  410. $sqlParam[":biz_catalog"] = 3; //微信支付充值
  411. $sqlParam[":biz_id"] = 0;
  412. $sqlParam[":remark"] = "会员直接微信支付充值";
  413. $sqlTemp = "";
  414. $sqlTemp .= " insert into biz_worker_account set createtime=:nowtime";
  415. $sqlTemp .= " ,biz_workerid=:biz_workerid, biz_roletype=0, biz_userid=:biz_workerid ";
  416. $sqlTemp .= " ,type=:type, `money`=:money";
  417. $sqlTemp .= " ,biz_catalog=:biz_catalog, biz_id=:biz_id";
  418. $sqlTemp .= " ,`status`=0, remark=:remark;";
  419. $sqlTemp .= " update biz_worker_account set biz_idtag=concat('WXCGM',id,'EE',paytag) where id=LAST_INSERT_ID();";
  420. $sqlTemp .= " select * from biz_worker_account where id=LAST_INSERT_ID();";
  421. $dataset = pdo_query3($sqlTemp, $sqlParam);
  422. $bizInfo = $dataset[count($dataset) - 1][0];
  423. if (empty($bizInfo)) {
  424. throw new GeneralException("", "构建预支付订单异常");
  425. }
  426. $payBizCatalog = 4; //会员侧微信支付充值
  427. $payBizId = $bizInfo["id"];
  428. $payScene = "JSAPI";
  429. $prePayArgs = array(
  430. "payBackBizCatalog" => $payBizCatalog,
  431. "payBackBizId" => $payBizId,
  432. "payScene" => $payScene,
  433. );
  434. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  435. $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_LABOUR_MINA);
  436. $wxmina_appid = $resObj["wxmina_appid"];
  437. $wxmina_openid = $resObj["openid"];
  438. $bizArgs = array(
  439. "minaCode" => $minaCode,
  440. "bizInfo" => $bizInfo,
  441. "wxmina_appid" => $wxmina_appid,
  442. "wxmina_openid" => $wxmina_openid,
  443. );
  444. //不会出现重复订单
  445. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  446. $prePayInfo = weixin_prepayBuildV3($prePayArgs, $bizArgs, function ($bizCatalog, $bizId, $bizArgs) {
  447. $bizInfo = $bizArgs["bizInfo"];
  448. $wxmina_appid = $bizArgs["wxmina_appid"];
  449. $wxmina_openid = $bizArgs["wxmina_openid"];
  450. //---------------------------------------
  451. $payTotal = round(floatval($bizInfo["money"]), 2);
  452. if ($payTotal <= 0) {
  453. throw new GeneralException("", "购买金额竟然小于等于0");
  454. }
  455. $payTotal = $payTotal * 100; //转为分
  456. //---------------------------------------
  457. $sqlParam = array();
  458. $sqlParam[":id"] = intval($bizInfo["id"]);
  459. $sqlParam[":wxmina_appid"] = $wxmina_appid;
  460. $sqlParam[":wxmina_openid"] = $wxmina_openid;
  461. $sqlTemp = " update biz_worker_account set";
  462. $sqlTemp .= " wxmina_appid=:wxmina_appid,wxmina_openid=:wxmina_openid ";
  463. $sqlTemp .= " where id=:id; ";
  464. $dataset = pdo_query3($sqlTemp, $sqlParam);
  465. //---------------------------------------
  466. $prePayInfo = array();
  467. $prePayInfo["appid"] = $wxmina_appid;
  468. $prePayInfo["mchId"] = WeiXinPay_mchId;
  469. $prePayInfo["mch_paykeyV2"] = WeiXinPay_apiKey;
  470. $prePayInfo["mch_paykeyV3"] = WeiXinPay_apiKeyV3;
  471. $prePayInfo["out_trade_no"] = $bizInfo["biz_idtag"];
  472. $prePayInfo["total"] = "{$payTotal}";
  473. $prePayInfo["description"] = "会员微信支付充值";
  474. $prePayInfo["openid"] = $wxmina_openid;
  475. return $prePayInfo;
  476. });
  477. $prePayInfo = array_merge($prePayArgs, $prePayInfo);
  478. return array(
  479. "prePayInfo" => $prePayInfo,
  480. );
  481. break;
  482. case "fetchRecuritPoster":
  483. $recuritid = isset($ajaxdata["recuritid"]) ? $ajaxdata["recuritid"] : $GPC["recuritid"];
  484. if (intval($recuritid) <= 0) {
  485. throw new GeneralException("", "没有传递必要的recuritid参数或值为空");
  486. }
  487. $recuritInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recuritid));
  488. if (empty($recuritInfo)) {
  489. throw new GeneralException("", "招聘id没有对应的记录,请核查!");
  490. }
  491. $title = $recuritInfo["title"];
  492. //$title="一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十";
  493. if (mb_strwidth($title) > 20) {
  494. do {
  495. $title = mb_substr($title, 0, mb_strlen($title) - 1);
  496. } while (mb_strwidth($title) > 17);
  497. $title .= "...";
  498. }
  499. //$recuritInfo["feeper"]=rand(111,888);//测试
  500. $salary = round($recuritInfo["feeper"], 2) . " 元/天";
  501. $sharer_fetchmoney = round($recuritInfo["sharer_fetchmoney"], 2) . " 元";
  502. $need_total = intval($recuritInfo["need_total"]) . " 人";
  503. $address = $recuritInfo["work_addr"];
  504. $address = mb_strlen($address) > 32 ? mb_substr($address, 0, 31) . "..." : $address;
  505. $poster = array();
  506. $poster["imgtype"] = "png";
  507. $poster["width"] = "750";
  508. $poster["height"] = "1624";
  509. // $posterCfg = bizbase_getPosterConfig();
  510. // $bgpic = trim($posterCfg["bgpic"]);
  511. $poster["bg"] = "/prjcenter/prjKLY/fileroot/poster/posterbg.jpg";
  512. $poster["data"] = array(
  513. array(
  514. "type" => "text",
  515. "left" => 114, //左对齐
  516. "top" => "640", // 文本中可以加入强制换行的字符\n
  517. "text" => "" . $title,
  518. "size" => "36",
  519. "color" => "#248a75",
  520. "font" => "msyh", //某种ttf字体 放置到assets/font目录下
  521. ),
  522. array(
  523. "type" => "text",
  524. "left" => "255",
  525. "top" => "737", // 文本中可以加入强制换行的字符\n
  526. "text" => "" . $salary,
  527. "size" => "22",
  528. "color" => "#248a75",
  529. "font" => "msyh", //某种ttf字体 放置到assets/font目录下
  530. ),
  531. array(
  532. "type" => "text",
  533. "left" => "255",
  534. "top" => "792", // 文本中可以加入强制换行的字符\n
  535. "text" => "" . $need_total,
  536. "size" => "22",
  537. "color" => "#248a75",
  538. "font" => "msyh", //某种ttf字体 放置到assets/font目录下
  539. ),
  540. array(
  541. "type" => "text",
  542. "left" => "255",
  543. "top" => "850", // 文本中可以加入强制换行的字符\n
  544. "text" => "" . $address,
  545. "size" => "22",
  546. "width" => 22 * 17,
  547. "color" => "#248a75",
  548. "font" => "msyh", //某种ttf字体 放置到assets/font目录下
  549. ),
  550. array(
  551. "type" => "qrmina",
  552. "left" => "175",
  553. "top" => "920",
  554. "size" => "400",
  555. "margin" => "0",
  556. "logpath" => WEB_PHY_ROOT . "/prjcenter/prjKLY/fileroot/uploads/qr_log.png",
  557. ),
  558. );
  559. $saveSubPath = "share"; //海报存储的子目录 $bizCatalog=1 会员招聘信息分享 ,$bizid=招聘id
  560. $poster_imgurl = poster_build_pre(1, $recuritid, $bizWorker["id"], $poster, $saveSubPath, null,
  561. function ($bizCatalog, $bizid, $userid, $pdata) { //二维码
  562. switch ($bizCatalog) {
  563. default:
  564. $qrminaSubPath = "qrmina_img";
  565. $qrminaAppId = WeiXin111_AppID;
  566. $qrminaAppSecret = WeiXin111_AppSecret;
  567. $qrminaPagePath = "pages/index/index";
  568. break;
  569. }
  570. return array(
  571. "qrminaSubPath" => $qrminaSubPath,
  572. "qrminaAppId" => $qrminaAppId,
  573. "qrminaAppSecret" => $qrminaAppSecret,
  574. "qrminaPagePath" => $qrminaPagePath,
  575. );
  576. });
  577. return WEBAPI_IMG_HOSTURL . $poster_imgurl;
  578. break;
  579. default:
  580. throw new GeneralException("", "不支持的handleMode!");
  581. }
  582. }
  583. function bizbase_workerAboutQuery($fromSubSystem, $baseUser, $bizUser, $handleMode, $pageIndex, $pageSize, $ajaxdata, $GPC)
  584. {
  585. if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) {
  586. $bizWorker = $bizUser;
  587. }
  588. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) {
  589. $bizTrader = $bizUser;
  590. }
  591. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) {
  592. $bizTrader2 = $bizUser;
  593. }
  594. switch ($handleMode) {
  595. case "fetchall":
  596. $sqlParam = array();
  597. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  598. $queryBreak = " and 1=1 ";
  599. if (empty($query) && !is_array($query)) { //验证一下query信息集
  600. $query = " and 1=1 ";
  601. } else {
  602. $queryNew = " and 1=1 ";
  603. foreach ($query as $fdName => $fdValue) {
  604. if (empty($fdName) || empty($fdValue)) {
  605. continue;
  606. }
  607. switch ($fdName) {
  608. case "stoped":
  609. switch (intval($fdValue)) {
  610. case 1:
  611. $queryNew .= " and ( wk.hanging<=1 || ((wk.hanging=2 or wk.hanging=3) and wk.hanging_endtime<" . time() . " )) ";
  612. break;
  613. case 2:
  614. $queryNew .= " and ( wk.hanging=4 || ((wk.hanging=2 or wk.hanging=3) and wk.hanging_endtime>=" . time() . " )) ";
  615. break;
  616. }
  617. break;
  618. case "breakType":
  619. if (intval($fdValue) > 0) {
  620. $queryBreak .= " and catalog=" . (intval($fdValue) - 1);
  621. $queryNew .= " and (select count(*) from biz_worker_breaklaw where biz_workerid=wk.id $queryBreak )>0 ";
  622. }
  623. break;
  624. case "blocked":
  625. if (intval($fdValue) > 0) {
  626. $queryNew .= " and wk.blocked=" . (intval($fdValue) - 1);
  627. }
  628. break;
  629. case "mobile":
  630. $paramName = ":qy_mobile";
  631. $queryNew .= " and (bu.mobile like concat('%',{$paramName},'%') ) ";
  632. $sqlParam[$paramName] = $fdValue;
  633. break;
  634. case "memberName":
  635. $paramName = ":qy_memberName";
  636. $queryNew .= " and (wk.true_name like concat('%',{$paramName},'%') ) ";
  637. $sqlParam[$paramName] = $fdValue;
  638. break;
  639. case "idcard":
  640. $paramName = ":qy_idcard";
  641. $queryNew .= " and (wk.idcard like concat('%',{$paramName},'%') ) ";
  642. $sqlParam[$paramName] = $fdValue;
  643. break;
  644. case "edulevelName":
  645. $paramName = ":qy_edulevelName";
  646. $queryNew .= " and (wk.edulevel_name like concat('%',{$paramName},'%') ) ";
  647. $sqlParam[$paramName] = $fdValue;
  648. break;
  649. case "regtime":
  650. $paramName1 = ":qy_regtime1";
  651. $paramName2 = ":qy_regtime2";
  652. $queryNew .= " and (wk.createtime>= $paramName1 and wk.createtime<=$paramName2 ) ";
  653. $sqlParam[$paramName1] = strtotime($fdValue);
  654. $sqlParam[$paramName2] = strtotime($fdValue) + (24 * 3600);
  655. break;
  656. }
  657. }
  658. $query = $queryNew;
  659. }
  660. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  661. switch (intval($orderby)) {
  662. case 1:
  663. $orderby = " order by work_erolledtotal desc ";
  664. break;
  665. case 2:
  666. $orderby = " order by withdraw_total desc ";
  667. break;
  668. case 3:
  669. $orderby = " order by work_excepttotal desc ";
  670. break;
  671. default:
  672. $orderby = " order by wk.id desc ";
  673. break;
  674. }
  675. //构建sql串
  676. $sqlBody = "";
  677. $sqlBody .= " from biz_worker wk ";
  678. $sqlBody .= " left join base_user bu on bu.id =wk.base_userid";
  679. $sqlBody .= " where wk.`deleted`=0 " . $query;
  680. //查询sql及统计sql
  681. $start = (intval($pageIndex) - 1) * $pageSize;
  682. $sqlFetch = " select wk.id as workerId,wk.* ";
  683. $sqlFetch .= " ,(select count(*) from biz_worker_breaklaw where biz_workerid=wk.id $queryBreak ) as break_total ";
  684. $sqlFetch .= " ,(select count(*) from biz_todowork where biz_workerid=wk.id and `status`>=1 ) as work_erolledtotal ";
  685. $sqlFetch .= " ,(select ifnull(sum(money),0) from biz_worker_account where deleted=0 and `status`=1 and biz_workerid=wk.id and type=1 and biz_catalog=0 ) as withdraw_total ";
  686. $sqlFetch .= " ,(select count(*) from biz_todowork where biz_workerid=wk.id and `status`<0 ) as work_excepttotal ";
  687. $sqlFetch .= " ,bu.mobile as bu_mobile ";
  688. $sqlFetch .= " {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  689. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  690. foreach ($pageData as &$data) { //数据转换/映射
  691. $accountInfo = bizbase_workerAccountInfo($data);
  692. foreach ($accountInfo as $key => $value) {
  693. $data["finance_" . $key] = $value;
  694. }
  695. $statistics = bizbase_workerStatistics($data);
  696. foreach ($statistics as $key => $value) {
  697. $data["" . $key] = $value;
  698. }
  699. $data["regtime"] = date("Y-m-d", $data["createtime"]);
  700. $data["birthday"] = (intval($data["birthday"]) <= 0 ? "" : date("Y-m-d", $data["birthday"]));
  701. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  702. $data["certificates"] = json_decode($data["certificates"], true);
  703. }
  704. $sqlSummary = " select count(*) as count " . $sqlBody;
  705. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  706. return array(
  707. "pageData" => $pageData,
  708. "count" => intval($sumData["count"]),
  709. );
  710. break;
  711. case "fetchallSharer":
  712. $sqlParam = array();
  713. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  714. $queryBreak = " and 1=1 ";
  715. if (empty($query) && !is_array($query)) { //验证一下query信息集
  716. $query = " and 1=1 ";
  717. } else {
  718. $queryNew = " and 1=1 ";
  719. foreach ($query as $fdName => $fdValue) {
  720. if (empty($fdName) || empty($fdValue)) {
  721. continue;
  722. }
  723. switch ($fdName) {
  724. case "mobile":
  725. $paramName = ":qy_mobile";
  726. $queryNew .= " and (bu.mobile like concat('%',{$paramName},'%') ) ";
  727. $sqlParam[$paramName] = $fdValue;
  728. break;
  729. case "memberName":
  730. $paramName = ":qy_memberName";
  731. $queryNew .= " and (wk.true_name like concat('%',{$paramName},'%') ) ";
  732. $sqlParam[$paramName] = $fdValue;
  733. break;
  734. case "startDate":
  735. $queryNew .= " and bwa.createtime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " ";
  736. break;
  737. case "finishDate":
  738. $queryNew .= " and bwa.createtime<=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " ";
  739. break;
  740. }
  741. }
  742. $query = $queryNew;
  743. }
  744. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  745. switch (intval($orderby)) {
  746. case 1:
  747. $orderby = " order by money_total desc ";
  748. break;
  749. default:
  750. $orderby = " order by work_total desc ";
  751. break;
  752. }
  753. //构建sql串
  754. $sqlBody = "";
  755. $sqlBody .= " from biz_worker_account bwa ";
  756. $sqlBody .= " inner join biz_worker wk on wk.id=bwa.biz_workerid ";
  757. $sqlBody .= " left join base_user bu on bu.id=wk.base_userid ";
  758. $sqlBody .= " where bwa.type=0 and bwa.`status`=1 and bwa.biz_catalog=1 and wk.`deleted`=0 " . $query;
  759. $sqlBody .= " group by bwa.biz_workerid ";
  760. //查询sql及统计sql
  761. $start = (intval($pageIndex) - 1) * $pageSize;
  762. $sqlFetch = " select wk.id as workerId,wk.* ";
  763. $sqlFetch .= " ,bu.mobile as bu_mobile ";
  764. $sqlFetch .= " ,count(bwa.id) as work_total,sum(bwa.money) as money_total ";
  765. $sqlFetch .= " {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  766. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  767. foreach ($pageData as &$data) { //数据转换/映射
  768. $data["true_name"] = (!empty($data["true_name"])) ? $data["true_name"] : $data["nickname"];
  769. $data["birthday"] = (intval($data["birthday"]) <= 0 ? "" : date("Y-m-d", $data["birthday"]));
  770. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  771. }
  772. $sqlSummary = " select count(*) as count from ( select wk.id " . $sqlBody . " ) as temp ";
  773. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  774. return array(
  775. "pageData" => $pageData,
  776. "count" => intval($sumData["count"]),
  777. );
  778. break;
  779. case "fetchallShareWorks":
  780. $sqlParam = array();
  781. $shareWorkerId = isset($ajaxdata["shareWorkerId"]) ? $ajaxdata["shareWorkerId"] : $GPC["shareWorkerId"];
  782. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  783. $queryBreak = " and 1=1 ";
  784. if (empty($query) && !is_array($query)) { //验证一下query信息集
  785. $query = " and 1=1 ";
  786. } else {
  787. $queryNew = " and 1=1 ";
  788. foreach ($query as $fdName => $fdValue) {
  789. if (empty($fdName) || empty($fdValue)) {
  790. continue;
  791. }
  792. switch ($fdName) {
  793. case "recuritTitle":
  794. $paramName = ":qy_recuritTitle";
  795. $queryNew .= " and (btr.title like concat('%',{$paramName},'%') ) ";
  796. $sqlParam[$paramName] = $fdValue;
  797. break;
  798. case "startDate":
  799. $queryNew .= " and bwa.createtime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " ";
  800. break;
  801. case "finishDate":
  802. $queryNew .= " and bwa.createtime<=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " ";
  803. break;
  804. }
  805. }
  806. $query = $queryNew;
  807. }
  808. $query .= " and bwa.biz_workerid=" . intval($shareWorkerId) . " ";
  809. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  810. switch (intval($orderby)) {
  811. case 1:
  812. $orderby = " order by work_total desc ";
  813. break;
  814. default:
  815. $orderby = " order by money_total desc ";
  816. break;
  817. }
  818. //构建sql串
  819. $sqlBody = "";
  820. $sqlBody .= " from biz_worker_account bwa ";
  821. //$sqlBody .= " inner join biz_trader_account bta on bta.id=bwa.biz_id ";
  822. $sqlBody .= " inner join biz_todowork tdwk on tdwk.id=bwa.biz_id ";
  823. $sqlBody .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  824. $sqlBody .= " left join biz_trader bt on bt.id=btr.biz_traderid ";
  825. $sqlBody .= " left join base_user btbu on btbu.id=bt.base_userid ";
  826. $sqlBody .= " where bwa.type=0 and bwa.`status`=1 and bwa.biz_catalog=1 and bwa.`deleted`=0 " . $query;
  827. $sqlBody .= " group by tdwk.biz_recruitid ";
  828. //查询sql及统计sql
  829. $start = (intval($pageIndex) - 1) * $pageSize;
  830. $sqlFetch = " select btr.* ";
  831. $sqlFetch .= " ,bt.company_name,btbu.mobile as btbu_mobile ";
  832. $sqlFetch .= " ,count(bwa.id) as work_total,sum(bwa.money) as money_total ";
  833. $sqlFetch .= " {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  834. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  835. foreach ($pageData as &$data) { //数据转换/映射
  836. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  837. }
  838. $sqlSummary = " select count(*) as count from ( select bwa.id " . $sqlBody . " ) as temp ";
  839. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  840. return array(
  841. "pageData" => $pageData,
  842. "count" => intval($sumData["count"]),
  843. );
  844. break;
  845. case "fetchallShareWorkers":
  846. $sqlParam = array();
  847. $shareWorkerId = isset($ajaxdata["shareWorkerId"]) ? $ajaxdata["shareWorkerId"] : $GPC["shareWorkerId"];
  848. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  849. $queryBreak = " and 1=1 ";
  850. if (empty($query) && !is_array($query)) { //验证一下query信息集
  851. $query = " and 1=1 ";
  852. } else {
  853. $queryNew = " and 1=1 ";
  854. foreach ($query as $fdName => $fdValue) {
  855. if (empty($fdName) || empty($fdValue)) {
  856. continue;
  857. }
  858. switch ($fdName) {
  859. case "recruitid":
  860. $paramName = ":qy_recruitid";
  861. $queryNew .= " and tdwk.biz_recruitid=" . intval($fdValue) . " ";
  862. $sqlParam[$paramName] = $fdValue;
  863. break;
  864. case "memberName":
  865. $paramName = ":qy_memberName";
  866. $queryNew .= " and (wk.true_name like concat('%',{$paramName},'%') ) ";
  867. $sqlParam[$paramName] = $fdValue;
  868. break;
  869. case "startDate":
  870. $queryNew .= " and bwa.createtime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " ";
  871. break;
  872. case "finishDate":
  873. $queryNew .= " and bwa.createtime<=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " ";
  874. break;
  875. }
  876. }
  877. $query = $queryNew;
  878. }
  879. $query .= " and bwa.biz_workerid=" . intval($shareWorkerId) . " ";
  880. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  881. switch (intval($orderby)) {
  882. case 1:
  883. $orderby = " order by work_total desc ";
  884. break;
  885. default:
  886. $orderby = " order by money_total desc ";
  887. break;
  888. }
  889. //构建sql串
  890. $sqlBody = "";
  891. $sqlBody .= " from biz_worker_account bwa ";
  892. $sqlBody .= " inner join biz_trader_account bta on bta.id=bwa.biz_id ";
  893. $sqlBody .= " inner join biz_todowork tdwk on tdwk.id=bta.biz_id ";
  894. $sqlBody .= " left join biz_worker wk on wk.id=tdwk.biz_workerid ";
  895. $sqlBody .= " left join base_user bu on bu.id=wk.base_userid ";
  896. $sqlBody .= " where bwa.type=0 and bwa.`status`=1 and bwa.biz_catalog=1 and bwa.`deleted`=0 " . $query;
  897. $sqlBody .= " group by tdwk.biz_workerid ";
  898. //查询sql及统计sql
  899. $start = (intval($pageIndex) - 1) * $pageSize;
  900. $sqlFetch = " select wk.*,bwa.createtime as bwa_createtime ";
  901. $sqlFetch .= " ,bu.mobile as bu_mobile ";
  902. $sqlFetch .= " ,tdwk.id as tdwk_id ";
  903. $sqlFetch .= " ,count(bwa.id) as work_total,sum(bwa.money) as money_total ";
  904. $sqlFetch .= " {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  905. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  906. foreach ($pageData as &$data) { //数据转换/映射
  907. $data["true_name"] = (!empty($data["true_name"])) ? $data["true_name"] : $data["nickname"];
  908. $data["bwa_createtime"] = date("Y-m-d H:i:s", $data["bwa_createtime"]);
  909. $data["tdwk_sn"] = base_buildSNById("WK", $data["tdwk_id"]);
  910. $data["birthday"] = (intval($data["birthday"]) <= 0 ? "" : date("Y-m-d", $data["birthday"]));
  911. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  912. }
  913. $sqlSummary = " select count(*) as count,sum(work_total) as work_total,sum(money_total) as money_total from ( select bwa.id,count(bwa.id) as work_total,sum(bwa.money) as money_total " . $sqlBody . " ) as temp ";
  914. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  915. return array(
  916. "pageData" => $pageData,
  917. "count" => intval($sumData["count"]),
  918. "money_total" => round($sumData["money_total"], 2),
  919. "work_total" => intval($sumData["work_total"]),
  920. );
  921. break;
  922. default:
  923. throw new GeneralException("", "不支持的handleMode!");
  924. }
  925. }