123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894 |
- <?php
- defined('ONLY_ONLY_ONLY') or exit('Access Denied');
- /*****************通用基本逻辑相关******************/
- /************************************************************************/
- /**********************文件锁区*************************************/
- /***********************************************************************/
- //样例 项目专属的商品文件锁,防止超卖,库存溢出
- function biz_flkForGoods($lockId, $handleArgs, $bizHandle)
- {
- $lockCatalog = "GOODS"; //目的就是控制lockCatalog名称的规范化统一化
- return filelock_handle($lockCatalog, $lockId, $handleArgs, $bizHandle);
- }
- function biz_flkForOrder($lockId, $handleArgs, $bizHandle)
- {
- $lockCatalog = "ORDER"; //目的就是控制lockCatalog名称的规范化统一化
- return filelock_handle($lockCatalog, $lockId, $handleArgs, $bizHandle);
- }
- function biz_flkForTrader($lockId, $handleArgs, $bizHandle)
- {
- $lockCatalog = "Trader";
- return filelock_handle($lockCatalog, $lockId, $handleArgs, $bizHandle);
- }
- function biz_flkForRecruit($lockId, $handleArgs, $bizHandle)
- {
- $lockCatalog = "Recruit";
- return filelock_handle($lockCatalog, $lockId, $handleArgs, $bizHandle);
- }
- function biz_flkForWorker($lockId, $handleArgs, $bizHandle)
- {
- $lockCatalog = "Worker"; //目的就是控制lockCatalog名称的规范化统一化
- return filelock_handle($lockCatalog, $lockId, $handleArgs, $bizHandle);
- }
- function biz_flkForMActivity($lockId, $handleArgs, $bizHandle)
- {
- $lockCatalog = "MActivity"; //目的就是控制lockCatalog名称的规范化统一化
- return filelock_handle($lockCatalog, $lockId, $handleArgs, $bizHandle);
- }
- function biz_flkForWork($lockId, $handleArgs, $bizHandle)
- {
- $lockCatalog = "Work";
- return filelock_handle($lockCatalog, $lockId, $handleArgs, $bizHandle);
- }
- function bizwx_fetchWxParams($subSystem)
- {
- switch (intval($subSystem)) {
- case 1:
- $mina_appid = WeiXin111_AppID;
- $mina_appSecret = WeiXin111_AppSecret;
- break;
- case 2:
- $mina_appid = WeiXin222_AppID;
- $mina_appSecret = WeiXin222_AppSecret;
- break;
- case 3:
- $mina_appid = WeiXin333_AppID;
- $mina_appSecret = WeiXin333_AppSecret;
- break;
- default:throw new GeneralException("", "不支持的子系统");
- }
- return array(
- "mina_appid" => $mina_appid,
- "mina_appSecret" => $mina_appSecret,
- );
- }
- function bizwx_fetchMinaOpenidCore($subSystem)
- {
- $GPC = input_param_handle(false);
- $ajaxdata = input_getPostObj();
- $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
- if (empty($minaCode)) {
- throw new GeneralException("没有传递必要的minaCode参数", "没有传递必要的minaCode参数");
- }
- $wxParams = bizwx_fetchWxParams($subSystem);
- $mina_appid = $wxParams["mina_appid"];
- $mina_appSecret = $wxParams["mina_appSecret"];
- $url = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $mina_appid . "&secret=" . $mina_appSecret . "&js_code=" . $minaCode . "&grant_type=authorization_code";
- $res = http_get($url);
- eeglobal_log_handler('wxm_login', 'debug', "url=>$url getresult=>$res");
- $resObj = @json_decode($res, true);
- if (empty($resObj) || empty($resObj['openid'])) {
- throw new GeneralException("", "结果数据不正常=>" . $res);
- }
- $resObj["wxmina_appid"] = $mina_appid;
- return $resObj;
- }
- function bizwx_fetchMinaOpenid($subSystem)
- {
- $resObj = bizwx_fetchMinaOpenidCore($subSystem);
- $wxmina_appid = $resObj["wxmina_appid"];
- /***UPSERT小程序用户记录**start***/
- $sqlTemp = "";
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":subsystem"] = intval($subSystem);
- $sqlParam[":wxmina_appid"] = $wxmina_appid;
- $sqlParam[":wxmina_openid"] = trim($resObj['openid']);
- $sqlParam[":weixin_unionid111"] = empty(trim($resObj['unionid'])) ? '------' : trim($resObj['unionid']);
- $sqlParam[":weixin_unionid222"] = empty(trim($resObj['unionid'])) ? '' : trim($resObj['unionid']);
- $sqlParam[":weixin_sessionkey"] = trim($resObj['session_key']);
- $sqlParam[":salt"] = random(8);
- $sqlCommon = " and subsystem=:subsystem and (( `wxmina_appid`=:wxmina_appid and `wxmina_openid`=:wxmina_openid) or ifnull(weixin_unionid,'')=:weixin_unionid111) ";
- $sqlTemp .= " set @handle_id=0; ";
- $sqlTemp .= " select @handle_id:=id from base_user where 1=1 {$sqlCommon} limit 1;";
- $sqlTemp .= " insert into base_user ( `createtime`,`subsystem`,`wxmina_appid`,`wxmina_openid`, `weixin_unionid`,`weixin_sessionkey`, `salt` )";
- $sqlTemp .= " select :nowtime ,:subsystem ,:wxmina_appid ,:wxmina_openid ,:weixin_unionid222, :weixin_sessionkey, :salt from dual where ifnull(@handle_id,0)=0;";
- $sqlTemp .= " update base_user SET `updatetime`=:nowtime, `wxmina_appid`=:wxmina_appid, `wxmina_openid`=:wxmina_openid, `weixin_unionid`=:weixin_unionid222, `weixin_sessionkey`=:weixin_sessionkey, `salt`=:salt ";
- $sqlTemp .= " where ifnull(@handle_id,0)<>0 {$sqlCommon};";
- $sqlTemp .= " select * from base_user where 1=1 {$sqlCommon};";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- /***UPSERT小程序用户记录**finish***/
- $baseUser = $dataset[4][0];
- if (empty($baseUser)) {
- throw new GeneralException("", "异常");
- }
- $baseUser["FOREND_TOKEN"] = base_buildForendToken($baseUser);
- return $baseUser;
- }
- function bizbase_paySuccess($payBizCatalog, $payBizId, $needQuery = false, $handleMode = "")
- {
- //$actionMode 调用模式,用以判定是否为带锁进入模式,以避免内部死锁
- eeglobal_log_handler("bizbase_paySuccess", "debug", "支付成功后处理 payBizCatalog-payBizId=>{$payBizCatalog}-{$payBizId} ");
- switch (trim($payBizCatalog)) {
- case "0": //商家侧:次数购买业务
- $bizInfo = pdo_fetch("select * from biz_trader_numaccount where id=" . intval($payBizId));
- if (empty($bizInfo)) {
- throw new GeneralException("", "对应的业务支付记录不存在!");
- }
- if (intval($bizInfo["deleted"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录已删除!");
- }
- if (intval($bizInfo["type"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录不是支付记录!");
- }
- if (intval($bizInfo["biz_catalog"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录不是次数支付记录!");
- }
- if (intval($bizInfo["status"]) == 1) {
- return true;
- }
- //已支付
- if ($needQuery == true) {
- require_once WEB_PHY_ROOT . "/base/wxsrv.php";
- $wxmina_appid = $bizInfo["wxmina_appid"];
- $wxmina_openid = $bizInfo["wxmina_openid"];
- //$out_trade_no = $bizInfo["biz_idtag"];
- $out_trade_no = !isset($bizInfo["weixin_outtradeno"]) || empty($bizInfo["weixin_outtradeno"]) ? $bizInfo["biz_idtag"] : $bizInfo["weixin_outtradeno"];
- $backdata = weixin_orderqueryV3($wxmina_appid, $out_trade_no, null);
- if ($backdata["trade_state"] == "SUCCESS") {
- } else {
- throw new GeneralException("NoPaySuccess", $backdata["trade_state"] . "-" . $backdata["trade_state_desc"]);
- }
- }
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":bizid"] = $bizInfo["id"];
- $sqlParam[":biz_traderid"] = $bizInfo["biz_traderid"];
- $sqlParam[":paymoney"] = $bizInfo["paymoney"];
- $sqlParam[":money"] = $bizInfo["money"];
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 次数支付成功 \n";
- $sqlTemp = "";
- $sqlTemp .= " update biz_trader_numaccount set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- $sqlTemp .= " set @handle_id=0; ";
- $sqlTemp .= " select @handle_id:=id from biz_trader_account where `type`=0 and `biz_catalog`=0 and `biz_id`=:bizid limit 1;";
- $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
- $sqlTemp .= " select :biz_traderid , :nowtime , 0 , :paymoney, 1, 0 , :bizid, :bizremark from dual where ifnull(@handle_id,0)=0;";
- $sqlTemp .= " set @handle_id=0; ";
- $sqlTemp .= " select @handle_id:=id from biz_trader_account where `type`=1 and `biz_catalog`=0 and `biz_id`=:bizid limit 1;";
- $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`,`biz_catalog`,`biz_id`, remark )";
- $sqlTemp .= " select :biz_traderid , :nowtime , 1 , :money, 1, 0 , :bizid, :bizremark from dual where ifnull(@handle_id,0)=0;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- return true;
- break;
- case "1": //商家侧:【废弃】订单支付业务
- $bizInfo = pdo_fetch("select * from biz_trader_account where id=" . intval($payBizId));
- if (empty($bizInfo)) {
- throw new GeneralException("", "对应的业务支付记录不存在!");
- }
- if (intval($bizInfo["deleted"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录已删除!");
- }
- if (intval($bizInfo["type"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录不是支付记录!");
- }
- if (!(intval($bizInfo["biz_catalog"]) == 1 || intval($bizInfo["biz_catalog"]) == 4)) {
- throw new GeneralException("", "对应的业务支付记录不是订单支付业务!");
- }
- if (intval($bizInfo["status"]) == 1) {
- return true;
- }
- //已支付
- $workInfo = pdo_fetch("select tdwk.*
- ,btr.biz_traderid, btr.feetotal as pay_feetotal
- ,btr.plat_fetchmoney,btr.sharer_fetchmoney,btr.salary as wker_salary
- ,dwk.id as doed_workerid
- from biz_todowork tdwk
- inner join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
- inner join biz_worker dwk on dwk.id=tdwk.biz_workerid
- where tdwk.id=" . intval($bizInfo["biz_id"]));
- if (empty($workInfo)) {
- throw new GeneralException("", "对应的订单记录不存在或没有关联招聘或没有工人记录信息!");
- }
- if (intval($workInfo["status"] == 5)) {
- return true;
- }
- //已结算
- if (!(intval($workInfo["status"]) == 4
- || intval($workInfo["status"]) == -5)) {
- throw new GeneralException("", "此订单不是待结算/拒绝支付状态,请核查!");
- }
- if ($needQuery == true) {
- require_once WEB_PHY_ROOT . "/base/wxsrv.php";
- $wxmina_appid = $bizInfo["wxmina_appid"];
- $wxmina_openid = $bizInfo["wxmina_openid"];
- $out_trade_no = $bizInfo["biz_idtag"];
- $backdata = weixin_orderqueryV3($wxmina_appid, $out_trade_no, null);
- if ($backdata["trade_state"] == "SUCCESS") {
- } else {
- throw new GeneralException("NoPaySuccess", $backdata["trade_state"] . "-" . $backdata["trade_state_desc"]);
- }
- }
- $payfeeTotal = round(floatval($workInfo["pay_feetotal"]), 2);
- $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[":bizid"] = $bizInfo["id"];
- $sqlParam[":wkid"] = $workInfo["id"];
- $sqlParam[":biz_traderid"] = $bizInfo["biz_traderid"];
- $sqlParam[":biz_roletype"] = $bizInfo["biz_roletype"];
- $sqlParam[":biz_userid"] = $bizInfo["biz_userid"];
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 订单支付结算 \n";
- $sqlParam[":bizremark22"] = "[" . date("Y-m-d H:i:s", time()) . "] 订单结算," . $bizInfo["remark"] . " \n";
- $sqlTemp = "";
- $sqlTemp .= " update biz_trader_account set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- $sqlTemp .= " set @handle_id=0; ";
- $sqlTemp .= " select @handle_id:=id from biz_todowork where id=:wkid limit 1;";
- $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=5 "; //已结算
- $sqlTemp .= " ,settled_time=:nowtime,settled_mode=:biz_roletype,settled_userid=:biz_userid";
- $sqlTemp .= " ,remark=concat(:bizremark22,ifnull(remark,'')) where id=:wkid;";
- //----------------------------------------------------
- $sqlParam[":payfeeTotal"] = $payfeeTotal; //订单总费用
- $sqlParam[":biz_catalog1"] = intval($bizInfo["biz_catalog"] == 4) ? 7 : 6; //6-订单整体支出;7-平台代支付订单
- $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, `biz_roletype`, `biz_userid`, remark )";
- $sqlTemp .= " select :biz_traderid , :nowtime , 1 , :payfeeTotal, 1, :biz_catalog1 , :bizid, :biz_roletype, :biz_userid, :bizremark from dual where ifnull(@handle_id,0)>0;";
- $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`, `biz_roletype`, `biz_userid`, remark )";
- $sqlTemp .= " select 9, :biz_traderid , :nowtime , 1 , :platerMoney, 1, 1 , :bizid, :biz_roletype, :biz_userid, :bizremark from dual where ifnull(@handle_id,0)>0;";
- 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`, `biz_roletype`, `biz_userid`, remark )";
- $sqlTemp .= " select 9, :biz_traderid , :nowtime , 1 , :sharerMoney, 1, 2 , :bizid, :biz_roletype, :biz_userid, :bizremark from dual where ifnull(@handle_id,0)>0;";
- $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 , :bizid, :bizremark from dual where ifnull(@handle_id,0)>0;";
- }
- $sqlParam[":workerMoney"] = $workerMoney; //工人工资
- $sqlParam[":doed_workerid"] = intval($workInfo["doed_workerid"]);
- $sqlTemp .= " insert into biz_trader_account ( deleted, `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, `biz_roletype`, `biz_userid`, remark )";
- $sqlTemp .= " select 9, :biz_traderid , :nowtime , 1 , :workerMoney, 1, 3 , :bizid, :biz_roletype, :biz_userid, :bizremark from dual where ifnull(@handle_id,0)>0;";
- $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 , :bizid, :bizremark from dual where ifnull(@handle_id,0)>0;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- return true;
- break;
- case "11": //商家侧:订单支付业务 NewNew
- $bizInfo = pdo_fetch("select * from biz_trader_account where id=" . intval($payBizId));
- if (empty($bizInfo)) {
- throw new GeneralException("", "对应的业务支付记录不存在!");
- }
- if (intval($bizInfo["deleted"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录已删除!");
- }
- if (intval($bizInfo["type"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录不是支付记录!");
- }
- if (!(intval($bizInfo["biz_catalog"]) == 1)) {
- throw new GeneralException("", "对应的业务支付记录不是订单支付业务!");
- }
- if (intval($bizInfo["status"]) == 1) {
- return true;
- }
- //已支付
- if ($needQuery == true) {
- require_once WEB_PHY_ROOT . "/base/wxsrv.php";
- $wxmina_appid = $bizInfo["wxmina_appid"];
- $wxmina_openid = $bizInfo["wxmina_openid"];
- //$out_trade_no = $bizInfo["biz_idtag"];
- $out_trade_no = !isset($bizInfo["weixin_outtradeno"]) || empty($bizInfo["weixin_outtradeno"]) ? $bizInfo["biz_idtag"] : $bizInfo["weixin_outtradeno"];
- $backdata = weixin_orderqueryV3($wxmina_appid, $out_trade_no, null);
- if ($backdata["trade_state"] == "SUCCESS") {
- } else {
- throw new GeneralException("NoPaySuccess", $backdata["trade_state"] . "-" . $backdata["trade_state_desc"]);
- }
- }
- //**********确保支付成功后正常入账***************
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":accid"] = $bizInfo["id"];
- $sqlParam[":accremark1"] = "[" . date("Y-m-d H:i:s", time()) . "] 工单费用差额已支付入账 \n";
- $sqlTemp = "";
- $sqlTemp .= " update biz_trader_account set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,remark=concat(:accremark1,ifnull(remark,'')) where id=:accid;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- //**********预提取相关信息并构建参数集对象***************
- $workInfo = pdo_fetch("select tdwk.*
- ,btr.begin_datetime as btr_begin_datetime,btr.finish_datetime as btr_finish_datetime
- ,btr.settle_catalog as btr_settle_catalog
- ,btr.biz_traderid, btr.feetotal as pay_feetotal
- ,btr.plat_fetchmoney,btr.sharer_fetchmoney,btr.salary as wker_salary,btr.urgent_level
- ,dwk.id as doed_workerid
- from biz_todowork tdwk
- left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
- left join biz_worker dwk on dwk.id=tdwk.biz_workerid
- where tdwk.id=" . intval($bizInfo["biz_id"]));
- if (empty($workInfo)) {
- throw new GeneralException("", "对应的订单记录不存在!");
- }
- $payfeeTotal = round(floatval($workInfo["pay_feetotal"]), 2);
- $planDotime = intval($workInfo["todo_begindate"]);
- $workDateStart = intval($workInfo["btr_begin_datetime"]);
- $workDateFinish = $workDateStart;
- if (intval($workInfo["btr_settle_catalog"]) <= 0//普通招聘的多日招聘
- && intval($workInfo["btr_begin_datetime"]) < intval($workInfo["btr_finish_datetime"])) {
- $workDateFinish = intval($workInfo["btr_finish_datetime"]);
- }
- if (intval($workInfo["btr_settle_catalog"]) > 0) {
- $workDateStart = strtotime(date("Y-m-d", $planDotime));
- $workDateFinish = strtotime(date("Y-m-d 23:59:59", $planDotime));
- }
- $nowSettleCatalog = intval($workInfo["btr_settle_catalog"]);
- $plandoDateStart = strtotime(date("Y-m-d", $planDotime));
- $plandoDateFinish = strtotime(date("Y-m-d 23:59:59", $planDotime));
- $bizArgs = array(
- "handleMode" => $handleMode,
- "bizInfo" => $bizInfo,
- "workInfo" => $workInfo,
- "payfeeTotal" => $payfeeTotal,
- "workDateStart" => $workDateStart,
- "workDateFinish" => $workDateFinish,
- "plandoDateStart" => $plandoDateStart,
- "plandoDateFinish" => $plandoDateFinish,
- );
- if ($handleMode == "manhandle") { //加锁模式的余额支付模式,不用再研判了
- bizbase_enrollPassHandleCore($bizArgs);
- } else { //支付完成回调模式下,需加锁即可
- $recruitId = intval($workInfo["biz_recruitid"]);
- $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList, $mainRemain2, $dateRemain2) {
- $handleMode = $bizArgs["handleMode"];
- $bizInfo = $bizArgs["bizInfo"];
- $workInfo = $bizArgs["workInfo"];
- $denyMsg = "";
- if ($mainRemain2 <= 0) {
- $denyMsg .= "此招聘已录满,已不能再录用";
- }
- if ($dateRemain2 <= 0) {
- $denyMsg .= "此招聘报名日期已录满,已不能再录用";
- }
- if (empty($denyMsg)) {
- bizbase_enrollPassHandleCore($bizArgs);
- } else {
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":accid"] = $bizInfo["id"];
- $sqlParam[":bizid"] = $bizInfo["biz_id"];
- $sqlParam[":accremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 工单费用支付成功后但已未能录用:{$denyMsg} \n";
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 未能录用,返还押金:{$denyMsg} \n";
- $sqlTemp = "";
- if (1 != $workInfo['urgent_level']) {
- $sqlTemp .= " update biz_trader_account set updatetime=:nowtime ";
- $sqlTemp .= " ,remark=concat(:accremark,ifnull(remark,'')) where id=:accid;";
- $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=-4 "; //被动取消
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;"; //退还押金
- $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, :bizremark ";
- $sqlTemp .= " from biz_todowork where id=:bizid;";
- }
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- }
- });
- }
- return true;
- break;
- case "2": //商家侧:微信支付充值
- $bizInfo = pdo_fetch("select * from biz_trader_account where id=" . intval($payBizId));
- if (empty($bizInfo)) {
- throw new GeneralException("", "对应的业务支付记录不存在!");
- }
- if (intval($bizInfo["deleted"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录已删除!");
- }
- if (intval($bizInfo["type"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录不是支付记录!");
- }
- if (intval($bizInfo["biz_catalog"]) != 2) {
- throw new GeneralException("", "对应的业务支付记录不是微信支付充值!");
- }
- if (intval($bizInfo["status"]) == 1) {
- return true;
- }
- //已支付
- if ($needQuery == true) {
- require_once WEB_PHY_ROOT . "/base/wxsrv.php";
- $wxmina_appid = $bizInfo["wxmina_appid"];
- $wxmina_openid = $bizInfo["wxmina_openid"];
- $out_trade_no = !isset($bizInfo["weixin_outtradeno"]) || empty($bizInfo["weixin_outtradeno"]) ? $bizInfo["biz_idtag"] : $bizInfo["weixin_outtradeno"];
- //$out_trade_no = $bizInfo["biz_idtag"];
- $backdata = weixin_orderqueryV3($wxmina_appid, $out_trade_no, null);
- if ($backdata["trade_state"] == "SUCCESS") {
- } else {
- throw new GeneralException("NoPaySuccess", $backdata["trade_state"] . "-" . $backdata["trade_state_desc"]);
- }
- }
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":bizid"] = $bizInfo["id"];
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 微信支付充值成功 \n";
- $sqlTemp = "";
- $sqlTemp .= " update biz_trader_account set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- return true;
- break;
- case "3": //会员侧:营销活动支付
- $bizInfo = pdo_fetch("select * from biz_worker_account where id=" . intval($payBizId));
- if (empty($bizInfo)) {
- throw new GeneralException("", "对应的业务支付记录不存在!");
- }
- if (intval($bizInfo["deleted"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录已删除!");
- }
- if (intval($bizInfo["type"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录不是支付记录!");
- }
- if (intval($bizInfo["biz_catalog"]) != 2) {
- throw new GeneralException("", "对应的业务支付记录不是营销活动支付记录!");
- }
- if (intval($bizInfo["status"]) == 1) {
- return true;
- }
- //已支付
- if ($needQuery == true) {
- require_once WEB_PHY_ROOT . "/base/wxsrv.php";
- $wxmina_appid = $bizInfo["wxmina_appid"];
- $wxmina_openid = $bizInfo["wxmina_openid"];
- $out_trade_no = !isset($bizInfo["weixin_outtradeno"]) || empty($bizInfo["weixin_outtradeno"]) ? $bizInfo["biz_idtag"] : $bizInfo["weixin_outtradeno"];
- //$out_trade_no = $bizInfo["biz_idtag"];
- $backdata = weixin_orderqueryV3($wxmina_appid, $out_trade_no, null);
- if ($backdata["trade_state"] == "SUCCESS") {
- } else {
- throw new GeneralException("NoPaySuccess", $backdata["trade_state"] . "-" . $backdata["trade_state_desc"]);
- }
- }
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":bizid"] = $bizInfo["id"];
- $sqlParam[":bmaoid"] = $bizInfo["biz_id"];
- $sqlParam[":biz_workerid"] = $bizInfo["biz_workerid"];
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 营销活动支付成功 \n";
- $sqlTemp = "";
- $sqlTemp .= " update biz_worker_account set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- $sqlTemp .= " update biz_market_activity_order set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,payid=:bizid, paytime=:nowtime ";
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bmaoid and `status`=0;";
- $sqlTemp .= " select @price:=price from biz_market_activity_order where id=:bmaoid;";
- $sqlTemp .= " set @handle_id=0; ";
- $sqlTemp .= " select @handle_id:=id from biz_worker_account where biz_workerid=:biz_workerid and `type`=1 and `biz_catalog`=1 and `biz_id`=:bmaoid and `status`=1 limit 1;";
- $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
- $sqlTemp .= " select :biz_workerid , :nowtime , 1 , @price, 1, 1 , :bmaoid, :bizremark from dual where ifnull(@handle_id,0)=0;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- return true;
- break;
- case "4": //会员侧:微信支付充值
- $bizInfo = pdo_fetch("select * from biz_worker_account where id=" . intval($payBizId));
- if (empty($bizInfo)) {
- throw new GeneralException("", "对应的业务支付记录不存在!");
- }
- if (intval($bizInfo["deleted"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录已删除!");
- }
- if (intval($bizInfo["type"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录不是支付记录!");
- }
- if (intval($bizInfo["biz_catalog"]) != 3) {
- throw new GeneralException("", "对应的业务支付记录不是微信支付充值!");
- }
- if (intval($bizInfo["status"]) == 1) {
- return true;
- }
- //已支付
- if ($needQuery == true) {
- require_once WEB_PHY_ROOT . "/base/wxsrv.php";
- $wxmina_appid = $bizInfo["wxmina_appid"];
- $wxmina_openid = $bizInfo["wxmina_openid"];
- //$out_trade_no = $bizInfo["biz_idtag"];
- $out_trade_no = !isset($bizInfo["weixin_outtradeno"]) || empty($bizInfo["weixin_outtradeno"]) ? $bizInfo["biz_idtag"] : $bizInfo["weixin_outtradeno"];
- $backdata = weixin_orderqueryV3($wxmina_appid, $out_trade_no, null);
- if ($backdata["trade_state"] == "SUCCESS") {
- } else {
- throw new GeneralException("NoPaySuccess", $backdata["trade_state"] . "-" . $backdata["trade_state_desc"]);
- }
- }
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":bizid"] = $bizInfo["id"];
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 微信支付充值成功 \n";
- $sqlTemp = "";
- $sqlTemp .= " update biz_worker_account set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- return true;
- break;
- case "5": //会员侧:会员报名支付押金
- $bizInfo = pdo_fetch("select * from biz_worker_account where id=" . intval($payBizId));
- if (empty($bizInfo)) {
- throw new GeneralException("", "对应的业务支付记录不存在!");
- }
- if (intval($bizInfo["deleted"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录已删除!");
- }
- if (intval($bizInfo["type"]) != 0) {
- throw new GeneralException("", "对应的业务支付记录不是支付记录!");
- }
- if (intval($bizInfo["biz_catalog"]) != 4) {
- throw new GeneralException("", "对应的业务支付记录不是会员报名支付押金!");
- }
- if (intval($bizInfo["status"]) == 1) {
- return true;
- }
- //已支付
- if ($needQuery == true) {
- require_once WEB_PHY_ROOT . "/base/wxsrv.php";
- $wxmina_appid = $bizInfo["wxmina_appid"];
- $wxmina_openid = $bizInfo["wxmina_openid"];
- $out_trade_no = !isset($bizInfo["weixin_outtradeno"]) || empty($bizInfo["weixin_outtradeno"]) ? $bizInfo["biz_idtag"] : $bizInfo["weixin_outtradeno"];
- $backdata = weixin_orderqueryV3($wxmina_appid, $out_trade_no, null);
- if ($backdata["trade_state"] == "SUCCESS") {
- } else {
- throw new GeneralException("NoPaySuccess", $backdata["trade_state"] . "-" . $backdata["trade_state_desc"]);
- }
- }
- if ($handleMode == "singleEnroll") { //加锁模式的余额支付模式,不用再研判了
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":accid"] = $bizInfo["id"];
- $sqlParam[":bizid"] = $bizInfo["biz_id"];
- $sqlParam[":biz_workerid"] = $bizInfo["biz_workerid"];
- $sqlParam[":accremark1"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员报名押金已支付成功 \n";
- $sqlParam[":accremark2"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员报名押金已冻结成功 \n";
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员报名押金已支付并冻结成功,待录用 \n";
- $sqlTemp = "";
- $sqlTemp .= " update biz_worker_account set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,remark=concat(:accremark1,ifnull(remark,'')) where id=:accid;";
- $sqlTemp .= " select @price:=ifnull(enroll_premoney,0) from biz_todowork where id=:bizid;";
- $sqlTemp .= " set @handle_id=0; ";
- $sqlTemp .= " select @handle_id:=id from biz_worker_account where biz_workerid=:biz_workerid and `type`=1 and `biz_catalog`=2 and `biz_id`=:bizid and `status`=1 limit 1;";
- $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
- $sqlTemp .= " select :biz_workerid , :nowtime , 1 , @price, 1, 2 , :bizid, :accremark2 from dual where ifnull(@handle_id,0)=0;";
- $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=1 "; //押金已支付冻结待录用
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)";
- $sqlTemp .= " select :nowtime, 1, :bizid from dual where 1=1;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- } else { //支付完成回调模式下,需加锁研判招聘是否还可报名(状态有效/是否已录满/报满)
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":accid"] = $bizInfo["id"];
- $sqlParam[":bizid"] = $bizInfo["biz_id"];
- $sqlParam[":accremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员报名押金已支付成功 \n";
- $sqlTemp = "";
- $sqlTemp .= " update biz_worker_account set updatetime=:nowtime,`status`=1 "; //已支付
- $sqlTemp .= " ,remark=concat(:accremark,ifnull(remark,'')) where id=:accid;";
- $sqlTemp .= " select * from biz_todowork where id=:bizid;";
- $dataset = pdo_query3($sqlTemp, $sqlParam); //先保证支付的正常入账
- $tdwkInfo = $dataset[count($dataset) - 1][0];
- if (empty($tdwkInfo)) {
- throw new GeneralException("", "会员报名押金支付处理异常");
- }
- $recruitId = intval($tdwkInfo["biz_recruitid"]);
- $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
- if (empty($recruitInfo)) {
- throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
- }
- $planDotime = intval($tdwkInfo["todo_begindate"]);
- $bizWorker = pdo_fetch("select wk.*,bu.id as buid,bu.mobile,bu.subsystem
- from biz_worker wk
- left join base_user bu on bu.id=wk.base_userid
- where wk.id=:wkid limit 1;", array(":wkid" => $bizInfo["biz_workerid"]));
- if (empty($bizWorker)) {
- throw new GeneralException("", "没有定位到会员记录信息,请核查!");
- }
- $bizArgs = array("handleMode" => $handleMode, "bizInfo" => $bizInfo, "recruitInfo" => $recruitInfo, "bizWorker" => $bizWorker);
- $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList, $mainRemain2, $dateRemain2) {
- $handleMode = $bizArgs["handleMode"];
- $bizInfo = $bizArgs["bizInfo"];
- $recruitInfo = $bizArgs["recruitInfo"];
- $bizWorker = $bizArgs["bizWorker"];
- $denyMsg = "";
- if ($mainRemain2 <= 0) {
- $denyMsg .= "此招聘已录满,已不能再报名";
- }
- if ($mainRemain <= 0) {
- $denyMsg .= "此招聘已报满,暂时不能报名";
- }
- if ($dateRemain2 <= 0) {
- $denyMsg .= "此招聘报名日期已录满,已不能再报名";
- }
- if ($dateRemain <= 0) {
- $denyMsg .= "此招聘报名日期已报满,暂时不能报名";
- }
- try {
- bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime);
- } catch (Throwable $e) {
- $denyMsg .= $e->getMessage();
- }
- if (empty($denyMsg)) {
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":bizid"] = $bizInfo["biz_id"];
- $sqlParam[":biz_workerid"] = $bizInfo["biz_workerid"];
- $sqlParam[":accremark2"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员报名押金已冻结成功 \n";
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员报名押金已支付并冻结成功,待录用 \n";
- $sqlTemp = "";
- $sqlTemp .= " select @price:=ifnull(enroll_premoney,0) from biz_todowork where id=:bizid;";
- $sqlTemp .= " set @handle_id=0; ";
- $sqlTemp .= " select @handle_id:=id from biz_worker_account where biz_workerid=:biz_workerid and `type`=1 and `biz_catalog`=2 and `biz_id`=:bizid and `status`=1 limit 1;";
- $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
- $sqlTemp .= " select :biz_workerid , :nowtime , 1 , @price, 1, 2 , :bizid, :accremark2 from dual where ifnull(@handle_id,0)=0;";
- $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=1 "; //押金已支付冻结待录用
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)";
- $sqlTemp .= " select :nowtime, 1, :bizid from dual where 1=1;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- } else {
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":accid"] = $bizInfo["id"];
- $sqlParam[":bizid"] = $bizInfo["biz_id"];
- $sqlParam[":accremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 押金支付成功后但已不能再报名:{$denyMsg} \n";
- $sqlParam[":bizremark"] = $sqlParam[":accremark"];
- $sqlTemp = "";
- $sqlTemp .= " update biz_worker_account set updatetime=:nowtime ";
- $sqlTemp .= " ,remark=concat(:accremark,ifnull(remark,'')) where id=:accid;";
- $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=0 ";
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- }
- });
- }
- return true;
- break;
- default:throw new GeneralException("", "不支持的payBizCatalog!");
- }
- }
- function bizbase_enrollPassHandleCore($bizArgs)
- {
- $bizInfo = $bizArgs["bizInfo"];
- $workInfo = $bizArgs["workInfo"];
- $sqlParam = array();
- $sqlParam[":nowtime"] = time();
- $sqlParam[":bizid"] = $bizInfo["biz_id"];
- $sqlParam[":biz_traderid"] = $bizInfo["biz_traderid"];
- $sqlParam[":biz_workerid"] = $workInfo["biz_workerid"];
- $sqlParam[":feetotal"] = $bizArgs["payfeeTotal"];
- $sqlParam[":workDateStart"] = $bizArgs["workDateStart"];
- $sqlParam[":workDateFinish"] = $bizArgs["workDateFinish"];
- $sqlParam[":plandoDateStart"] = $bizArgs["plandoDateStart"];
- $sqlParam[":plandoDateFinish"] = $bizArgs["plandoDateFinish"];
- $sqlParam[":accremark2"] = "[" . date("Y-m-d H:i:s", time()) . "] 工单费用已冻结成功 \n";
- $sqlParam[":bizremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 报名已录用,工单费用已支付并冻结成功 \n";
- $sqlParam[":cancel_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 已被其他商家及时录取,本待录用申请被取消,押金退还 \n";
- $sqlTemp = "";
- $sqlTemp .= " set @handle_id=0; ";
- $sqlTemp .= " select @handle_id:=id from biz_trader_account where biz_traderid=:biz_traderid and `type`=1 and `biz_catalog`=8 and `biz_id`=:bizid and `status`=1 limit 1;";
- $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
- $sqlTemp .= " select :biz_traderid , :nowtime , 1 , :feetotal, 1, 8 , :bizid, :accremark2 from dual where ifnull(@handle_id,0)=0;";
- $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=2 "; //工单费用已支付并冻结成功 录用成功
- $sqlTemp .= " ,remark=concat(:bizremark,ifnull(remark,'')) where id=:bizid;";
- if (1 != $workInfo['urgent_level']) {
- //同天其他工单取消处理
- $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, :cancel_remark ";
- $sqlTemp .= " from biz_todowork tdwk";
- $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
- //大条件:同会员,待录用态,非本单
- //时间冲突:它单工作日期(多天的开始日期)与当单冲突检测
- // 它单工作日期(多天的开始日期)与当单工作时间段的冲突检测
- // 它单为多天模式下其时间跨度涵盖当单的时间冲突检测
- $sqlTempKKK = " where tdwk.id<>:bizid and tdwk.biz_workerid=:biz_workerid and tdwk.`status`=1
- and(
- (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish)
- or(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 .= $sqlTempKKK . ";";
- $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`=-4, tdwk.`teamstatus`=-4 "; //-4 被动取消
- $sqlTemp .= " , tdwk.remark=concat(:cancel_remark,ifnull(tdwk.remark,'')), tdwk.teamremark=concat(:cancel_remark,ifnull(tdwk.teamremark,'')) ";
- $sqlTemp .= $sqlTempKKK . ";";
- }
- //录用后消息通知
- $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)";
- $sqlTemp .= " select :nowtime, 0, :bizid from dual where 1=1;";
- //var_dump($sqlTemp);exit;
- $dataset = pdo_query3($sqlTemp, $sqlParam);
- }
- /*****************
- 可核查账号是否处于黑名单/停用状态;若是则可选抛出异常或返回false;
- 正常情况则返回$bizWorkerServicer实体记录信息,用于后续逻辑处理
- 另外,若已过停用截至日期,则自动重置回非停用状态!
- bizbase_verifyWorkerAccount("biz_worker/biz_servicer",$bizWorkerServicer,false/true);
- */
- function bizbase_verifyUserAccount($bizWorkerTrader, $throwException, $errMsg)
- { //核查账号是否有效,非停用/非黑名单
- if ($bizWorkerTrader["subsystem"] == SUBSYS_LABOUR_MINA) {
- $tablename = "biz_worker";
- }
- if ($bizWorkerTrader["subsystem"] == SUBSYS_CAPITAL_MINA) {
- $tablename = "biz_trader";
- }
- switch (intval($bizWorkerTrader["hanging"])) {
- case 1: //"警告"
- break;
- case 2: //"停用一周"
- case 3: //"停用两周"
- if ((time() - intval($bizWorkerTrader["hanging_endtime"])) <= 0) { //还处于停用期
- if ($throwException) {
- throw new GeneralException("", " {$errMsg} 账号还处于停用期,停用截至日期:" . date("Y-m-d H:i:s", intval($bizWorkerTrader["hanging_endtime"])));
- }
- return false;
- } else { //已过停用截至日期,则重置一下状态
- if ($tablename != "biz_worker" && $tablename != "biz_trader") {
- throw new GeneralException("", "输出的tablename参数不正确!");
- }
- pdo_query("update {$tablename} set updatetime=:nowtime, hanging=0, hangopt_remak=concat(:hangopt_remak,ifnull(hangopt_remak,''))
- where id=:id;", array(
- ":nowtime" => time(),
- ":hangopt_remak" => "[" . date("Y-m-d H:i:s", time()) . "] 已过停用截至日期,重置状态;\n",
- ":id" => intval($bizWorkerTrader["id"]),
- ));
- }
- break;
- case 4: //"拉入黑名单"
- if ($throwException) {
- throw new GeneralException("", " {$errMsg} 账号处于黑名单状态!");
- }
- return false;
- break;
- }
- // if (intval($bizWorkerTrader["blocked"])>0){
- // if ($throwException) throw new GeneralException("", " {$errMsg} 账号处于黑名单状态!");
- // else return false;
- // }
- return $bizWorkerTrader;
- }
- function bizbase_pasttimeTips($time)
- {
- $diff = time() - intval($time);
- if ($diff < 0) {
- throw new GeneralException("", "时间超前了啊");
- }
- $datetime1 = new \DateTime(date("Y-m-d H:i:s", $time));
- $datetime2 = new \DateTime(date("Y-m-d H:i:s", time()));
- $interval = $datetime1->diff($datetime2);
- $timeTips['y'] = intval($interval->format('%Y'));
- if ($timeTips['y'] > 0) {
- return $timeTips['y'] . "年前";
- }
- $timeTips['m'] = intval($interval->format('%m'));
- if ($timeTips['m'] > 0) {
- return $timeTips['m'] . "月前";
- }
- $timeTips['d'] = intval($interval->format('%d'));
- if ($timeTips['d'] > 0) {
- return $timeTips['d'] . "天前";
- }
- $timeTips['h'] = intval($interval->format('%H'));
- if ($timeTips['h'] > 0) {
- return $timeTips['h'] . "小时前";
- }
- $timeTips['i'] = intval($interval->format('%i'));
- if ($timeTips['i'] > 0) {
- return $timeTips['i'] . "分钟前";
- } else {
- return "刚才";
- }
- $timeTips['s'] = intval($interval->format('%s'));
- $timeTips['a'] = intval($interval->format('%a'));
- return $timeTips;
- }
- /**********************LBS相关逻辑**************************************/
- function bizbase_lbsEntityHandle($fromSubSystem, $handleMode, $ajaxdata, $GPC)
- {
- switch ($handleMode) {
- case "fetchAddressByLocation":
- $coordtype = isset($ajaxdata["coordtype"]) ? $ajaxdata["coordtype"] : $GPC["coordtype"];
- if (empty(trim($coordtype))) {
- $coordtype = "";
- }
- $lat = isset($ajaxdata["lat"]) ? $ajaxdata["lat"] : $GPC["lat"];
- if (empty(trim($lat))) {
- throw new GeneralException("", "没有传递lat参数 !");
- }
- $lng = isset($ajaxdata["lng"]) ? $ajaxdata["lng"] : $GPC["lng"];
- if (empty(trim($lng))) {
- throw new GeneralException("", "没有传递lng参数 !");
- }
- $backdata = basebaidumap_fetchplace($lat, $lng, $coordtype);
- $backdata = $backdata["addressComponent"];
- return $backdata;
- break;
- default:
- throw new GeneralException("", "不支持的handleMode!");
- }
- }
|