setName('settlementJd')->setDescription('京东订单结算'); } /** * * @param Input $input * @param Output $output * @return void */ protected function execute(Input $input, Output $output) { $time = strtotime('-1 month'); $start_time = date('Y-m-d H:i:s',mktime(0,0,0,date('m',$time),01,date('Y',$time))); //上个月的开始时间 $end_time = date("Y-m-d H:i:s",mktime(23,59,59,date('m',$time),date('t',$time),date('Y',$time))); //查询上月带结算的订单 Db::startTrans(); $uids = Db::name('jingdong_order_commission')->field("member_id")->where(['is_settle'=>0,'tk_status'=>17])->whereTime('tk_earning_time','between',[$start_time,$end_time])->group('member_id')->select(); if(!empty($uids)){ foreach($uids as $uidarr){ $user_id = $uidarr['member_id']; $ids = []; $order = Db::name('jingdong_order_commission')->where(['member_id'=>$user_id,'is_settle'=>0,'tk_status'=>17])->whereTime('tk_earning_time','between',[$start_time,$end_time])->select(); $total_money = 0; foreach($order as $item){ array_push($ids,$item['id']); $total_money += $item['pub_share_fee']; } if($total_money >= 0.01){ $title = date("Y-m").'京东佣金结算'; ModelUser::money('inc',$total_money,$user_id,$title); LogicSettlementRecord::writeLog('jd',$total_money,$user_id,$title); } $res_2 = Db::name('jingdong_order_commission')->whereIn('id',$ids)->update(['is_settle'=>1,'update_time'=>time()]); if(!$res_2){ Db::rollback(); mylog('用户京东订单结算失败','userId:'.$user_id,"errorInfo"); $output->info("结算失败(-2)"); break; } } Db::commit(); } $output->info("结算成功"); } }