From eb13478d19a9319ec2675737868bc14570fb09d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Sat, 15 Jan 2022 12:08:07 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=B4=A5=E8=B4=B4=E7=BB=93?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dealer/ManageSubsidySettleCommand.php | 25 +++++++---- ...sidyStatus.php => DealerEarningStatus.php} | 2 +- app/Enums/DealerEarningType.php | 9 ++++ app/Models/DealerEarning.php | 41 +++++++++++++++++++ app/Models/DealerManageSubsidy.php | 25 ----------- ...5_115032_create_dealer_earnings_table.php} | 10 +++-- database/seeders/AppSettingSeeder.php | 6 +++ 7 files changed, 80 insertions(+), 38 deletions(-) rename app/Enums/{DealerManageSubsidyStatus.php => DealerEarningStatus.php} (66%) create mode 100644 app/Enums/DealerEarningType.php create mode 100644 app/Models/DealerEarning.php delete mode 100644 app/Models/DealerManageSubsidy.php rename database/migrations/{2022_01_14_172541_create_dealer_manage_subsidies_table.php => 2022_01_15_115032_create_dealer_earnings_table.php} (65%) diff --git a/app/Console/Commands/Dealer/ManageSubsidySettleCommand.php b/app/Console/Commands/Dealer/ManageSubsidySettleCommand.php index b19b1d6e..c0c3df69 100644 --- a/app/Console/Commands/Dealer/ManageSubsidySettleCommand.php +++ b/app/Console/Commands/Dealer/ManageSubsidySettleCommand.php @@ -2,8 +2,9 @@ namespace App\Console\Commands\Dealer; -use App\Enums\DealerManageSubsidyStatus; -use App\Models\DealerManageSubsidy; +use App\Enums\DealerEarningStatus; +use App\Enums\DealerEarningType; +use App\Models\DealerEarning; use App\Models\DealerManageSubsidyLog; use Illuminate\Console\Command; use Illuminate\Support\Carbon; @@ -70,7 +71,7 @@ class ManageSubsidySettleCommand extends Command if ($this->option('force')) { $this->info("{$head}正在删除旧数据..."); - DealerManageSubsidy::where('start_at', $startAt)->where('end_at', $endAt)->delete(); + DealerEarning::manageSubsidy()->where('start_at', $startAt)->where('end_at', $endAt)->delete(); $this->info("{$head}数据删除成功"); } @@ -99,31 +100,37 @@ class ManageSubsidySettleCommand extends Command ->groupBy('user_id') ->get(); - $data = []; - + // 手续费比例(百分比) $time = now()->toDateTimeString(); + $feeRate = app_settings('dealer.fee_rate'); + $data = []; foreach ($subsidies as $key => $subsidy) { if ($key > 0 && $key%500 === 0) { - DealerManageSubsidy::insert($data); + DealerEarning::insert($data); $data = []; $time = now()->toDateTimeString(); } + $fee = bcmul(bcdiv($feeRate, '100', 10), $subsidy->total_amount, 3); + $data[] = [ 'user_id' => $subsidy->user_id, + 'total_amount' => $subsidy->total_amount, + 'fee' => $fee, + 'fee_rate' => $feeRate, + 'type' => DealerEarningType::ManageSubsidy, 'start_at' => $startAt, 'end_at' => $endAt, - 'total_amount' => $subsidy->total_amount, - 'status' => DealerManageSubsidyStatus::Pending, + 'status' => DealerEarningStatus::Pending, 'created_at' => $time, 'updated_at' => $time, ]; } if (count($data) > 0) { - DealerManageSubsidy::insert($data); + DealerEarning::insert($data); } } diff --git a/app/Enums/DealerManageSubsidyStatus.php b/app/Enums/DealerEarningStatus.php similarity index 66% rename from app/Enums/DealerManageSubsidyStatus.php rename to app/Enums/DealerEarningStatus.php index 2a6ed321..51e9e0be 100644 --- a/app/Enums/DealerManageSubsidyStatus.php +++ b/app/Enums/DealerEarningStatus.php @@ -2,7 +2,7 @@ namespace App\Enums; -enum DealerManageSubsidyStatus: int { +enum DealerEarningStatus: int { case Pending = 0; case Completed = 5; } diff --git a/app/Enums/DealerEarningType.php b/app/Enums/DealerEarningType.php new file mode 100644 index 00000000..4b60878b --- /dev/null +++ b/app/Enums/DealerEarningType.php @@ -0,0 +1,9 @@ + 'datetime', + 'end_at' => 'datetime', + 'type' => DealerEarningType::class, + 'status' => DealerEarningStatus::class, + 'completed_at' => 'datetime', + ]; + + protected $fillable = [ + 'user_id', + 'total_amount', + 'fee', + 'fee_rate', + 'type', + 'start_at', + 'end_at', + 'status', + 'completed_at', + ]; + + /** + * 仅查询管理补贴 + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeManageSubsidy($query) + { + return $query->where('type', DealerEarningType::ManageSubsidy); + } +} diff --git a/app/Models/DealerManageSubsidy.php b/app/Models/DealerManageSubsidy.php deleted file mode 100644 index 6e178d7b..00000000 --- a/app/Models/DealerManageSubsidy.php +++ /dev/null @@ -1,25 +0,0 @@ - 'datetime', - 'end_at' => 'datetime', - 'status' => DealerManageSubsidyStatus::class, - 'completed_at' => 'datetime', - ]; - - protected $fillable = [ - 'user_id', - 'total_amount', - 'start_at', - 'end_at', - 'status', - 'completed_at', - ]; -} diff --git a/database/migrations/2022_01_14_172541_create_dealer_manage_subsidies_table.php b/database/migrations/2022_01_15_115032_create_dealer_earnings_table.php similarity index 65% rename from database/migrations/2022_01_14_172541_create_dealer_manage_subsidies_table.php rename to database/migrations/2022_01_15_115032_create_dealer_earnings_table.php index 897bbbf6..8068ccf7 100644 --- a/database/migrations/2022_01_14_172541_create_dealer_manage_subsidies_table.php +++ b/database/migrations/2022_01_15_115032_create_dealer_earnings_table.php @@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -class CreateDealerManageSubsidiesTable extends Migration +class CreateDealerEarningsTable extends Migration { /** * Run the migrations. @@ -13,10 +13,13 @@ class CreateDealerManageSubsidiesTable extends Migration */ public function up() { - Schema::create('dealer_manage_subsidies', function (Blueprint $table) { + Schema::create('dealer_earnings', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('user_id'); $table->unsignedDecimal('total_amount', 10, 2)->comment('补贴总金额'); + $table->unsignedDecimal('fee', 10, 2)->default(0)->comment('手续费'); + $table->unsignedDecimal('fee_rate', 4, 2)->default(0)->comment('手续费率(百分比)'); + $table->tinyInteger('type')->comment('类型: 1=>管理津贴, 2=>管理者补贴, 3=>进货补贴, 4=>渠道补贴'); $table->timestamp('start_at')->comment('结算开始时间'); $table->timestamp('end_at')->comment('结算结束时间'); $table->tinyInteger('status')->default(0)->comment('状态: 0 待处理, 5 已付款'); @@ -25,6 +28,7 @@ class CreateDealerManageSubsidiesTable extends Migration $table->unique(['user_id', 'start_at', 'end_at']); $table->index(['start_at', 'end_at']); + $table->index('type'); }); } @@ -35,6 +39,6 @@ class CreateDealerManageSubsidiesTable extends Migration */ public function down() { - Schema::dropIfExists('dealer_manage_subsidies'); + Schema::dropIfExists('dealer_earnings'); } } diff --git a/database/seeders/AppSettingSeeder.php b/database/seeders/AppSettingSeeder.php index d53abca0..2985e00d 100644 --- a/database/seeders/AppSettingSeeder.php +++ b/database/seeders/AppSettingSeeder.php @@ -173,6 +173,12 @@ class AppSettingSeeder extends Seeder ], 'remarks' => '会员奖励配置', ], + 'dealer' => [ + 'value' => [ + 'fee_rate' => '6', // 手续费比例(百分比) + ], + 'remarks' => '经销商配置', + ], ] as $key => $values) { Setting::firstOrCreate(['key' => $key], $values); }