提交 be049fe2 authored 作者: 窦斌's avatar 窦斌

edit

上级 e9ce935a
<?php
namespace App\Console\Commands;
use App\Models\RechargeOrder;
use App\Services\CommonService;
use Illuminate\Console\Command;
use DB;
class CalculateOrderPrice extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'CalculateOrderPrice';
/**
* The console command description.
*
* @var string
*/
protected $description = '十日生成账单';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$company_id = [14];
$start_time = date("Y-m-01",strtotime('-1 month'));
$end_time = date("Y-m-01",time());
foreach($company_id as $k => $v){
try {
//获取取消的订单信息
$order1 = RechargeOrder::where('reo_company_id', $v)
->where('reo_sg', 1)//是否已经上图1否2是
->where('reo_type', 2)//类型1充值2扣费
->where('reo_refund', 1)//退费类型1未退费2取消退费3阶梯退费
->whereBetween('reo_create_time', [$start_time, $end_time])
->leftjoin('orders', 'orders.order_num', '=', 'recharge_order.reo_order_number')
->whereIn('order_status', [50, 55])
->select('order_num')
->get();
$order1 = CommonService::dataToArray($order1);
$xct_num = array_column($order1, 'order_num');
//计算退款金额
$cxt = 0.5 * count($order1);
$cxtk['reo_adm_id'] = 164;
$cxtk['reo_company_id'] = $v;//公司id
$cxtk['reo_order_number'] = 'TKC' . CommonService::creactNumber();
$cxtk['reo_price'] = $cxt;
$cxtk['reo_pay_state'] = 2;
$cxtk['reo_state'] = 1;
$cxtk['reo_create_time'] = date("Y-m-d H:i:s");
$cxtk['reo_pay_time'] = date("Y-m-d H:i:s");
$cxtk['reo_pay_way'] = 6;
$cxtk['reo_paid_money'] = $cxt;
$cxtk['reo_pay_check'] = 1;
$cxtk['reo_type'] = 1;
$cxtk['reo_client_type'] = 3;
$cxtk['reo_remaek'] = '取消订单退款';
DB::beginTransaction(); //开启事务
//添加取消退款记录
$rea = RechargeOrder::insert($cxtk);
//更改已取消退款状态
$reb = RechargeOrder::whereIn('reo_order_number',$xct_num)
->update(['reo_refund'=>2]);
//公司账号退款充值
$update_res = DB::table('admin_recharge')
->where('adre_company_id', $v)//公司id
->increment('adre_banlance',$cxt);
if($rea && $reb && $update_res) {
DB::commit();
$jttorder = RechargeOrder::where('reo_company_id', $v)
->where('reo_type', 2)
->where('reo_refund', 1)
->whereBetween('reo_create_time', [$start_time, $end_time])
->select('reo_id')
->get();
$jttorder = CommonService::dataToArray($jttorder);
$reo_id = array_column($jttorder, 'reo_id');
$jt_num = count($jttorder);
$price = DB::table('recharge_refund')->where('rer_company_id',$v)->where('rer_min','<=',$jt_num)->where('rer_max','>=',$jt_num)->value('rer_price');
if(empty($price)){
$price = DB::table('recharge_refund')->where('rer_company_id',0)->where('rer_min','<=',$jt_num)->where('rer_max','>=',$jt_num)->value('rer_price');
}
if($price<0.5){
$allprice = (0.5-$price);
$allprice = (float)$allprice;
$allprice = $allprice * $jt_num;
$allprice = sprintf("%.2f", $allprice); // 保留2位小数
$cxtk['reo_adm_id'] = 164;
$cxtk['reo_company_id'] = $v;//公司id
$cxtk['reo_order_number'] = 'TKJ' . CommonService::creactNumber();
$cxtk['reo_price'] = $allprice;
$cxtk['reo_pay_state'] = 2;
$cxtk['reo_state'] = 1;
$cxtk['reo_create_time'] = date("Y-m-d H:i:s");
$cxtk['reo_pay_time'] = date("Y-m-d H:i:s");
$cxtk['reo_pay_way'] = 5;
$cxtk['reo_paid_money'] = $allprice;
$cxtk['reo_pay_check'] = 1;
$cxtk['reo_type'] = 1;
$cxtk['reo_client_type'] = 3;
$cxtk['reo_remaek'] = '阶梯价退款';
DB::beginTransaction(); //开启事务
//添加阶梯价退款记录
$rec = RechargeOrder::insert($cxtk);
//更改已取消退款状态
$red = RechargeOrder::whereIn('reo_id',$reo_id)
->update(['reo_refund'=>3,'reo_paid_money'=>$price]);
//公司账号退款充值
$update_rea = DB::table('admin_recharge')
->where('adre_company_id', $v)//公司id
->increment('adre_banlance',$allprice);
if($rec && $red && $update_rea) {
DB::commit();
}else{
DB::rollBack();
continue;
}
}
}else{
DB::rollBack();
continue;
}
CommonService::addLog('操作完成', json_encode([$cxt, $jt_num,$price,0.5-$price,$allprice]), $v,'CalculateOrderPrice');
}catch (Exception $e) {
DB::rollBack();
continue;
// 处理错误
}
}
echo 1;exit;
}
}
......@@ -51,6 +51,7 @@ class Kernel extends ConsoleKernel
$schedule->command('GetJdPurchaseOrder')->everyFiveMinutes();//抓取京东供销平台订单 每五分钟执行一次
$schedule->command('GetJdPurchaseRefund')->everyFiveMinutes();//抓取京东供销平台退款 每五分钟执行一次
$schedule->command('UpdateBsnNum')->dailyAt('00:03');//每天0点三分执行一次
$schedule->command('CalculateOrderPrice')->monthlyOn(10, '03:00');//每月10号凌晨3点执行一次
}
/**
......
Markdown 格式
0% 或
您添加了 0 人 到此讨论。请谨慎行事。
请先完成此评论的编辑!
请 注册 或者 后发表评论