<?php
|
|
namespace app\admin\command\settlement;
|
use think\console\Command;
|
use think\console\Input;
|
use think\console\Output;
|
use think\Db;
|
use app\common\model\User as ModelUser;
|
use app\api\logic\SettlementRecord as LogicSettlementRecord;
|
/**
|
* 结算聚合订单
|
*/
|
class JtkOrder extends Command
|
{
|
protected $model = null;
|
|
protected function configure()
|
{
|
$this->setName('settlementJtk')->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('jtk_union_order_commission')->field("member_id")->where(['is_settle'=>0,'tk_status'=>3])->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('jtk_union_order_commission')->where(['member_id'=>$user_id,'is_settle'=>0,'tk_status'=>3])->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('jtk_union_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("结算成功");
|
}
|
|
|
}
|