empty($data["wker_truename"]) ? $data["wker_nickname"] : $data["wker_truename"], "company" => $data["btr_title"], ); $phoneNumber = $data["wkbu_mobile"]; break; case 1: $smsTempCode = AliSMS_TMPCODE_222; $smsParams = array( "name" => $data["bter_companyname"], ); $phoneNumber = $data["btbu_mobile"]; break; case 2: $smsTempCode = AliSMS_TMPCODE_333; $smsParams = array( "name" => empty($data["wker_truename"]) ? $data["wker_nickname"] : $data["wker_truename"], "job" => $data["btr_title"], ); $phoneNumber = $data["wkbu_mobile"]; break; default: throw new Exception("不支持的bizcatalog"); } $sendSmsCode = alisms_sendSms($phoneNumber, $smsTempCode, $smsSign, $smsParams); pdo_query("update biz_message_queue set updatetime=:nowtime,`status`=1,remark=concat(:remark,ifnull(remark,'')) where id=:id", array( ":nowtime" => time(), ":id" => intval($data["id"]), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 发送成功 \n", )); } catch (Throwable $e) { myecho("短信发送发生异常110000:" . $e->getMessage()); } } } catch (Throwable $e) { myecho("短信发送发生异常2211111:" . $e->getMessage()); } //------------------------------------------------ //工单超时处理 myecho("处理内容:工单超时处理"); try { $pageIndex = 1; $pageSize = 30; $start = ($pageIndex - 1) * $pageSize; $sql = "select tdwk.* ,wkbu.mobile as wkbu_mobile,wker.true_name as wker_truename ,btbu.mobile as btbu_mobile,bter.company_name as bter_companyname ,btr.title as btr_title,btr.settle_catalog,btr.begin_datetime as btr_begin_datetime,btr.finish_datetime as btr_finish_datetime ,btr.begin_hour2 as btr_begin_hour2,btr.finish_hour2 as btr_finish_hour2 from biz_todowork tdwk left join biz_worker wker on wker.id=tdwk.biz_workerid left join base_user wkbu on wkbu.id=wker.base_userid left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid left join biz_trader bter on bter.id=btr.biz_traderid left join base_user btbu on btbu.id=bter.base_userid where (tdwk.`status`=2 and ifnull(tdwk.todo_begindate,0)<=:nowtime111) or (tdwk.`status`=3 and ( (btr.settle_catalog=0 and ( (ifnull(btr.finish_datetime,0)>ifnull(btr.begin_datetime,0) and ifnull(btr.finish_datetime,0)<=:nowtime222)) or (ifnull(btr.finish_datetime,0)<=ifnull(btr.begin_datetime,0) and ifnull(btr.begin_datetime,0)<=:nowtime222) ) or (btr.settle_catalog>0 and ifnull(tdwk.todo_begindate,0)<=:nowtime222) ) ) limit {$start},{$pageSize}"; $sqlparam = [ ":nowtime111" => time(), //time()-3600*25, ":nowtime222" => time(), //time()-3600*25, ]; $pageData = pdo_fetchall($sql, $sqlparam); /*$pageData = pdo_fetchall("select tdwk.* ,wkbu.mobile as wkbu_mobile,wker.true_name as wker_truename ,btbu.mobile as btbu_mobile,bter.company_name as bter_companyname ,btr.title as btr_title,btr.settle_catalog,btr.begin_datetime as btr_begin_datetime,btr.finish_datetime as btr_finish_datetime ,btr.begin_hour2 as btr_begin_hour2,btr.finish_hour2 as btr_finish_hour2 from biz_todowork tdwk left join biz_worker wker on wker.id=tdwk.biz_workerid left join base_user wkbu on wkbu.id=wker.base_userid left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid left join biz_trader bter on bter.id=btr.biz_traderid left join base_user btbu on btbu.id=bter.base_userid where (tdwk.`status`=2 and ifnull(tdwk.todo_begindate,0)<=:nowtime111) or (tdwk.`status`=3 and ( (btr.settle_catalog=0 and ( (ifnull(btr.finish_datetime,0)>ifnull(btr.begin_datetime,0) and ifnull(btr.finish_datetime,0)<=:nowtime222)) or (ifnull(btr.finish_datetime,0)<=ifnull(btr.begin_datetime,0) and ifnull(btr.begin_datetime,0)<=:nowtime222) ) or (btr.settle_catalog>0 and ifnull(tdwk.todo_begindate,0)<=:nowtime222) ) ) limit {$start},{$pageSize}", array( ":nowtime111" => time(), //time()-3600*25, ":nowtime222" => time(), //time()-3600*25, ));*/ foreach ($pageData as $data) { try { switch (intval($data["status"])) { case 2: if (($data['btr_begin_datetime'] + $data['btr_begin_hour2']) <= time()) { /*pdo_query("update biz_todowork set updatetime=:nowtime,worked_begintime=:nowtime,`status`=3,remark=concat(:remark,ifnull(remark,'')) where id=:id", array( ":nowtime" => time(), ":id" => intval($data["id"]), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 系统自动处理为开始工作 \n", ));*/ /*pdo_query("update biz_todowork set updatetime=:nowtime,`status`=3,remark=concat(:remark,ifnull(remark,'')) where id=:id", array( ":id" => intval($data["id"]), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 系统自动处理为开始工作 \n", ));*/ } break; case 3: if (($data['btr_finish_datetime'] + $data['btr_finish_hour2']) <= time()) { /*pdo_query("update biz_todowork set updatetime=:nowtime,worked_finishtime=:nowtime,`status`=4,remark=concat(:remark,ifnull(remark,'')) where id=:id", array( ":nowtime" => time(), ":id" => intval($data["id"]), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 系统自动处理为结束工作 \n", ));*/ pdo_query("update biz_todowork set updatetime=:nowtime,`status`=4,remark=concat(:remark,ifnull(remark,'')) where id=:id", array( ":id" => intval($data["id"]), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 系统自动处理为结束工作 \n", )); } break; default: throw new Exception("不支持的status"); } } catch (Throwable $e) { myecho("工单超时处理发生异常11:" . $e->getMessage()); } } } catch (Throwable $e) { myecho("工单超时处理发生异常22:" . $e->getMessage()); } //------------------------------------------------ //超时取消报名 myecho("处理内容:超时取消报名"); try { $pageIndex = 1; $pageSize = 30; $start = ($pageIndex - 1) * $pageSize; $pageData = pdo_fetchall("select tdwk.* from biz_todowork tdwk left join biz_trader_recruit as btr on btr.id=tdwk.biz_recruitid where tdwk.`status`=1 and ((tdwk.todo_begindate+btr.begin_hour2)<=:query_nowdate) limit {$start},{$pageSize}", array( // ":query_nowdate"=>time()+3600*2, ":query_nowdate" => time(), )); foreach ($pageData as $data) { try { $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":status"] = -4; $sqlParam[":teamstatus"] = 8; $sqlParam[":workid"] = intval($data["id"]); $sqlParam[":workteamid"] = intval($data["workteamid"]); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 超时自动取消并返还押金 \n"; $sqlTemp = ""; $sqlTemp .= " update biz_todowork set updatetime=:nowtime "; $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " 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 , 0 , enroll_premoney, 1, 5 , id, :remark "; $sqlTemp .= " from biz_todowork where id=:workid;"; $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime "; $sqlTemp .= " ,`status`=:teamstatus, remark=concat(:remark,ifnull(remark,''))"; $sqlTemp .= " where id=:workteamid;"; $backdata = pdo_query3($sqlTemp, $sqlParam); } catch (Throwable $e) { myecho("超时到时自动取消报名处理发生异常11:" . $e->getMessage()); } } } catch (Throwable $e) { myecho("超时到时自动取消报名处理发生异常22:" . $e->getMessage()); } //------------------------------------------------ //超时自动结算 myecho("处理内容:超时自动结算"); try { $pageIndex = 1; $pageSize = 30; $start = ($pageIndex - 1) * $pageSize; // $pageData=pdo_fetchall("select tdwk.* // from biz_todowork tdwk // left join biz_trader_recruit as btr on btr.id=tdwk.biz_recruitid // where tdwk.`status`=4 and tdwk.worked_finishtime<=:query_nowdate // limit {$start},{$pageSize}",array( // ":query_nowdate"=>time()-3600*48, // )); // foreach ($pageData as $data) { // $result = biz_flkForWork($data["id"], $data, function ($data) { // try{ // $sqlParam=array(); // $sqlParam[":nowtime"]=time(); // $sqlParam[":workid"]=$data["id"]; // $sqlParam[":status"]=-8; // $sqlParam[":remark"]="[".date("Y-m-d H:i:s",time())."] 自动处理为【超48时未结算】状态 \n"; // $sqlTemp=" update biz_todowork set updatetime=:nowtime "; // $sqlTemp.=" ,`status`=:status, remark=concat(:remark,ifnull(remark,''))"; // $sqlTemp.=" where id=:workid and `status`=4;"; // $backdata=pdo_query3($sqlTemp,$sqlParam); // }catch(Throwable $e){ // myecho("超时48小时未结算处理发生异常11:".$e->getMessage()); // } // }); // } // where tdwk.`status`4 and tdwk.worked_finishtime<=:query_nowdate $sql = "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"; $sql .= " left join biz_trader_recruit as btr on btr.id=tdwk.biz_recruitid"; $sql .= " where tdwk.`status` in (2,3,4) and (btr.finish_datetime+btr.finish_hour2)<=:query_nowdate"; $sql .= "order by tdwk.id desc limit {$start},{$pageSize}"; $param = [ ":query_nowdate" => time() - 3600 * 12, ]; // /*$pageData = pdo_fetchall("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 as btr on btr.id=tdwk.biz_recruitid where tdwk.`status` in (2,3,4) and tdwk.worked_finishtime<=:query_nowdate order by tdwk.id desc limit {$start},{$pageSize}", array( ":query_nowdate" => time() - 3600 * 48, // ":query_nowdate"=>time()-3600*12, // ":query_nowdate"=>time(), ));*/ $pageData = pdo_fetchall($sql, $param); foreach ($pageData as $data) { $result = biz_flkForWork($data["id"], $data, function ($data) { try { $platerMoney = round(floatval($data["plat_fetchmoney"]), 2); $sharerMoney = round(floatval($data["sharer_fetchmoney"]), 2); $workerMoney = round(floatval($data["wker_salary"]), 2); //$bizUser = $data["bizUser"]; $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":nowtime2"] = "[" . date("Y-m-d H:i:s", time()) . "] 超时48小时自动结算"; $sqlParam[":wkid"] = $data["id"]; $sqlParam[":biz_roletype"] = 0; $sqlParam[":biz_userid"] = intval($data["biz_traderid"]); //付款人id 商户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"] = 6; //6-工单整体支出; $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($data["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($data["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 ,`final_status` = 1"; //已结算 $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); //myecho($sqlTemp); return true; } catch (Throwable $e) { myecho("超时48小时自动结算处理发生异常:" . $e->getMessage()); } }); } } catch (Throwable $e) { myecho("超时48小时未结算处理发生异常22:" . $e->getMessage()); } //------------------------------------------------ //录用满员处理 //and ( btdw.`status`>=2 or btdw.`status`=-1 or btdw.`status`=-3 ) myecho("处理内容:录用满员处理"); try { $pageIndex = 1; $pageSize = 30; $start = ($pageIndex - 1) * $pageSize; /** 占用次数统计录满条件 */ $pageData = pdo_fetchall("select btr.* from biz_trader_recruit as btr where btr.`deleted`=0 and btr.`status`=2 and ( ( btr.settle_catalog=0 and (btr.begin_datetime+btr.begin_hour2)<=:query_nowdate ) or ( btr.need_total<=( select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`>=2 or btdw.`status`=-3 ) ) ) or( btr.settle_catalog=1 and (btr.finish_datetime+btr.begin_hour2)<=:query_nowdate ) ) limit {$start},{$pageSize}", array( // ":query_nowdate"=>time()+3600*2, ":query_nowdate" => time(), )); foreach ($pageData as $data) { try { $params = array("recruit" => $data); $result = biz_flkForRecruit($data["id"], $params, function ($params) { $recruit = $params["recruit"]; #$useTotal = pdo_fetchcolumn("select count(*) from biz_todowork btdw where btdw.biz_recruitid=" . intval($recruit["id"]) . " and ( btdw.`status`>=2 or btdw.`status`=-1 or btdw.`status`=-3 )"); $useTotal = pdo_fetchcolumn("select count(*) from biz_todowork btdw where btdw.biz_recruitid=" . intval($recruit["id"]) . " and ( btdw.`status`>=2 or btdw.`status`=-3 )"); $mainRemain = intval($recruit["need_total"]) - intval($useTotal); $sqlParam = array(); $sqlParam[":nowtime"] = time(); $sqlParam[":recruitId"] = intval($recruit["id"]); $sqlParam[":biz_traderid"] = intval($recruit["biz_traderid"]); $sqlParam[":status"] = 5; $sqlParam[":remain_numtotal"] = intval($mainRemain); $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 录满后自动下架 \n"; $sqlTemp = ""; if (intval($mainRemain) > 0) { $sqlParam[":status"] = 6; $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 招聘过期后自动下架 \n"; $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()) . "] 因招聘过期后自动下架,返回剩余次数';"; } $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;"; $backdata = pdo_query3($sqlTemp, $sqlParam); //$backdata = '123';//测试用 /** * update wj 20220916 */ //其他未录用自动驳回 返还对押金 $brtid = $recruit["id"]; $todolistsql = "select id,biz_workerid,biz_recruitid,status from biz_todowork where status=1 and biz_recruitid=:brtid"; $todolist = pdo_fetchall($todolistsql, [':brtid' => $brtid]); $reason = "招满自动返还"; $sqlParam2[":nowtime"] = time(); $sqlParam2[":wkstatus"] = -1; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消' $sqlParam2[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 报名被拒绝(退还押金):$reason \n"; //返还押金对冲 foreach ($todolist as $key => $value) { $workid = $value['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, 7 , id, :wkremark "; $sqlTemp .= " from biz_todowork where id=" . intval($workid) . ";"; $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) "; $sqlTemp .= " where id=" . intval($workid) . ";"; $dataset = pdo_query3($sqlTemp, $sqlParam2); exit; } return $backdata; }); myecho("222222222222"); } catch (Throwable $e) { myecho("招聘超时下架/录满下架处理发生异常11:" . $e->getMessage()); } } } catch (Throwable $e) { myecho("招聘超时下架/录满下架处理发生异常22:" . $e->getMessage()); } } catch (Throwable $e) { $friendMsg = get_class($e) == 'GeneralException' ? $e->friendmsg : "非常抱歉,处理业务时发生错误"; throw new GeneralException("处理业务发生错误", $friendMsg, LOG_CATALOG, 0, $e); } /***********************finish*********************************/ });