setName('settlementTb')->setDescription('淘宝订单结算'); } 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('taobao_order_commission')->field("member_id")->where(['is_settle'=>0,'tk_status'=>3,'refund_tag'=>0])->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('taobao_order_commission')->where(['member_id'=>$user_id,'is_settle'=>0,'tk_status'=>3,'refund_tag'=>0])->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('tb',$total_money,$user_id,$title); } $res_2 = Db::name('taobao_order_commission')->whereIn('id',$ids)->update(['is_settle'=>1,'update_time'=>time()]); if(!$res_2){ Db::rollback(); mylog('用户淘宝订单结算失败(-2)','userId:'.$user_id,"errorInfo"); $output->info("结算失败"); break; } } Db::commit(); } $output->info("结算成功"); } }