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()); } //------------------------------------------------ try{ $pageIndex=1; $pageSize=30; $start=($pageIndex-1)*$pageSize; $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", )); } 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", )); } break; default:throw new Exception("不支持的status"); } }catch(Throwable $e){ myecho("工单超时处理发生异常11:".$e->getMessage()); } } }catch(Throwable $e){ myecho("工单超时处理发生异常22:".$e->getMessage()); } //------------------------------------------------ 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()); } //------------------------------------------------ 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()); // } // }); // } $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`=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(), )); 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($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"] = 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); return true; }catch(Throwable $e){ myecho("超时48小时自动结算处理发生异常:".$e->getMessage()); } }); } }catch(Throwable $e){ myecho("超时48小时未结算处理发生异常22:".$e->getMessage()); } //------------------------------------------------ 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`=-1 or btdw.`status`=-3 ) )) ) 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 )"); $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); 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*********************************/ });