=2 ) ) as now_worker_total ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`>=1 ) ) as now_worker_total000 ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`=-1 or btdw.`status`=-3 ) ) as num_abnormal_total ,(select concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt.id,'-',bu.id,'-',bu.mobile,'-',bt.true_name) from biz_recruit_delegate brd left join biz_trader2 bt on bt.id=brd.biz_trader2id left join base_user bu on bu.id=bt.base_userid where brd.biz_recruitid=:recruitid and brd.finish_datetime>:verify_datetime limit 1) as delegate_info from biz_trader_recruit btr left join biz_trader bt on bt.id=btr.biz_traderid left join base_user bu on bu.id=bt.base_userid where btr.id=:recruitid", array( ":recruitid" => intval($bizId), ":verify_datetime" => time(), ":biz_workerid" => empty($bizWorker) ? 0 : $bizWorker["id"], )); if (empty($backdata)) { throw new GeneralException("", "无此记录,请核查bizId是否正确!"); } if (intval($backdata["deleted"]) != 0) { throw new GeneralException("", "此记录已删除了,请核查后再处理!"); } if ($handleMode == "fetchByTrader" && intval($backdata["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "此记录不是您所拥有的招聘信息,请核查后再处理!"); } if ($handleMode == "fetchByTrader2") { bizTrader2_verifyRecuritDelegate($bizTrader2, $backdata["id"]); } //---------------------- $lasttodowork = explode("-", $backdata["lasttodowork"]); $backdata["todoinfo"] = array(); if (!empty($lasttodowork) && count($lasttodowork) == 5) { $tdwkid = intval($lasttodowork[0]); $workteam_mode = intval($lasttodowork[1]); $workteamid = intval($lasttodowork[2]); $teamstatus = intval($lasttodowork[3]); $tdwkstatus = intval($lasttodowork[4]); $backdata["todoinfo"]["tdwkid"] = $tdwkid; //单独取消团组报名 使用 $backdata["todoinfo"]["workteam_mode"] = $workteam_mode; $backdata["todoinfo"]["workteamid"] = $workteamid; //团长取消团组报名 使用 $backdata["todoinfo"]["teamstatus"] = $teamstatus; $backdata["todoinfo"]["tdwkstatus"] = $tdwkstatus; if ($tdwkstatus == 1) { if ($workteam_mode <= 0) { $backdata["todoinfo"]["canToEnroll"] = false; //是否可报名 $backdata["todoinfo"]["canCancelEnroll"] = 1; //是否可以取消报名 0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "单独报名待审核状态,可取消报名"; //相关说明 } else if ($workteam_mode == 1) { $backdata["todoinfo"]["canToEnroll"] = false; $backdata["todoinfo"]["canCancelEnroll"] = 2; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "组团报名待审核状态,团长可取消报名"; } } else if ($tdwkstatus > 1) { $backdata["todoinfo"]["canToEnroll"] = false; $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "已报名过此招聘,并已进入实际工作阶段"; } else if ($tdwkstatus <= -2 && $tdwkstatus >= -4) { //-2,-3,-4,0 $backdata["todoinfo"]["canToEnroll"] = true; $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "主被动取消或被违约后,可再次报名"; } else if ($tdwkstatus == 0) { //0 if ($workteam_mode <= 0) { $backdata["todoinfo"]["canToEnroll"] = true; $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "可再次报名11"; } else { if ($teamstatus >= 1) { $backdata["todoinfo"]["canToEnroll"] = false; $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "已开参团,不可再次报名"; } else { $backdata["todoinfo"]["canToEnroll"] = true; $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "可再次报名22"; } } } else { $backdata["todoinfo"]["canToEnroll"] = false; $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "录用被驳回,以及未开始工作,未结束工作等状态,不可再次报名"; } } else { if (empty($bizWorker)) { $backdata["todoinfo"]["canToEnroll"] = false; $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "非会员态"; } else { $backdata["todoinfo"]["canToEnroll"] = true; $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消 $backdata["todoinfo"]["remark"] = "还未报名过此招聘"; } } //---------------------- $backdata["btr_canTerminate"] = false; if (intval($backdata["status"]) == 2) { $backdata["btr_canTerminate"] = true; } $backdata["btr_canBreakoff"] = false; if (intval($backdata["status"]) >= 2//提前违约 && (( intval($backdata["settle_catalog"]) == 0 ) || ( intval($backdata["settle_catalog"]) > 0 )) ) { $backdata["btr_canBreakoff"] = true; } $backdata["remarks"] = explode("\n", $backdata["remark"]); $backdata["remark"] = trim(explode("\n", $backdata["remark"])[0]); $backdata["trader_appraisal_avg"] = round($backdata["trader_appraisal_avg"], 2); $delegateInfo = bizbase_recruitDelegateInfo($backdata); foreach ($delegateInfo as $key => $val) { $backdata["delegate_" . $key] = $val; } unset($backdata["delegate_info"]); if (intval($backdata["status"]) == -1) { $backdata["refuseReason"] = trim(explode("\n", $backdata["remark"])[0]); } if (intval($backdata["status"]) == 3) { $backdata["interuptReason"] = trim(explode("\n", $backdata["remark"])[0]); } if (intval($backdata["status"]) == 4) { $backdata["breakdownReason"] = trim(explode("\n", $backdata["remark"])[0]); } $backdata["statusName"] = bizbase_recruitStatusName($backdata["status"]); $backdata["settleModeName"] = intval($backdata["settle_mode"]) <= 0 ? "二维码核销" : "手动核销"; if (!empty($bizWorker)) { $favorite = pdo_fetchcolumn("select count(*) as count from biz_worker_favorite where biz_workerid=" . intval($bizWorker["id"]) . " and biz_catalog=0 and biz_id=" . intval($bizId) . ";"); $backdata["favorite"] = (intval($favorite) > 0); $trace = pdo_fetchcolumn("select count(*) as count from biz_worker_trace where biz_workerid=" . intval($bizWorker["id"]) . " and biz_catalog=0 and biz_id=" . intval($bizId) . ";"); $backdata["trace"] = (intval($trace) > 0); } $now_worker_total = pdo_fetchcolumn("select count(*) from biz_todowork btdw where btdw.biz_recruitid=" . intval($bizId) . " and ( btdw.`status`>=2 );"); $backdata["now_worker_total"] = $now_worker_total; //----- $backdata["pickDateList"] = bizbase_recruitWorkLock($bizId, 0, null, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList) { return $pickDateList; }); $backdata["begin_datetime22"] = $backdata["begin_datetime"]; if (strtotime(date("Y-m-d", $backdata["begin_datetime22"])) < strtotime(date("Y-m-d", time()))) { $backdata["begin_datetime22"] = strtotime(date("Y-m-d", time())); } $backdata["begin_datetime22"] = date("Y-m-d", $backdata["begin_datetime22"]); $backdata["restdays"] = ""; if (intval($backdata["finish_datetime"] > strtotime(date("Y-m-d", time())))) { $backdata["restdays"] = round((intval($backdata["finish_datetime"]) - strtotime(date("Y-m-d", time()))) / 86400); } $backdata = bizbase_recruitFieldTrans($fromSubSystem, "BtoF", $backdata); if ($handleMode == "fetchByPlater") { //$backdata = bizbase_recruitFieldAttrMap($fromSubSystem,"BtoF",$backdata); $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_id"] = intval($backdata["id"]); $sqlTemp = ""; $sqlTemp .= " set @handle_id=0; "; $sqlTemp .= " select @handle_id:=id from biz_trader_recruit where id=:biz_id and ifnull(readed,0)=0 limit 1;"; $sqlTemp .= " update biz_trader_recruit set `updatetime`=:nowtime,readed=1 where ifnull(@handle_id,0)=0 and id=:biz_id;"; $dataset = pdo_query3($sqlTemp, $sqlParam); } if (!empty($bizWorker)) { $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_id"] = intval($backdata["id"]); $sqlParam[":biz_workerid"] = intval($bizWorker["id"]); $sqlTemp = ""; $sqlTemp .= " set @handle_id=0; "; $sqlTemp .= " select @handle_id:=id from biz_worker_trace where biz_catalog=0 and biz_id=:biz_id and biz_workerid=:biz_workerid limit 1;"; $sqlTemp .= " insert into biz_worker_trace ( `createtime`,`biz_catalog`, `biz_id`, `biz_workerid`, count )"; $sqlTemp .= " select :nowtime, 0, :biz_id, :biz_workerid , 1 from dual where ifnull(@handle_id,0)=0;"; $sqlTemp .= " update biz_worker_trace set `count`=ifnull(count,0)+1 where ifnull(@handle_id,0)<>0 and biz_catalog=0 and biz_id=:biz_id and biz_workerid=:biz_workerid;"; $dataset = pdo_query3($sqlTemp, $sqlParam); } $base_config = pdo_fetch("select * from base_config where name = 'enroll_premoney'"); $backdata['base_config'] = $base_config; //报名列表 $backdata['todo_list'] = []; if ($backdata['now_worker_total000'] > 0) { $sql = "select bw.id,bw.profile_photo from biz_trader_recruit as btr join biz_todowork as bt on btr.id=bt.biz_recruitid and bt.`status`>=1 join biz_worker as bw on bw.id =bt.biz_workerid where btr.id=:btrid limit 7"; $backdata['todo_list'] = pdo_fetchall($sql, array( ":btrid" => intval($bizId), )); } return $backdata; break; case "pushTop": $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } $trader = pdo_fetch("select * from biz_trader_recruit where id=" . intval($bizId)); if (empty($trader)) { throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!"); } if (intval($trader["status"]) != 2) { throw new GeneralException("", "招聘信息当前不是【进行中】状态,请核查招聘信息实际状态后再处理!"); } if (intval($trader["deleted"]) != 0) { throw new GeneralException("", "招聘信息已删除了,请核查招聘信息实际状态后再处理!"); } $sqlTemp = ""; //不设置remark避免覆盖 $sqlTemp .= " update biz_trader_recruit set updatetime=:nowtime,istop=0 where istop=1;"; $sqlTemp .= " update biz_trader_recruit set updatetime=:nowtime,istop=1 where id=:id;"; $backdata = pdo_query($sqlTemp, array(":nowtime" => time(), ":id" => intval($bizId))); return $backdata; break; case "topHandle": $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"]; if (empty($todo)) { throw new GeneralException("", "没有传递必要的todo参数"); } $bizIds = isset($ajaxdata["bizIds"]) ? $ajaxdata["bizIds"] : $GPC["bizIds"]; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $query = ""; if (is_array($bizIds)) { $query = "and id in(" . implode(",", $bizIds) . ") "; } switch (trim($todo)) { case "set": $sqlParam[":istop"] = 1; break; case "unset": $sqlParam[":istop"] = 0; break; default:throw new GeneralException("", "不支持的todo"); } $sqlTemp = ""; //不设置remark避免覆盖 $sqlTemp .= " update biz_trader_recruit set updatetime=:nowtime,istop=:istop where 1=1 {$query};"; $backdata = pdo_query($sqlTemp, $sqlParam); return $backdata; break; case "downdrop": $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } $recruit = pdo_fetch("select * from biz_trader_recruit where id=" . intval($bizId)); if (empty($recruit)) { throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!"); } if (intval($recruit["status"]) != 2) { throw new GeneralException("", "招聘信息当前不是【进行中】状态,请核查招聘信息实际状态后再处理!"); } if (intval($recruit["deleted"]) != 0) { throw new GeneralException("", "招聘信息已删除了,请核查招聘信息实际状态后再处理!"); } $bizArgs = array("recruit" => $recruit, "reason" => $reason); $backdata = bizbase_recruitWorkLock($recruit["id"], 0, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList) { $recruit = $bizArgs["recruit"]; $reason = $bizArgs["reason"]; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":recruitId"] = intval($recruit["id"]); $sqlParam[":biz_traderid"] = intval($recruit["biz_traderid"]); $sqlParam[":status"] = 4; $sqlParam[":remain_numtotal"] = intval($mainRemain); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 手工下架 {$reason} \n"; $sqlTemp = " update biz_trader_recruit set updatetime=:nowtime,istop=0 "; $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where id=:recruitId;"; $sqlTemp .= " set @placeholder111=:biz_traderid;"; $sqlTemp .= " set @placeholder222=:remain_numtotal;"; if (intval($mainRemain) > 0) { $sqlTemp .= " insert into biz_trader_numaccount set createtime=:nowtime"; $sqlTemp .= " ,biz_traderid=:biz_traderid "; //直接返还到非免费次数即可;账目可平! $sqlTemp .= " ,type=0,biz_catalog=1,biz_id=:recruitId,`status`=1,`count`=:remain_numtotal"; $sqlTemp .= " ,remark='[" . date("Y-m-d H:i:s", time()) . "] 因手工下架返回剩余次数';"; } $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; }); return $backdata; break; case "upsert": case "upsertLaunchAudit": case "upsertReset": if (intval($baseUser["subsystem"] != intval(SUBSYS_CAPITAL_MINA))) { throw new GeneralException("", "只能是商家发布招聘信息"); } $bizTrader = $bizUser; if ($handleMode == "upsertLaunchAudit") { bizbase_verifyUserAccount($bizTrader, true, "无法发布新招聘信息"); $accountInfo = bizbase_traderAccountInfo($bizTrader); $balance = round(floatval($accountInfo["balance"]), 2); //if($balance==0) throw new GeneralException("", "您的账户余额为零,无法发布新招聘信息"); if ($balance < 0) { throw new GeneralException("", "您尚有欠款未还,无法发布新招聘信息"); } if ($bizTrader["catalog"] < 0) { throw new GeneralException("", "您尚未完善信息,无法发布新招聘信息"); } if ($bizTrader["catalog"] == 0 && empty($bizTrader["lawer_idcard"])) { throw new GeneralException("", "您尚未完成实名认证(提交身份证信息),无法发布新招聘信息"); } if ($bizTrader["catalog"] == 1 && empty($bizTrader["bizlicense_pic"])) { throw new GeneralException("", "您尚未完成实名认证(提交营业执照),暂时无法发布新招聘信息"); } } $bizData = isset($ajaxdata["bizData"]) ? $ajaxdata["bizData"] : $GPC["bizData"]; if (empty($bizData)) { throw new GeneralException("", "没有传递必要的bizData参数"); } /***字段参数收集并校验**start***/ $saveData = array(); $saveData["title"] = trim($bizData["title"]); if (mb_strlen($saveData["title"]) <= 0 || mb_strlen($saveData["title"]) > 180 || !preg_match("/^.*$/", $saveData["title"])) { throw new GeneralException("", "标题必填,且长度范围为1-180!"); } $saveData["profile_photo"] = trim($bizData["profile_photo"]); // if ($handleMode == "upsertLaunchAudit")//只在提交审核时验证 // if(mb_strlen($saveData["profile_photo"])<=0 || mb_strlen($saveData["profile_photo"])>120 // || !preg_match("/^.*$/",$saveData["profile_photo"])) // throw new GeneralException("","图片路径必填,且长度范围为1-120!"); $saveData["work_typename"] = trim($bizData["work_typename"]); $saveData["feeper"] = floatval($bizData["feeper"]); $saveData["feetotal"] = floatval($bizData["feetotal"]); if ($handleMode == "upsertLaunchAudit" && intval($saveData["feetotal"]) <= 0) { throw new GeneralException("", "金额费用没有设置且不能小于等于0"); } $saveData["meals_providing"] = intval($bizData["meals_providing"]); $saveData["urgent_level"] = intval($bizData["urgent_level"]); $saveData["settle_catalog"] = intval($bizData["settle_catalog"]); $saveData["begin_datetime"] = intval(strtotime(date("Y-m-d", strtotime($bizData["begin_datetime"])))); if ($handleMode == "upsertLaunchAudit") { //只在提交审核时验证 if ($saveData["begin_datetime"] <= 0) { throw new GeneralException("", "开始日期必填"); } if (intval($saveData["begin_datetime"]) < strtotime(date("Y-m-d", time()))) { throw new GeneralException("lessToday", "开始日期不能小于今天"); } } $saveData["finish_datetime"] = intval(strtotime(date("Y-m-d", strtotime($bizData["finish_datetime"])))); if ($handleMode == "upsertLaunchAudit") { //只在提交审核时验证 if ($saveData["settle_catalog"] <= 0 && ($saveData["finish_datetime"] - $saveData["begin_datetime"]) < 0) { throw new GeneralException("", "完工结日期不能小于开始日期!"); } if (($saveData["finish_datetime"] - $saveData["begin_datetime"]) > 3600 * 24 * 6) { throw new GeneralException("", "完工结日期跨度不能大于7天!"); } } $saveData["begin_hour"] = trim($bizData["begin_hour"]); if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (mb_strlen($saveData["begin_hour"]) != 5 || !preg_match("/^\d\d:\d\d$/", $saveData["begin_hour"])) { throw new GeneralException("", "开工时间不正确 应该是 nn:nn 模式"); } } $begin_hour = explode(":", $saveData["begin_hour"]); $saveData["begin_hour2"] = intval($begin_hour[0]) * 3600 + intval($begin_hour[1]) * 60; if ($handleMode == "upsertLaunchAudit") { //只在提交审核时验证 // 阿东注释代码 添加招聘时,时间限制去掉 // if((intval($saveData["begin_datetime"])+(intval($saveData["begin_hour2"])))<(time()+3600*2)) // throw new GeneralException("overdue","设置的开工日期时间已经进入自动下架了,请核查修正!"); if ((intval($saveData["begin_datetime"]) + (intval($saveData["begin_hour2"]))) <= time()) { throw new GeneralException("overdue", "开工时间请大于当前时间"); } } $saveData["finish_hour"] = trim($bizData["finish_hour"]); if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (mb_strlen($saveData["finish_hour"]) != 5 || !preg_match("/^\d\d:\d\d$/", $saveData["finish_hour"])) { throw new GeneralException("", "完工时间不正确 应该是 nn:nn 模式"); } } $finish_hour = explode(":", $saveData["finish_hour"]); $saveData["finish_hour2"] = intval($finish_hour[0]) * 3600 + intval($finish_hour[1]) * 60; $saveData["need_total"] = intval($bizData["need_total"]); if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (intval($saveData["need_total"]) <= 0) { throw new GeneralException("", "需求总人数没有设置且不能小于等于0"); } } $saveData["need_perday"] = intval($bizData["need_perday"]); $saveData["requirements"] = json_encode($bizData["requirements"]); //标签列表 if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (empty($saveData["requirements"])) { throw new GeneralException("", "招聘要求必填"); } } $saveData["linker_name"] = trim($bizData["linker_name"]); if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (mb_strlen($saveData["linker_name"]) <= 0 || mb_strlen($saveData["linker_name"]) > 30 || !preg_match("/^.*$/", $saveData["linker_name"])) { throw new GeneralException("", "联系人姓名必填,且长度范围为1-30!"); } } $saveData["linker_phone"] = trim($bizData["linker_phone"]); // if(mb_strlen($saveData["linker_phone"])<=0 || mb_strlen($saveData["linker_phone"])>20 // || !preg_match("/^.*$/",$saveData["linker_phone"])) // throw new GeneralException("","联系人电话必填,且长度范围为1-20!"); $saveData["age_mode"] = intval($bizData["age_mode"]); $saveData["age_min"] = intval($bizData["age_min"]); $saveData["age_max"] = intval($bizData["age_max"]); $saveData["gender_mode"] = intval($bizData["gender_mode"]); $saveData["work_addr"] = $bizData["work_addr"]; if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (empty($saveData["work_addr"])) { throw new GeneralException("", "工作地址信息必填"); } } $saveData["work_addr1"] = json_encode($bizData["work_addr1"]); $saveData["work_addr_lng"] = trim($bizData["work_addr_lng"]); if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (!preg_match("/^\d{1,}.\d{1,}$/", $saveData["work_addr_lng"])) { throw new GeneralException("", "工作地址经度不能为空或格式不正确"); } } $saveData["work_addr_lat"] = trim($bizData["work_addr_lat"]); if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (!preg_match("/^\d{1,}.\d{1,}$/", $saveData["work_addr_lat"])) { throw new GeneralException("", "工作地址纬度不能为空或格式不正确"); } } $saveData["work_desc"] = trim($bizData["work_desc"]); if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证 { if (mb_strlen($saveData["work_desc"]) <= 0) { throw new GeneralException("", "工作内容必填"); } } $saveData["work_process"] = trim($bizData["work_process"]); $saveData["work_remark"] = trim($bizData["work_remark"]); $saveData["enroll_audit"] = intval($bizData["enroll_audit"]); $saveData["settle_mode"] = intval($bizData["settle_mode"]); //关联商家的id $saveData["biz_traderid"] = $bizTrader["id"]; /***字段参数收集并校验**finish***/ $lockid = intval($saveData["biz_traderid"]); $param = array("handleMode" => $handleMode, "bizTrader" => $bizTrader, "saveData" => $saveData, "bizData" => $bizData); $backdata = biz_flkForTrader($lockid, $param, function ($param) { $handleMode = $param["handleMode"]; $bizTrader = $param["bizTrader"]; $saveData = $param["saveData"]; $bizData = $param["bizData"]; $sqlTemp = ""; $sqlParam = array(); if (intval($bizData["id"]) <= 0) { if ($handleMode == "upsertLaunchAudit") { $saveData["status"] = 1; //一步提交审核 $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 提交审核 \n"; } if ($handleMode == "upsertReset") { throw new GeneralException("", "新增模式下,进行驳回后的修复是不可能的啊!!"); } $saveData["createtime"] = time(); //随机生成报名头像列表 $enrolled_heads = ""; $tmpCount = 0; $enrolled_heads .= rand(1, 100) . ','; while ($tmpCount <= 5) { $newRomdom = rand(1, 100); while (mb_strpos($enrolled_heads, $newRomdom . ',') !== false) { $newRomdom = rand(1, 100); } $enrolled_heads .= $newRomdom . ','; $tmpCount++; } $saveData["enrolled_heads"] = $enrolled_heads; $upsertSet = pdo_buildSetSQL("", $saveData); $sqlParam += $upsertSet["params"]; //合并参数集合 $sqlTemp .= " insert into biz_trader_recruit set " . $upsertSet["fields"] . ";"; $sqlTemp .= " set @bizid=LAST_INSERT_ID();"; } else { $oldData = pdo_fetch("select * from biz_trader_recruit where id=" . intval($bizData["id"])); if (empty($oldData)) { throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!"); } if (intval($oldData["deleted"]) != 0) { throw new GeneralException("", "此记录已删除了,请核查后再处理!"); } if (intval($oldData["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "此记录不是您所拥有的招聘信息,请核查后再处理!"); } if ($handleMode == "upsert") { if (intval($oldData["status"]) != 0) { throw new GeneralException("", "当前招聘记录已不是待提交,无法保存到草稿,请核查!"); } $saveData["status"] = 0; $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 保存到草稿 \n" . trim($oldData["remark"]); } if ($handleMode == "upsertLaunchAudit") { if (intval($oldData["status"]) > 0) { throw new GeneralException("", "当前招聘记录已不是待提交和被驳回状态,无法提交审核,请核查!"); } $saveData["status"] = 1; //一步提交审核 $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 提交审核 \n" . trim($oldData["remark"]); } if ($handleMode == "upsertReset") { if (intval($oldData["status"]) != -1) { throw new GeneralException("", "当前招聘记录已不是被驳回状态,无法保存到草稿,请核查!"); } $saveData["status"] = 0; //驳回再保存,修复为待提交状态 $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 驳回再保存,修复为待提交状态 \n" . trim($oldData["remark"]); } $saveData["updatetime"] = time(); $upsertSet = pdo_buildSetSQL("", $saveData); $sqlParam += $upsertSet["params"]; $sqlTemp .= " update biz_trader_recruit set " . $upsertSet["fields"] . " "; $sqlTemp .= " where id=" . intval($bizData["id"]) . ";"; $sqlTemp .= " set @bizid=" . intval($bizData["id"]) . ";"; } if ($handleMode == "upsertLaunchAudit") { //自动审核处理过程逻辑 $recuritRule = bizbase_fetchBaseConfig("RecuritRule", true); $feetotal = round($saveData["feetotal"], 2); if ($feetotal < $recuritRule["feeper_min"]) { throw new GeneralException("", "金额费用不能小于最低金额 " . $recuritRule["feeper_min"] . " 元"); } if (true) { //自动审核处理过程逻辑 $sqlParam[":plat_fetchrate"] = round(floatval($recuritRule["plater_getrate"] / 100), 2); $sqlParam[":plat_fetchmoney"] = round($feetotal * $sqlParam[":plat_fetchrate"], 2); $sqlParam[":sharer_fetchrate"] = round(floatval($recuritRule["share_getrate"] / 100), 2); $sqlParam[":sharer_fetchmoney"] = round($sqlParam[":plat_fetchmoney"] * $sqlParam[":sharer_fetchrate"], 2); $sqlParam[":salary"] = round($feetotal - $sqlParam[":plat_fetchmoney"], 2); if ($sqlParam[":salary"] <= 0) { throw new GeneralException("", "平台分的有点多了吧,工资都没了"); } if ($sqlParam[":sharer_fetchmoney"] > $sqlParam[":plat_fetchmoney"]) { throw new GeneralException("", "分享分销分成金额大于了平台分成金额了"); } $feeper = $sqlParam[":salary"]; if (intval($saveData["settle_catalog"]) <= 0 && intval($saveData["finish_datetime"]) > intval($saveData["begin_datetime"])) { $startWorkDate = strtotime(date("Y-m-d", intval($saveData["begin_datetime"]))); $days = 0; do { $days++; $startWorkDate = strtotime("+1day", strtotime(date("Y-m-d", $startWorkDate))); } while ($startWorkDate <= strtotime(date("Y-m-d", intval($saveData["finish_datetime"])))); $feeper = round($sqlParam[":salary"] / $days, 2); } $sqlParam[":auto_feeper"] = $feeper; $sqlParam[":auto_nowtime"] = time(); $sqlParam[":auto_status"] = 2; $sqlParam[":auto_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 自动审核通过 \n"; // feeper和salary $sqlTemp .= " update biz_trader_recruit set updatetime=:auto_nowtime, `status`=:auto_status, remark=concat(:auto_remark,ifnull(remark,'')) ,plat_fetchrate=:plat_fetchrate,plat_fetchmoney=:plat_fetchmoney ,sharer_fetchrate=:sharer_fetchrate,sharer_fetchmoney=:sharer_fetchmoney ,salary=:salary,feeper=:auto_feeper where id=@bizid;"; } if (true) { //免费次数处理逻辑 $need_total = intval($saveData["need_total"]); $freeCount = intval($bizTrader["freecount"]); $freeCount = $freeCount <= 0 ? 0 : $freeCount; $freecount_used = intval($bizTrader["freecount_used"]); $freecount_used = $freecount_used <= 0 ? 0 : $freecount_used; $canUseFreeCount = $freeCount - $freecount_used; $useFreeCount = 0; if (intval($canUseFreeCount) > 0) { $useFreeCount = ($canUseFreeCount >= $need_total) ? $need_total : $canUseFreeCount; } $payCount = $need_total - $useFreeCount; $accountInfo = pdo_fetchall("select type,ifnull(sum(ifnull(count,0)),0) as total from biz_trader_numaccount where `deleted`=0 and `status`=1 and biz_traderid=" . intval($saveData["biz_traderid"]) . " group by type"); $totalIncome = 0; $totalOutgoing = 0; foreach ($accountInfo as $item) { switch (intval($item["type"])) { case 0: $totalIncome = intval($item["total"]); break; case 1: $totalOutgoing = intval($item["total"]); break; } } $totalbalance = $totalIncome - $totalOutgoing; if ($totalbalance < $payCount) { throw new GeneralException("NoEnoughCount", array( "tip" => "剩余次数不足支付本次招聘的人次,请先充值次数!", "useFreeCount" => $useFreeCount, "payCount" => $payCount, "balance" => $totalbalance, "dvalue" => $payCount - $totalbalance, )); } if (intval($useFreeCount) > 0) { $sqlTemp .= " update biz_trader set updatetime=" . time() . " "; $sqlTemp .= " ,freecount_used=ifnull(freecount_used,0)+" . intval($useFreeCount) . " "; $sqlParam[":freecount_used_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 扣减免费" . intval($useFreeCount) . "次数 招聘记录id=>"; $sqlTemp .= " ,freecount_used_remark=concat(:freecount_used_remark,@bizid,'\n',ifnull(freecount_used_remark,'')) "; $sqlTemp .= " where id=" . intval($bizTrader["id"]) . ";"; } $sqlTemp .= " insert into biz_trader_numaccount set createtime=" . time() . " "; $sqlTemp .= " ,biz_traderid=" . intval($bizTrader["id"]) . " "; $sqlTemp .= " ,type=1,biz_catalog=0,biz_id=@bizid,`count`=" . intval($payCount) . ",`freecount`=" . intval($useFreeCount); $sqlParam[":numaccount_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 扣减免费次数" . intval($useFreeCount) . ",额外次数" . intval($payCount) . " 招聘记录id=>"; $sqlTemp .= " ,`status`=1,remark=concat(:numaccount_remark,@bizid,'\n',ifnull(remark,''));"; } } $sqlTemp .= " select * from biz_trader_recruit where id=@bizid;"; $dataset = pdo_query3($sqlTemp, $sqlParam); $backdata = $dataset[count($dataset) - 1][0]; return $backdata; }); return $backdata; break; case "deleteByTrader": if ($handleMode == "deleteByTrader") { $bizTrader = $bizUser; } $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; //if (empty($reason)) throw new GeneralException("", "下架必须输入要原因!"); $trader = pdo_fetch("select * from biz_trader_recruit where id=" . intval($bizId)); if (empty($trader)) { throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!"); } if (intval($trader["status"]) != -1) { throw new GeneralException("", "招聘信息当前不是【被驳回】状态,请核查招聘信息实际状态后再处理!"); } if (intval($trader["deleted"]) != 0) { throw new GeneralException("", "招聘信息已删除了,请核查招聘信息实际状态后再处理!"); } if ($handleMode == "deleteByTrader" && intval($trader["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "此记录不是您所拥有的招聘信息,请核查后再处理!"); } $backdata = pdo_query("update biz_trader_recruit set updatetime=:nowtime, `deleted`=1, remark=concat(:remark,ifnull(remark,'')) where id=:id;", array( ":nowtime" => time(), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 删除 $reason\n", ":id" => intval($bizId), )); return $backdata; break; case "audit": //提取必要参数 $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"]; if (trim($todo) != "allow" && trim($todo) != "refuse") { throw new GeneralException("", "没有传递必要的todo参数,或参数值不正确"); } $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; if (trim($todo) == "refuse" && empty($reason)) { throw new GeneralException("", "拒绝驳回必须输入要原因!"); } //前置条件判定 $recruit = pdo_fetch("select btr.*,bt.certif_confirmed as bt_certif_confirmed from biz_trader_recruit btr left join biz_trader bt on bt.id=btr.biz_traderid where btr.id=" . intval($bizId)); if (empty($recruit)) { throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!"); } if (intval($recruit["status"]) != 1) { throw new GeneralException("", "招聘信息当前不是【待审核】状态,请核查招聘信息实际状态后再处理!"); } if (intval($recruit["deleted"]) != 0) { throw new GeneralException("", "招聘信息已删除了,请核查招聘信息实际状态后再处理!"); } $sqlParams = array(); $sqlParams[":id"] = intval($bizId); $sqlParams[":nowtime"] = time(); $operatorName = empty($baseUser["login_name"]) ? "" : " " . $baseUser["login_name"] . " "; if ((trim($todo) == "refuse")) { $sqlParams[":status"] = -1; $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 申请被{$operatorName}驳回:$reason \n"; $lockid = intval($recruit["biz_traderid"]); $param = array("recruit" => $recruit, "sqlParams" => $sqlParams); $backdata = biz_flkForTrader($lockid, $param, function ($param) { $recruit = $param["recruit"]; $sqlParams = $param["sqlParams"]; $sqlParams[":biz_traderid"] = intval($recruit["biz_traderid"]); $sqlTemp = ""; $sqlTemp .= " update biz_trader_recruit set updatetime=:nowtime, `status`=:status, remark=concat(:remark,ifnull(remark,'')) where id=:id;"; $sqlTemp .= " select @numaccountId:=id,@useFreeCount:=`freecount` from biz_trader_numaccount "; $sqlTemp .= " where `deleted`=0 and biz_traderid=:biz_traderid and type=1 and biz_catalog=0 and biz_id=:id "; $sqlTemp .= " order by id desc limit 1;"; $sqlTemp .= " update biz_trader_numaccount set updatetime=:nowtime, `deleted`=1 "; $sqlParams[":numaccount_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 驳回后恢复次数 \n"; $sqlTemp .= " ,remark=concat(:numaccount_remark,ifnull(remark,''))"; $sqlTemp .= " where id=@numaccountId;"; $sqlTemp .= " update biz_trader set updatetime=:nowtime "; $sqlTemp .= " ,freecount_used=ifnull(freecount_used,0)-ifnull(@useFreeCount,0) "; $sqlParams[":freecount_used_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 驳回后恢复免费次数【"; $sqlTemp .= " ,freecount_used_remark=concat(:freecount_used_remark,ifnull(@useFreeCount,0),'】招聘记录id=>',:id,'\n',ifnull(freecount_used_remark,'')) "; $sqlTemp .= " where id=:biz_traderid;"; $backdata = pdo_query3($sqlTemp, $sqlParams); return $backdata; }); return $backdata; } else { if (intval($recruit["bt_certif_confirmed"]) < 1) { throw new GeneralException("", "此招聘信息对应的商家实名认证还未确认,不应该审核通过,请核查!!"); } $platcutMode = isset($ajaxdata["platcutMode"]) ? $ajaxdata["platcutMode"] : $GPC["platcutMode"]; $platcutValue = isset($ajaxdata["platcutValue"]) ? $ajaxdata["platcutValue"] : $GPC["platcutValue"]; switch (intval($platcutMode)) { case 0: $plat_fetchrate = round(floatval($platcutValue), 2); $plat_fetchmoney = round(floatval($recruit["feetotal"]) * $plat_fetchrate / 100, 2); $plat_fetchmoney = $plat_fetchmoney < 0 ? 0 : $plat_fetchmoney; break; case 1: $plat_fetchmoney = round(floatval($platcutValue), 2); $plat_fetchmoney = $plat_fetchmoney < 0 ? 0 : $plat_fetchmoney; $plat_fetchrate = round($plat_fetchmoney / floatval($recruit["feetotal"]) * 100, 2); break; default:throw new GeneralException("", "platcutMode参数不正确!"); } $sharecutMode = isset($ajaxdata["sharecutMode"]) ? $ajaxdata["sharecutMode"] : $GPC["sharecutMode"]; $sharecutValue = isset($ajaxdata["sharecutValue"]) ? $ajaxdata["sharecutValue"] : $GPC["sharecutValue"]; switch (intval($sharecutMode)) { case 0: $sharer_fetchrate = round(floatval($sharecutValue), 2); $sharer_fetchmoney = round($plat_fetchmoney * $sharer_fetchrate / 100, 2); $sharer_fetchmoney = $sharer_fetchmoney < 0 ? 0 : $sharer_fetchmoney; break; case 1: $sharer_fetchmoney = round(floatval($sharecutValue), 2); $sharer_fetchmoney = $sharer_fetchmoney < 0 ? 0 : $sharer_fetchmoney; $sharer_fetchrate = round($sharer_fetchmoney / $plat_fetchmoney * 100, 2); break; default:throw new GeneralException("", "platcutMode参数不正确!"); } $sqlParams[":status"] = 2; $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] {$operatorName}审核通过 \n"; $sqlParams[":plat_fetchrate"] = $plat_fetchrate; $sqlParams[":plat_fetchmoney"] = $plat_fetchmoney; $sqlParams[":sharer_fetchrate"] = $sharer_fetchrate; $sqlParams[":sharer_fetchmoney"] = $sharer_fetchmoney; $sqlParams[":salary"] = (round(floatval($recruit["feetotal"]), 2) - $plat_fetchmoney); if ($sqlParams[":salary"] <= 0) { throw new GeneralException("", "平台分的有点多了吧,工资都没了"); } if ($sharer_fetchmoney > $plat_fetchmoney) { throw new GeneralException("", "分享分销分成金额大于了平台分成金额了"); } $feeper = $sqlParams[":salary"]; if (intval($recruit["settle_catalog"]) <= 0 && intval($recruit["finish_datetime"]) > intval($recruit["begin_datetime"])) { $startWorkDate = strtotime(date("Y-m-d", intval($recruit["begin_datetime"]))); $days = 0; do { $days++; $startWorkDate = strtotime("+1day", strtotime(date("Y-m-d", $startWorkDate))); } while ($startWorkDate <= strtotime(date("Y-m-d", intval($recruit["finish_datetime"])))); $feeper = round($sqlParams[":salary"] / $days, 2); } $sqlParams[":feeper"] = $feeper; $backdata = pdo_query("update biz_trader_recruit set updatetime=:nowtime, `status`=:status, remark=concat(:remark,ifnull(remark,'')) ,plat_fetchrate=:plat_fetchrate,plat_fetchmoney=:plat_fetchmoney ,sharer_fetchrate=:sharer_fetchrate,sharer_fetchmoney=:sharer_fetchmoney ,salary=:salary,feeper=:feeper where id=:id;", $sqlParams); return $backdata; } break; case "terminate": $recuritIds = isset($ajaxdata["recuritIds"]) ? $ajaxdata["recuritIds"] : $GPC["recuritIds"]; if (empty($recuritIds)) { throw new GeneralException("", "没有传递必要的recuritIds参数"); } $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; $idSet = array(); foreach ($recuritIds as $item) { array_push($idSet, intval($item)); } $idSet = implode(",", $idSet); $recuritList = pdo_fetchall("select * from biz_trader_recruit where id in ({$idSet}) "); if (empty($recuritList)) { throw new GeneralException("", "没有定位到任何招聘记录!"); } $sqlTemp = ""; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":status"] = 3; $sqlParam[":biz_traderid"] = intval($bizTrader["id"]); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 终止招聘 $reason \n"; // $sql = "select * from biz_todowork where biz_recruitid= 476 and ( `status`=-1 or `status`=-3 or `status`>=2 or `status`!=5)"; // $recruit = pdo_fetch($sql, array()); // var_dump($recruit); // die; foreach ($recuritList as $item) { if (intval($item["deleted"]) != 0) { throw new GeneralException("", "招聘记录已被删除了!"); } if (intval($item["status"]) != 2) { throw new GeneralException("", "招聘记录不是进行中已审核状态了!"); } if (intval($item["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "招聘记录不是您发布的!"); } $no_count = "select count(*) as no_count from biz_todowork where biz_recruitid={$item["id"]} and status = 1"; //待审核数量 $no = pdo_fetch($no_count, array()); if ($no['no_count'] != 0) { throw new GeneralException("", "此招聘还有待录用待审核的报名记录,不能终止招聘,请核查!"); } $ok_count = "select count(*) as ok_count from biz_todowork where biz_recruitid={$item["id"]} and status in (2,3,4,5,90)"; //已录用人数 $ok = pdo_fetch($ok_count, array()); $sum_count = " select * from biz_trader_recruit where id={$item["id"]};"; //总录用人数 $sum = pdo_fetch($sum_count, array()); $mainRemain2 = $sum['need_total'] - $ok['ok_count']; $sqlParam[":recruitId"] = intval($item["id"]); $sqlParam[":remain_numtotal"] = $mainRemain2; $sqlTemp = " update biz_trader_recruit set updatetime=:nowtime,istop=0 "; $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where id=:recruitId;"; $sqlTemp .= " set @placeholder111=:biz_traderid;"; $sqlTemp .= " set @placeholder222=:remain_numtotal;"; if (intval($mainRemain2) > 0) { $sqlTemp .= " insert into biz_trader_numaccount set createtime=:nowtime"; $sqlTemp .= " ,biz_traderid=:biz_traderid "; //直接返还到非免费次数即可;账目可平! $sqlTemp .= " ,type=0,biz_catalog=1,biz_id=:recruitId,`status`=1,`count`=:remain_numtotal"; $sqlTemp .= " ,remark='[" . date("Y-m-d H:i:s", time()) . "] 因终止招聘返回剩余次数';"; } $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; bizbase_recruitWorkLock($item["id"], 0, $sqlParam, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList, $mainRemain2) { $sqlParam = $bizArgs; if (intval($mainRemain) != intval($mainRemain2)) { throw new GeneralException("", "此招聘还有待录用待审核的报名记录,不能终止招聘,请核查!"); } $sqlParam[":recruitId"] = intval($recruitId); $sqlParam[":remain_numtotal"] = intval($mainRemain2); $sqlTemp = " update biz_trader_recruit set updatetime=:nowtime,istop=0 "; $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where id=:recruitId;"; $sqlTemp .= " set @placeholder111=:biz_traderid;"; $sqlTemp .= " set @placeholder222=:remain_numtotal;"; if (intval($mainRemain2) > 0) { $sqlTemp .= " insert into biz_trader_numaccount set createtime=:nowtime"; $sqlTemp .= " ,biz_traderid=:biz_traderid "; //直接返还到非免费次数即可;账目可平! $sqlTemp .= " ,type=0,biz_catalog=1,biz_id=:recruitId,`status`=1,`count`=:remain_numtotal"; $sqlTemp .= " ,remark='[" . date("Y-m-d H:i:s", time()) . "] 因终止招聘返回剩余次数';"; } $backdata = pdo_query3($sqlTemp, $sqlParam); }); } return true; break; case "breakoff": $breakdate = isset($ajaxdata["breakdate"]) ? $ajaxdata["breakdate"] : $GPC["breakdate"]; if (empty($breakdate)) { throw new GeneralException("", "没有传递必要的breakdate参数"); } $breakdate = strtotime(date("Y-m-d", strtotime($breakdate))); if ($breakdate < strtotime(date("Y-m-d", time()))) { throw new GeneralException("", "违约日期不能是今天以前啊"); } $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; $recuritIds = isset($ajaxdata["recuritIds"]) ? $ajaxdata["recuritIds"] : $GPC["recuritIds"]; $idSet = array(); foreach ($recuritIds as $item) { array_push($idSet, intval($item)); } $idSet = implode(",", $idSet); $recuritList = pdo_fetchall("select * from biz_trader_recruit where id in ({$idSet}) "); if (empty($recuritList)) { throw new GeneralException("", "没有定位到任何招聘记录!"); } $recuritRule = bizbase_fetchBaseConfig("RecuritRule", true); $errMsgs = array(); foreach ($recuritList as $item) { try { $recuritTitle = $item["title"]; if (intval($item["deleted"]) != 0) { throw new GeneralException("", "招聘记录[{$recuritTitle}]已被删除了!"); } //if (!(intval($item["status"]) == 2 || intval($item["status"]) == 3)) throw new GeneralException("", "招聘记录[{$recuritTitle}]不是进行中已审核状态了!"); if (intval($item["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "招聘记录[{$recuritTitle}]不是您发布的!"); } $bizArgs = array("bizTrader" => $bizTrader, "recruitInfo" => $item, "breakdate" => $breakdate, "reason" => $reason, "recuritRule" => $recuritRule); $backdata = bizbase_recruitWorkLock($item["id"], 0, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList) { $bizTrader = $bizArgs["bizTrader"]; $recruitInfo = $bizArgs["recruitInfo"]; $breakdate = $bizArgs["breakdate"]; $reason = '【' . $bizArgs["reason"] . '】'; $recuritRule = $bizArgs["recuritRule"]; $recuritTitle = $recruitInfo["title"]; if (!isset($pickDateList[$breakdate])) { throw new GeneralException("", "招聘记录工作日期中[{$recuritTitle}]不存在违约日期" . date("Y-m-d", $breakdate) . "!"); } $tbreak_cutrate = round($recuritRule["tbreak_cutrate"] / 100, 2); $tbreak_cutmoney = round($recruitInfo["feetotal"] * $tbreak_cutrate, 2); if ($tbreak_cutmoney <= 0) { $tbreak_cutmoney = 0; } $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_recruitid"] = $recruitInfo["id"]; $sqlParam[":breakdate"] = strtotime(date("Y-m-d", $breakdate)); $sqlParam[":breakDateStart"] = strtotime(date("Y-m-d", $breakdate)); $sqlParam[":breakDateFinish"] = strtotime(date("Y-m-d 23:59:59", $breakdate)); $sqlParam[":tdwkstatus111"] = -4; //-1-报名被驳回;-3-被违约 -4-被动取消; $sqlParam[":tdwkstatus222"] = -3; $sqlParam[":tbreak_cutmoney"] = $tbreak_cutmoney; //商家违约金 $sqlParam[":remark111"] = "[" . date("Y-m-d H:i:s", time()) . "] 待录用违约处理,返还报名押金 $reason \n"; $sqlParam[":remark222"] = "[" . date("Y-m-d H:i:s", time()) . "] 已录用违约处理,返还报名押金及商家支付违约金 $reason \n"; $sqlTemp = ""; //-------------待录用-------------------// //退还押金 $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, :remark111 "; $sqlTemp .= " from biz_todowork"; $sqlTempE111 = " where `workteam_mode`=0 and `status`=1 and biz_recruitid=:biz_recruitid"; $sqlTempE111 .= " and todo_begindate>=:breakDateStart and todo_begindate<=:breakDateFinish"; $sqlTemp .= $sqlTempE111 . ";"; //后置修正状态 $sqlTemp .= " update biz_todowork set updatetime=:nowtime "; $sqlTemp .= " ,`status`=:tdwkstatus111, remark=concat(:remark111,ifnull(remark,''))"; $sqlTemp .= $sqlTempE111 . ";"; //-------------已录用-------------------// //------违约记录 $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)"; $sqlTemp .= " select :nowtime, 2, tdwk.id"; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; //已结束工作了就不能再被违约了,都干完活了就进入结算流程了 $sqlTempE111 = " where tdwk.`workteam_mode`=0 and tdwk.`status`>=2 and tdwk.`status`<4 and tdwk.biz_recruitid=:biz_recruitid"; $sqlTempE111 .= " and tdwk.todo_begindate>=:breakDateStart and tdwk.todo_begindate<=:breakDateFinish"; $sqlTemp .= $sqlTempE111 . ";"; //退还押金 $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select tdwk.biz_workerid , :nowtime , 0 , tdwk.enroll_premoney, 1, 7 , tdwk.id, :remark222 "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= $sqlTempE111 . ";"; //商家冻结费用解冻 $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6 , tdwk.id, :remark222 "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= $sqlTempE111 . ";"; //商家支付会员违约金 $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select btr.biz_traderid, :nowtime , 1 , :tbreak_cutmoney, 1, 9 , tdwk.id, :remark222 "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= $sqlTempE111 . ";"; $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select tdwk.biz_workerid , :nowtime , 0 , :tbreak_cutmoney, 1, 6 , tdwk.id, :remark222 "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= $sqlTempE111 . ";"; //必须后置 $sqlTemp .= " update biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " set tdwk.updatetime=:nowtime, tdwk.`status`=:tdwkstatus222, tdwk.remark=concat(:remark222,ifnull(tdwk.remark,''))"; $sqlTemp .= $sqlTempE111 . ";"; //-------------------------------------------------------------------------------------- $sqlTemp .= " insert into biz_recruit_break set createtime=:nowtime "; $sqlTemp .= " , biz_recruitid=:biz_recruitid, `breakdate`=:breakdate"; $sqlTemp .= " , remark=:remark222;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; }); } catch (Throwable $ex) { array_push($errMsgs, $ex->getMessage()); } } if (!empty($errMsgs)) { throw new GeneralException("hasError", implode(" ", $errMsgs)); } return true; break; case "grabDelegate": $recruitId = isset($ajaxdata["recruitId"]) ? $ajaxdata["recruitId"] : $GPC["recruitId"]; if (intval($recruitId) <= 0) { throw new GeneralException("", "没有传递必要的recruitId参数"); } $bizArgs = array("handleMode" => $handleMode, "bizTrader2" => $bizTrader2); $backdata = bizbase_recruitWorkLock($recruitId, 0, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList) { $bizTrader2 = $bizArgs["bizTrader2"]; $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } if (intval($recruitInfo["status"]) != 2) { throw new GeneralException("", "当前招聘信息已不是进行中状态,无法授权!"); } $nowDelegate = bizTrader2_getRecuritDelegate($recruitId); if (!empty($nowDelegate)) { if (intval($nowDelegate["biz_trader2id"]) != intval($bizTrader2["id"])) { throw new GeneralException("otherGrabed", "其他人已抢先获取到了此招聘的授权!"); } } else { $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_recruitid"] = $recruitInfo["id"]; $sqlParam[":biz_trader2id"] = intval($bizTrader2["id"]); $sqlParam[":biz_traderid"] = intval($recruitInfo["biz_traderid"]); $sqlParam[":finish_datetime"] = strtotime("+12hour"); $sqlParam[":remark"] = "授权"; $sqlTemp = " insert into biz_recruit_delegate set createtime=:nowtime "; $sqlTemp .= " , biz_recruitid=:biz_recruitid, biz_trader2id=:biz_trader2id"; $sqlTemp .= " , biz_traderid=:biz_traderid"; $sqlTemp .= " , `begin_datetime`=:nowtime, `finish_datetime`=:finish_datetime"; $sqlTemp .= " , remark=:remark;"; $sqlTemp .= " select brd.*,btr.title as recuritTitle,bt.company_name "; $sqlTemp .= " from biz_recruit_delegate brd "; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=brd.biz_recruitid "; $sqlTemp .= " left join biz_trader bt on bt.id=btr.biz_traderid "; $sqlTemp .= " where brd.id=LAST_INSERT_ID();"; $dataset = pdo_query3($sqlTemp, $sqlParam); $nowDelegate = $dataset[count($dataset) - 1][0]; if (empty($nowDelegate)) { throw new GeneralException("", "异常!"); } } $nowDelegate["begin_datetime"] = date("Y-m-d H:i:s", $nowDelegate["begin_datetime"]); $nowDelegate["finish_datetime"] = date("Y-m-d H:i:s", $nowDelegate["finish_datetime"]); return $nowDelegate; }); return $backdata; case "feeCalculate": //提取必要参数 $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } //前置条件判定 $recruit = pdo_fetch("select btr.*,bt.certif_confirmed as bt_certif_confirmed from biz_trader_recruit btr left join biz_trader bt on bt.id=btr.biz_traderid where btr.id=" . intval($bizId)); if (empty($recruit)) { throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!"); } $platcutMode = isset($ajaxdata["platcutMode"]) ? $ajaxdata["platcutMode"] : $GPC["platcutMode"]; $platcutValue = isset($ajaxdata["platcutValue"]) ? $ajaxdata["platcutValue"] : $GPC["platcutValue"]; switch (intval($platcutMode)) { case 0: $plat_fetchrate = round(floatval($platcutValue), 2); $plat_fetchmoney = round(floatval($recruit["feetotal"]) * $plat_fetchrate / 100, 2); $plat_fetchmoney = $plat_fetchmoney < 0 ? 0 : $plat_fetchmoney; break; case 1: $plat_fetchmoney = round(floatval($platcutValue), 2); $plat_fetchmoney = $plat_fetchmoney < 0 ? 0 : $plat_fetchmoney; $plat_fetchrate = round($plat_fetchmoney / floatval($recruit["feetotal"]) * 100, 2); break; default:throw new GeneralException("", "platcutMode参数不正确!"); } $sharecutMode = isset($ajaxdata["sharecutMode"]) ? $ajaxdata["sharecutMode"] : $GPC["sharecutMode"]; $sharecutValue = isset($ajaxdata["sharecutValue"]) ? $ajaxdata["sharecutValue"] : $GPC["sharecutValue"]; switch (intval($sharecutMode)) { case 0: $sharer_fetchrate = round(floatval($sharecutValue), 2); $sharer_fetchmoney = round($plat_fetchmoney * $sharer_fetchrate / 100, 2); $sharer_fetchmoney = $sharer_fetchmoney < 0 ? 0 : $sharer_fetchmoney; break; case 1: $sharer_fetchmoney = round(floatval($sharecutValue), 2); $sharer_fetchmoney = $sharer_fetchmoney < 0 ? 0 : $sharer_fetchmoney; $sharer_fetchrate = round($sharer_fetchmoney / $plat_fetchmoney * 100, 2); break; default:throw new GeneralException("", "platcutMode参数不正确!"); } if (is_nan($plat_fetchrate)) { $plat_fetchrate = ""; } if (is_nan($plat_fetchmoney)) { $plat_fetchmoney = ""; } if (is_nan($sharer_fetchrate)) { $sharer_fetchrate = ""; } if (is_nan($sharer_fetchmoney)) { $sharer_fetchmoney = ""; } if ($plat_fetchrate == INF) { $plat_fetchrate = "∞"; } if ($plat_fetchmoney == INF) { $plat_fetchmoney = "∞"; } if ($sharer_fetchrate == INF) { $sharer_fetchrate = "∞"; } if ($sharer_fetchmoney == INF) { $sharer_fetchmoney = "∞"; } $salary_money = round(floatval($recruit["feetotal"]) - floatval($plat_fetchmoney), 2); if (is_nan($salary_money)) { $salary_money = ""; } if ($salary_money == INF) { $salary_money = "∞"; } $backdata = array( "plat_fetchrate" => $plat_fetchrate, "plat_fetchmoney" => $plat_fetchmoney, "sharer_fetchrate" => $sharer_fetchrate, "sharer_fetchmoney" => $sharer_fetchmoney, "salary_money" => $salary_money, ); return $backdata; break; case "markshareByWorker": $recruitId = isset($ajaxdata["recruitId"]) ? $ajaxdata["recruitId"] : $GPC["recruitId"]; if (empty($recruitId)) { throw new GeneralException("", "没有传递必要的recruitId参数"); } $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查recruitId是否正确!"); } $sharerWorkerId = isset($ajaxdata["sharerWorkerId"]) ? $ajaxdata["sharerWorkerId"] : $GPC["sharerWorkerId"]; if (empty($sharerWorkerId)) { throw new GeneralException("", "没有传递必要的sharerWorkerId参数"); } $sharerWorker = pdo_fetch("select * from biz_worker where id=" . intval($sharerWorkerId)); if (empty($sharerWorker)) { throw new GeneralException("", "分享者id没有对应的记录,请核查!"); } $sqlTemp = ""; $sqlTemp .= " set @handle_id=0; "; $sqlTemp .= " select @handle_id:=id from biz_sharelink bsl"; $sqlTemp .= " where bsl.deleted=0 and bsl.biz_catalog=:biz_catalog and bsl.biz_id=:biz_id and bsl.toerid=:toerid; "; $sqlTemp .= " insert into biz_sharelink(`biz_catalog`, biz_id, toerid, fromerid, remark)"; $sqlTemp .= " select :biz_catalog,:biz_id,:toerid,:fromerid,:remark"; $sqlTemp .= " from dual where ifnull(@handle_id,0)=0 ;"; $sqlTemp .= " update biz_sharelink set fromerid=:fromerid, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where ifnull(@handle_id,0)>0 and id=@handle_id;"; $backdata = pdo_query3($sqlTemp, array( ":biz_catalog" => 0, ":biz_id" => $recruitInfo["id"], ":toerid" => $bizWorker["id"], ":fromerid" => $sharerWorker["id"], ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 绑定分享者" . $sharerWorker["true_name"] . "(ID:" . $sharerWorker["id"] . ") \n", )); return $backdata; break; default: throw new GeneralException("", "不支持的handleMode!"); } } function bizbase_recruitFieldTrans($fromSubSystem, $direct, $data) { if ($direct == "FtoB") { //前端到后端数据转换 $data["requirements"] = json_encode($data["requirements"]); } else { //后端到前端数据转换 $data["createtime"] = (intval($data["createtime"]) <= 0) ? "" : date("Y-m-d H:i:s", $data["createtime"]); $data["updatetime"] = (intval($data["updatetime"]) <= 0) ? "" : date("Y-m-d H:i:s", $data["updatetime"]); $data["settleType"] = (intval($data["settle_catalog"]) == 0 && intval($data["finish_datetime"]) > intval($data["begin_datetime"])); //1=完工结 $data["catalogName"] = $data["settleType"] ? "完工结" : (intval($data["settle_catalog"]) == 0 ? "日结" : "批量招聘"); $data["begin_datetime22"] = $data["begin_datetime"]; if (strtotime(date("Y-m-d", $data["begin_datetime22"])) < strtotime(date("Y-m-d", time()))) { $data["begin_datetime22"] = strtotime(date("Y-m-d", time())); } $data["begin_datetime22"] = date("Y-m-d", $data["begin_datetime22"]); $data["begin_datetime"] = (intval($data["begin_datetime"]) <= 0) ? "" : date("Y-m-d", $data["begin_datetime"]); $data["finish_datetime"] = (intval($data["finish_datetime"]) <= 0) ? "" : date("Y-m-d", $data["finish_datetime"]); $data["requirements"] = @json_decode($data["requirements"], true); $data["work_addr1"] = @json_decode($data["work_addr1"], true); $data["requirements"] = empty($data["requirements"]) ? array() : $data["requirements"]; $data["remark"] = trim(explode("\n", $data["remark"])[0]); $data["statusName"] = bizbase_recruitStatusName($data["status"]); //不用后端拼接,前端自己拼,否则提交保存就绝对化了 $data["profile_photo"] = bizbase_buildImgURL($data["profile_photo"]); } return $data; } function bizbase_recruitFieldAttrMap($fromSubSystem, $direct, $data) { $mapTable = array( "urlImage" => "profile_photo", "headline" => "title", "kind" => "work_typename", "work" => "work_duty", "recruitingNumbers" => "need_total", "salary" => "price", "startTime" => "begin_datetime", "finishTime" => "finish_datetime", "startHour" => "begin_hour", "finisHour" => "finish_hour", "askFor" => "requirements", "companyName" => "employer_name", "linkman" => "linker_name", "phone" => "linker_phone", "companyAddress" => "employer_addr", "longitude" => "work_addr_lng", "latitude" => "work_addr_lat", "job" => "work_detail", "remark" => "work_remark", ); if (intval($fromSubSystem) !== intval(SUBSYS_PLAT_PCWEB)) { $mapTable = array( ); } foreach ($mapTable as $front => $backend) { if ($direct == "FtoB") { $src = $front; $des = $backend; } else { $src = $backend; $des = $front; } $data[$des] = (isset($data[$src]) ? $data[$src] : null);unset($data[$src]); } //附加特殊情况 if ($direct == "FtoB") { } else { $data["arrivalTime"] = $data["startTime"]; $data["workingHours"] = $data["startTime"] . "--" . $data["finishTime"] . ";" . $data["startHour"] . "--" . $data["finisHour"]; $data["statusCode"] = intval($data["status"]); $data["status"] = bizbase_recruitStatusName($data["statusCode"]); switch (intval($data["statusCode"])) { case 5: $data["status"] = "手动下架"; break; case 2: case 4: if (strtotime($data["finishTime"]) < strtotime(date("Y-m-d", time()))) { $data["status"] = "到期自动下架 [" . $data["status"] . "]"; } break; } } return $data; } function bizbase_recruitStatusName($statusCode) { switch (intval($statusCode)) { case 0: $statusName = "待提交"; break; case 1: $statusName = "待审核"; break; case 2: $statusName = "已通过"; break; case -1: $statusName = "被驳回"; break; case 3: $statusName = "已终止"; break; case -2: $statusName = "已违约中断"; break; case 4: $statusName = "手工下架"; break; case 5: $statusName = "招满自动下架"; break; case 6: $statusName = "过期自动下架"; break; default: throw new GeneralException("", "招聘信息的状态码不正确!!"); } return $statusName; } function bizbase_recruitDelegateInfo($data) { if (!empty(trim($data["delegate_info"]))) { //非空即有记录 $delegateInfo = explode("-", $data["delegate_info"]); if (count($delegateInfo) < 7) { throw new GeneralException("", "传递的delegate_info参数值不正确!"); } //brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt.id,'-',bu.id,'-',bu.mobile,'-',bt.true_name $delegateId = $delegateInfo[0]; $beginDatetime = $delegateInfo[1]; $finishDatetime = $delegateInfo[2]; $bizTrader2Id = $delegateInfo[3]; $bizTrader2buId = $delegateInfo[4]; $bizTrader2buPhone = $delegateInfo[5]; $bizTrader2Name = ""; for ($iii = 6; $iii < count($delegateInfo); $iii++) { if ($iii > 6) { $bizTrader2Name .= "-"; } $bizTrader2Name .= $delegateInfo[$iii]; } } return array( "delegateId" => empty($delegateId) ? "" : $delegateId, "beginDatetime" => empty($beginDatetime) ? "" : date("Y-m-d H:i:s", $beginDatetime), "finishDatetime" => empty($finishDatetime) ? "" : date("Y-m-d H:i:s", $finishDatetime), "bizTrader2Id" => empty($bizTrader2Id) ? "" : $bizTrader2Id, "bizTrader2buId" => empty($bizTrader2buId) ? "" : $bizTrader2buId, "bizTrader2buPhone" => empty($bizTrader2buPhone) ? "" : $bizTrader2buPhone, "bizTrader2Name" => empty($bizTrader2Name) ? "" : $bizTrader2Name, ); } function bizbase_recruitWorkLock($recruitId, $workDate, $bizArgs, $bizHandle) { $params = array("recruitId" => $recruitId, "workDate" => $workDate, "bizArgs" => $bizArgs, "bizHandle" => $bizHandle); $result = biz_flkForRecruit($recruitId, $params, function ($params) { $recruitId = $params["recruitId"]; $workDate = $params["workDate"]; if (intval($workDate) <= 0) { $workDate = 0; } $bizArgs = $params["bizArgs"]; $bizHandle = $params["bizHandle"]; $recuritRule = bizbase_fetchBaseConfig("RecuritRule", true); //--------------------------------------- $sqlParam = array(); $sqlParam[":id"] = intval($recruitId); $sqlParam[":workDateStart"] = strtotime(date("Y-m-d", $workDate)); $sqlParam[":workDateFinish"] = strtotime(date("Y-m-d 23:59:59", $workDate)); $sqlParam[":todayStart"] = strtotime(date("Y-m-d", time())); $sqlTemp = ""; $sqlTemp .= " select btr.* "; $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and btdw.`status`=1) as main_worker_total1"; //总待录用数 //$sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and ( btdw.`status`=-1 or btdw.`status`=-3 or btdw.`status`>=2 )) as main_worker_total2"; //有效人次数 $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and ( btdw.`status`=-3 or btdw.`status`>=2 )) as main_worker_total2"; //有效人次数 -1 被驳回 $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and btdw.`status`=1 "; //当日待审数 $sqlTemp .= " and btdw.todo_begindate>=:workDateStart and btdw.todo_begindate<=:workDateFinish ) as date_worker_total1"; $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and ( btdw.`status`=-1 or btdw.`status`=-3 or btdw.`status`>=2 ) "; //当日有效人次数 $sqlTemp .= " and btdw.todo_begindate>=:workDateStart and btdw.todo_begindate<=:workDateFinish ) as date_worker_total2"; $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and ( btdw.`status`=-1 or btdw.`status`=-3 or btdw.`status`>=2 ) "; $sqlTemp .= " and btdw.todo_begindate<:todayStart ) as history_worker_total"; //历史有效人次数 $sqlTemp .= " from biz_trader_recruit btr "; $sqlTemp .= " where btr.id=:id;"; $recruit = pdo_fetch($sqlTemp, $sqlParam); if (empty($recruit)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } if (intval($recruit["deleted"]) != 0) { throw new GeneralException("", "招聘记录信息已被删除,请核查!"); } $remainNumTotal = intval($recruit["need_total"]); $mainRemain = $remainNumTotal - intval($recruit["main_worker_total2"]); if ($mainRemain < 0) { throw new GeneralException("", "怎么出现了总体报冒了的情况呢(含次数扣减),请核查!"); } //还可溢报的总人数(非单天) $mainRemain = intval($mainRemain * intval($recuritRule["enroll_overate"])) - intval($recruit["main_worker_total1"]); //还可录用的总人数(非单天) $mainRemain2 = $remainNumTotal - intval($recruit["main_worker_total2"]); $breakdateList = pdo_fetchall("select breakdate from biz_recruit_break where biz_recruitid=" . intval($recruit["id"])); $breakdateSet = array(); foreach ($breakdateList as $breakdate) { $breakdateSet[strtotime(date("Y-m-d", $breakdate["breakdate"]))] = date("Y-m-d", $breakdate["breakdate"]); } $pickDateList = array(); if (intval($recruit["settle_catalog"]) <= 0) { $startWorkDate = strtotime(date("Y-m-d", $recruit["begin_datetime"])); if (!isset($breakdateSet[$startWorkDate])) { $pickDateList[$startWorkDate] = date("Y-m-d", $startWorkDate); } $lastDayNeedTotal = $remainNumTotal; } else { $restRemain = $remainNumTotal - intval($recruit["history_worker_total"]); if ($restRemain < 0) { throw new GeneralException("", "怎么出现了历史报冒了的情况呢(含次数扣减),请核查!"); } if (intval($recruit["need_perday"]) <= 0) { throw new GeneralException("", "怎么出现了每日需求人数小于等于0的情况呢,请核查!"); } $days = ceil($restRemain / intval($recruit["need_perday"])); $lastDayNeedTotal = $restRemain % intval($recruit["need_perday"]); if ($lastDayNeedTotal <= 0) { $lastDayNeedTotal = intval($recruit["need_perday"]); } if (strtotime(date("Y-m-d", $recruit["begin_datetime"])) <= strtotime(date("Y-m-d", time()))) { $startWorkDate = strtotime(date("Y-m-d", time())); } else { $startWorkDate = strtotime(date("Y-m-d", $recruit["begin_datetime"])); } do { if (!isset($breakdateSet[$startWorkDate])) { $pickDateList[$startWorkDate] = date("Y-m-d", $startWorkDate); } $startWorkDate = strtotime("+1day", strtotime(date("Y-m-d", $startWorkDate))); } while (count($pickDateList) < $days); } //---------------------------------------------------------------------- if (empty($pickDateList) && (intval($recruit["status"]) == 2)) { $sqlParam = array(); $sqlParam[":id"] = $recruit["id"]; $sqlParam[":nowtime"] = time(); $sqlParam[":status"] = -2; //0-待提交;1-已提交待审核发布;2-已审核;-1-被驳回;3-已终止;-2-违约中断; $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 违约中断,已无可报名日期 \n"; $sqlTemp = " update biz_trader_recruit set updatetime=:nowtime,istop=0 "; $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where id=:id;"; pdo_query($sqlTemp, $sqlParam); } //------------------------------------------------------------------------- if (intval($workDate) > 0 && $bizArgs["handleMode"] != "enrollCancel") { if (intval($recruit["settle_catalog"]) <= 0) { //非批量模式下,单天无限制 $dateRemain = 999; //还可溢报的总人数(单天) $dateRemain2 = 999; //还可录用的总人数(单天) } else { //批量模式下,单天限制提取逻辑 $workDate = strtotime(date("Y-m-d", $workDate)); if ($workDate < strtotime(date("Y-m-d", time()))) { throw new GeneralException("", "报名日期不能小于今天啊!"); } $workDateMatch = false; $workDateMatchIndex = 0; foreach ($pickDateList as $pickdateKey => $pickdateVal) { $workDateMatchIndex++; if ($pickdateKey == $workDate) { $workDateMatch = true; break; } } if ($workDateMatch == false) { throw new GeneralException("", "报名日期不在可选择的日期范围内!"); } $need_perday = intval($recruit["need_perday"]); if ($workDateMatchIndex == count($pickDateList)) { $need_perday = $lastDayNeedTotal; } $dateRemain = $need_perday - intval($recruit["date_worker_total2"]); if ($dateRemain < 0) { throw new GeneralException("", "怎么出现了单天报冒了的情况呢333,请核查!"); } //还可溢报的总人数(单天) $dateRemain = intval($dateRemain * intval($recuritRule["enroll_overate"])) - intval($recruit["date_worker_total1"]); //还可录用的总人数(单天) $dateRemain2 = $need_perday - intval($recruit["date_worker_total2"]); } } $result = $bizHandle($recruitId, $workDate, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList, $mainRemain2, $dateRemain2); return $result; }); return $result; } function bizbase_recruitAboutQuery($fromSubSystem, $baseUser, $bizUser, $handleMode, $pageIndex, $pageSize, $ajaxdata, $GPC) { if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) { $bizWorker = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) { $bizTrader = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) { $bizTrader2 = $bizUser; } switch ($handleMode) { case "fetchallByPlater": case "fetchallByWorker": case "fetchallByTrader": case "fetchallByTrader2": case "fetchallByPublicer": case "fetchallDelegateByTrader": $sqlBody = ""; $sqlSelectExt = ""; $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"]; $sqlParam = array(); //查询处理 $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"]; $query = empty(trim($exportExcel)) ? $query : json_decode($query, true); // $pageData = pdo_fetchall("select * from biz_trader_recruit order by id desc ", array()); // print_r($pageData);die; if (empty($query) && !is_array($query)) { //验证一下query信息集 $query = " and 1=1 "; } else { $queryNew = " and 1=1 "; foreach ($query as $fdName => $fdValue) { switch ($fdName) { case "title": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_title"; $queryNew .= " and (btr.title like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "companyName": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_companyName"; $queryNew .= " and (bt.company_name like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "workCity": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_workCity"; $queryNew .= " and (btr.work_addr like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "workArea": if (empty($fdValue)) { continue; } $queryNew .= " and ( 1=0 "; foreach ($fdValue as $index => $subquery) { $paramName = ":qy_workArea_" . intval($index); $queryNew .= " or btr.work_addr like concat('%',{$paramName},'%') "; $sqlParam[$paramName] = $subquery; } $queryNew .= " ) "; break; case "traceMode": if (empty(trim($fdValue))) { continue; } switch (intval($fdValue)) { case 1: if (!empty($bizWorker)) { $queryNew .= " and (select count(*) from biz_worker_trace where biz_workerid=" . intval($bizWorker["id"]) . " and biz_catalog=0 and biz_id=btr.id)>0 "; } break; } break; case "settleType": if (empty(trim($fdValue))) { continue; } switch (intval($fdValue)) { case 1: $queryNew .= " and ( btr.`settle_catalog`=1 or (btr.`settle_catalog`=0 and btr.finish_datetime=btr.begin_datetime)) "; break; case 2: $queryNew .= " and (btr.`settle_catalog`=0 and btr.finish_datetime>btr.begin_datetime) "; break; } break; case "genderMode": if (empty(trim($fdValue))) { continue; } switch (intval($fdValue)) { case 1: $queryNew .= " and (btr.`gender_mode`=1) "; break; case 2: $queryNew .= " and (btr.`gender_mode`=2) "; break; } break; case "nowUrgent": if (empty(trim($fdValue))) { continue; } $tempTemp = " ( "; // $tempTemp .=" btr.`settle_catalog`=0 and btr.`urgent_level`>0 "; $tempTemp .= " btr.`urgent_level`=1 "; // $tempTemp .=" and btr.finish_datetime<=btr.begin_datetime and btr.begin_datetime=".strtotime(date('Y-m-d',time())); // $tempTemp .=" and btr.begin_datetime=".strtotime(date('Y-m-d',time())); //这里是测试 $tempTemp .= " ) "; switch (intval($fdValue)) { case 1: $queryNew .= " and ( urgent_level=1 ) "; $sqlParam[":query_nowdate_new_ma"] = date('YmdHi', (time() - 60 * 60 * 24 * 3)); break; case 2: $queryNew .= " and ( urgent_level=0 )"; $sqlParam[":query_nowdate_new_ma"] = date('YmdHi', time()); break; } break; case "status": $queryStatusCode = intval($fdValue); switch (intval($fdValue)) { case 1: $queryNew .= " and btr.`status`=0 "; break; case 2: $queryNew .= " and btr.`status`=1 "; break; case 3: $queryNew .= " and btr.`status`>=2 "; break; case 4: $queryNew .= " and btr.`status`=-1 "; break; case 91: //待上线 $queryNew .= " and (btr.`status`<2) "; break; case 92: //招聘中 $queryNew .= " and (btr.`status`=2) "; break; case 93: //其他 $queryNew .= " and (btr.`status`>2 or btr.`status`=-1 or btr.`status`=-2) "; break; //判断查看招聘 ,开工日期,没有到开工日期就在查看招聘 // 到开工日期就在查看工作 } break; case "startDate": if (empty(trim($fdValue))) { continue; } $queryNew .= " and btr.begin_datetime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " "; break; case "trader2Id": if (empty(trim($fdValue))) { continue; } $queryNew .= " and brd.biz_trader2id=" . intval($fdValue) . " "; break; case "verifyTime": if (empty(trim($fdValue))) { continue; } $queryNew .= " and brd.finish_datetime>=" . strtotime($fdValue) . " "; break; case "finishDate": if (empty(trim($fdValue))) { continue; } $queryNew .= " and btr.begin_datetime<=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " "; break; case "mobile": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_mobile"; $queryNew .= " and (bu.mobile like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "downed": if (empty(trim($fdValue))) { continue; } switch (intval($fdValue)) { case 1: $queryNew .= " and btr.`status`<>4 "; break; case 2: $queryNew .= " and btr.`status`=4 "; break; } break; case "isDsiplay": if ($fdValue == 1) { $queryNew .= " and btr.`status` = 2 "; } elseif ($fdValue == 0) { $queryNew .= " and btr.`status` <> 2 "; } else { continue; } break; } } $query = $queryNew; } $sqlWorkerTotal = " (select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`>=2 or btdw.`status`=-1 or btdw.`status`=-3 ) ) "; $sqlParam[":select_nowdate"] = strtotime(date("Y-m-d", time())); switch ($handleMode) { case "fetchallByWorker": case "fetchallByPublicer": // 这是是修改 会员端 $query .= " and ((btr.settle_catalog=0 and btr.begin_time_new >= :query_nowdate_new_ma) or (btr.settle_catalog=1)) "; $query .= " and {$sqlWorkerTotal} $val) { $item["delegate_" . $key] = $val; } unset($item["delegate_info"]); $item = bizbase_recruitFieldTrans(1, "BtoF", $item); //状态码 映射 //---------------------------------------------- if ($handleMode == "fetchallByTrader" && intval($queryStatusCode) == 92) { $sqlTemp = ""; $sqlTemp .= " set @handle_id=0; "; $sqlTemp .= " select @handle_id:=id from biz_basetrace bbt"; $sqlTemp .= " where bbt.deleted=0 and bbt.biz_catalog=:biz_catalog and bbt.biz_id=:recruitid and bbt.biz_usertype=:biz_usertype and bbt.biz_userid=:biz_userid; "; $sqlTemp .= " insert into biz_basetrace(`biz_catalog`, biz_id, biz_usertype, biz_userid, count)"; $sqlTemp .= " select :biz_catalog,:recruitid,:biz_usertype,:biz_userid, 1"; $sqlTemp .= " from dual where ifnull(@handle_id,0)=0 ;"; $backdata = pdo_query3($sqlTemp, array( ":recruitid" => $item["id"], ":biz_catalog" => 2, ":biz_usertype" => 1, ":biz_userid" => $bizTrader["id"], )); } $bizId = $item['id']; $item['todo_list'] = []; if ($item['now_worker_total000'] > 0) { $sql = "select bw.id,bw.profile_photo from biz_trader_recruit as btr join biz_todowork as bt on btr.id=bt.biz_recruitid and bt.`status`>=1 join biz_worker as bw on bw.id =bt.biz_workerid where btr.id=:btrid limit 3"; $item['todo_list'] = pdo_fetchall($sql, array( ":btrid" => intval($bizId), )); } } $sqlSummary = " select count(*) as count " . $sqlBody; unset($sqlParam[":select_nowdate"]); unset($sqlParam[":nowlng"]); unset($sqlParam[":nowlat"]); $sumData = pdo_fetch($sqlSummary, $sqlParam); return array( "pageData" => $pageData, "count" => intval($sumData["count"]), ); } else { $nowlng = $sqlParam[":nowlng"]; $nowlat = $sqlParam[":nowlat"]; $select_nowdate = $sqlParam[":select_nowdate"]; unset($sqlParam[":nowlng"]); unset($sqlParam[":nowlat"]); unset($sqlParam[":select_nowdate"]); $sqlSummary = " select count(*) as count " . $sqlBody; $sumData = pdo_fetch($sqlSummary, $sqlParam); $recordTotal = intval($sumData["count"]); $pageTotal = ceil($recordTotal / $pageSize); if (!empty($nowlng)) { $sqlParam[":nowlng"] = $nowlng; } if (!empty($nowlat)) { $sqlParam[":nowlat"] = $nowlat; } if (!empty($select_nowdate)) { $sqlParam[":select_nowdate"] = $select_nowdate; } $args = array( "pageIndex" => 0, "pageSize" => $pageSize, "pageTotal" => $pageTotal, "sqlFetch" => $sqlFetch, "sqlParam" => $sqlParam, ); $csvTitle = array("标题", "商家名称", "联系电话", "人数", "费用", "开始日期"); baseexcel_exportCsv("招聘列表", $csvTitle, $args, function ($args) { $pageIndex = intval($args["pageIndex"]) + 1; $args["pageIndex"] = $pageIndex; $pageSize = intval($args["pageSize"]); $pageTotal = intval($args["pageTotal"]); if ($pageIndex > $pageTotal) { return false; } $sqlFetch = $args["sqlFetch"]; $sqlParam = $args["sqlParam"]; $start = (intval($pageIndex) - 1) * $pageSize; $pageData111 = pdo_fetchall($sqlFetch . " limit {$start},{$pageSize} ", $sqlParam); $pageData = array(); foreach ($pageData111 as &$rowdata) { //数据转换/映射 $rowdata["sn"] = base_buildSNById("RP", $rowdata["id"]); $id = base_fetchIdBySN($rowdata["sn"]); $pageData[] = array( $rowdata["title"], $rowdata["company_name"], "\t" . $rowdata["bu_mobile"], $rowdata["need_total"], round($rowdata["feetotal"], 2), "\t" . date("Y-m-d H:i:s", $rowdata["begin_datetime"]), ); } return array("pagedata" => $pageData, "args" => $args); }); } break; default:throw new GeneralException("", "不支持的handleMode!"); } } /**********************工作流程相关逻辑**************************************/ function bizbase_todoWorkEntityHandle($fromSubSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC) { if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) { $bizWorker = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) { $bizTrader = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) { $bizTrader2 = $bizUser; } switch ($handleMode) { case "UpdateIsDelete": $trader_recruit_id = isset($ajaxdata["trader_recruit_id"]) ? $ajaxdata["trader_recruit_id"] : $GPC["trader_recruit_id"]; if (intval($trader_recruit_id) <= 0) { throw new GeneralException("", "没有传递必要的recruitId参数或参数值不正确"); } $sqlParam = array(); $sqlParam[":id"] = $trader_recruit_id; $sqlTemp = ""; $sqlTemp .= " update biz_trader_recruit set is_delete = 1"; $sqlTemp .= " where id=:id;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; break; case "openTeam": throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名,请直接单独报名吧!"); bizbase_verifyUserAccount($bizWorker, true, "无法开团组队"); $recruitId = isset($ajaxdata["recruitId"]) ? $ajaxdata["recruitId"] : $GPC["recruitId"]; if (intval($recruitId) <= 0) { throw new GeneralException("", "没有传递必要的recruitId参数或参数值不正确"); } $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } $planDotime = isset($ajaxdata["planDotime"]) ? $ajaxdata["planDotime"] : $GPC["planDotime"]; $planDotime = strtotime($planDotime); if (intval($recruitInfo["settle_catalog"]) <= 0) { $planDotime = intval($recruitInfo["begin_datetime"]); } else if (intval($planDotime) <= 0) { throw new GeneralException("", "批量招聘模式下必须传递报名干活的日期planDotime,请核查!"); } if (strtotime(date("Y-m-d", $planDotime)) < strtotime(date("Y-m-d", time()))) { throw new GeneralException("", "报名日期不能小于今日啊,请核查!"); } //$sharerWorkerId = isset($ajaxdata["sharerWorkerId"]) ? $ajaxdata["sharerWorkerId"] : $GPC["sharerWorkerId"]; $sharerWorkerId = pdo_fetchcolumn("select fromerid from biz_sharelink where deleted=0 and biz_catalog=0 and biz_id=:biz_id and toerid=:toerid order by id desc limit 1;", array( ":biz_id" => $recruitInfo["id"], ":toerid" => $bizWorker["id"], )); $sharerWorkerId = intval($sharerWorkerId); if ($sharerWorkerId == intval($bizWorker["id"])) { $sharerWorkerId = 0; } if ($sharerWorkerId > 0) { $sharerWorker = pdo_fetch("select * from biz_worker where id=" . intval($sharerWorkerId)); if (empty($sharerWorker)) { throw new GeneralException("", "分享者id没有对应的记录,请核查!"); } } $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "recruitInfo" => $recruitInfo, "sharerWorkerId" => $sharerWorkerId); $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) { $handleMode = $bizArgs["handleMode"]; $bizWorker = $bizArgs["bizWorker"]; $recruitInfo = $bizArgs["recruitInfo"]; $sharerWorkerId = $bizArgs["sharerWorkerId"]; if ($mainRemain <= 0) { throw new GeneralException("hasMainOverflow", "此招聘已报满"); } if ($dateRemain <= 0) { throw new GeneralException("hasDateOverflow", "此招聘报名日期已报满!"); } if ($mainRemain < 2) { throw new GeneralException("hasMainLessTeam", "此招聘总体上已不足2人名额,已不足开团报名,请单独报名吧!"); } if ($dateRemain < 2) { throw new GeneralException("hasDateLessTeam", "此招聘报名日期已不足2人名额,已不足开团报名,请单独报名吧!"); } bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime); $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_recruitid"] = intval($recruitId); $sqlParam[":biz_workerid"] = intval($bizWorker["id"]); $sqlParam[":share_workerid"] = intval($sharerWorkerId); $sqlParam[":plan_dotime"] = intval($planDotime); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 团长开团 \n"; $sqlTemp = ""; $sqlTemp .= " insert into biz_todoworkteam set createtime=:nowtime"; $sqlTemp .= " ,biz_recruitid=:biz_recruitid, leader_workerid=:biz_workerid "; $sqlTemp .= " ,plan_dotime=:plan_dotime, `status`=1, remark=:remark;"; $sqlTemp .= " insert into biz_todowork set createtime=:nowtime,workteamid=LAST_INSERT_ID() "; $sqlTemp .= " ,biz_recruitid=:biz_recruitid, biz_workerid=:biz_workerid, share_workerid=:share_workerid "; $sqlTemp .= " ,workteam_mode=1, `teamstatus`=2, teamremark=:remark"; $sqlTemp .= " ,todo_begindate=:plan_dotime, remark=:remark;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; }); return $backdata; break; case "joinTeam": throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名,请直接单独报名吧!"); bizbase_verifyUserAccount($bizWorker, true, "无法参团组队"); $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (intval($teamInfo["status"]) > 1) { throw new GeneralException("", "此团组已不是可参团状态,请核查!"); } $recruitId = intval($teamInfo["biz_recruitid"]); $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } $planDotime = intval($teamInfo["plan_dotime"]); if (strtotime(date("Y-m-d", $planDotime)) < strtotime(date("Y-m-d", time()))) { throw new GeneralException("", "报名日期不能小于今日啊,请核查!"); } $sharerWorkerId = intval($teamInfo["leader_workerid"]); if ($sharerWorkerId == intval($bizWorker["id"])) { throw new GeneralException("", "您不能在参团您开的团啊,请核查!"); } $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "recruitInfo" => $recruitInfo, "teamInfo" => $teamInfo, "sharerWorkerId" => $sharerWorkerId); $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) { $handleMode = $bizArgs["handleMode"]; $bizWorker = $bizArgs["bizWorker"]; $recruitInfo = $bizArgs["recruitInfo"]; $teamInfo = $bizArgs["teamInfo"]; $sharerWorkerId = $bizArgs["sharerWorkerId"]; if ($mainRemain <= 0) { throw new GeneralException("hasMainOverflow", "此招聘已报满"); } if ($dateRemain <= 0) { throw new GeneralException("hasDateOverflow", "此招聘报名日期已报满!"); } bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime, 0, intval($teamInfo["id"])); $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":workteamid"] = intval($teamInfo["id"]); $sqlParam[":biz_recruitid"] = intval($recruitId); $sqlParam[":biz_workerid"] = intval($bizWorker["id"]); $sqlParam[":share_workerid"] = intval($sharerWorkerId); $sqlParam[":plan_dotime"] = intval($planDotime); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 参团 \n"; $sqlTemp = ""; $sqlTemp .= " insert into biz_todowork set createtime=:nowtime,workteamid=:workteamid "; $sqlTemp .= " ,biz_recruitid=:biz_recruitid, biz_workerid=:biz_workerid, share_workerid=:share_workerid "; $sqlTemp .= " ,workteam_mode=2, `teamstatus`=1, teamremark=:remark"; $sqlTemp .= " ,todo_begindate=:plan_dotime, remark=:remark;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; }); return $backdata; break; case "joinAudit": $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (intval($teamInfo["status"]) > 1) { throw new GeneralException("", "此团组已不是成团进行中状态,请核查!"); } $recruitId = intval($teamInfo["biz_recruitid"]); $planDotime = intval($teamInfo["plan_dotime"]); $leader_workerid = intval($teamInfo["leader_workerid"]); if ($leader_workerid != intval($bizWorker["id"])) { throw new GeneralException("", "这不是您开的团啊,请核查!"); } $workerId = isset($ajaxdata["workerId"]) ? $ajaxdata["workerId"] : $GPC["workerId"]; if (intval($workerId) <= 0) { throw new GeneralException("", "没有传递必要的workerId参数或参数值不正确"); } if ($workerId == intval($bizWorker["id"])) { throw new GeneralException("", "怎么能审核自己呢,请核查!"); } $todowork = pdo_fetch("select * from biz_todowork where workteamid=:workteamid and biz_workerid=:biz_workerid", array( ":workteamid" => $teamid, ":biz_workerid" => $workerId, )); if (empty($todowork)) { throw new GeneralException("", "没有定位到此组员的参团记录,请核查!"); } if (intval($todowork["workteam_mode"]) != 2) { throw new GeneralException("", "此组员不是参团模式,请核查!"); } if (intval($todowork["teamstatus"]) != 1) { throw new GeneralException("", "已不是参团待审核状态,请核查!"); } if (intval($todowork["status"]) >= 1) { throw new GeneralException("", "团组状态已确定不能再进行参团审核处理,请核查!"); } $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"]; $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":id"] = intval($todowork["id"]); switch (trim($todo)) { case "allow": $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 同意参团 $reason \n"; $sqlParam[":teamstatus"] = 2; //参团状态:0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散; break; case "refuse": if (empty($reason)) { throw new GeneralException("", "拒绝理由不能为空啊"); } $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 拒绝参团 $reason \n"; $sqlParam[":teamstatus"] = -1; //参团状态:0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散; break; default:throw new GeneralException("", "不支持的todo!"); } $sqlTemp = ""; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`teamstatus`=:teamstatus"; $sqlTemp .= " ,teamremark=concat(:remark,ifnull(teamremark,'')), remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where id=:id;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; break; case "removeMember": $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (intval($teamInfo["status"]) > 1) { throw new GeneralException("", "此团组已不是成团进行中状态,请核查!"); } $recruitId = intval($teamInfo["biz_recruitid"]); $planDotime = intval($teamInfo["plan_dotime"]); $leader_workerid = intval($teamInfo["leader_workerid"]); if ($leader_workerid != intval($bizWorker["id"])) { throw new GeneralException("", "这不是您开的团啊,请核查!"); } $workerId = isset($ajaxdata["workerId"]) ? $ajaxdata["workerId"] : $GPC["workerId"]; if (intval($workerId) <= 0) { throw new GeneralException("", "没有传递必要的workerId参数或参数值不正确"); } if ($workerId == intval($bizWorker["id"])) { throw new GeneralException("", "怎么能踢出自己呢,请核查!"); } $todowork = pdo_fetch("select * from biz_todowork where workteamid=:workteamid and biz_workerid=:biz_workerid", array( ":workteamid" => $teamid, ":biz_workerid" => $workerId, )); if (empty($todowork)) { throw new GeneralException("", "没有定位到此组员的参团记录,请核查!"); } if (intval($todowork["workteam_mode"]) != 2) { throw new GeneralException("", "此组员不是参团模式,请核查!"); } if (intval($todowork["teamstatus"]) != 0 && intval($todowork["teamstatus"]) != 1) { throw new GeneralException("", "团组状态已确定不能踢出了,请核查!"); } if (intval($todowork["status"]) >= 1) { throw new GeneralException("", "团组状态已确定不能踢出了,请核查!"); } $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":id"] = intval($todowork["id"]); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 被踢出团组 \n"; $sqlTemp = ""; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`teamstatus`=-2"; $sqlTemp .= " ,teamremark=concat(:remark,ifnull(teamremark,'')), remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where id=:id;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; break; case "dismiss": $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (intval($teamInfo["status"]) > 1) { throw new GeneralException("", "此团组已不是成团进行中状态,请核查!"); } $recruitId = intval($teamInfo["biz_recruitid"]); $planDotime = intval($teamInfo["plan_dotime"]); $leader_workerid = intval($teamInfo["leader_workerid"]); if ($leader_workerid != intval($bizWorker["id"])) { throw new GeneralException("", "这不是您开的团啊,请核查!"); } $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":workteamid"] = intval($teamid); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 团组解散 \n"; $sqlTemp = ""; $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime,`status`=2, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where id=:workteamid;"; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`teamstatus`=-3"; $sqlTemp .= " ,teamremark=concat(:remark,ifnull(teamremark,'')), remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where workteamid=:workteamid;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; break; case "fetchTeamByPlater": case "fetchTeamByTrader": case "fetchTeamByWorker": $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select tdwkt.*,btr.biz_traderid as tdwk_biz_traderid ,btr.title as recruit_title ,bt.company_name as bt_company_name ,lwk.true_name as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo from biz_todoworkteam tdwkt left join biz_trader_recruit btr on btr.id=tdwkt.biz_recruitid left join biz_trader bt on bt.id=btr.biz_traderid left join biz_worker lwk on lwk.id=tdwkt.leader_workerid left join base_user lbu on lbu.id=lwk.base_userid where tdwkt.id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (!empty($bizTrader)) { if (intval($teamInfo["tdwk_biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "此团组不是报的您家的名,请核查!"); } } $teamInfo["iamleader"] = ($teamInfo["leader_workerid"] == intval($bizWorker["id"])); $teamInfo["createtime"] = date("Y-m-d H:i:s", $teamInfo["createtime"]); $teamInfo["remark"] = trim(explode("\n", $teamInfo["remark"])[0]); $teamInfo["statusName"] = bizbase_todoWorkTeamStatusName(intval($teamInfo["status"])); return $teamInfo; break; case "fetchByPlater": case "fetchByTrader": case "fetchByTrader2": case "fetchByWorker": case "fetchTeamFollowByPlater": case "fetchTeamFollowByTrader": case "fetchTeamFollowByWorker": $workid = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"]; if (intval($workid) <= 0) { throw new GeneralException("", "没有传递必要的workid参数或参数值不正确"); } $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid as tdwk_biz_traderid ,btr.title as recruit_title,btr.salary as btr_salary,btr.feetotal as btr_feetotal,btr.plat_fetchmoney as btr_plat_fetchmoney,btr.sharer_fetchmoney as btr_sharer_fetchmoney ,btr.begin_datetime as btr_begindatetime,btr.finish_datetime as btr_finishdatetime ,btr.linker_phone as btr_linker_phone,btr.begin_hour as btr_begin_hour,btr.finish_hour as btr_finish_hour ,bt.company_name as bt_company_name,bt.linker_gender as bt_linker_gender,btbu.mobile as btbu_mobile ,(case when ifnull(bt2.true_name,'')<>'' then bt2.true_name else bt2.nickname end) as bt2_true_name ,wk.id as wkid,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_name,bu.mobile as bu_mobile,wk.profile_photo as wkprofile_photo,wk.idcard as wk_idcard ,(case when lwk.true_name<>'' then lwk.true_name else lwk.nickname end) as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo ,swk.id as swkid,(case when swk.true_name<>'' then swk.true_name else swk.nickname end) as swk_name,sbu.mobile as sbu_mobile ,wkapa.id as wkapa_id,wkapa.deleted as wkapa_deleted,wkapa.result_level as wk_appraiseLevel,wkapa.result_desc as wk_appraiseRemark ,tdapa.id as tdapa_id,tdapa.deleted as tdapa_deleted,tdapa.result_level as td_appraiseLevel,tdapa.result_desc as td_appraiseRemark ,(select concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt.id,'-',bu.id,'-',bu.mobile,'-',bt.true_name) from biz_recruit_delegate brd left join biz_trader2 bt on bt.id=brd.biz_trader2id left join base_user bu on bu.id=bt.base_userid where brd.biz_recruitid=tdwk.biz_recruitid and brd.finish_datetime>:verify_datetime limit 1) as delegate_info ,tdwkat2.`biz_catalog` as tdwk_settlecatalog from biz_todowork tdwk left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid left join biz_trader bt on bt.id=btr.biz_traderid left join base_user btbu on btbu.id=bt.base_userid left join biz_trader2 bt2 on bt2.id=tdwk.settled_userid left join biz_worker lwk on lwk.id=tdwkt.leader_workerid left join base_user lbu on lbu.id=lwk.base_userid left join biz_worker wk on wk.id=tdwk.biz_workerid left join base_user bu on bu.id=wk.base_userid left join biz_worker swk on swk.id=tdwk.share_workerid left join base_user sbu on sbu.id=swk.base_userid left join biz_appraisal wkapa on wkapa.biz_catalog=1 and wkapa.biz_id=tdwk.id left join biz_appraisal tdapa on tdapa.biz_catalog=2 and tdapa.biz_id=tdwk.id left join biz_trader_account tdwkat1 on tdwk.`status`=5 and tdwkat1.`status`=1 and tdwkat1.`type`=0 and tdwkat1.biz_id=tdwk.id and (tdwkat1.`biz_catalog`=1 or tdwkat1.`biz_catalog`=4) left join biz_trader_account tdwkat2 on tdwk.`status`=5 and tdwkat2.`status`=1 and tdwkat2.`type`=1 and tdwkat2.biz_id=tdwkat1.id and (tdwkat2.`biz_catalog`=6 or tdwkat2.`biz_catalog`=7) where tdwk.id=:tdwkId", array( ":tdwkId" => intval($workid), ":verify_datetime" => time(), )); if (empty($workInfo)) { throw new GeneralException("", "团组成员项id没有对应的记录,请核查!"); } if (!empty($bizTrader)) { if (intval($workInfo["tdwk_biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "此订单不是报的您家的名,请核查!"); } } if (!empty($bizTrader2)) { bizTrader2_verifyRecuritDelegate($bizTrader2, $workInfo["biz_recruitid"]); } $delegateInfo = bizbase_recruitDelegateInfo($workInfo); foreach ($delegateInfo as $key => $val) { $workInfo["delegate_" . $key] = $val; } unset($workInfo["delegate_info"]); //---------------------- $workInfo["tdwk_settlecatalogName"] = ""; switch (intval($workInfo["tdwk_settlecatalog"])) { case 6: $workInfo["tdwk_settlecatalogName"] = "商家订单整体结算"; break; case 7: $workInfo["tdwk_settlecatalogName"] = "平台代商家结算订单"; break; } $workInfo["worksn"] = base_buildSNById("WK", $workInfo["id"], 12, 12); $workInfo["btr_salary"] = round(floatval($workInfo["btr_salary"]), 2); $workInfo["btr_feetotal"] = round(floatval($workInfo["btr_feetotal"]), 2); $workInfo["wkapa_id"] = intval($workInfo["wkapa_id"]); //小于等于0则会员未评价商家,否则已评价 $workInfo["wk_appraiseLevel"] = intval($workInfo["wkapa_deleted"]) > 0 ? -1 : intval($workInfo["wk_appraiseLevel"]); $workInfo["tdapa_id"] = intval($workInfo["tdapa_id"]); //小于等于0则商家未评价会员,否则已评价 $workInfo["td_appraiseLevel"] = intval($workInfo["tdapa_deleted"]) > 0 ? -1 : intval($workInfo["td_appraiseLevel"]); $workInfo["itisme"] = ($workInfo["wkid"] == intval($bizWorker["id"])); $workInfo["iamleader"] = ($workInfo["lwkid"] == intval($bizWorker["id"])); $workInfo["statusName"] = bizbase_todoWorkStatusName($workInfo["status"]); $workInfo["teamrole"] = bizbase_todoWorkTeamRoleName($workInfo["workteam_mode"]); $workInfo["memberRealed"] = empty(trim($workInfo["wk_idcard"])) ? false : true; $workInfo["createtime"] = date("Y-m-d H:i:s", $workInfo["createtime"]); $workInfo["btr_begindatetime"] = date("Y-m-d", $workInfo["btr_begindatetime"]); $workInfo["btr_finishdatetime"] = (intval($workInfo["btr_finishdatetime"]) <= 0 ? "" : date("Y-m-d", $workInfo["btr_finishdatetime"])); $workInfo["worked_begintime"] = intval($workInfo["worked_begintime"]) <= 0 ? "" : date("Y-m-d H:i:s", $workInfo["worked_begintime"]); $workInfo["worked_finishtime"] = intval($workInfo["worked_finishtime"]) <= 0 ? "" : date("Y-m-d H:i:s", $workInfo["worked_finishtime"]); $workInfo["settled_time"] = intval($workInfo["settled_time"]) <= 0 ? "" : date("Y-m-d H:i:s", $workInfo["settled_time"]); $workInfo["settled_modeName"] = intval($workInfo["settled_mode"]) <= 0 ? "商家自核销" : "现场经理核销"; $workInfo["settled_userName"] = intval($workInfo["settled_mode"]) <= 0 ? $workInfo["bt2_true_name"] : $workInfo["bt_company_name"]; $workInfo["remarks"] = explode("\n", $workInfo["remark"]); $workInfo["remark"] = trim(explode("\n", $workInfo["remark"])[0]); $workInfo["teamremark"] = trim(explode("\n", $workInfo["teamremark"])[0]); $workInfo["teamstatusName"] = bizbase_todoWorkSubTeamStatusName(intval($workInfo["teamstatus"])); return $workInfo; break; case "singleEnroll": bizbase_verifyUserAccount($bizWorker, true, "无法报名"); $recruitId = isset($ajaxdata["recruitId"]) ? $ajaxdata["recruitId"] : $GPC["recruitId"]; if (intval($recruitId) <= 0) { throw new GeneralException("", "没有传递必要的recruitId参数或参数值不正确"); } $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } $planDotime = isset($ajaxdata["planDotime"]) ? $ajaxdata["planDotime"] : $GPC["planDotime"]; $planDotime = strtotime($planDotime); if (intval($recruitInfo["settle_catalog"]) <= 0) { $planDotime = intval($recruitInfo["begin_datetime"]); } else if (intval($planDotime) <= 0) { throw new GeneralException("", "批量招聘模式下必须传递报名干活的日期planDotime,请核查!"); } if (strtotime(date("Y-m-d", $planDotime)) < strtotime(date("Y-m-d", time()))) { throw new GeneralException("", "报名日期不能小于今日啊,请核查!"); } //$sharerWorkerId = isset($ajaxdata["sharerWorkerId"]) ? $ajaxdata["sharerWorkerId"] : $GPC["sharerWorkerId"]; $sharerWorkerId = pdo_fetchcolumn("select fromerid from biz_sharelink where deleted=0 and biz_catalog=0 and biz_id=:biz_id and toerid=:toerid order by id desc limit 1;", array( ":biz_id" => $recruitInfo["id"], ":toerid" => $bizWorker["id"], )); $sharerWorkerId = intval($sharerWorkerId); if ($sharerWorkerId == intval($bizWorker["id"])) { $sharerWorkerId = 0; } if ($sharerWorkerId > 0) { $sharerWorker = pdo_fetch("select * from biz_worker where id=" . intval($sharerWorkerId)); if (empty($sharerWorker)) { throw new GeneralException("", "分享者id没有对应的记录,请核查!"); } } $accountInfo = bizbase_workerAccountInfo($bizWorker); $balance = round(floatval($accountInfo["balance"]), 2); $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"]; $recuritRule = bizbase_fetchBaseConfig("RecuritRule", true); $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "recruitInfo" => $recruitInfo, "sharerWorkerId" => $sharerWorkerId, "balance" => $balance, "minaCode" => $minaCode, "recuritRule" => $recuritRule); $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList, $mainRemain2, $dateRemain2) { $handleMode = $bizArgs["handleMode"]; $bizWorker = $bizArgs["bizWorker"]; $recruitInfo = $bizArgs["recruitInfo"]; $sharerWorkerId = $bizArgs["sharerWorkerId"]; $money_balance = $bizArgs["balance"]; $minaCode = $bizArgs["minaCode"]; $recuritRule = $bizArgs["recuritRule"]; if ($mainRemain2 <= 0) { throw new GeneralException("hasMainOverflow", "此招聘已录满,已不能再报名"); } if ($mainRemain <= 0) { throw new GeneralException("hasMainOverflow", "此招聘已报满,暂时不能报名"); } if ($dateRemain2 <= 0) { throw new GeneralException("hasDateOverflow", "此招聘报名日期已录满,已不能再报名"); } if ($dateRemain <= 0) { throw new GeneralException("hasDateOverflow", "此招聘报名日期已报满,暂时不能报名"); } bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime); if (intval($recruitInfo["enroll_audit"]) <= 0) { //不需要审核报名 throw new GeneralException("", "非常抱歉,本平台已不再支持报名后直接录取模式!"); $sqlTemp = ""; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_recruitid"] = intval($recruitId); $sqlParam[":biz_workerid"] = intval($bizWorker["id"]); $sqlParam[":share_workerid"] = intval($sharerWorkerId); $sqlParam[":plan_dotime"] = strtotime(date("Y-m-d", $planDotime)); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 单独报名并直通 \n"; $sqlParam[":status"] = 2; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消 $sqlParam[":cancel_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 已被其他商家及时录取,本待录用申请被取消 \n"; $sqlParam[":cancel_status"] = -4; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消 $sqlParam[":cancel_teamstatus"] = -4; //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消; $sqlParam[":workDateStart"] = intval($recruitInfo["begin_datetime"]); $sqlParam[":workDateFinish"] = $sqlParam[":workDateStart"]; if (intval($recruitInfo["settle_catalog"]) <= 0//普通招聘的多日招聘 && intval($recruitInfo["begin_datetime"]) < intval($recruitInfo["finish_datetime"])) { $sqlParam[":workDateFinish"] = intval($recruitInfo["finish_datetime"]); } if (intval($recruitInfo["settle_catalog"]) > 0) { $sqlParam[":workDateStart"] = strtotime(date("Y-m-d", $planDotime)); $sqlParam[":workDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime)); } $sqlParam[":nowSettleCatalog"] = intval($recruitInfo["settle_catalog"]); $sqlParam[":plandoDateStart"] = strtotime(date("Y-m-d", $planDotime)); $sqlParam[":plandoDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime)); $sqlTemp .= " update biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid "; $sqlTemp .= " set tdwk.updatetime=:nowtime, tdwk.`status`=:cancel_status, tdwk.`teamstatus`=:cancel_teamstatus "; $sqlTemp .= " , tdwk.remark=concat(:cancel_remark,ifnull(tdwk.remark,'')), tdwk.teamremark=concat(:cancel_remark,ifnull(tdwk.teamremark,'')) "; $sqlTemp .= " where tdwk.biz_workerid=:biz_workerid and ( (tdwk.`workteam_mode`<=0 and tdwk.`status`=1) or (tdwk.`workteam_mode`>0 and tdwk.`teamstatus`>=2 and tdwkt.`status`=3) ) and( (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish) or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish) or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and ( (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish) or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish) or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish) )) ) ;"; $sqlTemp .= " insert into biz_todowork set createtime=:nowtime "; $sqlTemp .= " ,biz_recruitid=:biz_recruitid, biz_workerid=:biz_workerid, share_workerid=:share_workerid "; $sqlTemp .= " ,todo_begindate=:plan_dotime,`status`=:status,remark=:remark;"; $sqlTemp .= empty($sqlTemp111) ? "" : $sqlTemp111; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; } else { $enroll_premoney = round(floatval($recuritRule["enroll_premoney"]), 2); if ($enroll_premoney <= 0) { $enroll_premoney = 0; } $nowPayMoney = round(($enroll_premoney - $money_balance), 2); if ($nowPayMoney <= 0) { $nowPayMoney = 0; } //过滤掉0收支明细 $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_recruitid"] = intval($recruitId); $sqlParam[":biz_workerid"] = intval($bizWorker["id"]); $sqlParam[":share_workerid"] = intval($sharerWorkerId); $sqlParam[":enroll_premoney"] = $enroll_premoney; $sqlParam[":plan_dotime"] = strtotime(date("Y-m-d", $planDotime)); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 单独报名待支付押金 \n"; $sqlParam[":status"] = 0; //0-待支付押金;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消 $sqlTemp = ""; $sqlTemp .= " insert into biz_todowork set createtime=:nowtime, enroll_premoney=:enroll_premoney "; $sqlTemp .= " ,biz_recruitid=:biz_recruitid, biz_workerid=:biz_workerid, share_workerid=:share_workerid "; $sqlTemp .= " ,todo_begindate=:plan_dotime,paytag=0,`status`=:status,remark=:remark;"; $sqlTemp .= " set @handle_id=LAST_INSERT_ID();"; $sqlParam[":type"] = 0; //此处必须为收入类型,支付收入成功后,再进行扣除业务 $sqlParam[":money"] = $nowPayMoney; $sqlParam[":biz_catalog"] = 4; //报名押金支付 $sqlTemp .= " insert into biz_worker_account set createtime=:nowtime"; $sqlTemp .= " ,biz_workerid=:biz_workerid, biz_roletype=0, biz_userid=:biz_workerid "; $sqlTemp .= " ,type=:type, `money`=:money"; $sqlTemp .= " ,biz_catalog=:biz_catalog, biz_id=@handle_id"; $sqlTemp .= " ,biz_idtag=concat('TKID',@handle_id,'EE0')"; $sqlTemp .= " ,`status`=0, remark=:remark;"; $sqlTemp .= " select * from biz_worker_account where id=LAST_INSERT_ID();"; $dataset = pdo_query3($sqlTemp, $sqlParam); $bizInfo = $dataset[count($dataset) - 1][0]; if (empty($bizInfo)) { throw new GeneralException("", "构建预支付订单异常"); } $payBizCatalog = "5"; //5-会员报名支付押金 $payBizId = $bizInfo["id"]; if ($nowPayMoney <= 0) { bizbase_paySuccess($payBizCatalog, $payBizId, false, $handleMode); return array("payResult" => true); } else { //--------------------------------------- if (empty(trim($minaCode))) { throw new GeneralException("", "没有传递必要的minaCode参数"); } $payScene = "JSAPI"; $prePayArgs = array( "payBackBizCatalog" => $payBizCatalog, "payBackBizId" => $payBizId, "payScene" => $payScene, ); require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_LABOUR_MINA); $wxmina_appid = $resObj["wxmina_appid"]; $wxmina_openid = $resObj["openid"]; $bizArgs = array( "minaCode" => $minaCode, "bizInfo" => $bizInfo, "wxmina_appid" => $wxmina_appid, "wxmina_openid" => $wxmina_openid, ); try { $prePayInfo = bizbase_mactivityPayCore($prePayArgs, $bizArgs); } catch (Throwable $ex) { $errMsg = $ex->getMessage(); if (mb_strpos($errMsg, "201 商户订单号重复") === false) { throw $ex; } else { require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $result = weixin_ordercloseV3($bizInfo["biz_idtag"]); $dataset = pdo_query3(" update biz_todowork set updatetime=:nowtime ,paytag=ifnull(paytag,0)+1 ,remark=concat('更新支付订单号后缀\n',ifnull(remark,'')) where id=:bizid; select @paytag:=paytag from biz_todowork where id=:bizid; update biz_worker_account set updatetime=:nowtime ,biz_idtag=concat('TKID',:bizid,'EE',@paytag) ,remark=concat('更新支付订单号后缀\n',ifnull(remark,'')) where id=:accid; select * from biz_worker_account where id=:accid;", array( ":nowtime" => time(), ":bizid" => intval($bizInfo["biz_id"]), ":accid" => intval($bizInfo["id"]), )); $bizInfo = $dataset[count($dataset) - 1][0]; $bizArgs["bizInfo"] = $bizInfo; $prePayInfo = bizbase_mactivityPayCore($prePayArgs, $bizArgs); } } $prePayInfo = array_merge($prePayArgs, $prePayInfo); return array( "moneyBalance" => $money_balance, "payMoney" => $nowPayMoney, "prePayInfo" => $prePayInfo, ); } } }); return $backdata; break; case "teamEnroll": throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名,请解散当前团组后单独报名吧!"); bizbase_verifyUserAccount($bizWorker, true, "无法报名"); $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (intval($teamInfo["status"]) > 1) { throw new GeneralException("", "此团组已不是成团进行中状态,请核查!"); } $recruitId = intval($teamInfo["biz_recruitid"]); $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } $planDotime = intval($teamInfo["plan_dotime"]); $leader_workerid = intval($teamInfo["leader_workerid"]); if ($leader_workerid != intval($bizWorker["id"])) { throw new GeneralException("", "这不是您开的团啊,请核查!"); } $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "teamInfo" => $teamInfo, "recruitInfo" => $recruitInfo); $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) { $handleMode = $bizArgs["handleMode"]; $bizWorker = $bizArgs["bizWorker"]; $teamInfo = $bizArgs["teamInfo"]; $recruitInfo = $bizArgs["recruitInfo"]; if ($mainRemain <= 0) { throw new GeneralException("hasMainOverflow", "此招聘已报满"); } if ($dateRemain <= 0) { throw new GeneralException("hasDateOverflow", "此招聘报名日期已报满!"); } //------------------------------------------ $sqlTemp = ""; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":teamid"] = $teamInfo["id"]; if (intval($recruitInfo["enroll_audit"]) <= 0) { //不需要审核报名 $sqlParam[":teamremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名并直通 \n"; $sqlParam[":teamstatus"] = 4; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约; $sqlParam[":workremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名并直通 \n"; $sqlParam[":workstatus"] = 2; // 0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消 $sqlParam[":cancel_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 已被其他商家及时录取,本待录用申请被取消 \n"; $sqlParam[":cancel_status"] = -4; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消 $sqlParam[":cancel_teamstatus"] = -4; //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消; $sqlParam[":workDateStart"] = intval($recruitInfo["begin_datetime"]); $sqlParam[":workDateFinish"] = $sqlParam[":workDateStart"]; if (intval($recruitInfo["settle_catalog"]) <= 0//普通招聘的多日招聘 && intval($recruitInfo["begin_datetime"]) < intval($recruitInfo["finish_datetime"])) { $sqlParam[":workDateFinish"] = intval($recruitInfo["finish_datetime"]); } if (intval($recruitInfo["settle_catalog"]) > 0) { $sqlParam[":workDateStart"] = strtotime(date("Y-m-d", $planDotime)); $sqlParam[":workDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime)); } $sqlParam[":nowSettleCatalog"] = intval($recruitInfo["settle_catalog"]); $sqlParam[":plandoDateStart"] = strtotime(date("Y-m-d", $planDotime)); $sqlParam[":plandoDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime)); } else { $sqlParam[":teamremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名待审核 \n"; $sqlParam[":teamstatus"] = 3; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约; $sqlParam[":workremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名待审核 \n"; $sqlParam[":workstatus"] = 1; // 0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消 //----- $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)"; $sqlTemp .= " select :nowtime, 1, id"; $sqlTemp .= " from biz_todowork "; $sqlTemp .= " where workteamid=" . intval($teamInfo["id"]) . " and workteam_mode=1;"; } $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime,`status`=:teamstatus,remark=concat(:teamremark,ifnull(remark,'')) "; $sqlTemp .= " where id=:teamid;"; $teamWorkers = pdo_fetchall("select tdwk.id as tdwk_id,wk.* from biz_todowork tdwk inner join biz_worker wk on wk.id=tdwk.biz_workerid where tdwk.workteamid=:teamid and tdwk.teamstatus=1 ", array( ":teamid" => $teamInfo["id"], )); if (!empty($teamWorkers)) { throw new GeneralException("hasWaitJoiner", "团组中还有未通过的待参团团项!"); } $teamWorkers = pdo_fetchall("select tdwk.id as tdwk_id,wk.* from biz_todowork tdwk inner join biz_worker wk on wk.id=tdwk.biz_workerid where tdwk.workteamid=:teamid and tdwk.teamstatus=2 and ifnull(tdwk.`status`,0)=0 ", array( ":teamid" => $teamInfo["id"], )); if (empty($teamWorkers)) { throw new GeneralException("", "团组竟然为空啊!"); } $newTeamWorkers = array(); foreach ($teamWorkers as $workerItem) { if (bizbase_todoWorkEnrollVerify($handleMode, $workerItem, $recruitInfo, $planDotime, $workerItem["tdwk_id"], intval($teamInfo["id"]))) { array_push($newTeamWorkers, $workerItem); $sqlTemp .= " update biz_todowork set workteam_flag=0 where workteamid=" . intval($teamInfo["id"]) . ";"; $sqlTemp .= " update biz_todowork set updatetime=:nowtime, workteam_flag=1,`status`=:workstatus,remark=concat(:workremark,ifnull(remark,'')) "; $sqlTemp .= " where id=" . intval($workerItem["tdwk_id"]) . ";"; if (intval($recruitInfo["enroll_audit"]) <= 0) { //不需要审核报名 $sqlTemp .= " update biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid "; $sqlTemp .= " set tdwk.updatetime=:nowtime, tdwk.`status`=:cancel_status, tdwk.`teamstatus`=:cancel_teamstatus "; $sqlTemp .= " , tdwk.remark=concat(:cancel_remark,ifnull(tdwk.remark,'')), tdwk.teamremark=concat(:cancel_remark,ifnull(tdwk.teamremark,'')) "; $sqlTemp .= " where tdwk.biz_workerid=" . intval($workerItem["id"]) . " and ( (tdwk.`workteam_mode`<=0 and tdwk.`status`=1) or (tdwk.`workteam_mode`>0 and tdwk.`teamstatus`>=2 and tdwkt.`status`=3) ) and( (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish) or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish) or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and ( (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish) or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish) or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish) )) ) ;"; } } else { $sqlTemp .= " select :workstatus,:workremark; "; if (intval($recruitInfo["enroll_audit"]) <= 0) { //不需要审核报名 $sqlTemp .= " select :cancel_status,:cancel_teamstatus,:cancel_remark,:plandoDateStart,:plandoDateFinish,:workDateStart,:workDateFinish,:nowSettleCatalog; "; } $sqlTemp .= " update biz_todowork set updatetime=:nowtime "; $sqlTemp .= " ,`status`=-4 "; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消 $sqlTemp .= " ,remark=concat('[" . date("Y-m-d H:i:s", time()) . "] 组团提交报名时,不符合条件,被动取消 \n',ifnull(remark,'')) "; $sqlTemp .= " where id=" . intval($workerItem["tdwk_id"]) . ";"; } } if (empty($newTeamWorkers)) { throw new GeneralException("", "团组中竟然没有可报名项!"); } if (count($newTeamWorkers) > $dateRemain) { throw new GeneralException("dateNoEnough", array( "tip" => "当日可报人数小于当前团组人数", "dateRemain" => $dateRemain, "teamTotal" => count($newTeamWorkers), )); } $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; }); return $backdata; break; case "enrollCancel": $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) > 0) { throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名!"); $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (intval($teamInfo["status"]) != 3) { throw new GeneralException("", "此团组已不是报名待审核状态,请核查!"); } if (intval($teamInfo["leader_workerid"]) != intval($bizWorker["id"])) { throw new GeneralException("", "这不是您开的团,您无权取消此团的报名,请核查!"); } $recruitId = intval($teamInfo["biz_recruitid"]); $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } $planDotime = intval($teamInfo["plan_dotime"]); $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "teamInfo" => $teamInfo, "recruitInfo" => $recruitInfo, "reason" => $reason); } else { $workId = isset($ajaxdata["workId"]) ? $ajaxdata["workId"] : $GPC["workId"]; if (intval($workId) <= 0) { throw new GeneralException("", "没有传递必要的teamid/workId参数或参数值不正确"); } $workInfo = pdo_fetch("select * from biz_todowork where id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } if (intval($workInfo["status"]) != 1) { throw new GeneralException("", "已不是报名待审核状态,请核查!"); } if (intval($workInfo["workteam_mode"] != 0)) { throw new GeneralException("", "此订单不是独立报名的记录,请核查!"); } if (intval($workInfo["workteamid"] != 0)) { throw new GeneralException("", "此订单不是独立报名的记录,请核查!"); } if (intval($workInfo["biz_workerid"]) != intval($bizWorker["id"])) { throw new GeneralException("", "这不是您的报名记录,您无权取消此记录的报名,请核查!"); } $recruitId = intval($workInfo["biz_recruitid"]); $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } $planDotime = intval($workInfo["todo_begindate"]); $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "workInfo" => $workInfo, "recruitInfo" => $recruitInfo, "reason" => $reason); } //此处设置 $planDotime 是有道理的; 例如不能取消已经过期的报名;以及未来日期中已被违约的日期; $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) { $handleMode = $bizArgs["handleMode"]; $bizWorker = $bizArgs["bizWorker"]; $recruitInfo = $bizArgs["recruitInfo"]; $teamInfo = $bizArgs["teamInfo"]; $workInfo = $bizArgs["workInfo"]; $reason = $bizArgs["reason"]; //------------------------------------------- $sqlTemp = ""; $sqlParams = array(); $sqlParams[":nowtime"] = time(); $sqlParams[":wkstatus"] = -2; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消' $sqlParams[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 取消报名并退还冻结的押金 $reason \n"; if (!empty($teamInfo)) { throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名!"); $sqlParams[":status"] = 7; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约;7-主动取消报名;8-被动取消报名' $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 取消报名 $reason \n"; $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime,`status`=:status, remark=concat(:remark,ifnull(remark,'')) "; $sqlTemp .= " where id=" . intval($teamInfo["id"]) . ";"; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) "; $sqlTemp .= " where workteamid=" . intval($teamInfo["id"]) . " "; $sqlTemp .= " and workteam_mode>0 and teamstatus>=2;"; } else { $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) "; $sqlTemp .= " where id=" . intval($workInfo["id"]) . ";"; $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; // $sqlTemp .=" select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 5 , id, :wkremark "; $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, :wkremark "; $sqlTemp .= " from biz_todowork where id=" . intval($workInfo["id"]) . ";"; } $backdata = pdo_query3($sqlTemp, $sqlParams); $cancelCount = pdo_fetchcolumn("select count(*) from biz_todowork tdwk left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid where ( (tdwk.workteam_mode<=0 and tdwk.biz_workerid=:biz_workerid and tdwk.`status`=-2 and tdwk.updatetime>=:queryDateTimeStart) or (tdwk.workteam_mode>0 and tdwkt.leader_workerid=:biz_workerid and tdwkt.`status`=7 and tdwkt.updatetime>=:queryDateTimeStart)) ", array( ":biz_workerid" => $bizWorker["id"], ":queryDateTimeStart" => strtotime("-30day", strtotime(date("Y-m-d", time()))), )); if (intval($cancelCount) >= 10) { $sqlParams = array(); $sqlParams[":nowtime"] = time(); $sqlParams[":biz_workerid"] = $bizWorker["id"]; $sqlParams[":catalog"] = 3; //0-上班迟到;1-违规线下交易;2-主动违约;3-多次取消被停用; $sqlParams[":hanging_endtime"] = strtotime("+7day"); $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 一个月内主动取消10次停用一周 \n"; $backdata = pdo_query3("insert into biz_worker_breaklaw set createtime=:nowtime , `biz_workerid`=:biz_workerid, `catalog`=:catalog, remark=concat(:remark,ifnull(remark,'')); update biz_worker set hanging=2,hanging_endtime=:hanging_endtime,hangopt_remak=concat(:remark,ifnull(hangopt_remak,'')) where id=:biz_workerid; ", $sqlParams); } else if (intval($cancelCount) >= 5) { try { include_once WEB_PHY_ROOT . "/base/smslib.php"; $sended = alisms_sendSms($bizWorker["mobile"], AliSMS_TMPCODE_444, AliSMS_CODE_TMPSIGN, array( "name" => empty($bizWorker["true_name"]) ? $bizWorker["nickname"] : $bizWorker["true_name"], )); } catch (Throwable $ex) { eeglobal_log_handler("alisms", "error", "取消次数太多提醒,短信发送失败 {$workId} " . $ex->getMessage()); } } return $cancelCount; }); return $backdata; break; case "auditEnroll": $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"]; $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"]; // $update_sql = "update biz_worker_account set status=1 where biz_workerid = 314"; // $backdata=pdo_query3($update_sql,array()); // var_dump($backdata);die; if (intval($teamid) > 0) { throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名!"); $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (intval($teamInfo["status"]) != 3) { throw new GeneralException("", "此团组已不是报名待审核状态,请核查!"); } $recruitId = intval($teamInfo["biz_recruitid"]); $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } if (intval($recruitInfo["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "这个招聘记录不是您的信息,请核查!"); } $planDotime = intval($teamInfo["plan_dotime"]); $bizArgs = array("handleMode" => $handleMode, "bizTrader" => $bizTrader, "teamInfo" => $teamInfo, "recruitInfo" => $recruitInfo, "todo" => $todo, "reason" => $reason); } else { $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"]; if (intval($workId) <= 0) { throw new GeneralException("", "没有传递必要的teamid/workid参数或参数值不正确"); } $workInfo = pdo_fetch("select * from biz_todowork where id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } if (intval($workInfo["workteam_mode"] != 0)) { throw new GeneralException("", "此订单不是独立报名的记录,请核查!"); } if (intval($workInfo["workteamid"] != 0)) { throw new GeneralException("", "此订单不是独立报名的记录,请核查!"); } if (intval($workInfo["status"] != 1)) { throw new GeneralException("", "此订单已不是报名待审核状态,请核查!"); } $recruitId = intval($workInfo["biz_recruitid"]); $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } if (intval($recruitInfo["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "这个招聘记录不是您的信息,请核查!"); } $planDotime = intval($workInfo["todo_begindate"]); $bizArgs = array("handleMode" => $handleMode, "bizTrader" => $bizTrader, "workInfo" => $workInfo, "recruitInfo" => $recruitInfo, "todo" => $todo, "reason" => $reason, "minaCode" => $minaCode); } $biz_todowork_count = "select count(*) as todowork_count from biz_todowork where biz_recruitid={$bizArgs['recruitInfo']['id']} and status = 2"; $biz_todowork_count_find = pdo_fetch($biz_todowork_count, array()); if ($bizArgs['recruitInfo']['need_total'] == $biz_todowork_count_find['todowork_count']) { throw new GeneralException("", "招聘人数已满!"); } $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) { $handleMode = $bizArgs["handleMode"]; $bizTrader = $bizArgs["bizTrader"]; $recruitInfo = $bizArgs["recruitInfo"]; $teamInfo = $bizArgs["teamInfo"]; $workInfo = $bizArgs["workInfo"]; $todo = $bizArgs["todo"]; $reason = $bizArgs["reason"]; $minaCode = $bizArgs["minaCode"]; //------------------------------------------- $sqlTemp = ""; $sqlParams = array(); $sqlParams[":nowtime"] = time(); $sqlParams[":cancel_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 已被其他商家及时录取,本待录用申请被取消 \n"; $sqlParams[":cancel_status"] = -4; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消 $sqlParams[":cancel_teamstatus"] = -4; //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消; $sqlParams[":workDateStart"] = intval($recruitInfo["begin_datetime"]); $sqlParams[":workDateFinish"] = $sqlParams[":workDateStart"]; if (intval($recruitInfo["settle_catalog"]) <= 0//普通招聘的多日招聘 && intval($recruitInfo["begin_datetime"]) < intval($recruitInfo["finish_datetime"])) { $sqlParams[":workDateFinish"] = intval($recruitInfo["finish_datetime"]); } if (intval($recruitInfo["settle_catalog"]) > 0) { $sqlParams[":workDateStart"] = strtotime(date("Y-m-d", $planDotime)); $sqlParams[":workDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime)); } $sqlParams[":nowSettleCatalog"] = intval($recruitInfo["settle_catalog"]); $sqlParams[":plandoDateStart"] = strtotime(date("Y-m-d", $planDotime)); $sqlParams[":plandoDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime)); $sqlTemp .= " set @a0=:cancel_status,@a1=:cancel_teamstatus,@a2=:cancel_remark,@a3=:plandoDateStart,@a4=:plandoDateFinish,@a5=:workDateStart,@a6=:workDateFinish,@a7=:nowSettleCatalog; "; if (!empty($teamInfo)) { throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名!"); $teamMemberCount = pdo_fetchcolumn("select count(*) from biz_todowork where workteam_mode>0 and teamstatus>=2 and workteamid=" . intval($teamInfo["id"]) . " "); if (intval($teamMemberCount) <= 0) { throw new GeneralException("", "此团组中竟然没有任何有效团项,请核查!"); } switch (trim($todo)) { case "allow": $sqlParams[":status"] = 4; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约;7-主动取消报名;8-被动取消报名' $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名已审核通过 $reason \n"; $sqlParams[":wkstatus"] = 2; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消' $sqlParams[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名已审核通过 $reason \n"; $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)"; $sqlTemp .= " select :nowtime, 0, id"; $sqlTemp .= " from biz_todowork "; $sqlTemp .= " where workteamid=" . intval($teamInfo["id"]) . " "; $sqlTemp .= " and workteam_mode>0 and teamstatus>=2;"; //---------------------------------------------------------- $sqlTemp .= " update biz_todowork set workteam_flag=0 where workteam_mode>0 and teamstatus>=2 and workteamid=" . intval($teamInfo["id"]) . ";"; $sqlTemp .= " select @teamflagid:=id from biz_todowork where workteam_mode>0 and teamstatus>=2 and workteamid=" . intval($teamInfo["id"]) . " limit 1;"; $sqlTemp .= " update biz_todowork set workteam_flag=1 where ifnull(@teamflagid,0)>0 and id=@teamflagid;"; //---------------------------------------------------------- $sqlTemp .= " update biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid "; $sqlTemp .= " set tdwk.updatetime=:nowtime, tdwk.`status`=:cancel_status, tdwk.`teamstatus`=:cancel_teamstatus "; $sqlTemp .= " , tdwk.remark=concat(:cancel_remark,ifnull(tdwk.remark,'')), tdwk.teamremark=concat(:cancel_remark,ifnull(tdwk.teamremark,'')) "; $sqlTemp .= " where tdwk.workteamid<>" . intval($teamInfo["id"]) . " and tdwk.biz_workerid in (select biz_workerid from biz_todowork where workteam_mode>0 and teamstatus>=2 and workteamid=" . intval($teamInfo["id"]) . ") and ( (tdwk.`workteam_mode`<=0 and tdwk.`status`=1) or (tdwk.`workteam_mode`>0 and tdwk.`teamstatus`>=2 and tdwkt.`status`=3) ) and( (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish) or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish) or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and ( (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish) or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish) or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish) )) ) ;"; break; case "refuse": if (empty(trim($reason))) { throw new GeneralException("", "没有传递必要的reason参数"); } $sqlParams[":status"] = 5; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约;7-主动取消报名;8-被动取消报名' $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名被拒绝:$reason \n"; $sqlParams[":wkstatus"] = -1; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消' $sqlParams[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 报名被拒绝:$reason \n"; break; default: throw new GeneralException("", "没有传递必要的todo参数或参数值不正确"); } $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime,`status`=:status, remark=concat(:remark,ifnull(remark,'')) "; $sqlTemp .= " where id=" . intval($teamInfo["id"]) . ";"; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) "; $sqlTemp .= " where workteamid=" . intval($teamInfo["id"]) . " "; $sqlTemp .= " and workteam_mode>0 and teamstatus>=2;"; } else { switch (trim($todo)) { case "allow": //带预支付工单费用模式的录用处理 $accountInfo = bizbase_traderAccountInfo($bizTrader); $money_balance = round(floatval($accountInfo["balance"]), 2); $nowPayMoney = round(floatval($recruitInfo["feetotal"] - $money_balance), 2); if ($nowPayMoney <= 0) { $nowPayMoney = 0; } //将来在收支明细中过滤掉money=0的记录; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_traderid"] = $bizTrader["id"]; $sqlParam[":biz_roletype"] = 0; $sqlParam[":biz_userid"] = $bizTrader["id"]; $sqlParam[":type"] = 0; //收支类型:0-收入;1-支出; $sqlParam[":biz_catalog"] = 1; //工单支付业务 if (intval($workInfo["status"]) != 1) { throw new GeneralException("", "此订单不是待录用状态,请核查!"); } $sqlParam[":money"] = $nowPayMoney; //收入:0-次数支付;1-支付订单; $sqlParam[":biz_id"] = intval($workInfo["id"]); //统一固定的订单支付ID,避免重复支付 $sqlParam[":biz_idtag"] = "WKID" . intval($workInfo["id"]) . "EE" . intval($workInfo["paytag"]); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 录用时预付工单费用 \n"; $sqlTemp = ""; $sqlTemp .= " insert into biz_trader_account set createtime=:nowtime"; $sqlTemp .= " ,biz_traderid=:biz_traderid, biz_roletype=:biz_roletype, biz_userid=:biz_userid "; $sqlTemp .= " ,type=:type, `money`=:money"; $sqlTemp .= " ,biz_catalog=:biz_catalog, biz_id=:biz_id, biz_idtag=:biz_idtag"; $sqlTemp .= " ,`status`=0, remark=:remark;"; $sqlTemp .= " select * from biz_trader_account where id=LAST_INSERT_ID();"; $dataset = pdo_query3($sqlTemp, $sqlParam); $bizInfo = $dataset[count($dataset) - 1][0]; if (empty($bizInfo)) { throw new GeneralException("", "构建预支付订单异常"); } $payBizCatalog = "11"; //11-【新】订单支付业务 $payBizId = $bizInfo["id"]; if ($nowPayMoney <= 0) { bizbase_paySuccess($payBizCatalog, $payBizId, false, "manhandle"); exit; return array("payResult" => true); } else { //--------------------------------------- if (empty(trim($minaCode))) { throw new GeneralException("", "没有传递必要的minaCode参数"); } $payScene = "JSAPI"; $prePayArgs = array( "payBackBizCatalog" => $payBizCatalog, "payBackBizId" => $payBizId, "payScene" => $payScene, ); require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_CAPITAL_MINA); $wxmina_appid = $resObj["wxmina_appid"]; $wxmina_openid = $resObj["openid"]; $bizArgs = array( "minaCode" => $minaCode, "bizInfo" => $bizInfo, "handleMode" => $handleMode, "bizUser" => $bizTrader, "wxmina_appid" => $wxmina_appid, "wxmina_openid" => $wxmina_openid, ); try { $prePayInfo = bizbase_todoWorkPayCore($prePayArgs, $bizArgs); } catch (Throwable $ex) { $errMsg = $ex->getMessage(); if (mb_strpos($errMsg, "201 商户订单号重复") === false) { throw $ex; } else { require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $result = weixin_ordercloseV3($bizInfo["biz_idtag"]); $dataset = pdo_query3("update biz_todowork set updatetime=:nowtime ,paytag=ifnull(paytag,0)+1, remark=concat('更新支付订单号后缀',ifnull(remark,'')) where id=:wkid; select @biz_idtag:=concat('WKID',id,'EE',paytag) from biz_todowork where id=:wkid; update biz_trader_account set updatetime=:nowtime ,biz_idtag=@biz_idtag, remark=concat('更新支付订单号后缀',ifnull(remark,'')) where id=:bizid; select @biz_idtag:=concat('WKID',id,'EE',paytag) from biz_todowork where id=:wkid; select * from biz_trader_account where id=:bizid;", array( ":nowtime" => time(), ":wkid" => intval($workInfo["id"]), ":bizid" => intval($bizInfo["id"]), )); $bizInfo = $dataset[count($dataset) - 1][0]; $bizArgs["bizInfo"] = $bizInfo; $prePayInfo = bizbase_todoWorkPayCore($prePayArgs, $bizArgs); } } $prePayInfo = array_merge($prePayArgs, $prePayInfo); return array( "moneyBalance" => $money_balance, "payMoney" => $nowPayMoney, "prePayInfo" => $prePayInfo, ); } break; case "refuse": if (empty(trim($reason))) { throw new GeneralException("", "没有传递必要的reason参数"); } $sqlParams[":wkstatus"] = -1; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消' $sqlParams[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 报名被拒绝(退还押金):$reason \n"; //返还押金对冲 $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, :wkremark "; $sqlTemp .= " from biz_todowork where id=" . intval($workInfo["id"]) . ";"; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) "; $sqlTemp .= " where id=" . intval($workInfo["id"]) . ";"; $dataset = pdo_query3($sqlTemp, $sqlParams); return $dataset; break; default: throw new GeneralException("", "没有传递必要的todo参数或参数值不正确"); } } }); return $backdata; break; case "processControlByWorker": $remark = isset($ajaxdata["remark"]) ? $ajaxdata["remark"] : $GPC["remark"]; $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"]; $workIds = isset($ajaxdata["workIds"]) ? $ajaxdata["workIds"] : $GPC["workIds"]; if (empty($workIds)) { throw new GeneralException("", "没有传递必要的workIds参数"); } $idSet = array(); foreach ($workIds as $item) { array_push($idSet, intval($item)); } $idSet = implode(",", $idSet); $todoworkList = pdo_fetchall("select tdwk.*,btr.begin_hour2 as btr_begin_hour2 from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id in ({$idSet}) "); if (empty($todoworkList)) { throw new GeneralException("", "没有定位到任何订单记录!"); } $sqlTemp = ""; $sqlParam = array(); $sqlParam[":nowtime"] = time(); switch (trim($todo)) { case "start": $sqlParam[":status"] = 3; $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 开始工作 $remark \n"; break; case "finish": $sqlParam[":status"] = 4; $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 结束工作 $remark \n"; break; default:throw new GeneralException("", "不支持的todo!"); } foreach ($todoworkList as $item) { if (intval($item["deleted"]) != 0) { throw new GeneralException("", "订单记录已被删除了!"); } if (intval($item["biz_workerid"]) != intval($bizWorker["id"])) { throw new GeneralException("", "订单记录不是您的!"); } $payqrParamName = ":payqr" . $item["id"]; $paycodeParamName = ":paycode" . $item["id"]; switch (trim($todo)) { case "start": $sqlParam[$payqrParamName] = ""; $sqlParam[$paycodeParamName] = ""; if (intval($item["status"]) != 2) { throw new GeneralException("", "订单不是待开工状态!"); } // if (strtotime(date("Y-m-d",intval($item["todo_begindate"]))) > strtotime(date("Y-m-d",time()))) // throw new GeneralException("", "还未到开工日期,还不能开工!"); // if ((strtotime(date("Y-m-d",intval($item["todo_begindate"])))+intval($item["btr_begin_hour2"])) > time()) // throw new GeneralException("", "还未到开工时间,还不能开工!"); $sqlExtra = " ,worked_begintime=:nowtime "; break; case "finish": if (intval($item["status"]) != 3) { throw new GeneralException("", "订单不是待完工状态!"); } $sqlExtra = " ,worked_finishtime=:nowtime "; $padLength = (6 - mb_strlen($item["id"] . "")); $padPrefix = ""; for ($iii = 1; $iii <= $padLength; $iii++) { $padPrefix .= ($iii == 1 ? "A" : "0"); } $sqlParam[$paycodeParamName] = $padPrefix . $item["id"]; //----------------------------------------------------- $sqlParam[$payqrParamName] = WEB_URL_FILEROOT . "/SALARYPAY/PAYQR_" . $item["id"] . "_"; $phySavePath = WEB_PHY_FILEROOT . "/SALARYPAY/PAYQR_" . $item["id"] . "_"; $qrcatalog = 0; //0-普通二维码;1-小程序码; switch ($qrcatalog) { case 0: $sqlParam[$payqrParamName] .= "qr.png"; $phySavePath .= "qr.png"; require_once WEB_PHY_ROOT . "/base/lib_qr.php"; //$linkhref=WEBAPI_IMG_HOSTURL."/index.php?workid=".intval($item["id"]); $linkhref = "workid=" . intval($item["id"]); lib_qrbuild2("png", $linkhref, $phySavePath, 200, 8); break; case 1: $sqlParam[$payqrParamName] .= "qrmina.png"; $phySavePath .= "qrmina.png"; require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $wxParams = bizwx_fetchWxParams(SUBSYS_CAPITAL2_MINA); //谁扫用谁 $mina_appid = $wxParams["mina_appid"]; $mina_appSecret = $wxParams["mina_appSecret"]; $bizCatalog = 0; $bizId = intval($item["id"]); $userId = intval($bizWorker["id"]); weixin_getMinaQCode($mina_appid, $mina_appSecret, $phySavePath, $bizCatalog, $bizId, $userId, "pages/index/index"); break; } break; default:throw new GeneralException("", "不支持的todo!"); } $sqlTemp .= " update biz_todowork set updatetime=:nowtime "; $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " ,`payqr`=(case when {$payqrParamName}='' then payqr else {$payqrParamName} end) "; $sqlTemp .= " ,`paycode`=(case when {$paycodeParamName}='' then paycode else {$paycodeParamName} end) "; $sqlTemp .= $sqlExtra; $sqlTemp .= " where id=" . intval($item["id"]) . ";"; } $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; break; case "denyPay": $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"]; if (intval($workId) <= 0) { throw new GeneralException("", "没有传递必要的workid参数或参数值不正确"); } $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } if (intval($workInfo["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } if (intval($workInfo["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "这个订单记录不是您的信息,请核查!"); } if (intval($workInfo["status"] != 4)) { throw new GeneralException("", "不是待结算状态,请核查!"); } $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":workid"] = intval($workInfo["id"]); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 提交拒绝支付申请 {$reason} \n"; $sqlTemp = ""; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=90,remark=concat(:remark,remark) where id=:workid;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; break; case "denyPayAudit": $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"]; $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"]; if (intval($workId) <= 0) { throw new GeneralException("", "没有传递必要的workid参数或参数值不正确"); } $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid,btr.title as btr_title from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } if (intval($workInfo["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } if (intval($workInfo["status"] != 90)) { throw new GeneralException("", "不是拒绝支付待审核状态,请核查!"); } switch (trim($todo)) { case "refuse": //将订单再次打回待结算状态,如果反反复复后,超过48小时未结算,则进入平台可强制结算; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":workid"] = intval($workInfo["id"]); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 驳回拒绝支付的申请 {$reason} \n"; $sqlTemp = ""; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=4,remark=concat(:remark,remark) where id=:workid;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; break; case "allow": //将会员押金转入商家账户,并返还商家工单费用,订单进入拒绝支付状态下; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $operatorName = empty($baseUser["login_name"]) ? "" : "(" . $baseUser["login_name"] . ")"; $sqlParam[":nowtime2"] = "[" . date("Y-m-d H:i:s", time()) . "] {$operatorName} "; $sqlParam[":workid"] = intval($workInfo["id"]); $sqlTemp = ""; // 阿东【进行修改,下方注释代码,为原来代码】退还押金 2020-06-18 16:20 $ratio = isset($ajaxdata["ratio"]) ? $ajaxdata["ratio"] : $GPC["ratio"]; //比例 if ($ratio > 1) { throw new GeneralException("", "比例错误,不能大于 1 "); } // 为0的时候,代表商家预付款全额返还,即“完全会员责任”,此时需要将会员的押金补偿给商家, // 0-1之间为比例,大于0时商家预付款30%表示支付给会员的金额,70%商家,会员押金原路返还 if ($ratio == 0) { //商家押金收入进账 $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , tdwk.enroll_premoney, 1, 7, tdwk.id, concat(:nowtime2,'会员违约,押金罚没收入\n') "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " where tdwk.id=:workid;"; //商家工单费用解冻(即退还) $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6, tdwk.id, concat(:nowtime2,'会员违约,工单费用解冻退还\n') "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " where tdwk.id=:workid;"; //工单状态修正 $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`= -5,remark=concat(:nowtime2,'拒绝支付通过审核,将会员押金转入商家账户,并返还商家工单费用\n',remark) where id=:workid;"; } else { //会员押金解冻 $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'会员押金解冻\n') "; $sqlTemp .= " from biz_todowork where id=:workid;"; // 工单金额 $feetotal = pdo_fetch("select btr.feetotal as feetotal from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id={$workInfo["id"]};"); // 会员应得工单的%$ratio = 金额 $user_money = round($feetotal['feetotal'] * $ratio, 2); $sqlParam[":user_money"] = $user_money; $sqlParam[":nowtime3"] = $sqlParam[":nowtime2"] . ",【工单({$workInfo['btr_title']})平台判定会员违约,商家补偿{$user_money}元】"; $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select biz_workerid , :nowtime , 0 , :user_money, 1, 0 , id, :nowtime3 "; $sqlTemp .= " from biz_todowork where id=:workid;"; // 商户应得工单的 = 总工单金额- 会员应得的金额 $sqlParam[":shop_money"] = $feetotal['feetotal'] - $user_money; $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , :shop_money, 1, 7, tdwk.id, :nowtime3 "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " where tdwk.id=:workid;"; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`= 5,`salary_status`= 1,remark=concat(:nowtime2,'拒绝支付通过审核,将会员押金原路返回,商家针对会员进行补偿\n',remark) where id=:workid;"; } $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; // //会员押金解冻 // $sqlTemp.=" insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; // $sqlTemp.=" select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'会员违约时,先将押金解冻\n') "; // $sqlTemp.=" from biz_todowork where id=:workid;"; // //会员押金罚没支出 // $sqlTemp.=" insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; // $sqlTemp.=" select biz_workerid , :nowtime , 1 , enroll_premoney, 1, 3 , id, concat(:nowtime2,'会员违约时,押金罚没支出\n') "; // $sqlTemp.=" from biz_todowork where id=:workid;"; // //商家押金收入进账 // $sqlTemp.=" insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; // $sqlTemp.=" select btr.biz_traderid, :nowtime , 0 , tdwk.enroll_premoney, 1, 7, tdwk.id, concat(:nowtime2,'会员违约时,押金罚没收入\n') "; // $sqlTemp.=" from biz_todowork tdwk"; // $sqlTemp.=" left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; // $sqlTemp.=" where tdwk.id=:workid;"; // //商家工单费用解冻(即退还) // $sqlTemp.=" insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; // $sqlTemp.=" select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6, tdwk.id, concat(:nowtime2,'会员违约时,工单费用解冻退还\n') "; // $sqlTemp.=" from biz_todowork tdwk"; // $sqlTemp.=" left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; // $sqlTemp.=" where tdwk.id=:workid;"; // //工单状态修正 // $sqlTemp.=" update biz_todowork set updatetime=:nowtime,`status`=-5,remark=concat(:nowtime2,'拒绝支付通过审核,将会员押金转入商家账户,并返还商家工单费用\n',remark) where id=:workid;"; // // $backdata = pdo_query3($sqlTemp, $sqlParam); break; default: throw new GeneralException("", "没有传递必要的todo参数或参数值不正确"); } break; case "waitPayByWorker": case "waitPayByTrader": case "waitPayByTrader2": $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"]; if (intval($workId) > 0) { $workInfo = pdo_fetch("select tdwk.* ,btr.biz_traderid, btr.feetotal as pay_feetotal from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } } else { $workPayCode = isset($ajaxdata["workPayCode"]) ? $ajaxdata["workPayCode"] : $GPC["workPayCode"]; if (empty(trim($workPayCode))) { throw new GeneralException("", "没有传递必要的workid/workPayCode参数或参数值不正确"); } $workInfo = pdo_fetch("select tdwk.* ,btr.biz_traderid, btr.feetotal as pay_feetotal from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.paycode=:paycode", array(":paycode" => trim($workPayCode))); if (empty($workInfo)) { throw new GeneralException("", "订单核销码没有对应的记录,请核查!"); } } $moneyUserId = intval($workInfo["biz_traderid"]); $moneyRoleType = 0; if ($handleMode == "waitPayByWorker") { if (intval($workInfo["biz_workerid"] != intval($bizWorker["id"]))) { throw new GeneralException("", "此订单不是您的记录,请核查!"); } } if ($handleMode == "waitPayByTrader") { if (intval($workInfo["biz_traderid"] != intval($bizTrader["id"]))) { throw new GeneralException("", "此订单所对应的招聘信息不是您的,请核查!"); } } if ($handleMode == "waitPayByTrader2") { $delegateInfo = bizTrader2_getRecuritDelegate(intval($workInfo["biz_recruitid"])); if (empty($delegateInfo) || intval($delegateInfo["biz_trader2id"]) != intval($bizTrader2["id"])) { throw new GeneralException("", "您没有被授权此订单所对应的招聘信息,或授权已过期,请核查!"); } $moneyUserId = intval($bizTrader2["id"]); $moneyRoleType = 1; } if (intval($workInfo["status"] != 4)) { throw new GeneralException("", "此订单不是待结算状态,请核查!"); } $recruitId = intval($workInfo["biz_recruitid"]); $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId)); if (empty($recruitInfo)) { throw new GeneralException("", "没有定位到招聘记录信息,请核查!"); } $bizArgs = array("handleMode" => $handleMode, "bizUser" => $bizUser, "workInfo" => $workInfo, "recruitInfo" => $recruitInfo, "moneyUserId" => $moneyUserId, "moneyRoleType" => $moneyRoleType); $backdata = bizbase_recruitWorkLock($recruitId, 0, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) { $handleMode = $bizArgs["handleMode"]; $bizUser = $bizArgs["bizUser"]; $workInfo = $bizArgs["workInfo"]; $recruitInfo = $bizArgs["recruitInfo"]; $moneyUserId = $bizArgs["moneyUserId"]; $moneyRoleType = $bizArgs["moneyRoleType"]; $backdata = pdo_fetch("select tdwk.* ,btr.title as recruitTitle ,btr.feeper as totalfee ,btr.plat_fetchmoney as plat_fetchmoney ,btr.salary as salary ,btr.sharer_fetchmoney as sharer_fetchmoney ,bt.company_name,btbu.mobile as btbu_mobile ,(select (sum(case when bta.type=0 then ifnull(money,0) else 0 end) - sum(case when bta.type=1 then ifnull(money,0) else 0 end)) as money_balance from biz_trader_account bta where bta.deleted=0 and bta.biz_traderid=btr.biz_traderid and bta.`biz_roletype`=:money_roletype and bta.biz_userid=:money_userid and bta.`status`=1 ) as money_balance from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid left join biz_trader bt on bt.id=btr.biz_traderid left join base_user btbu on btbu.id=bt.base_userid where tdwk.id=:workid", array( ":workid" => $workInfo["id"], ":money_userid" => intval($moneyUserId), ":money_roletype" => intval($moneyRoleType), )); $backdata["money_balance"] = round(floatval($backdata["money_balance"]), 2); unset($backdata["teamremark"]); unset($backdata["remark"]); return $backdata; }); return $backdata; break; case "paySettleByTrader": case "paySettleByTrader2": case "paySettleByPlater": $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"]; if (intval($workId) > 0) { $workInfo = pdo_fetch("select tdwk.* ,btr.biz_traderid, btr.feetotal as pay_feetotal from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } } else { $workPayCode = isset($ajaxdata["workPayCode"]) ? $ajaxdata["workPayCode"] : $GPC["workPayCode"]; if (empty(trim($workPayCode))) { throw new GeneralException("", "没有传递必要的workid/workPayCode参数或参数值不正确"); } $workInfo = pdo_fetch("select tdwk.* ,btr.biz_traderid, btr.feetotal as pay_feetotal from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.paycode=:paycode", array(":paycode" => trim($workPayCode))); if (empty($workInfo)) { throw new GeneralException("", "订单核销码没有对应的记录,请核查!"); } } $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"]; $params = array("handleMode" => $handleMode, "baseUser" => $baseUser, "bizUser" => $bizUser, "bizTrader" => $bizTrader, "bizTrader2" => $bizTrader2, "srcWorkInfo" => $workInfo, "minaCode" => $minaCode); $backdata = biz_flkForWork($workInfo["id"], $params, function ($params) { $handleMode = $params["handleMode"]; $baseUser = $params["baseUser"]; $bizUser = $params["bizUser"]; $bizTrader = $params["bizTrader"]; $bizTrader2 = $params["bizTrader2"]; $srcWorkInfo = $params["srcWorkInfo"]; $minaCode = $params["minaCode"]; $operatorName = ""; switch ($handleMode) { case "paySettleByTrader": $operatorName = " "; break; case "paySettleByTrader2": $operatorName = empty($baseUser["mobile"]) ? "" : "(" . $baseUser["mobile"] . ")"; break; case "paySettleByPlater": $operatorName = empty($baseUser["login_name"]) ? "" : "(" . $baseUser["login_name"] . ")"; break; } $workInfo = pdo_fetch("select tdwk.* ,btr.biz_traderid, btr.feetotal as pay_feetotal ,btr.plat_fetchmoney,btr.sharer_fetchmoney,btr.salary as wker_salary from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id=" . intval($srcWorkInfo["id"])); if ($handleMode == "paySettleByTrader") { if (intval($workInfo["biz_traderid"] != intval($bizTrader["id"]))) { throw new GeneralException("", "此订单所对应的招聘信息不是您的,请核查!"); } } if ($handleMode == "paySettleByTrader2") { $delegateInfo = bizTrader2_getRecuritDelegate(intval($workInfo["biz_recruitid"])); if (empty($delegateInfo) || intval($delegateInfo["biz_trader2id"]) != intval($bizTrader2["id"])) { throw new GeneralException("", "您没有被授权此订单所对应的招聘信息,或授权已过期,请核查!"); } } if ($handleMode == "paySettleByPlater") { if (!(intval($workInfo["status"]) == 4 || intval($workInfo["status"]) == -5 || intval($workInfo["status"]) == -8)) { throw new GeneralException("", "此订单不是待结算或拒绝支付或超48小时未结算状态,请核查!"); } } else { if (intval($workInfo["status"]) != 4) { throw new GeneralException("", "此订单不是待结算状态,请核查!"); } } //------------------------------------------------------- $platerMoney = round(floatval($workInfo["plat_fetchmoney"]), 2); $sharerMoney = round(floatval($workInfo["sharer_fetchmoney"]), 2); $workerMoney = round(floatval($workInfo["wker_salary"]), 2); $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":nowtime2"] = "[" . date("Y-m-d H:i:s", time()) . "] {$operatorName} "; $sqlParam[":wkid"] = $workInfo["id"]; $sqlParam[":biz_roletype"] = ($handleMode == "paySettleByTrader2" ? 1 : 0); $sqlParam[":biz_userid"] = intval($bizUser["id"]); $sqlTemp = ""; //商家冻结费用解冻 $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6 , tdwk.id, concat(:nowtime2,'工单结算时解冻工单费用\n') "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " where tdwk.id=:wkid;"; //工单结算支出 $sqlParam[":biz_catalog1"] = ($handleMode == "paySettleByPlater" ? 7 : 6); //6-工单整体支出;7-平台代整体结算 $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; $sqlTemp .= " select btr.biz_traderid, :nowtime , 1 , btr.feetotal, 1, :biz_catalog1 , tdwk.id, concat(:nowtime2,'工单结算时支出工单费用\n') "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " where tdwk.id=:wkid;"; //------------------------------------ $share_workerid = intval($workInfo["share_workerid"]); if ($share_workerid > 0) { $platerMoney = $platerMoney - $sharerMoney; } $sqlParam[":platerMoney"] = $platerMoney; //平台分成 $sqlTemp .= " insert into biz_trader_account ( deleted, `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; $sqlTemp .= " select 9, btr.biz_traderid , :nowtime , 1 , :platerMoney, 1, 1 , tdwk.id, concat(:nowtime2,'工单结算时平台分成\n') "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " where tdwk.id=:wkid;"; if ($share_workerid > 0) { //分享佣金 $sqlParam[":sharerMoney"] = $sharerMoney; $sqlParam[":share_workerid"] = $share_workerid; $sqlTemp .= " insert into biz_trader_account ( deleted, `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; $sqlTemp .= " select 9, btr.biz_traderid , :nowtime , 1 , :sharerMoney, 1, 2 , :wkid, concat(:nowtime2,'工单结算时佣金分成支出\n') "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " where tdwk.id=:wkid;"; $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select :share_workerid , :nowtime , 0 , :sharerMoney, 1, 1 , :wkid, concat(:nowtime2,'工单结算时佣金分成收入\n') from dual where 1=1;"; } $sqlParam[":workerMoney"] = $workerMoney; //工人工资 $sqlParam[":doed_workerid"] = intval($workInfo["biz_workerid"]); $sqlTemp .= " insert into biz_trader_account ( deleted, `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )"; $sqlTemp .= " select 9, btr.biz_traderid , :nowtime , 1 , :workerMoney, 1, 3 , :wkid, concat(:nowtime2,'工单结算时工资支出\n') "; $sqlTemp .= " from biz_todowork tdwk"; $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlTemp .= " where tdwk.id=:wkid;"; $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select :doed_workerid , :nowtime , 0 , :workerMoney, 1, 0 , :wkid, concat(:nowtime2,'工单结算时工资收入\n') from dual where 1=1;"; /* //报名押金退还 $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'工单结算时押金退还\n') "; $sqlTemp .= " from biz_todowork where id=:wkid;"; //修正工单状态 $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=5 "; //已结算 $sqlTemp .= " ,settled_time=:nowtime,settled_mode=:biz_roletype,settled_userid=:biz_userid"; $sqlTemp .= " ,remark=concat(:nowtime2,'工单已结算\n',ifnull(remark,'')) where id=:wkid;"; */ //报名押金退还 $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )"; $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'工单结算时押金退还\n') "; $sqlTemp .= " from biz_todowork where id=:wkid;"; //修正工单状态 $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=5 "; //已结算 $sqlTemp .= " ,settled_time=:nowtime,settled_mode=:biz_roletype,settled_userid=:biz_userid"; $sqlTemp .= " ,remark=concat(:nowtime2,'工单已结算\n',ifnull(remark,'')) where id=:wkid;"; $dataset = pdo_query3($sqlTemp, $sqlParam); return true; }); return $backdata; break; case "appraiseByWorker": $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"]; if (intval($workId) <= 0) { throw new GeneralException("", "没有传递必要的teamid/workid参数或参数值不正确"); } $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } if (intval($workInfo["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } if (intval($workInfo["biz_workerid"]) != intval($bizWorker["id"])) { throw new GeneralException("", "此订单记录不是您的,请核查后再处理!"); } if (intval($workInfo["status"] != 5)) { throw new GeneralException("", "不是已结算状态,不能进行评价!"); } $appraiseLevel = isset($ajaxdata["appraiseLevel"]) ? $ajaxdata["appraiseLevel"] : $GPC["appraiseLevel"]; $appraiseRemark = isset($ajaxdata["appraiseRemark"]) ? $ajaxdata["appraiseRemark"] : $GPC["appraiseRemark"]; $sqlParam = array(); $sqlParam[":biz_catalog"] = 1; //0-会员对活动评价;1-会员对工作过程雇主评价;2-雇主商家对会员工作过程评价; $sqlParam[":biz_id"] = intval($workInfo["id"]); $appraisal = pdo_fetch("select * from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id", $sqlParam); if (!empty($appraisal)) { throw new GeneralException("hasAppraised", "您已评价过,不能重复评价!"); } $sqlParam[":fromerid"] = intval($workInfo["biz_workerid"]); $sqlParam[":toerid"] = intval($workInfo["biz_traderid"]); $sqlParam[":nowtime"] = time(); $sqlParam[":result_level"] = intval($appraiseLevel); $sqlParam[":result_desc"] = trim($appraiseRemark); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员对工作过程雇主评价\n"; $sqlTemp = ""; $sqlTemp .= " set @handle_id=0; "; $sqlTemp .= " select @handle_id:=id from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id limit 1;"; $sqlTemp .= " insert into biz_appraisal ( `createtime`,`biz_catalog`, biz_id, `fromerid`, `toerid`,`result_level`, result_desc, remark)"; $sqlTemp .= " select :nowtime, :biz_catalog,:biz_id, :fromerid, :toerid , :result_level,:result_desc,:remark from dual where ifnull(@handle_id,0)=0;"; $sqlTemp .= " update biz_appraisal set updatetime=:nowtime,fromerid=:fromerid,toerid=:toerid, `result_level`=:result_level, result_desc=:result_desc, remark=concat(:remark,remark) where ifnull(@handle_id,0)<>0 and id=ifnull(@handle_id,0);"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; case "appraiseByTrader": $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"]; if (intval($workId) <= 0) { throw new GeneralException("", "没有传递必要的teamid/workid参数或参数值不正确"); } $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } if (intval($workInfo["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } if (intval($workInfo["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "此订单记录不属于您发布的招聘,请核查后再处理!"); } if (intval($workInfo["status"] != 5)) { throw new GeneralException("", "不是已结算状态,不能进行评价!"); } $appraiseLevel = isset($ajaxdata["appraiseLevel"]) ? $ajaxdata["appraiseLevel"] : $GPC["appraiseLevel"]; $appraiseRemark = isset($ajaxdata["appraiseRemark"]) ? $ajaxdata["appraiseRemark"] : $GPC["appraiseRemark"]; $sqlParam = array(); $sqlParam[":biz_catalog"] = 2; //0-会员对活动评价;1-会员对工作过程雇主评价;2-雇主商家对会员工作过程评价; $sqlParam[":biz_id"] = intval($workInfo["id"]); $appraisal = pdo_fetch("select * from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id", $sqlParam); if (!empty($appraisal)) { throw new GeneralException("hasAppraised", "您已评价过,不能重复评价!"); } $sqlParam[":fromerid"] = intval($workInfo["biz_traderid"]); $sqlParam[":toerid"] = intval($workInfo["biz_workerid"]); $sqlParam[":nowtime"] = time(); $sqlParam[":result_level"] = intval($appraiseLevel); $sqlParam[":result_desc"] = trim($appraiseRemark); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 雇主商家对会员工作过程评价\n"; $sqlTemp = ""; $sqlTemp .= " set @handle_id=0; "; $sqlTemp .= " select @handle_id:=id from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id limit 1;"; $sqlTemp .= " insert into biz_appraisal ( `createtime`,`biz_catalog`, biz_id, `fromerid`, `toerid`,`result_level`, result_desc, remark)"; $sqlTemp .= " select :nowtime, :biz_catalog,:biz_id, :fromerid, :toerid , :result_level,:result_desc,:remark from dual where ifnull(@handle_id,0)=0;"; $sqlTemp .= " update biz_appraisal set updatetime=:nowtime,fromerid=:fromerid,toerid=:toerid, `result_level`=:result_level, result_desc=:result_desc, remark=concat(:remark,remark) where ifnull(@handle_id,0)<>0 and id=ifnull(@handle_id,0);"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; case "fetchWorkPayQRByWorker": $workId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (intval($workId) <= 0) { throw new GeneralException("", "没有传递必要的bizId参数或参数值不正确"); } $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id=" . intval($workId)); if (empty($workInfo)) { throw new GeneralException("", "订单id没有对应的记录,请核查!"); } if (intval($workInfo["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } if (intval($workInfo["biz_workerid"]) != intval($bizWorker["id"])) { throw new GeneralException("", "此订单记录不属于您的工单,请核查后再处理!"); } if (intval($workInfo["status"] != 4)) { throw new GeneralException("", "工单已不是待结算状态了!"); } //----------------------------------------------------- $payqr = WEB_URL_FILEROOT . "/SALARYPAY/PAYQR_" . intval($workId) . "_"; $phySavePath = WEB_PHY_FILEROOT . "/SALARYPAY/PAYQR_" . intval($workId) . "_"; $qrcatalog = 0; //0-普通二维码;1-小程序码; switch ($qrcatalog) { case 0: $payqr .= "qr.png"; $phySavePath .= "qr.png"; require_once WEB_PHY_ROOT . "/base/lib_qr.php"; //$linkhref=WEBAPI_IMG_HOSTURL."/index.php?workid=".intval($item["id"]); $linkhref = "workid=" . intval($workInfo["id"]); lib_qrbuild2("png", $linkhref, $phySavePath, 200, 8); break; case 1: $payqr .= "qrmina.png"; $phySavePath .= "qrmina.png"; require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $wxParams = bizwx_fetchWxParams(SUBSYS_CAPITAL2_MINA); //谁扫用谁 $mina_appid = $wxParams["mina_appid"]; $mina_appSecret = $wxParams["mina_appSecret"]; $bizCatalog = 0; $bizId = intval($workInfo["id"]); $userId = intval($bizWorker["id"]); weixin_getMinaQCode($mina_appid, $mina_appSecret, $phySavePath, $bizCatalog, $bizId, $userId, "pages/index/index"); break; } $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 生成核销码 \n"; $sqlParam[":wkid"] = intval($workInfo["id"]); $sqlParam[":payqr"] = $payqr; //paycode $padLength = (6 - mb_strlen(intval($workInfo["id"]) . "")); $padPrefix = ""; for ($iii = 1; $iii <= $padLength; $iii++) { $padPrefix .= ($iii == 1 ? "A" : "0"); } $sqlParam[":paycode"] = $padPrefix . intval($workInfo["id"]); $sqlTemp = ""; $sqlTemp .= " update biz_todowork set updatetime=:nowtime, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " ,`payqr`=:payqr ,`paycode`=:paycode "; $sqlTemp .= " where id=:wkid;"; $backdata = pdo_query3($sqlTemp, $sqlParam); return array("payqr" => $payqr, "paycode" => $sqlParam[":paycode"]); break; default:throw new GeneralException("", "不支持的handleMode!"); } } function bizbase_todoWorkPayCore($prePayArgs, $bizArgs) { require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $prePayInfo = weixin_prepayBuildV3($prePayArgs, $bizArgs, function ($bizCatalog, $bizId, $bizArgs) { $minaCode = $bizArgs["minaCode"]; $bizInfo = $bizArgs["bizInfo"]; $handleMode = $bizArgs["handleMode"]; $bizUser = $bizArgs["bizUser"]; $wxmina_appid = $bizArgs["wxmina_appid"]; $wxmina_openid = $bizArgs["wxmina_openid"]; //--------------------------------------- $payTotal = round(floatval($bizInfo["money"]), 2); if ($payTotal <= 0) { throw new GeneralException("", "购买金额竟然小于等于0"); } $payTotal = $payTotal * 100; //转为分 //--------------------------------------- $sqlParam = array(); $sqlParam[":id"] = intval($bizInfo["id"]); $sqlParam[":wxmina_appid"] = $wxmina_appid; $sqlParam[":wxmina_openid"] = $wxmina_openid; $sqlTemp = " update biz_trader_account set"; $sqlTemp .= " wxmina_appid=:wxmina_appid,wxmina_openid=:wxmina_openid "; $sqlTemp .= " where id=:id; "; $dataset = pdo_query3($sqlTemp, $sqlParam); //--------------------------------------- $prePayInfo = array(); $prePayInfo["appid"] = $wxmina_appid; $prePayInfo["mchId"] = WeiXinPay_mchId; $prePayInfo["mch_paykeyV2"] = WeiXinPay_apiKey; $prePayInfo["mch_paykeyV3"] = WeiXinPay_apiKeyV3; $prePayInfo["out_trade_no"] = $bizInfo["biz_idtag"]; $prePayInfo["total"] = "{$payTotal}"; $prePayInfo["description"] = "订单支付业务"; $prePayInfo["openid"] = $wxmina_openid; return $prePayInfo; }); return $prePayInfo; } function bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime, $nowWorkId = 0, $teamid = 0) { $logcommon = "handleMode=>" . $handleMode . " recruitInfoId=>" . $recruitInfo["id"] . " bizWorkerId=>" . $bizWorker["id"] . " planDotime=>" . $planDotime . " nowWorkId=>" . $nowWorkId; //招聘记录状态检测 if (intval($recruitInfo["status"]) != 2) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘已不是可报名状态 {$logcommon} "); if (intval($teamid) > 0) { $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":teamid"] = intval($teamid); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 招聘已不可报名,团组解散 \n"; $sqlTemp = ""; $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime"; $sqlTemp .= " , `status`=2, remark=:remark"; $sqlTemp .= " where id=:teamid;"; $sqlTemp .= " update biz_todowork set updatetime=:nowtime "; $sqlTemp .= " , `teamstatus`=-3, teamremark=:remark"; $sqlTemp .= " , `status`=-2, remark=:remark "; $sqlTemp .= " where workteamid=:teamid and `teamstatus`>=0 "; $backdata = pdo_query3($sqlTemp, $sqlParam); } throw new GeneralException("", "非常抱歉,招聘已不可报名!"); } //性别限制逻辑 0-不限;1-限男;2-限女 switch (intval($recruitInfo["gender_mode"])) { case 1: if (intval($bizWorker["gender"]) > 0) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制男,但不是男 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasEnrolled", "非常抱歉,此招聘限制性别为男!"); } if (intval($bizWorker["gender"]) < 0) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制男,但不是男 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasEnrolled", "非常抱歉,此招聘限制性别为男,请完善信息后再报名!"); } break; case 2: if (intval($bizWorker["gender"]) == 0) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制女,但不是女 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasEnrolled", "非常抱歉,此招聘限制性别为女!"); } if (intval($bizWorker["gender"]) < 0) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制女,但不是女 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasEnrolled", "非常抱歉,此招聘限制性别为女,请完善信息后再报名!"); } break; } //年龄限制逻辑 if (intval($recruitInfo["age_mode"]) > 0) { $age_min = intval($recruitInfo["age_min"]); $age_max = intval($recruitInfo["age_max"]); $age = 0; if (intval($bizWorker["birthday"]) > 0) { $birthdate = date("Ymd", $bizWorker["birthday"]); $datetime1 = date_create_from_format("Ymd", $birthdate); $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1))); $datetime2 = new \DateTime(date("Y-m-d", time())); $interval = $datetime1->diff($datetime2); $age = intval($interval->format('%Y')); } if ($age > 0) { if ($age < $age_min) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制年龄,小于最小年龄要求 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasEnrolled", "非常抱歉,您的年龄({$age}岁)小于此招聘要求的最小年龄({$age_min}岁)要求,无法报名!"); } if ($age > $age_max) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制年龄,大于最大年龄要求 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasEnrolled", "非常抱歉,您的年龄({$age}岁)大于此招聘要求的最大年龄({$age_min}岁)要求,无法报名!"); } } } $oldList = pdo_fetch("select * from biz_todowork where id<>:nowWorkId and biz_recruitid=:biz_recruitid and biz_workerid=:biz_workerid and !find_in_set(ifnull(`status`,0),:status) ", array( ":nowWorkId" => intval($nowWorkId), ":biz_recruitid" => $recruitInfo["id"], ":biz_workerid" => $bizWorker["id"], ":status" => "-2,-3,-4,0", //主动取消/被违约/被动取消后都可再报 )); if (!empty($oldList)) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您已成功报名过此招聘或已被驳回,不能重复报名此招聘 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasEnrolled", "您已成功报名过此招聘或已被驳回,不能重复报名此招聘,请核查!"); } $workDateStart = intval($recruitInfo["begin_datetime"]); $workDateFinish = $workDateStart; if (intval($recruitInfo["settle_catalog"]) <= 0//普通招聘的多日招聘 && intval($recruitInfo["begin_datetime"]) < intval($recruitInfo["finish_datetime"])) { $workDateFinish = intval($recruitInfo["finish_datetime"]); } if (intval($recruitInfo["settle_catalog"]) > 0) { $workDateStart = strtotime(date("Y-m-d", $planDotime)); $workDateFinish = strtotime(date("Y-m-d 23:59:59", $planDotime)); } // if(($workDateStart+intval($recruitInfo["begin_hour2"]))<=time()+3600*2) if (($workDateStart + intval($recruitInfo["begin_hour2"])) <= time()) { throw new GeneralException("overdue", "已过招聘可报名时间,不能再报名!"); } $oldList = pdo_fetch("select tdwk.* from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid where tdwk.id<>:nowWorkId and tdwk.biz_workerid=:biz_workerid and ifnull(tdwk.`status`,0)>=2 and ifnull(tdwk.`status`,0)!=5 and( (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish) or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish) or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and ( (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish) or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish) or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish) )) )", array( ":nowWorkId" => intval($nowWorkId), ":biz_workerid" => $bizWorker["id"], ":nowSettleCatalog" => intval($recruitInfo["settle_catalog"]), ":plandoDateStart" => strtotime(date("Y-m-d", $planDotime)), ":plandoDateFinish" => strtotime(date("Y-m-d 23:59:59", $planDotime)), ":workDateStart" => $workDateStart, ":workDateFinish" => $workDateFinish, )); //urgent_level 为1 则为今日零工 今日零工取消限制 if (1 != $recruitInfo['urgent_level']) { if (!empty($oldList)) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您已成功报名此日期(段)的招聘,同一天不能报名多个招聘 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasDateEnrolled", "您已成功报名此日期(段)的招聘,同一天不能报名多个招聘,请核查!"); } if (intval($recruitInfo["enroll_audit"]) > 0 || $handleMode == "openTeam" || $handleMode == "joinTeam") { //需要报名审核/开参团模式 $oldList = pdo_fetchall("select tdwk.* from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid where tdwk.id<>:nowWorkId and tdwk.biz_workerid=:biz_workerid and ( (tdwk.`workteam_mode`<=0 and tdwk.`status`=1) or (tdwk.`workteam_mode`>0 and tdwk.`teamstatus`>=2 and tdwkt.`status`=3) ) and( (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish) or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish) or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and ( (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish) or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish) or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish) )) )", array( ":nowWorkId" => intval($nowWorkId), ":biz_workerid" => $bizWorker["id"], ":nowSettleCatalog" => intval($recruitInfo["settle_catalog"]), ":plandoDateStart" => strtotime(date("Y-m-d", $planDotime)), ":plandoDateFinish" => strtotime(date("Y-m-d 23:59:59", $planDotime)), ":workDateStart" => $workDateStart, ":workDateFinish" => $workDateFinish, )); if (count($oldList) >= 3) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您报名此日期(段)的待录用招聘数量已达最大3个的限制 {$logcommon} "); if ($handleMode == "teamEnroll") { return false; } throw new GeneralException("hasDateQueue", "您报名此日期(段)的待录用招聘数量已达最大3个的限制,请核查!"); } } } if ($handleMode == "openTeam" || $handleMode == "joinTeam") { $oldList = pdo_fetch("select * from biz_todoworkteam where biz_recruitid=:biz_recruitid and leader_workerid=:leader_workerid and !find_in_set(ifnull(`status`,0),:status) ", array( ":biz_recruitid" => $recruitInfo["id"], ":leader_workerid" => $bizWorker["id"], ":status" => "0,2,6", //解散/被违约 )); if (!empty($oldList)) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您已对此招聘开团了,不能重复开参团 {$logcommon} "); throw new GeneralException("hasOpenTeam", "您已对此招聘开团了,不能重复开参团,请核查!"); } $oldList = pdo_fetch("select tdwk.* from biz_todowork tdwk left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid where tdwk.biz_recruitid=:biz_recruitid and tdwk.biz_workerid=:biz_workerid and tdwk.workteam_mode>0 and tdwk.teamstatus>=1 and !find_in_set(ifnull(tdwkt.`status`,0),:status) ", array( ":biz_recruitid" => $recruitInfo["id"], ":biz_workerid" => $bizWorker["id"], ":status" => "0,2,6", //解散/被违约 )); if (!empty($oldList)) { eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您已报名过此招聘的团组,不能重复开参团 {$logcommon} "); throw new GeneralException("hasJoinTeam", "您已报名过此招聘的团组,不能重复开参团,请核查!"); } } return true; } function bizbase_todoWorkTeamStatusName($statusCode) { switch (intval($statusCode)) { case 0: $statusName = "待成团"; break; case 1: $statusName = "已成团待提交报名"; break; case 2: $statusName = "已解散"; break; case 3: $statusName = "已报名待审核"; break; case 4: $statusName = "报名已审核通过"; break; case 5: $statusName = "报名被驳回"; break; case 6: $statusName = "被违约"; break; case 7: $statusName = "主动取消报名"; break; case 8: $statusName = "被动取消报名"; break; } return $statusName; } function bizbase_todoWorkSubTeamStatusName($statusCode) { switch (intval($statusCode)) { case 0: //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消; $statusName = "待参团"; break; case 1: $statusName = "已提交参团"; break; case 2: $statusName = "已入团"; break; case -1: $statusName = "参团被驳回"; break; case -2: $statusName = "参团被踢出"; break; case -3: $statusName = "已解散"; break; case -4: $statusName = "被动取消"; break; } return $statusName; } function bizbase_todoWorkTeamRoleName($mode) { switch (intval($mode)) { case 0: $roleName = "单干"; break; case 1: $roleName = "开团"; break; case 2: $roleName = "参团"; break; } return $roleName; } function bizbase_todoWorkStatusName($statusCode) { switch (intval($statusCode)) { case 0: $statusName = "已下单待付押金"; break; case 1: $statusName = "已报名待录用"; break; case 2: $statusName = "已录用待开工"; break; case -1: $statusName = "报名被驳回"; break; case 3: $statusName = "已开始工作"; break; case 4: $statusName = "已结束工作待结算"; break; case 5: $statusName = "已结算"; break; case 90: $statusName = "拒绝支付待审核"; break; case -2: $statusName = "取消报名"; break; case -3: $statusName = "被违约"; break; case -4: $statusName = "被动取消"; break; case -5: $statusName = "拒绝支付"; break; case -6: $statusName = "未开始工作"; break; case -7: $statusName = "未结束工作"; break; case -8: $statusName = "超48小时未结算"; break; } return $statusName; } function bizbase_todoWorkAboutQuery($fromSubSystem, $baseUser, $bizUser, $handleMode, $pageIndex, $pageSize, $ajaxdata, $GPC) { if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) { $bizWorker = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) { $bizTrader = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) { $bizTrader2 = $bizUser; } switch ($handleMode) { case "fetchallRecuritNew": $all = input_getPostObj(); if (!$all['status'] || $all['status'] == 0 || $all['status'] > 3) { throw new GeneralException("", "status参数错误!"); } $status = $all['status']; $start = (intval($pageIndex) - 1) * $pageSize; // if status=1 查看招聘,条件:没有开始的任务根据开始时间和时间进行判断 $sql = ""; //where发布人 // if($status == 1){ // //where发布人 // $sql_select = "SELECT t.*,FROM_UNIXTIME(t.begin_datetime,\"%Y-%m-%d\") as begin_datetime_bright,FROM_UNIXTIME(t.finish_datetime,\"%Y-%m-%d\") as finish_datetime_bright"; // // 1数据库里面begin_datetime开始时间(年月日)转成20201011格式 // // 2begin_hour开工时间 11:00转换 1100 // // 3将两个字段拼接成一个 // $sql .=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t "; // $sql .= " where t.begin_time_new > ".date('YmdHi',time()); // $sql .= " AND t.status != -2"; // $sql .= " ORDER BY id DESC"; // $sql .= " limit {$start},{$pageSize}"; // $list = pdo_fetchall($sql_select.$sql, array()); // // }elseif($status == 2){ // $sql_select = "SELECT t.*,FROM_UNIXTIME(t.begin_datetime,\"%Y-%m-%d\") as begin_datetime_bright,FROM_UNIXTIME(t.finish_datetime,\"%Y-%m-%d\") as finish_datetime_bright,tdwk.status as biz_todowork_status"; // $sql .=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t "; // $sql .= "left join biz_todowork tdwk on t.id=tdwk.biz_recruitid "; // $sql .= " where t.begin_time_new < ".date('YmdHi',time()); // $sql .= " AND t.status != -2"; // $sql .= " AND tdwk.status IN (2,3,4,90)"; // $sql .= " ORDER BY id DESC"; // $sql .= " limit {$start},{$pageSize}"; // $list = pdo_fetchall($sql_select.$sql, array()); // }elseif ($status == 3){ // $sql_select = "SELECT t.*,FROM_UNIXTIME(t.begin_datetime,\"%Y-%m-%d\") as begin_datetime_bright,FROM_UNIXTIME(t.finish_datetime,\"%Y-%m-%d\") as finish_datetime_bright"; // $sql .=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t "; //// $sql .= "left join biz_todowork tdwk on t.id=tdwk.biz_recruitid "; //// $sql .= " AND tdwk.status NOT IN (2,3,4,90)"; // $sql .= " where t.begin_time_new < ".date('YmdHi',time()); // $sql .= " OR t.status = -2"; // $sql .= " ORDER BY id DESC"; // $sql .= " limit {$start},{$pageSize}"; // $list = pdo_fetchall($sql_select.$sql, array()); // } if ($status == 1) { //where发布人 $sql_select = "SELECT * FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']} "; $sql .= " AND status = 2 AND is_delete = 0 "; $sql .= " ORDER BY id DESC"; $sql .= " limit {$start},{$pageSize}"; $list = pdo_fetchall($sql_select . $sql, array()); } elseif ($status == 2) { $sql_select = "SELECT t.* FROM ( SELECT *,( SELECT count(*) FROM biz_todowork WHERE biz_todowork.biz_recruitid = biz_trader_recruit.id AND status IN (2,3,4,90,-8,-7,-6) ) AS biz_todowork_count FROM biz_trader_recruit WHERE biz_traderid = {$baseUser['biz_userid']} ) t "; $sql .= " WHERE t.biz_todowork_count >= 1 AND t.is_delete = 0 "; $sql .= " ORDER BY id DESC"; $sql .= " limit {$start},{$pageSize}"; $list = pdo_fetchall($sql_select . $sql, array()); } elseif ($status == 3) { $sql_select = "SELECT t.* FROM ( SELECT *,( SELECT count(*) FROM biz_todowork WHERE biz_todowork.biz_recruitid = biz_trader_recruit.id AND status NOT IN (2,3,4,90,-8,-7,-6) ) AS biz_todowork_count FROM biz_trader_recruit WHERE biz_traderid = {$baseUser['biz_userid']} ) t "; $sql .= " WHERE t.biz_todowork_count >= 0 AND t.is_delete = 0 "; $sql .= " AND t.status != 2"; $sql .= " ORDER BY id DESC"; $sql .= " limit {$start},{$pageSize}"; $list = pdo_fetchall($sql_select . $sql, array()); } foreach ($list as $k => $v) { $list[$k]['begin_datetime_bright'] = date('Y-m-d', $v['begin_datetime']); $list[$k]['finish_datetime_bright'] = date('Y-m-d', $v['finish_datetime']); // 已录用的数量 $accepted_ok_sql = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 2"; $list[$k]['accepted_ok'] = pdo_fetch($accepted_ok_sql, array())['count']; // 待录用 $accepted_no_sql = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 1"; $list[$k]['accepted_no'] = pdo_fetch($accepted_no_sql, array())['count']; // 已开始 $status_three = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 3"; $list[$k]['todowork_status_three'] = pdo_fetch($status_three, array())['count']; // 待结算 $status_four = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 4"; $list[$k]['todowork_status_four'] = pdo_fetch($status_four, array())['count']; // 已结算 $status_five = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 5"; $list[$k]['todowork_status_five'] = pdo_fetch($status_five, array())['count']; $bizId = $v['id']; $sql = "select bw.id,bw.profile_photo from biz_trader_recruit as btr join biz_todowork as bt on btr.id=bt.biz_recruitid and bt.`status`>=1 join biz_worker as bw on bw.id =bt.biz_workerid where btr.id=:btrid limit 3"; $list[$k]['todo_list'] = pdo_fetchall($sql, array( ":btrid" => intval($bizId), )); } // 发布招聘的条数 // $sql_one=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t "; // $sql_one .= " where t.begin_time_new > ".date('YmdHi',time()); // $sql_one .= " AND t.status != -2"; /*$sql_one = " FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']} AND status = 2 AND is_delete = 0 "; $count_one = "select count(*) as count " . $sql_one . ";"; $sumDataOne = pdo_fetch($count_one, array());*/ $sql_one = "select count(*) as count from biz_todowork as bit join biz_trader_recruit as btr on btr.id = bit.biz_recruitid where bit.`status`=1 and btr.`status`=2 and btr.biz_traderid = '{$baseUser['biz_userid']}' "; $sumDataOne = pdo_fetch($sql_one); // 查看工作的条数 // $sql_two=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t "; // $sql_two .= "left join biz_todowork tdwk on t.id=tdwk.biz_recruitid "; // $sql_two .= " where t.begin_time_new < ".date('YmdHi',time()); // $sql_two .= " AND t.status != -2"; // $sql_two .= " AND tdwk.status IN (2,3,4,90)"; // $count_two = "select count(*) as count ".$sql_two.";"; $count_two = "SELECT COUNT(*) as count FROM ( SELECT *,( SELECT count(*) FROM biz_todowork WHERE biz_todowork.biz_recruitid = biz_trader_recruit.id AND status IN (2,3,4,90,-8,-7,-6) ) AS biz_todowork_count FROM biz_trader_recruit WHERE biz_traderid = {$baseUser['biz_userid']} ) t WHERE t.biz_todowork_count >= 1 AND t.is_delete = 0 "; $sumDataTwo = pdo_fetch($count_two, array()); // 历史发布 // $sql_three=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t "; // $sql_three .= " where t.begin_time_new < ".date('YmdHi',time()); // $sql_three .= " OR t.status = -2"; // $count_three = "select count(*) as count ".$sql_three.";"; $count_three = "SELECT COUNT(*) as count FROM ( SELECT *,( SELECT count(*) FROM biz_todowork WHERE biz_todowork.biz_recruitid = biz_trader_recruit.id AND status NOT IN (2,3,4,90,-8,-7,-6) ) AS biz_todowork_count FROM biz_trader_recruit WHERE biz_traderid = {$baseUser['biz_userid']} ) t "; $count_three .= " WHERE t.biz_todowork_count >= 0 AND t.is_delete = 0 "; $count_three .= " AND t.status != 2"; $sumDataThree = pdo_fetch($count_three, array()); return array( "pageData" => $list, "count_one" => intval($sumDataOne["count"]), "count_two" => intval($sumDataTwo["count"]), "count_three" => intval($sumDataThree["count"]), ); break; case "fetchallTeamByPlater": case "fetchallTeamByTrader": case "fetchallTeamByWorker": $sqlParam = array(); //查询处理 $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"]; if (empty($query) && !is_array($query)) { //验证一下query信息集 $query = " and 1=1 "; } else { $queryNew = " and 1=1 "; foreach ($query as $fdName => $fdValue) { if (empty($fdName) || empty($fdValue)) { continue; } switch ($fdName) { case "title": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_title"; $queryNew .= " and (btr.title like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "status": switch (intval($fdValue)) { case 1: $queryNew .= " and tdwkt.`status`=" . (intval($fdValue) - 1) . " "; break; } break; case "catalog": if (!empty($bizWorker)) { switch (intval($fdValue)) { case 1: $queryNew .= " and tdwkt.leader_workerid=" . intval($bizWorker["id"]) . " "; break; case 2: $queryNew .= " and tdwkt.id in (select workteamid from biz_todowork where workteam_mode=2 and biz_workerid=" . intval($bizWorker["id"]) . " ) "; break; } } break; } } $query = $queryNew; } if (!empty($bizWorker)) { $query .= " and ( tdwkt.leader_workerid=" . intval($bizWorker["id"]); $query .= " or tdwkt.id in (select workteamid from biz_todowork where biz_workerid=" . intval($bizWorker["id"]) . " ) "; $query .= " )"; } if (!empty($bizTrader)) { $query .= " and btr.biz_traderid=" . intval($bizTrader["id"]) . " "; } //排序处理 $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"]; switch (intval($orderby)) { case 1: //1-薪资额倒序 $orderby = " order by btr.salary desc "; break; default: //0-默认时间倒序 $orderby = " order by tdwkt.id desc "; break; } //构建sql串 $sqlBody = ""; $sqlBody .= " from biz_todoworkteam tdwkt "; $sqlBody .= " left join biz_trader_recruit btr on btr.id=tdwkt.biz_recruitid "; $sqlBody .= " left join biz_trader bt on bt.id=btr.biz_traderid "; $sqlBody .= " left join biz_worker lwk on lwk.id=tdwkt.leader_workerid "; $sqlBody .= " left join base_user lbu on lbu.id=lwk.base_userid "; $sqlBody .= " where 1=1 " . $query; //查询sql及统计sql $start = (intval($pageIndex) - 1) * $pageSize; $sqlFetch = " select tdwkt.* "; $sqlFetch .= " ,btr.title as recruit_title"; $sqlFetch .= " ,bt.company_name as bt_company_name"; $sqlFetch .= " ,(case when lwk.true_name<>'' then lwk.true_name else lwk.nickname end) as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo"; $sqlFetch .= " {$sqlBody} {$orderby} limit {$start},{$pageSize} "; $pageData = pdo_fetchall($sqlFetch, $sqlParam); //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射; foreach ($pageData as &$data) { //数据转换/映射 $data["iamleader"] = ($data["leader_workerid"] == intval($bizWorker["id"])); $data["createtime"] = date("Y-m-d H:i:s", $data["createtime"]); $data["plan_dotime"] = date("Y-m-d", $data["plan_dotime"]); $data["remark"] = trim(explode("\n", $data["remark"])[0]); $data["statusName"] = bizbase_todoWorkTeamStatusName(intval($data["status"])); } $sqlSummary = " select count(*) as count " . $sqlBody . ";"; $sumData = pdo_fetch($sqlSummary, $sqlParam); return array( "pageData" => $pageData, "count" => intval($sumData["count"]), ); break; case "fetchallTeamFollowByPlater": case "fetchallTeamFollowByTrader": case "fetchallTeamFollowByWorker": $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"]; if (intval($teamid) <= 0) { throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确"); } $teamInfo = pdo_fetch("select tdwkt.*, btr.biz_traderid from biz_todoworkteam tdwkt left join biz_trader_recruit btr on btr.id=tdwkt.biz_recruitid where tdwkt.id=" . intval($teamid)); if (empty($teamInfo)) { throw new GeneralException("", "团组id没有对应的记录,请核查!"); } if (!empty($bizTrader)) { if (intval($teamInfo["biz_traderid"]) != intval($bizTrader["id"])) { throw new GeneralException("", "此团组不是报的您家的名,请核查!"); } } case "fetchallByPlater": case "fetchallByTrader": case "fetchallByTrader2": case "fetchallByWorker": case "fetchallRecurit": case "fetchallRecuritGroup": $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"]; $sqlParam = array(); $sqlSelectExt = ""; //查询处理 $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"]; $query = empty(trim($exportExcel)) ? $query : json_decode($query, true); if (empty($query) && !is_array($query)) { //验证一下query信息集 $query = " and 1=1 and tdwk.status != 0 "; } else { $queryNew = " and 1=1 and tdwk.status != 0 "; foreach ($query as $fdName => $fdValue) { if (empty($fdName) || empty($fdValue)) { continue; } switch ($fdName) { case "nowUrgent": if (empty(trim($fdValue))) { continue; } switch (intval($fdValue)) { case 1: $queryNew .= " and ( btr.urgent_level=1 ) "; break; case 2: $queryNew .= " and ( btr.urgent_level=0 )"; break; } break; case "workerId": if (empty(trim($fdValue))) { continue; } $queryNew .= " and tdwk.biz_workerid=" . intval($fdValue) . " "; break; case "worksn": if (empty(trim($fdValue))) { continue; } $queryNew .= " and tdwk.id=" . base_fetchIdBySN($fdValue) . " "; break; case "traderId": if (empty(trim($fdValue))) { continue; } $queryNew .= " and btr.biz_traderid=" . intval($fdValue) . " "; break; case "recuritId": if (empty(trim($fdValue))) { continue; } $queryNew .= " and tdwk.biz_recruitid=" . intval($fdValue) . " "; break; case "recuritTitle": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_btrtitle"; $queryNew .= " and (btr.title like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "workArea": if (empty($fdValue)) { continue; } if (trim($fdValue) == "全部") { continue; } $queryNew .= " and ( 1=0 "; foreach (explode("/", $fdValue) as $index => $subquery) { $paramName = ":qy_workArea_" . intval($index); $queryNew .= " or btr.work_addr like concat('%',{$paramName},'%') "; $sqlParam[$paramName] = $subquery; } $queryNew .= " ) "; break; case "memberName": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_wkname"; $queryNew .= " and (wk.true_name like concat('%',{$paramName},'%') or wk.nickname like concat('%',{$paramName},'%')) "; $sqlParam[$paramName] = $fdValue; break; case "memberMobile": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_memberMobile"; $queryNew .= " and (bu.mobile like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "memberRealed": if (empty(trim($fdValue))) { continue; } switch (intval($fdValue)) { case 1: $queryNew .= " and ifnull(wk.idcard,'')='' "; break; case 2: $queryNew .= " and ifnull(wk.idcard,'')<>'' "; break; } break; case "workSettleMode": if (empty(trim($fdValue))) { continue; } switch (intval($fdValue)) { case 1: //完工结 $queryNew .= " and ( btr.settle_catalog=0 and btr.finish_datetime>btr.begin_datetime) "; break; case 2: //日结 $queryNew .= " and ( btr.settle_catalog=0 and btr.finish_datetime<=btr.begin_datetime) "; break; case 3: //批量 $queryNew .= " and ( btr.settle_catalog=1 ) "; break; } break; case "traderName": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_traderName"; $queryNew .= " and (bt.company_name like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "startDate": if (empty(trim($fdValue))) { continue; } $queryNew .= " and tdwk.todo_begindate>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " and tdwk.todo_begindate<=" . strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))) . " "; break; case "startDate2": if (empty(trim($fdValue))) { continue; } $queryNew .= " and tdwk.worked_begintime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " and tdwk.worked_begintime<=" . strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))) . " "; break; case "overtimePay": if (empty(trim($fdValue))) { continue; } $queryNew .= " and (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600) "; break; case "recuritStatus": switch (intval($fdValue)) { case 1: $queryNew .= " and btr.`status`=0 "; break; case 2: $queryNew .= " and btr.`status`=1 "; break; case 3: //批量招聘 终止招聘 所以无法由时间判定进行中 $queryNew .= " and (btr.`status`>=2 or btr.`status`=-2) "; break; case 4: $queryNew .= " and btr.`status`=-1 "; break; case 91: //待上线 $queryNew .= " and (btr.`status`<2) "; break; } break; case "status": //0-待提交;1-已报名待审核;2-已审核待开工;-1-报名被驳回;3-已开始工作;4-已结束工作待结算;5-已结算;-2-取消报名;-3-被违约 -4-被动取消 -5-未结算 switch (intval($fdValue)) { case 1: //结合一下团组态 $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=0) or (tdwk.workteam_mode>0 and tdwkt.`status`=0)) "; break; case 2: if (empty($teamInfo) && !empty($bizTrader)) { //商家待录用模式 $bizTrader_EnrollWaitAudit = 9988; $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=1) or (tdwk.workteam_mode=1 and tdwkt.`status`=3)) "; } else { $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=1) or (tdwk.workteam_mode>0 and tdwkt.`status`=3 and tdwk.`status`=1)) "; } break; case 3: $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=2) or (tdwk.workteam_mode>0 and tdwkt.`status`=4 and tdwk.`status`=2)) "; break; case 4: $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=-1) or (tdwk.workteam_mode>0 and tdwkt.`status`=5)) "; break; case 5: $queryNew .= " and tdwk.`status`=3 "; break; case 6: $queryNew .= " and tdwk.`status`=4 "; break; case 7: $queryNew .= " and tdwk.`status`=5 "; break; case 8: $queryNew .= " and tdwk.`status`=-2 "; break; case 9: $queryNew .= " and tdwk.`status`=-3 "; break; case 10: $queryNew .= " and tdwk.`status`=-4 "; break; case 11: $queryNew .= " and (tdwk.`status`=-5 or tdwk.`status`=-8) "; break; case 12: $queryNew .= " and tdwk.`status`=-6 "; break; case 13: $queryNew .= " and tdwk.`status`=-7 "; break; case 14: $queryNew .= " and (tdwk.`status`=-6 or tdwk.`status`=-7) "; break; case 15: $queryNew .= " and tdwk.`status`=-8 "; break; case 91: //进行中 $queryNew .= " and tdwk.`status`>=2 and tdwk.`status`<=3 "; break; case 92: //异常订单 $queryNew .= " and tdwk.`status`<0 "; break; case 93: //会员异常订单 $workerExceptionQuery = 9988; $queryNew .= " and (tdwk.`status`=-6 or tdwk.`status`=-7"; $queryNew .= " or (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600)"; $queryNew .= " )"; break; case 94: //商家异常订单 $traderExceptionQuery = 9988; $queryNew .= " and (tdwk.`status`=-3 or tdwk.`status`=-5 or tdwk.`status`=-8"; $queryNew .= " or (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600)"; $queryNew .= " )"; break; case 95: //平台代支付订单 $queryNew .= " and ( tdwkat2.`biz_catalog`=7 )"; break; case 96: //查看招聘信息 //time() $queryNew .= " and ((btr.`begin_datetime` > '" . time() . "') and btr.status in (2,3,4,5)) "; // echo " and ((`createtime` between '".strtotime(date('Y-m-d',time())) ."' and '".time().")' and btr.status in (2,3,4,5)) "; // exit(); // $pageData = pdo_fetchall($sql, array()); // return array( "pagedata"=>$pageData,"args"=>array() ); break; case 97: //查看工作,大于开始工作时间并且处于工作中的状态,并且没有纠纷 $queryNew .= " and ( btr.`begin_datetime` < '" . strtotime(date('Y-m-d H:i:s', time())) . "' and btr.status in (2,3,4,5) and btr.id in (select biz_recruitid from biz_todowork where biz_todowork.status=2 or biz_todowork.status=3 or biz_todowork.status=4 or biz_todowork.status=90)) "; break; case 98: //历史发布 // $queryNew .=" and ( btr.`finish_datetime` < '".strtotime(date('Y-m-d H:i:s',time()))."' and btr.id in (select biz_recruitid from biz_todowork where biz_todowork.status in (-1,-5,-2,-3,-4,5)) // or btr.id in (select biz_trader_recruit.id from biz_trader_recruit left join biz_todowork on biz_todowork.biz_recruitid = biz_trader_recruit.id where (select count(*)as count from biz_todowork where biz_recruitid = biz_trader_recruit.id) = 0 and biz_trader_recruit.finish_datetime < '".strtotime(date('Y-m-d H:i:s',time()))."') // ) "; $sql = "select btr.id as btr_id, btr.*,btr.id as btr_id,tdwk.*,(case when (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600) then 1 else 0 end) as overtimePay ,tdwkt.id as tdwkt_id,tdwkt.`status` as tdwkt_status ,btr.`status` as recruit_status,btr.createtime as recruit_createtime,btr.updatetime as recruit_updatetime,btr.need_total as btr_need_total ,btr.title as recruit_title,from_unixtime(btr.begin_datetime,'%Y-%m-%d') as btr_begindatetime,from_unixtime(btr.finish_datetime,'%Y-%m-%d') as btr_finishdatetime ,btr.begin_hour as btr_begin_hour,btr.finish_hour as btr_finish_hour,btr.work_addr1 as btr_work_addr1,btr.feeper as btr_feeper,btr.feetotal as btr_feetotal ,btr.settle_catalog as btr_settle_catalog,btr.age_mode as btr_age_mode,btr.gender_mode as btr_gender_mode,btr.meals_providing as btr_meals_providing ,btr.salary as btr_salary,btr.feetotal as btr_feetotal,btr.settle_mode as btr_settle_mode ,bt.company_name as bt_company_name,btbu.mobile as btbu_mobile ,(case when ifnull(bt22.true_name,'')<>'' then bt22.true_name else bt22.nickname end) as bt22_true_name ,wk.id as wkid,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_name,bu.mobile as bu_mobile,wk.profile_photo as wkprofile_photo ,wk.realname_handled as wk_realname_handled,wk.gender as wk_gender,wk.idcard as wk_idcard,wk.birthaddr as wk_birthaddr,wk.birthday as wk_birthday ,lwk.id as lwkid,(case when lwk.true_name<>'' then lwk.true_name else lwk.nickname end) as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo ,concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt2.id,'-',bt2bu.id,'-',bt2bu.mobile,'-',bt2.true_name) as delegate_info ,wkapa.id as wkapa_id,wkapa.deleted as wkapa_deleted,wkapa.result_level as wk_appraiseLevel,wkapa.result_desc as wk_appraiseRemark ,tdapa.id as tdapa_id,tdapa.deleted as tdapa_deleted,tdapa.result_level as td_appraiseLevel,tdapa.result_desc as td_appraiseRemark ,tdwkat2.`biz_catalog` as tdwk_settlecatalog from biz_trader_recruit as btr left join biz_todowork tdwk on btr.id=tdwk.biz_recruitid left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid left join biz_trader bt on bt.id=btr.biz_traderid left join base_user btbu on btbu.id=bt.base_userid left join biz_trader2 bt22 on bt22.id=tdwk.settled_userid left join biz_worker lwk on lwk.id=tdwkt.leader_workerid left join base_user lbu on lbu.id=lwk.base_userid left join biz_worker wk on wk.id=tdwk.biz_workerid left join base_user bu on bu.id=wk.base_userid left join biz_recruit_delegate brd on brd.biz_recruitid=tdwk.biz_recruitid and brd.finish_datetime>1653529202 left join biz_trader2 bt2 on bt2.id=brd.biz_trader2id left join base_user bt2bu on bt2bu.id=bt2.base_userid left join biz_appraisal wkapa on wkapa.biz_catalog=1 and wkapa.biz_id=tdwk.id left join biz_appraisal tdapa on tdapa.biz_catalog=2 and tdapa.biz_id=tdwk.id left join biz_trader_account tdwkat1 on tdwk.`status`=5 and tdwkat1.`status`=1 and tdwkat1.`type`=0 and tdwkat1.biz_id=tdwk.id and(tdwkat1.`biz_catalog`=1 or tdwkat1.`biz_catalog`=4) left join biz_trader_account tdwkat2 on tdwk.`status`=5 and tdwkat2.`status`=1 and tdwkat2.`type`=1 and tdwkat2.biz_id=tdwkat1.id and(tdwkat2.`biz_catalog`=6 or tdwkat2.`biz_catalog`=7) where (select count(*)as count from biz_todowork where biz_todowork.biz_recruitid=btr.id)=0 and btr.biz_traderid=" . intval($bizTrader["id"]) . " and btr.finish_datetime<'" . strtotime(date('Y-m-d H:i:s', time())) . "' or (tdwk.status in(-1,-5,-2,-3,-4,5) and btr.biz_traderid=" . intval($bizTrader["id"]) . ") group by btr.id order by btr.id desc"; $pageData = pdo_fetchall($sql, array()); return array("pageData" => $pageData, "args" => array()); break; //这里是工单 //这里是修改 增加状态的条件,筛选 招聘信息 // 查看工作和历史发布 查看招聘 放在招聘里面 调用不同的接口 // 有人报名就是工单 } break; case "teamstatus": //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消; switch (intval($fdValue)) { case 1: $queryNew .= " and tdwk.`teamstatus`=0 "; break; case 2: $queryNew .= " and tdwk.`teamstatus`=1 "; break; case 3: $queryNew .= " and tdwk.`teamstatus`=2 "; break; case 4: $queryNew .= " and tdwk.`teamstatus`=-1 "; break; case 5: $queryNew .= " and tdwk.`teamstatus`=-2 "; break; case 6: $queryNew .= " and tdwk.`teamstatus`=-3 "; break; case 7: $queryNew .= " and tdwk.`teamstatus`=-4 "; break; } break; case "teamrole": switch (intval($fdValue)) { case 1: $queryNew .= " and tdwk.workteam_mode=0 "; break; case 2: $queryNew .= " and tdwk.workteam_mode>0 "; break; case 3: $queryNew .= " and tdwk.workteam_mode=1 "; break; case 4: $queryNew .= " and tdwk.workteam_mode=2 "; break; case 5: //报名成功后的代表项(单报项及团组代表项) $queryNew .= " and (tdwk.workteam_mode>0 and tdwk.workteam_flag=1) "; break; } break; } } $query = $queryNew; } if (!empty($teamInfo)) { $query .= " and tdwkt.id=" . intval($teamInfo["id"]) . " "; } else { if (!empty($bizWorker)) { $query .= " and tdwk.biz_workerid=" . intval($bizWorker["id"]) . " "; } if (!empty($bizTrader)) { $query .= " and btr.biz_traderid=" . intval($bizTrader["id"]) . " "; } if (!empty($bizTrader2)) { $query .= " and brd.biz_trader2id=" . intval($bizTrader2["id"]) . " "; } } //排序处理 $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"]; switch (intval($orderby)) { case 1: //1-创建时间倒序 $orderby = " order by tdwk.id desc "; break; default: //0-默认更新时间倒序 $orderby = " order by tdwk.updatetime desc,tdwk.id desc "; break; } //构建sql串 $sqlBody = ""; //这里是修改,新增一个统计 $sqlBody .= " ,(select count(id) from biz_todowork where status=1 and biz_recruitid=btr.id) as tdwk_count_status1"; $sqlBody .= " ,(select count(id) from biz_todowork where status=2 and biz_recruitid=btr.id) as tdwk_count_status2"; $sqlBody .= " ,(select count(id) from biz_todowork where status=4 and biz_recruitid=btr.id) as tdwk_count_status4"; $sqlBody .= " ,(select count(id) from biz_todowork where status=5 and biz_recruitid=btr.id) as tdwk_count_status5"; $sqlBody .= " from biz_trader_recruit btr "; // $sqlBody.=" left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; $sqlBody .= " left join biz_todowork tdwk on btr.id=tdwk.biz_recruitid "; //这里是修改 $sqlBody .= " left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid "; $sqlBody .= " left join biz_trader bt on bt.id=btr.biz_traderid "; $sqlBody .= " left join base_user btbu on btbu.id=bt.base_userid "; $sqlBody .= " left join biz_trader2 bt22 on bt22.id=tdwk.settled_userid "; $sqlBody .= " left join biz_worker lwk on lwk.id=tdwkt.leader_workerid "; $sqlBody .= " left join base_user lbu on lbu.id=lwk.base_userid "; $sqlBody .= " left join biz_worker wk on wk.id=tdwk.biz_workerid "; $sqlBody .= " left join base_user bu on bu.id=wk.base_userid "; $sqlBody .= " left join biz_recruit_delegate brd on brd.biz_recruitid=tdwk.biz_recruitid and brd.finish_datetime>" . time(); $sqlBody .= " left join biz_trader2 bt2 on bt2.id=brd.biz_trader2id "; $sqlBody .= " left join base_user bt2bu on bt2bu.id=bt2.base_userid "; $sqlBody .= " left join biz_appraisal wkapa on wkapa.biz_catalog=1 and wkapa.biz_id=tdwk.id "; $sqlBody .= " left join biz_appraisal tdapa on tdapa.biz_catalog=2 and tdapa.biz_id=tdwk.id "; $sqlBody .= " left join biz_trader_account tdwkat1 on tdwk.`status`=5 and tdwkat1.`status`=1 and tdwkat1.`type`=0 and tdwkat1.biz_id=tdwk.id and (tdwkat1.`biz_catalog`=1 or tdwkat1.`biz_catalog`=4)"; $sqlBody .= " left join biz_trader_account tdwkat2 on tdwk.`status`=5 and tdwkat2.`status`=1 and tdwkat2.`type`=1 and tdwkat2.biz_id=tdwkat1.id and (tdwkat2.`biz_catalog`=6 or tdwkat2.`biz_catalog`=7)"; $sqlBody .= " where 1=1 " . $query; //这里是修改,工单分组 if ($handleMode == "fetchallRecurit") { $sqlBody .= " group by tdwk.biz_recruitid "; $sqlSelectExt .= ",count(tdwk.id) as tdwk_total"; } if ($handleMode == "fetchallRecuritGroup") { $sqlSelectExt .= ",count(tdwk.id) as tdwk_total"; $sqlBody .= " and tdwk.workteam_mode>0 "; $sqlBody .= " group by tdwk.workteamid "; } //查询sql及统计sql $sqlFetch = " select btr.*,btr.id as btr_id,tdwk.*,(case when (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600) then 1 else 0 end) as overtimePay "; $sqlFetch .= " ,tdwkt.id as tdwkt_id,tdwkt.`status` as tdwkt_status"; $sqlFetch .= " ,btr.`status` as recruit_status,btr.createtime as recruit_createtime,btr.updatetime as recruit_updatetime,btr.need_total as btr_need_total "; $sqlFetch .= " ,btr.title as recruit_title,btr.begin_datetime as btr_begindatetime,btr.finish_datetime as btr_finishdatetime"; $sqlFetch .= " ,btr.begin_hour as btr_begin_hour,btr.finish_hour as btr_finish_hour,btr.work_addr1 as btr_work_addr1,btr.feeper as btr_feeper,btr.feetotal as btr_feetotal"; $sqlFetch .= " ,btr.settle_catalog as btr_settle_catalog,btr.age_mode as btr_age_mode,btr.gender_mode as btr_gender_mode,btr.meals_providing as btr_meals_providing"; $sqlFetch .= " ,btr.salary as btr_salary,btr.feetotal as btr_feetotal,btr.settle_mode as btr_settle_mode"; $sqlFetch .= " ,bt.company_name as bt_company_name,btbu.mobile as btbu_mobile"; $sqlFetch .= " ,(case when ifnull(bt22.true_name,'')<>'' then bt22.true_name else bt22.nickname end) as bt22_true_name"; $sqlFetch .= " ,wk.id as wkid,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_name,bu.mobile as bu_mobile,wk.profile_photo as wkprofile_photo"; $sqlFetch .= " ,wk.realname_handled as wk_realname_handled,wk.gender as wk_gender,wk.idcard as wk_idcard,wk.birthaddr as wk_birthaddr,wk.birthday as wk_birthday"; $sqlFetch .= " ,lwk.id as lwkid,(case when lwk.true_name<>'' then lwk.true_name else lwk.nickname end) as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo"; $sqlFetch .= " ,concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt2.id,'-',bt2bu.id,'-',bt2bu.mobile,'-',bt2.true_name) as delegate_info "; $sqlFetch .= " ,wkapa.id as wkapa_id,wkapa.deleted as wkapa_deleted,wkapa.result_level as wk_appraiseLevel,wkapa.result_desc as wk_appraiseRemark"; //wkapa_id小于等于0则会员未评价商家,否则已评价 $sqlFetch .= " ,tdapa.id as tdapa_id,tdapa.deleted as tdapa_deleted,tdapa.result_level as td_appraiseLevel,tdapa.result_desc as td_appraiseRemark"; $sqlFetch .= " ,tdwkat2.`biz_catalog` as tdwk_settlecatalog"; $sqlFetch .= " {$sqlSelectExt} {$sqlBody} {$orderby} "; $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"]; if (trim($exportExcel) != "true") { //正常输出 $start = (intval($pageIndex) - 1) * $pageSize; $sqlFetch .= " limit {$start},{$pageSize} "; $pageData = pdo_fetchall($sqlFetch, $sqlParam); //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射; foreach ($pageData as &$data) { //数据转换/映射 if (!empty($bizWorker)) { if (mb_strpos($data["worker_readed"], $data["status"] . ",") === false) { pdo_query("update biz_todowork set worker_readed=concat(worker_readed,`status`,',') where id=" . intval($data["id"])); } } if (!empty($bizTrader)) { if (mb_strpos($data["trader_readed"], $data["status"] . ",") === false) { pdo_query("update biz_todowork set trader_readed=concat(trader_readed,`status`,',') where id=" . intval($data["id"])); } } $delegateInfo = bizbase_recruitDelegateInfo($data); foreach ($delegateInfo as $key => $val) { $data["delegate_" . $key] = $val; } unset($data["delegate_info"]); //---------------------- $data["wk_age"] = ""; if (intval($data["wk_birthday"]) > 0) { $birthdate = date("Ymd", $data["wk_birthday"]); $datetime1 = date_create_from_format("Ymd", $birthdate); $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1))); $datetime2 = new \DateTime(date("Y-m-d", time())); $interval = $datetime1->diff($datetime2); $data["wk_age"] = intval($interval->format('%Y')); } //---------------------- $data["tdwk_settlecatalogName"] = ""; switch (intval($data["tdwk_settlecatalog"])) { case 6: $data["tdwk_settlecatalogName"] = "商家订单整体结算"; break; case 7: $data["tdwk_settlecatalogName"] = "平台代商家结算订单"; break; } //---------------------- if (intval($workerExceptionQuery) > 0) { $data["except_reason"] = ""; switch (intval($data["status"])) { case -6: $data["except_reason"] = "未开始工作"; break; case -7: $data["except_reason"] = "未结束工作"; break; case 4: $data["except_reason"] = "超过24小时未支付"; break; } } if (intval($traderExceptionQuery) > 0) { $data["except_reason"] = ""; switch (intval($data["status"])) { case -3: $data["except_reason"] = "商家违约"; break; case 4: $data["except_reason"] = "超过24小时未支付"; break; } } //---------------------- if (intval($bizTrader_EnrollWaitAudit) > 0 && intval($data["tdwkt_status"]) == 3) { $teamMembers = pdo_fetchall("select wk.id as wkid ,wk.true_name as wk_name,bu.mobile as bu_mobile,wk.profile_photo as wkprofile_photo ,wk.gender as wk_gender,wk.idcard as wk_idcard,wk.birthaddr as wk_birthaddr,wk.birthday as wk_birthday from biz_todowork tdwk left join biz_worker wk on wk.id=tdwk.biz_workerid left join base_user bu on bu.id=wk.base_userid where tdwk.workteamid=:workteamid and tdwk.teamstatus>=2 order by tdwk.workteam_mode desc,tdwk.createtime asc", array(":workteamid" => $data["tdwkt_id"])); foreach ($teamMembers as &$subdata) { //数据转换/映射 $subdata["wk_gender"] = intval($subdata["wk_gender"]) < 0 ? "" : (intval($subdata["wk_gender"]) == 0 ? "男" : "女"); //---------------------- $subdata["wk_age"] = ""; if (intval($subdata["wk_birthday"]) > 0) { $birthdate = date("Ymd", $subdata["wk_birthday"]); $datetime1 = date_create_from_format("Ymd", $birthdate); $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1))); $datetime2 = new \DateTime(date("Y-m-d", time())); $interval = $datetime1->diff($datetime2); $subdata["wk_age"] = intval($interval->format('%Y')); } } $data["teamMembers"] = $teamMembers; } //---------------------- $data["btr_canTerminate"] = false; if (intval($data["recruit_status"]) == 2) { $data["btr_canTerminate"] = true; } $data["btr_canBreakoff"] = false; if (intval($data["recruit_status"]) == 2//提前违约 && (( intval($data["btr_settle_catalog"]) == 0 ) || ( intval($data["btr_settle_catalog"]) > 0 )) ) { $data["btr_canBreakoff"] = true; } $data["worksn"] = base_buildSNById("WK", $data["id"], 12, 12); $data["wkteamsn"] = base_buildSNById("TM", $data["tdwkt_id"], 12, 12); $data["btr_salary"] = round(floatval($data["btr_salary"]), 2); $data["btr_feetotal"] = round(floatval($data["btr_feetotal"]), 2); $data["itisme"] = ($data["wkid"] == intval($bizWorker["id"])); $data["iamleader"] = ($data["lwkid"] == intval($bizWorker["id"])); $data["statusName"] = bizbase_todoWorkStatusName($data["status"]); $data["teamrole"] = bizbase_todoWorkTeamRoleName($data["workteam_mode"]); $data["plan_dotime"] = date("Y-m-d", $data["todo_begindate"]); $data["createtime"] = date("Y-m-d H:i:s", $data["createtime"]); $data["recruit_createtime"] = intval($data["recruit_createtime"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["recruit_createtime"]); $data["recruit_updatetime"] = intval($data["recruit_updatetime"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["recruit_updatetime"]); $btr_begindatetime = $data['btr_begindatetime']; $btr_finishdatetime = $data['btr_finishdatetime']; $data["btr_begindatetime"] = date("Y-m-d", $btr_begindatetime); $data["btr_finishdatetime"] = date("Y-m-d", $btr_finishdatetime); $data["btr_begindatetime1"] = date("m-d", $btr_begindatetime); $data["btr_finishdatetime1"] = date("m-d", $btr_finishdatetime); $data["worked_begintime"] = intval($data["worked_begintime"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["worked_begintime"]); $data["worked_finishtime"] = intval($data["worked_finishtime"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["worked_finishtime"]); $data["settled_time"] = intval($data["settled_time"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["settled_time"]); $data["settled_modeName"] = intval($data["settled_mode"]) <= 0 ? "现场经理核销" : "商家核销"; $data["settled_userName"] = intval($data["settled_mode"]) <= 0 ? $data["bt22_true_name"] : $data["bt_company_name"]; $data["remark"] = trim(explode("\n", $data["remark"])[0]); $data["teamremark"] = trim(explode("\n", $data["teamremark"])[0]); $data["teamstatusName"] = bizbase_todoWorkSubTeamStatusName(intval($data["teamstatus"])); $data["wk_appraiseLevel"] = intval($data["wkapa_deleted"]) > 0 ? -1 : intval($data["wk_appraiseLevel"]); $data["td_appraiseLevel"] = intval($data["tdapa_deleted"]) > 0 ? -1 : intval($data["td_appraiseLevel"]); } $sqlSummary = " select count(*) as count " . $sqlBody . ";"; if ($handleMode == "fetchallRecurit") { $sqlSummary = " select count(*) as count from (select tdwk.id " . $sqlBody . " ) as temp;"; } $sumData = pdo_fetch($sqlSummary, $sqlParam); // foreach ($pageData as $k=>$v){ // $pageData[$k]['enrolled_heads'] = explode(',',$v['enrolled_heads']); // } return array( "pageData" => $pageData, "count" => intval($sumData["count"]), ); } else { $sqlSummary = " select count(*) as count " . $sqlBody . ";"; if ($handleMode == "fetchallRecurit") { $sqlSummary = " select count(*) as count from (select tdwk.id " . $sqlBody . " ) as temp;"; } $sumData = pdo_fetch($sqlSummary, $sqlParam); $recordTotal = intval($sumData["count"]); $pageTotal = ceil($recordTotal / $pageSize); $args = array( "pageIndex" => 0, "pageSize" => $pageSize, "pageTotal" => $pageTotal, "sqlFetch" => $sqlFetch, "sqlParam" => $sqlParam, ); $csvTitle = array("开工时间", "姓名", "身份证号", "手机号", "订单编号", "招聘标题"); baseexcel_exportCsv("订单列表", $csvTitle, $args, function ($args) { $pageIndex = intval($args["pageIndex"]) + 1; $args["pageIndex"] = $pageIndex; $pageSize = intval($args["pageSize"]); $pageTotal = intval($args["pageTotal"]); if ($pageIndex > $pageTotal) { return false; } $sqlFetch = $args["sqlFetch"]; $sqlParam = $args["sqlParam"]; $start = (intval($pageIndex) - 1) * $pageSize; $pageData111 = pdo_fetchall($sqlFetch . " limit {$start},{$pageSize} ", $sqlParam); $pageData = array(); foreach ($pageData111 as &$datarow) { //数据转换/映射 $wk_name = json_encode($datarow["wk_name"]); $wk_name = preg_replace("/\\\u[ed][0-9a-f]{3}\\\u[ed][0-9a-f]{3}/", "*", $wk_name); //替换成* $wk_name = json_decode($wk_name); $pageData[] = array( //intval($datarow["worked_begintime"])<=0?"":"\t".date("Y-m-d H:i:s", $datarow["worked_begintime"]) (intval($datarow["btr_begindatetime"]) <= 0 ? "" : "\t" . date("Y-m-d", $datarow["btr_begindatetime"])) . " " . $datarow["btr_begin_hour"] , $wk_name , "\t" . $datarow["wk_idcard"] , "\t" . $datarow["bu_mobile"] , base_buildSNById("WK", $datarow["id"], 12, 12) , $datarow["recruit_title"], ); } return array("pagedata" => $pageData, "args" => $args); }); } break; default: throw new GeneralException("", "不支持的handleMode!"); } } /**********************营销活动相关逻辑**************************************/ function bizbase_mactivityEntityHandle($fromSubSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC) { if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) { $bizWorker = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) { $bizTrader = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) { $bizTrader2 = $bizUser; } switch ($handleMode) { case "fetch": $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } $sqlSelectExt = ""; $nowLngLat = isset($ajaxdata["nowLngLat"]) ? $ajaxdata["nowLngLat"] : $GPC["nowLngLat"]; if (empty($nowLngLat) || !preg_match("/^\d+\.\d+,\d+\.\d+$/", $nowLngLat)) { $nowLngLat = ""; } else { $nowlng = floatval(explode(",", $nowLngLat)[0]); $nowlat = floatval(explode(",", $nowLngLat)[1]); $sqlSelectExt .= " ,(st_distance_sphere(point(CAST(bma.addr_lng AS decimal(11,8)),CAST(bma.addr_lat AS decimal(11,8))),point(CAST({$nowlng} AS decimal(11,8)),CAST({$nowlat} AS decimal(11,8))))) as distance "; } $sqlSelectExt .= " ,(select count(*) from biz_market_activity_order bmao where bmao.`status`=1 and bmao.market_activityid=bma.id and bmao.biz_workerid=" . intval($bizWorker["id"]) . ")>0 as enrolled "; $activity = pdo_fetch("select bma.*,cbu.login_name as cbu_login_name,ubu.login_name as ubu_login_name {$sqlSelectExt} from biz_market_activity as bma left join base_user as cbu on cbu.id=bma.createuserid left join base_user as ubu on ubu.id=bma.updateuserid where bma.id=" . intval($bizId)); if (empty($activity)) { throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!"); } if (intval($activity["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } bizbase_mactivityStatus($activity); $activity["list_photos"] = json_decode($activity["list_photos"], true); $activity["detail_photos"] = json_decode($activity["detail_photos"], true); $activity["begin_datetime"] = date("Y-m-d H:i:s", $activity["begin_datetime"]); $activity["finish_datetime"] = date("Y-m-d H:i:s", $activity["finish_datetime"]); $activity["price"] = round($activity["price"], 2); $activity["activity_addr"] = json_decode($activity["activity_addr"], true); $activity["remark"] = trim(explode("\n", $activity["remark"])[0]); return $activity; case "pushTop": $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } $trader = pdo_fetch("select * from biz_market_activity where id=" . intval($bizId)); if (empty($trader)) { throw new GeneralException("", "此id对应的营销活动记录不存在,请核查bizId是否正确!"); } if (intval($trader["deleted"]) != 0) { throw new GeneralException("", "营销活动已删除了,请核查后再处理!"); } if (intval($trader["finish_datetime"]) < time()) { throw new GeneralException("", "营销活动已结束,置顶无效!"); } $sqlTemp = ""; //不设置remark避免覆盖 $sqlTemp .= " update biz_market_activity set updatetime=:nowtime,istop=0 where istop=1;"; $sqlTemp .= " update biz_market_activity set updatetime=:nowtime,istop=1 where id=:id;"; $backdata = pdo_query($sqlTemp, array(":nowtime" => time(), ":id" => intval($bizId))); return $backdata; break; case "topHandle": $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"]; if (empty($todo)) { throw new GeneralException("", "没有传递必要的todo参数"); } $bizIds = isset($ajaxdata["bizIds"]) ? $ajaxdata["bizIds"] : $GPC["bizIds"]; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $query = ""; if (is_array($bizIds)) { $query = "and id in(" . implode(",", $bizIds) . ") "; } switch (trim($todo)) { case "set": $sqlParam[":istop"] = 1; break; case "unset": $sqlParam[":istop"] = 0; break; default:throw new GeneralException("", "不支持的todo"); } $sqlTemp = ""; //不设置remark避免覆盖 $sqlTemp .= " update biz_market_activity set updatetime=:nowtime,istop=:istop where 1=1 {$query};"; $backdata = pdo_query($sqlTemp, $sqlParam); return $backdata; break; case "upsert": $bizData = isset($ajaxdata["bizData"]) ? $ajaxdata["bizData"] : $GPC["bizData"]; if (empty($bizData)) { throw new GeneralException("", "没有传递必要的bizData参数"); } /***字段参数收集并校验**start***/ $saveData = array(); if (isset($bizData["profile_photo"])) { $saveData["profile_photo"] = trim($bizData["profile_photo"]); } if (isset($bizData["list_photos"])) { $saveData["list_photos"] = json_encode($bizData["list_photos"]); } if (isset($bizData["detail_photos"])) { $saveData["detail_photos"] = json_encode($bizData["detail_photos"]); } if (isset($bizData["title"])) { $saveData["title"] = trim($bizData["title"]); } if (isset($bizData["begin_datetime"])) { $saveData["begin_datetime"] = intval(strtotime(date("Y-m-d H:i:s", strtotime($bizData["begin_datetime"])))); } if (isset($bizData["finish_datetime"])) { $saveData["finish_datetime"] = intval(strtotime(date("Y-m-d H:i:s", strtotime($bizData["finish_datetime"])))); } if (isset($bizData["total"])) { $saveData["total"] = intval($bizData["total"]); } if (isset($bizData["price"])) { $saveData["price"] = floatval($bizData["price"]); } if (isset($bizData["company_name"])) { $saveData["company_name"] = trim($bizData["company_name"]); } if (isset($bizData["linker_name"])) { $saveData["linker_name"] = trim($bizData["linker_name"]); } if (isset($bizData["linker_phone"])) { $saveData["linker_phone"] = trim($bizData["linker_phone"]); } if (isset($bizData["activity_addr"])) { $saveData["activity_addr"] = json_encode($bizData["activity_addr"]); } if (isset($bizData["activity_addr1"])) { $saveData["activity_addr1"] = trim($bizData["activity_addr1"]); } if (isset($bizData["addr_lng"])) { $saveData["addr_lng"] = trim($bizData["addr_lng"]); } if (isset($bizData["addr_lat"])) { $saveData["addr_lat"] = trim($bizData["addr_lat"]); } if (isset($bizData["biz_desc"])) { $saveData["biz_desc"] = trim($bizData["biz_desc"]); } if (isset($bizData["biz_remark"])) { $saveData["biz_remark"] = trim($bizData["biz_remark"]); } if (isset($bizData["group_qrurl"])) { $saveData["group_qrurl"] = trim($bizData["group_qrurl"]); } if (isset($bizData["istop"])) { $saveData["istop"] = intval($bizData["istop"]); } /***字段参数收集并校验**finish***/ $sqlParam = array(); $sqlTemp = ""; if (intval($bizData["id"]) <= 0) { $saveData["createtime"] = time(); $saveData["createuserid"] = intval($baseUser["id"]); $upsertSet = pdo_buildSetSQL("", $saveData); $sqlParam += $upsertSet["params"]; //合并参数集合 $sqlTemp .= " insert into biz_market_activity set " . $upsertSet["fields"] . ";"; $sqlTemp .= " set @bizid=LAST_INSERT_ID();"; } else { $oldData = pdo_fetch("select * from biz_market_activity where id=" . intval($bizData["id"])); if (empty($oldData)) { throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!"); } if (intval($oldData["deleted"]) != 0) { throw new GeneralException("", "此记录已删除了,请核查后再处理!"); } $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 更新 \n" . trim($oldData["remark"]); $saveData["updatetime"] = time(); $saveData["updateuserid"] = intval($baseUser["id"]); $upsertSet = pdo_buildSetSQL("", $saveData); $sqlParam += $upsertSet["params"]; $sqlTemp .= " update biz_market_activity set " . $upsertSet["fields"] . " "; $sqlTemp .= " where id=" . intval($bizData["id"]) . ";"; $sqlTemp .= " set @bizid=" . intval($bizData["id"]) . ";"; } $sqlTemp .= " select * from biz_market_activity where id=@bizid;"; $dataset = pdo_query3($sqlTemp, $sqlParam); $backdata = $dataset[count($dataset) - 1][0]; return $backdata; break; case "delete": $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; //if (empty($reason)) throw new GeneralException("", "下架必须输入要原因!"); $activity = pdo_fetch("select * from biz_market_activity where id=" . intval($bizId)); if (empty($activity)) { throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!"); } if (intval($activity["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } $backdata = pdo_query("update biz_market_activity set updatetime=:nowtime, `deleted`=1, remark=concat(:remark,ifnull(remark,'')) where id=:id;", array( ":nowtime" => time(), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 删除 $reason\n", ":id" => intval($bizId), )); return $backdata; break; case "dropdown": $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"]; if (empty($bizId)) { throw new GeneralException("", "没有传递必要的bizId参数"); } $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"]; //if (empty($reason)) throw new GeneralException("", "下架必须输入要原因!"); $activity = pdo_fetch("select * from biz_market_activity where id=" . intval($bizId)); if (empty($activity)) { throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!"); } if (intval($activity["status"]) != 0) { throw new GeneralException("", "已下架了,请核查后再处理!"); } $backdata = pdo_query("update biz_market_activity set updatetime=:nowtime, `status`=4, remark=concat(:remark,ifnull(remark,'')) where id=:id;", array( ":nowtime" => time(), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 手工下架 $reason\n", ":id" => intval($bizId), )); return $backdata; break; case "enroll": $activityId = isset($ajaxdata["activityId"]) ? $ajaxdata["activityId"] : $GPC["activityId"]; $activity = pdo_fetch("select * from biz_market_activity where id=" . intval($activityId)); if (empty($activity)) { throw new GeneralException("", "此id对应的活动记录不存在,请核查activityId是否正确!"); } if (intval($activity["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } if (intval($activity["finish_datetime"]) < time()) { throw new GeneralException("HasLater", "活动已过期,无法报名!"); } $order = pdo_fetch("select * from biz_market_activity_order where `status`>=1 and market_activityid=" . intval($activityId) . " and biz_workerid=" . intval($bizWorker["id"]) . ""); if (!empty($order)) { throw new GeneralException("HasErolled", "您已成功报名此活动,不能重复报名!"); } $accountInfo = bizbase_workerAccountInfo($bizWorker); $balance = round(floatval($accountInfo["balance"]), 2); $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"]; $params = array("activity" => $activity, "balance" => $balance, "bizWorker" => $bizWorker, "minaCode" => $minaCode); $backdata = biz_flkForMActivity($activity["id"], $params, function ($params) { $activity = $params["activity"]; $money_balance = $params["balance"]; $bizWorker = $params["bizWorker"]; $minaCode = $params["minaCode"]; $erollTotal = pdo_fetchcolumn("select count(*) from biz_market_activity_order where market_activityid=" . intval($activity["id"]) . " and `status`>=1"); if (intval($erollTotal) >= intval($activity["total"])) { throw new GeneralException("overflow", "此活动已报满,无法报名了!"); } $nowPayMoney = round(floatval($activity["price"] - $money_balance), 2); if ($nowPayMoney <= 0) { $nowPayMoney = 0; } //过滤掉0收支明细 $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":market_activityid"] = $activity["id"]; $sqlParam[":biz_workerid"] = intval($bizWorker["id"]); $sqlParam[":price"] = round(floatval($activity["price"]), 2); $sqlParam[":remark"] = "营销活动支付\n"; $sqlTemp = ""; $sqlTemp .= " set @handle_status=0; "; $sqlTemp .= " set @handle_id=0; "; $sqlTemp .= " select @handle_id:=id,@handle_status:=`status` from biz_market_activity_order where biz_workerid=:biz_workerid and market_activityid=:market_activityid limit 1;"; $sqlTemp .= " insert into biz_market_activity_order ( `createtime`,`market_activityid`, `biz_workerid`, `price`,paytag,`status`, remark )"; $sqlTemp .= " select :nowtime, :market_activityid, :biz_workerid, :price , 0, 0,:remark from dual where ifnull(@handle_id,0)=0;"; $sqlTemp .= " update biz_market_activity_order set updatetime=:nowtime, `price`=:price, remark=concat(:remark,remark) where ifnull(@handle_id,0)<>0 and biz_workerid=:biz_workerid and market_activityid=:market_activityid;"; $sqlTemp .= " select @handle_id:=id,@paytag:=paytag from biz_market_activity_order where biz_workerid=:biz_workerid and market_activityid=:market_activityid limit 1;"; $sqlParam[":type"] = 0; $sqlParam[":money"] = $nowPayMoney; $sqlParam[":biz_catalog"] = 2; $sqlTemp .= " insert into biz_worker_account set createtime=:nowtime"; $sqlTemp .= " ,biz_workerid=:biz_workerid, biz_roletype=0, biz_userid=:biz_workerid "; $sqlTemp .= " ,type=:type, `money`=:money"; $sqlTemp .= " ,biz_catalog=:biz_catalog, biz_id=@handle_id"; $sqlTemp .= " ,biz_idtag=concat('MAID',@handle_id,'EE',@paytag)"; $sqlTemp .= " ,`status`=0, remark=:remark;"; $sqlTemp .= " select * from biz_worker_account where id=LAST_INSERT_ID();"; $dataset = pdo_query3($sqlTemp, $sqlParam); $bizInfo = $dataset[count($dataset) - 1][0]; if (empty($bizInfo)) { throw new GeneralException("", "构建预支付订单异常"); } $payBizCatalog = "3"; //3-会员购买营销活动 $payBizId = $bizInfo["id"]; if ($nowPayMoney <= 0) { bizbase_paySuccess($payBizCatalog, $payBizId, false); return array("payResult" => true); } else { //--------------------------------------- if (empty(trim($minaCode))) { throw new GeneralException("", "没有传递必要的minaCode参数"); } $payScene = "JSAPI"; $prePayArgs = array( "payBackBizCatalog" => $payBizCatalog, "payBackBizId" => $payBizId, "payScene" => $payScene, ); require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_LABOUR_MINA); $wxmina_appid = $resObj["wxmina_appid"]; $wxmina_openid = $resObj["openid"]; $bizArgs = array( "minaCode" => $minaCode, "bizInfo" => $bizInfo, "wxmina_appid" => $wxmina_appid, "wxmina_openid" => $wxmina_openid, ); try { $prePayInfo = bizbase_mactivityPayCore($prePayArgs, $bizArgs); } catch (Throwable $ex) { $errMsg = $ex->getMessage(); if (mb_strpos($errMsg, "201 商户订单号重复") === false) { throw $ex; } else { require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $result = weixin_ordercloseV3($bizInfo["biz_idtag"]); $dataset = pdo_query3(" update biz_market_activity_order set updatetime=:nowtime ,paytag=ifnull(paytag,0)+1 ,remark=concat('更新支付订单号后缀\n',ifnull(remark,'')) where id=:bmaoid; select @paytag:=paytag from biz_market_activity_order where id=:bmaoid; update biz_worker_account set updatetime=:nowtime ,biz_idtag=concat('MAID',:bmaoid,'EE',@paytag) ,remark=concat('更新支付订单号后缀\n',ifnull(remark,'')) where id=:bizid; select * from biz_worker_account where id=:bizid;", array( ":nowtime" => time(), ":bmaoid" => intval($bizInfo["biz_id"]), ":bizid" => intval($bizInfo["id"]), )); $bizInfo = $dataset[count($dataset) - 1][0]; $bizArgs["bizInfo"] = $bizInfo; $prePayInfo = bizbase_mactivityPayCore($prePayArgs, $bizArgs); } } $prePayInfo = array_merge($prePayArgs, $prePayInfo); return array( "moneyBalance" => $money_balance, "payMoney" => $nowPayMoney, "prePayInfo" => $prePayInfo, ); } }); return $backdata; break; case "fetchEnrollInfo": $enrollId = isset($ajaxdata["enrollId"]) ? $ajaxdata["enrollId"] : $GPC["enrollId"]; if (empty($enrollId)) { throw new GeneralException("", "没有传递必要的enrollId参数"); } $sqlSelectExt = ""; $nowLngLat = isset($ajaxdata["nowLngLat"]) ? $ajaxdata["nowLngLat"] : $GPC["nowLngLat"]; if (empty($nowLngLat) || !preg_match("/^\d+\.\d+,\d+\.\d+$/", $nowLngLat)) { $nowLngLat = ""; } else { $nowlng = floatval(explode(",", $nowLngLat)[0]); $nowlat = floatval(explode(",", $nowLngLat)[1]); $sqlSelectExt .= " ,(st_distance_sphere(point(CAST(bma.addr_lng AS decimal(11,8)),CAST(bma.addr_lat AS decimal(11,8))),point(CAST({$nowlng} AS decimal(11,8)),CAST({$nowlat} AS decimal(11,8))))) as distance "; } $enrollInfo = pdo_fetch("select bmao.* ,bma.price,bma.title,bma.begin_datetime,bma.finish_datetime,bma.activity_addr,bma.linker_phone ,bma.list_photos,bma.detail_photos ,apa.result_level as appraiseLevel,apa.result_desc as appraiseRemark {$sqlSelectExt} from biz_market_activity_order bmao left join biz_market_activity bma on bma.id=bmao.market_activityid left join biz_appraisal apa on apa.biz_catalog=0 and apa.fromerid=bmao.biz_workerid and apa.toerid=0 and apa.biz_id=bmao.id where bmao.id=" . intval($enrollId)); if (empty($enrollInfo)) { throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!"); } if (intval($enrollInfo["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } $enrollInfo["list_photos"] = json_decode($enrollInfo["list_photos"], true); $enrollInfo["detail_photos"] = json_decode($enrollInfo["detail_photos"], true); $enrollInfo["begin_datetime"] = date("Y-m-d H:i:s", $enrollInfo["begin_datetime"]); $enrollInfo["finish_datetime"] = date("Y-m-d H:i:s", $enrollInfo["finish_datetime"]); $enrollInfo["price"] = round($enrollInfo["price"], 2); $enrollInfo["activity_addr"] = json_decode($enrollInfo["activity_addr"], true); //------------------------------------------------------------ bizbase_mactivityOrderStatus($enrollInfo); $enrollInfo["paytime"] = date("Y-m-d H:i:s", $enrollInfo["paytime"]); $enrollInfo["remark"] = trim(explode("\n", $enrollInfo["remark"])[0]); return $enrollInfo; case "appraiseByWorker": $enrollId = isset($ajaxdata["enrollId"]) ? $ajaxdata["enrollId"] : $GPC["enrollId"]; if (empty($enrollId)) { throw new GeneralException("", "没有传递必要的enrollId参数"); } $enrollInfo = pdo_fetch("select bmao.* ,bma.price,bma.title,bma.begin_datetime,bma.finish_datetime,bma.activity_addr,bma.linker_phone ,bma.list_photos,bma.detail_photos from biz_market_activity_order bmao left join biz_market_activity bma on bma.id=bmao.market_activityid where bmao.id=" . intval($enrollId)); if (empty($enrollInfo)) { throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!"); } if (intval($enrollInfo["deleted"]) != 0) { throw new GeneralException("", "信息已删除了,请核查后再处理!"); } if (intval($enrollInfo["biz_workerid"]) != intval($bizWorker["id"])) { throw new GeneralException("", "此活动报名记录不是您的,请核查后再处理!"); } bizbase_mactivityOrderStatus($enrollInfo); if ($enrollInfo["status"] != 2) { throw new GeneralException("", "不是待评价状态,不能进行评价!"); } $appraiseLevel = isset($ajaxdata["appraiseLevel"]) ? $ajaxdata["appraiseLevel"] : $GPC["appraiseLevel"]; $appraiseRemark = isset($ajaxdata["appraiseRemark"]) ? $ajaxdata["appraiseRemark"] : $GPC["appraiseRemark"]; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":biz_catalog"] = 0; //0-会员对活动评价;1-会员对工作过程雇主评价;2-雇主商家对会员工作过程评价; $sqlParam[":fromerid"] = intval($bizWorker["id"]); $sqlParam[":toerid"] = 0; $sqlParam[":biz_id"] = intval($enrollId); $sqlParam[":result_level"] = intval($appraiseLevel); $sqlParam[":result_desc"] = trim($appraiseRemark); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员对活动评价\n"; $sqlTemp = ""; $sqlTemp .= " update biz_market_activity_order set updatetime=:nowtime, `status`=3, remark=concat(:remark,remark) where id=:biz_id;"; $sqlTemp .= " set @handle_id=0; "; $sqlTemp .= " select @handle_id:=id from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id limit 1;"; $sqlTemp .= " insert into biz_appraisal ( `createtime`,`biz_catalog`, biz_id,`fromerid`, `toerid`, `result_level`, result_desc, remark)"; $sqlTemp .= " select :nowtime, :biz_catalog,:biz_id, :fromerid, :toerid , :result_level,:result_desc,:remark from dual where ifnull(@handle_id,0)=0;"; $sqlTemp .= " update biz_appraisal set updatetime=:nowtime, fromerid=:fromerid, toerid=:toerid, `result_level`=:result_level, result_desc=:result_desc, remark=concat(:remark,remark) where ifnull(@handle_id,0)<>0 and id=ifnull(@handle_id,0);"; $backdata = pdo_query3($sqlTemp, $sqlParam); return $backdata; default: throw new GeneralException("", "不支持的handleMode!"); } } function bizbase_mactivityPayCore($prePayArgs, $bizArgs) { require_once WEB_PHY_ROOT . "/base/wxsrv.php"; $prePayInfo = weixin_prepayBuildV3($prePayArgs, $bizArgs, function ($bizCatalog, $bizId, $bizArgs) { $bizInfo = $bizArgs["bizInfo"]; $wxmina_appid = $bizArgs["wxmina_appid"]; $wxmina_openid = $bizArgs["wxmina_openid"]; //--------------------------------------- $payTotal = round(floatval($bizInfo["money"]), 2); if ($payTotal <= 0) { throw new GeneralException("", "购买金额竟然小于等于0"); } $payTotal = $payTotal * 100; //转为分 //--------------------------------------- $sqlParam = array(); $sqlParam[":id"] = intval($bizInfo["id"]); $sqlParam[":wxmina_appid"] = $wxmina_appid; $sqlParam[":wxmina_openid"] = $wxmina_openid; $sqlTemp = " update biz_worker_account set"; $sqlTemp .= " wxmina_appid=:wxmina_appid,wxmina_openid=:wxmina_openid "; $sqlTemp .= " where id=:id; "; $dataset = pdo_query3($sqlTemp, $sqlParam); //--------------------------------------- $prePayInfo = array(); $prePayInfo["appid"] = $wxmina_appid; $prePayInfo["mchId"] = WeiXinPay_mchId; $prePayInfo["mch_paykeyV2"] = WeiXinPay_apiKey; $prePayInfo["mch_paykeyV3"] = WeiXinPay_apiKeyV3; $prePayInfo["out_trade_no"] = $bizInfo["biz_idtag"]; $prePayInfo["total"] = "{$payTotal}"; $prePayInfo["description"] = "营销活动支付业务"; $prePayInfo["openid"] = $wxmina_openid; return $prePayInfo; }); return $prePayInfo; } function bizbase_mactivityStatus(&$data) { $nowday11 = strtotime(date("Y-m-d", time())); $nowday22 = strtotime(date("Y-m-d 23:59:59", time())); $nextday11 = strtotime("+1 day", strtotime(date("Y-m-d", time()))); $nextday22 = strtotime("+1 day", strtotime(date("Y-m-d 23:59:59", time()))); $nextnextday11 = strtotime("+2 day", strtotime(date("Y-m-d", time()))); $nextnextday22 = strtotime("+2 day", strtotime(date("Y-m-d 23:59:59", time()))); if (intval($data["begin_datetime"]) >= $nowday22) { $data["statusACode"] = 1; $data["statusAName"] = "未开始"; return; } // if(intval($data["begin_datetime"])>=$nextday11 && intval($data["begin_datetime"])<=$nextday22){ // $data["statusACode"]=2; // $data["statusAName"]="待开始"; // return; // } if ((intval($data["begin_datetime"]) <= $nowday11 || (intval($data["begin_datetime"]) >= $nowday11 && intval($data["begin_datetime"]) <= $nowday22 )) && intval($data["finish_datetime"]) > time()) { $data["statusACode"] = 2; $data["statusAName"] = "进行中"; return; } if (intval($data["finish_datetime"]) < time()) { $data["statusACode"] = 3; $data["statusAName"] = "已完成"; return; } } function bizbase_mactivityOrderStatus(&$data) { switch (intval($data["status"])) { case 0: $data["statusName"] = "已报名下单待支付"; break; case 1: $data["statusName"] = "已支付待使用"; if (intval($data["finish_datetime"]) < time()) { $data["status"] = 2; $data["statusName"] = "已使用待评价"; } break; case 2: $data["statusName"] = "已使用待评价"; break; case 3: $data["statusName"] = "已评价"; break; } return $data; } function bizbase_mactivityAboutQuery($fromSubSystem, $baseUser, $bizUser, $handleMode, $pageIndex, $pageSize, $ajaxdata, $GPC) { if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) { $bizWorker = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) { $bizTrader = $bizUser; } if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) { $bizTrader2 = $bizUser; } switch ($handleMode) { case "fetchallByPlater": case "fetchallByWorker": case "fetchallByPublic": $sqlSelectExt = ""; $sqlParam = array(); $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"]; if (empty($query) && !is_array($query)) { //验证一下query信息集 $query = " and 1=1 "; } else { $queryNew = " and 1=1 "; foreach ($query as $fdName => $fdValue) { switch ($fdName) { case "title": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_title"; $queryNew .= " and (bma.title like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "linkphone": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_linkphone"; $queryNew .= " and (bma.linker_phone like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "startDate": if (empty(trim($fdValue))) { continue; } $queryNew .= " and bma.begin_datetime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " and bma.begin_datetime<=" . strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))) . " "; break; case "status": $nowday11 = strtotime(date("Y-m-d", time())); $nowday22 = strtotime(date("Y-m-d 23:59:59", time())); $nextday11 = strtotime("+1 day", strtotime(date("Y-m-d", time()))); $nextday22 = strtotime("+1 day", strtotime(date("Y-m-d 23:59:59", time()))); $nextnextday11 = strtotime("+2 day", strtotime(date("Y-m-d", time()))); $nextnextday22 = strtotime("+2 day", strtotime(date("Y-m-d 23:59:59", time()))); $sel_status1 = " and bma.begin_datetime>=" . $nowday22 . " "; $sel_status2 = " and bma.begin_datetime>=" . $nextday11 . " and bma.begin_datetime<=" . $nextday22 . " "; $sel_status3 = " and (bma.begin_datetime<={$nowday11} or (bma.begin_datetime>={$nowday11} and bma.begin_datetime<={$nowday22})) "; $sel_status3 .= " and bma.finish_datetime>" . time() . " and bma.`status`<=0 "; $sel_status4 = " and (bma.finish_datetime<" . time() . " or bma.`status`>2) "; $sel_status5 = " and ( ( 1=1 {$sel_status1} ) or ( 1=1 {$sel_status2} ) or ( 1=1 {$sel_status3} ) )"; switch (intval($fdValue)) { case 1: $queryNew .= $sel_status1; break; case 2: $queryNew .= $sel_status2; break; case 3: $queryNew .= $sel_status3; break; case 4: $queryNew .= $sel_status4; break; case 5: $queryNew .= $sel_status5; break; } $sqlSelectExt .= ",(case when (1=1 {$sel_status1}) then 1 "; $sqlSelectExt .= " when (1=1 {$sel_status2}) then 2 "; $sqlSelectExt .= " when (1=1 {$sel_status3}) then 3 "; $sqlSelectExt .= " when (1=1 {$sel_status4}) then 4 "; $sqlSelectExt .= " when (1=1 {$sel_status5}) then 5 "; $sqlSelectExt .= " else '' end) as statusCodeExt"; break; } } $query = $queryNew; } if (!empty($bizWorker)) { if ($handleMode == "fetchallByWorker") { //$query .= " and (select count(*) from biz_market_activity_order where bmao.market_activityid=bma.id and bmao.biz_workerid=" . intval($bizWorker["id"]).")<=0 "; } } $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"]; switch (intval($orderby)) { case 1: //1-人数倒序 $orderby = " order by bma.istop desc,bma.total desc "; break; case 2: //2-距离倒序 $nowLngLat = isset($ajaxdata["nowLngLat"]) ? $ajaxdata["nowLngLat"] : $GPC["nowLngLat"]; if (empty($nowLngLat) || !preg_match("/^\d+\.\d+,\d+\.\d+$/", $nowLngLat)) { throw new GeneralException("", "没有传递必要的nowLngLat参数,或者经纬度格式不正确(经度,纬度)"); } $sqlParam[":nowlng"] = floatval(explode(",", $nowLngLat)[0]); $sqlParam[":nowlat"] = floatval(explode(",", $nowLngLat)[1]); $sqlSelectExt .= ' ,(st_distance_sphere(point(CAST(bma.addr_lng AS decimal(11,8)),CAST(bma.addr_lat AS decimal(11,8))),point(CAST(:nowlng AS decimal(11,8)),CAST(:nowlat AS decimal(11,8))))) as distance '; $orderby = " order by distance asc "; break; default: //0-默认置顶倒序,时间倒序 $orderby = " order by bma.istop desc,bma.id desc "; break; } //构建sql串 $sqlBody = ""; $sqlBody .= " from biz_market_activity bma "; $sqlBody .= " left join biz_market_activity_order bmao on bmao.market_activityid=bma.id "; $sqlBody .= " left join biz_worker wk on wk.id=bmao.biz_workerid "; $sqlBody .= " left join base_user bu on bu.id=wk.base_userid "; $sqlBody .= " where 1=1 " . $query; $sqlBody .= " group by bma.id "; //查询sql及统计sql $sqlFetch = " select bma.* "; $sqlFetch .= " ,sum(case when bmao.`status`>=0 then 1 else 0 end) as erolled_total"; $sqlFetch .= " ,sum(case when bmao.`status`>=1 then 1 else 0 end) as payed_total"; $sqlFetch .= " ,sum(case when bmao.`status`>=2 then 1 else 0 end) as used_total"; $sqlFetch .= " ,sum(case when bmao.`status`>=3 then 1 else 0 end) as finished_total"; $sqlFetch .= " {$sqlSelectExt} {$sqlBody} {$orderby} "; $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"]; if (trim($exportExcel) != "true") { //正常输出 $start = (intval($pageIndex) - 1) * $pageSize; $sqlFetch .= " limit {$start},{$pageSize} "; $pageData = pdo_fetchall($sqlFetch, $sqlParam); foreach ($pageData as &$activity) { //数据转换/映射 $activity["list_photos"] = json_decode($activity["list_photos"], true); $activity["detail_photos"] = json_decode($activity["detail_photos"], true); $activity["begin_datetime"] = date("Y-m-d H:i:s", $activity["begin_datetime"]); $activity["finish_datetime"] = date("Y-m-d H:i:s", $activity["finish_datetime"]); $activity["price"] = round($activity["price"], 2); $activity["activity_addr"] = json_decode($activity["activity_addr"], true); $activity["remark"] = trim(explode("\n", $activity["remark"])[0]); } unset($sqlParam[":nowlng"]); unset($sqlParam[":nowlat"]); $sqlSummary = " select count(*) as count from (select bma.id " . $sqlBody . " ) as temp;"; $sumData = pdo_fetch($sqlSummary, $sqlParam); return array( "pageData" => $pageData, "count" => intval($sumData["count"]), ); } else { $nowlng = $sqlParam[":nowlng"]; $nowlat = $sqlParam[":nowlat"]; unset($sqlParam[":nowlng"]); unset($sqlParam[":nowlat"]); $sqlSummary = " select count(*) as count from (select bma.id " . $sqlBody . " ) as temp;"; $sumData = pdo_fetch($sqlSummary, $sqlParam); $recordTotal = intval($sumData["count"]); $pageTotal = ceil($recordTotal / $pageSize); $sqlParam[":nowlng"] = $nowlng; $sqlParam[":nowlat"] = $nowlat; $args = array( "pageIndex" => 0, "pageSize" => $pageSize, "pageTotal" => $pageTotal, "sqlFetch" => $sqlFetch, "sqlParam" => $sqlParam, ); $csvTitle = array("标题", "开始日期", "结束日期", "商家名称", "地址", "电话"); baseexcel_exportCsv("活动列表", $csvTitle, $args, function ($args) { $pageIndex = intval($args["pageIndex"]) + 1; $args["pageIndex"] = $pageIndex; $pageSize = intval($args["pageSize"]); $pageTotal = intval($args["pageTotal"]); if ($pageIndex > $pageTotal) { return false; } $sqlFetch = $args["sqlFetch"]; $sqlParam = $args["sqlParam"]; $start = (intval($pageIndex) - 1) * $pageSize; $pageData111 = pdo_fetchall($sqlFetch . " limit {$start},{$pageSize} ", $sqlParam); $pageData = array(); foreach ($pageData111 as &$activity) { //数据转换/映射 $activity_addr = json_decode($activity["activity_addr"], true); $activity_addr22 = trim($activity_addr["country"]); $activity_addr22 .= trim($activity_addr["province"]); $activity_addr22 .= trim($activity_addr["city"]); $activity_addr22 .= trim($activity_addr["district"]); $activity_addr22 .= trim($activity_addr["street"]); $activity_addr22 .= trim($activity_addr["streetNumber"]); $activity_addr22 .= trim($activity_addr["town"]); $activity_addr22 .= trim($activity_addr["village"]); $pageData[] = array( $activity["title"], "\t" . date("Y-m-d H:i:s", $activity["begin_datetime"]), "\t" . date("Y-m-d H:i:s", $activity["finish_datetime"]), $activity["company_name"], $activity_addr22, "\t" . $activity["linker_phone"], ); } return array("pagedata" => $pageData, "args" => $args); }); } break; case "fetchallSelf": $sqlParam = array(); $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"]; if (empty($query) && !is_array($query)) { //验证一下query信息集 $query = " and 1=1 "; } else { $queryNew = " and 1=1 "; foreach ($query as $fdName => $fdValue) { if (empty($fdName) || empty($fdValue)) { continue; } switch ($fdName) { case "title": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_title"; $queryNew .= " and (bma.title like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "linkphone": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_linkphone"; $queryNew .= " and (bma.linker_phone like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "status": switch (intval($fdValue)) { case 1: $queryNew .= " and bmao.`status`=0 "; break; case 2: $queryNew .= " and bmao.`status`=1 and bma.finish_datetime>" . time() . " "; break; case 3: $queryNew .= " and (bmao.`status`=2 or (bmao.`status`=1 and bma.finish_datetime<" . time() . ")) "; break; case 4: $queryNew .= " and bmao.`status`=3 "; break; } break; } } $query = $queryNew; } if (empty($bizWorker)) { throw new GeneralException("", "只针对会员的方法!!"); } $query .= " and bmao.biz_workerid=" . intval($bizWorker["id"]) . " "; $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"]; switch (intval($orderby)) { case 1: //1-价钱倒序 $orderby = " order by bma.price desc "; break; case 2: //2-时间倒序 $orderby = " order by bma.begin_datetime desc "; break; default: //0-默认时间倒序 $orderby = " order by bmao.id desc "; break; } //构建sql串 $sqlBody = ""; $sqlBody .= " from biz_market_activity_order bmao "; $sqlBody .= " left join biz_market_activity bma on bmao.market_activityid=bma.id "; $sqlBody .= " left join biz_worker wk on wk.id=bmao.biz_workerid "; $sqlBody .= " left join base_user bu on bu.id=wk.base_userid "; $sqlBody .= " left join biz_appraisal apa on apa.biz_catalog=0 and apa.fromerid=bmao.biz_workerid and apa.toerid=0 and apa.biz_id=bmao.id "; $sqlBody .= " where 1=1 " . $query; //查询sql及统计sql $start = (intval($pageIndex) - 1) * $pageSize; $sqlFetch = " select bmao.* "; $sqlFetch .= " ,bma.price,bma.title,bma.begin_datetime,bma.finish_datetime,bma.activity_addr,bma.linker_phone"; $sqlFetch .= " ,apa.result_level as appraiseLevel,apa.result_desc as appraiseRemark "; $sqlFetch .= " {$sqlBody} {$orderby} limit {$start},{$pageSize} "; $pageData = pdo_fetchall($sqlFetch, $sqlParam); //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射; foreach ($pageData as &$data) { //数据转换/映射 bizbase_mactivityOrderStatus($data); $data["begin_datetime"] = date("Y-m-d H:i:s", $data["begin_datetime"]); $data["finish_datetime"] = date("Y-m-d H:i:s", $data["finish_datetime"]); $data["price"] = round($data["price"], 2); $data["activity_addr"] = json_decode($data["activity_addr"], true); $data["remark"] = trim(explode("\n", $data["remark"])[0]); } $sqlSummary = " select count(*) as count " . $sqlBody . ";"; $sumData = pdo_fetch($sqlSummary, $sqlParam); return array( "pageData" => $pageData, "count" => intval($sumData["count"]), ); break; case "fetchallEnroll": $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"]; $sqlParam = array(); //查询处理 $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"]; $query = empty(trim($exportExcel)) ? $query : json_decode($query, true); if (empty($query) && !is_array($query)) { //验证一下query信息集 $query = " and 1=1 "; } else { $queryNew = " and 1=1 "; foreach ($query as $fdName => $fdValue) { if (empty($fdName) || empty($fdValue)) { continue; } switch ($fdName) { case "title": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_title"; $queryNew .= " and (bma.title like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "memberName": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_memberName"; $queryNew .= " and (wk.true_name like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "linkphone": if (empty(trim($fdValue))) { continue; } $paramName = ":qy_linkphone"; $queryNew .= " and (bma.linker_phone like concat('%',{$paramName},'%') ) "; $sqlParam[$paramName] = $fdValue; break; case "startDate": if (empty(trim($fdValue))) { continue; } $queryNew .= " and bmao.createtime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " and bmao.createtime<=" . strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))) . " "; break; case "status": switch (intval($fdValue)) { case 1: $queryNew .= " and bmao.`status`=0 "; break; case 2: $queryNew .= " and bmao.`status`=1 and bma.finish_datetime>" . time() . " "; break; case 3: $queryNew .= " and (bmao.`status`=2 or (bmao.`status`=1 and bma.finish_datetime<" . time() . ")) "; break; case 4: $queryNew .= " and bmao.`status`=3 "; break; } break; case "activityId": $queryNew .= " and bmao.`market_activityid`=" . intval($fdValue) . " "; break; } } $query = $queryNew; } $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"]; switch (intval($orderby)) { default: //0-默认时间倒序 $orderby = " order by bmao.id desc "; break; } //构建sql串 $sqlBody = ""; $sqlBody .= " from biz_market_activity_order bmao "; $sqlBody .= " left join biz_market_activity bma on bmao.market_activityid=bma.id "; $sqlBody .= " left join biz_worker wk on wk.id=bmao.biz_workerid "; $sqlBody .= " left join base_user bu on bu.id=wk.base_userid "; $sqlBody .= " left join biz_appraisal apa on apa.biz_catalog=0 and apa.fromerid=bmao.biz_workerid and apa.toerid=0 and apa.biz_id=bmao.id "; $sqlBody .= " where 1=1 and bmao.`status`>0 " . $query; //查询sql及统计sql $sqlFetch = " select bmao.* "; $sqlFetch .= " ,bma.price,bma.title,bma.begin_datetime,bma.finish_datetime,bma.activity_addr,bma.linker_phone"; $sqlFetch .= " ,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as true_name,wk.idcard,wk.gender,bu.mobile as bu_mobile"; $sqlFetch .= " ,apa.result_level as appraiseLevel,apa.result_desc as appraiseRemark "; $sqlFetch .= " {$sqlBody} {$orderby} "; $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"]; if (trim($exportExcel) != "true") { //正常输出 $start = (intval($pageIndex) - 1) * $pageSize; $sqlFetch .= " limit {$start},{$pageSize} "; $pageData = pdo_fetchall($sqlFetch, $sqlParam); //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射; foreach ($pageData as &$data) { //数据转换/映射 bizbase_mactivityOrderStatus($data); $age = ""; if (mb_strlen(trim($data["idcard"])) == 18) { $birthdate = mb_substr(trim($data["idcard"]), 6, 8); $datetime1 = date_create_from_format("Ymd", $birthdate); $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1))); $datetime2 = new \DateTime(date("Y-m-d", time())); $interval = $datetime1->diff($datetime2); $age = intval($interval->format('%Y')); } $data["age"] = $age; $data["begin_datetime"] = date("Y-m-d H:i:s", $data["begin_datetime"]); $data["finish_datetime"] = date("Y-m-d H:i:s", $data["finish_datetime"]); $data["price"] = round($data["price"], 2); $data["activity_addr"] = json_decode($data["activity_addr"], true); $data["remark"] = trim(explode("\n", $data["remark"])[0]); pdo_query("update biz_market_activity_order set plater_readed=1 where id=" . intval($data["id"])); } $sqlSummary = " select count(*) as count " . $sqlBody . ";"; $sumData = pdo_fetch($sqlSummary, $sqlParam); return array( "pageData" => $pageData, "count" => intval($sumData["count"]), ); } else { $sqlSummary = " select count(*) as count " . $sqlBody . ";"; $sumData = pdo_fetch($sqlSummary, $sqlParam); $recordTotal = intval($sumData["count"]); $pageTotal = ceil($recordTotal / $pageSize); $args = array( "pageIndex" => 0, "pageSize" => $pageSize, "pageTotal" => $pageTotal, "sqlFetch" => $sqlFetch, "sqlParam" => $sqlParam, ); if ($recordTotal <= 0) { throw new GeneralException("", "竟然没有任何数据,没必要导出啊"); } $csvTitle = array("开始时间", "姓名", "身份证号", "性别", "年龄", "电话"); baseexcel_exportCsv("活动报名列表", $csvTitle, $args, function ($args) { $pageIndex = intval($args["pageIndex"]) + 1; $args["pageIndex"] = $pageIndex; $pageSize = intval($args["pageSize"]); $pageTotal = intval($args["pageTotal"]); if ($pageIndex > $pageTotal) { return false; } $sqlFetch = $args["sqlFetch"]; $sqlParam = $args["sqlParam"]; $start = (intval($pageIndex) - 1) * $pageSize; $pageData111 = pdo_fetchall($sqlFetch . " limit {$start},{$pageSize} ", $sqlParam); $pageData = array(); foreach ($pageData111 as &$subdata) { //数据转换/映射 $age = ""; if (mb_strlen(trim($subdata["idcard"])) == 18) { $birthdate = mb_substr(trim($subdata["idcard"]), 6, 8); $datetime1 = date_create_from_format("Ymd", $birthdate); $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1))); $datetime2 = new \DateTime(date("Y-m-d", time())); $interval = $datetime1->diff($datetime2); $age = intval($interval->format('%Y')); } $pageData[] = array( "\t" . date("Y-m-d H:i:s", $subdata["begin_datetime"]) , $subdata["true_name"] , "\t" . $subdata["idcard"] , intval($subdata["gender"]) < 0 ? "" : (intval($subdata["gender"]) == 0 ? "男" : "女") , $age , "\t" . $subdata["bu_mobile"], ); } return array("pagedata" => $pageData, "args" => $args); }); } break; default: throw new GeneralException("", "不支持的handleMode!"); } }