getNotify(); //file_put_contents('./wechat_pay.log', var_export($data,true),FILE_APPEND); if ($data['return_code'] === 'SUCCESS' && $data['result_code'] === 'SUCCESS') { // @todo 去更新下原订单的支付状态 $order_no = $data['out_trade_no']; $update = [ 'order_no'=>$order_no, 'pay_money'=>$data['total_fee'] / 100, 'pay_time'=>time(), 'transaction_no'=>$data['transaction_id'], 'state'=> 1, ]; try { $res = Db::name('CloudCleanOrder')->where('order_no',$order_no)->update($update); if ($res){ $this->selectClean($order_no, $data['openid']); // 返回接收成功的回复 ob_clean(); echo $wechat->getNotifySuccessReply(); } }catch (\Throwable $e){ file_put_contents('./wechat_pay.log', $e->getMessage(),FILE_APPEND); } } } /** * 分配保洁 */ public function selectClean($order_no = 0,$openid = 0){ $sql = Db::name('CloudCleanOrder') ->alias('o') ->where('m.openid',Db::raw('o.service_openid')) ->where('complete','<',Db::raw('second')) ->field('count(*)') ->buildSql(); $clean = Db::name('CloudMember') ->alias('m') ->field($sql.' as counts,m.id, m.openid, m.nickname') ->where('is_clean',1) ->where('m.openid','<>',$openid) ->order('counts','asc') ->order('id','asc') ->select(); if (!$clean) { file_put_contents('./wechat_pay.log', "\nnot find cleaner\n",FILE_APPEND); return false; } $first = current($clean); Db::name('CloudCleanOrder')->where('order_no',$order_no)->update(['service_openid'=>$first['openid']]); //dump($res); } }