setName('settlementPdd')->setDescription('拼多多订单结算'); } /** * select member_id from tb_pdd_order_commission where tk_earning_time >= #{startTime} and #{endTime} >= tk_earning_time and is_settle = 0 and tk_status = 5 group by member_id * * @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('pdd_order_commission')->field("member_id")->where(['is_settle'=>0,'tk_status'=>5])->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('pdd_order_commission')->where(['member_id'=>$user_id,'is_settle'=>0,'tk_status'=>5])->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('pdd',$total_money,$user_id,$title); } $res_2 = Db::name('pdd_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("结算成功"); } }