From 81ba6f420d5e2aea1222e3cf00cd0fa8b43ff318 Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Mon, 19 Sep 2022 17:43:13 +0800 Subject: [PATCH] order-profit send --- app/Console/Commands/OrderProfitCommand.php | 2 +- app/Services/DistributeService.php | 1 + database/factories/OrderProfitFactory.php | 34 +++++++++++++++++++++ database/seeders/OrderProfitSeeder.php | 20 ++++++++++++ tests/Feature/ExampleTest.php | 34 +++++++-------------- 5 files changed, 67 insertions(+), 24 deletions(-) create mode 100644 database/factories/OrderProfitFactory.php create mode 100644 database/seeders/OrderProfitSeeder.php diff --git a/app/Console/Commands/OrderProfitCommand.php b/app/Console/Commands/OrderProfitCommand.php index d9d6e0cd..43071f63 100644 --- a/app/Console/Commands/OrderProfitCommand.php +++ b/app/Console/Commands/OrderProfitCommand.php @@ -79,7 +79,7 @@ class OrderProfitCommand extends Command } // 没有待付款的提成记录 - Order::where(fn($q) => $q->whereHas('profits', fn($q) => $q->where('status', 2))->orWhereDoesntHave('profits')) + Order::where(fn($q) => $q->whereHas('profits', fn($q) => $q->where('status', '!=', 2))->orWhereDoesntHave('profits')) // 订单已完成 ->where('status', Order::STATUS_COMPLETED) // 没有售后订单 diff --git a/app/Services/DistributeService.php b/app/Services/DistributeService.php index 2dcf9dab..28b4f2bc 100644 --- a/app/Services/DistributeService.php +++ b/app/Services/DistributeService.php @@ -191,6 +191,7 @@ class DistributeService $filtered->push($item); } } + dd($filtered->toArray(), $money); if ($money < 1) { throw new BizException('金额小于 1, 无法打款'); } diff --git a/database/factories/OrderProfitFactory.php b/database/factories/OrderProfitFactory.php new file mode 100644 index 00000000..8d5d97b2 --- /dev/null +++ b/database/factories/OrderProfitFactory.php @@ -0,0 +1,34 @@ +first(); + $user = User::inRandomOrder()->whereHas('agent')->first(); + $agent = $user->agent; + return [ + 'order_id' => $order->id, + 'from_user_id' => $order->user_id, + 'user_id' => $user->id, + 'role' => $agent->slug . '-' . $agent->sort, + 'role_name' => $agent->name, + 'growth_value' => 0, + 'ratio' => 0, + 'money' => $this->faker->randomFloat(2, 0, 1), + ]; + } +} diff --git a/database/seeders/OrderProfitSeeder.php b/database/seeders/OrderProfitSeeder.php new file mode 100644 index 00000000..96296521 --- /dev/null +++ b/database/seeders/OrderProfitSeeder.php @@ -0,0 +1,20 @@ +count(100)->create(['status' => 4]); + } +} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php index a2893b2a..59cd0d37 100644 --- a/tests/Feature/ExampleTest.php +++ b/tests/Feature/ExampleTest.php @@ -2,10 +2,11 @@ namespace Tests\Feature; -use App\Models\Agent; +use App\Models\OrderProfit; +use App\Services\DistributeService; use Illuminate\Foundation\Testing\RefreshDatabase; +use Illuminate\Support\Facades\DB; use Tests\TestCase; -use Illuminate\Support\Str; class ExampleTest extends TestCase { @@ -16,26 +17,13 @@ class ExampleTest extends TestCase */ public function test_example() { - // 过滤掉 不是代理身份 的用户 - // 过滤掉 相同等级 的 后者 用户 - // 过滤掉等级 低于 上一个分钱 的用户 - $parents = [2, 3, 1, 5, 6, null]; - $filtered = []; - $last = null; - foreach($parents as $item) { - if (!$item) { - continue; - } - if (in_array($item, $filtered)) { - continue; - } - if ($last && $item < $last) { - continue; - } - $last = $item; - array_push($filtered, $item); - } - - dd($filtered); + $service = new DistributeService(); + try { + DB::beginTransaction(); + $service->wechatTransfers(OrderProfit::whereIn('id', [1, 5])->get()); + DB::commit(); + } catch (\Exception $e) { + DB::rollBack(); + } } }