diff --git a/app/Console/Commands/OrderProfitCommand.php b/app/Console/Commands/OrderProfitCommand.php new file mode 100644 index 00000000..ce56a076 --- /dev/null +++ b/app/Console/Commands/OrderProfitCommand.php @@ -0,0 +1,104 @@ +value; + while (true) { + $page = 0; + + $orders = Order::with([ + 'profits' => fn($q) => $q->where('status', 0) + ]) + // 订单已完成 + ->where('status', Order::STATUS_COMPLETED) + // 没有售后订单 + ->whereDoesntHave('afterSales') + // 售后期过了 + ->where('completed_at', '<', now()->subDays($saleDays)) + // 未支付提成 + ->whereNull('profit_paid') + + ->limit(200); + + foreach ($orders as $order) { + foreach($order->profits as $profit) { + try { + DB::beginTransaction(); + if ($payWay === PayWay::WxpayTransfer->value) { + if (!$profit->pay_no) { + $profit->update([ + 'pay_no' => serial_number(), + 'pay_way' => $payWay + ]); + } + $service->wechatTransfer($profit); + } + DB::commit(); + } catch (BizException $e) { + DB::rollBack(); + } + } + // 没有待付款的提成记录 + if (!$order->profits()->where('status', 0)->exists()) { + // 更新订单 + $order->update(['profit_paid' => now()]); + } + } + + $page++; + + if ($page === 0) { + sleep(60); + } elseif ($page === 1) { + sleep(30); + } else { + sleep(15); + } + } + } +} diff --git a/app/Models/Order.php b/app/Models/Order.php index 24964dd1..79660f17 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -55,6 +55,7 @@ class Order extends Model 'pay_at' => 'datetime', 'completed_at' => 'datetime', 'auto_complete_at' => 'datetime', + 'profit_paid' => 'datetime', 'status' => 'int', 'is_change' => 'bool', ]; @@ -96,6 +97,7 @@ class Order extends Model 'inviter_id', 'market_price', 'cost_price', + 'profit_paid', ]; /** diff --git a/app/Services/DistributeService.php b/app/Services/DistributeService.php index d5525c04..0a5f6d83 100644 --- a/app/Services/DistributeService.php +++ b/app/Services/DistributeService.php @@ -177,7 +177,7 @@ class DistributeService * 返现记录支付成功 * * @param \App\Models\OrderProfit $profit - * @param mixed $data + * @param mixed $data [paid_at, remarks, pay_way] */ public function success(OrderProfit $profit, $data = null) { diff --git a/database/migrations/2022_07_26_110411_add_profit_paid_to_orders_table.php b/database/migrations/2022_07_26_110411_add_profit_paid_to_orders_table.php new file mode 100644 index 00000000..3519aad5 --- /dev/null +++ b/database/migrations/2022_07_26_110411_add_profit_paid_to_orders_table.php @@ -0,0 +1,32 @@ +timestamp('profit_paid')->nullable()->comment('提成支付完成时间'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('orders', function (Blueprint $table) { + $table->dropColumn('profit_paid'); + }); + } +}