6
0
Fork 0

管理津贴结算

release
李静 2022-01-15 12:08:07 +08:00
parent 2884a85cbd
commit eb13478d19
7 changed files with 80 additions and 38 deletions

View File

@ -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);
}
}

View File

@ -2,7 +2,7 @@
namespace App\Enums;
enum DealerManageSubsidyStatus: int {
enum DealerEarningStatus: int {
case Pending = 0;
case Completed = 5;
}

View File

@ -0,0 +1,9 @@
<?php
namespace App\Enums;
enum DealerEarningType: int {
case ManageSubsidy = 1;
case ManagerSubsidy = 2;
case PurchaseSubsidy = 3;
}

View File

@ -0,0 +1,41 @@
<?php
namespace App\Models;
use App\Enums\DealerEarningStatus;
use App\Enums\DealerEarningType;
use Illuminate\Database\Eloquent\Model;
class DealerEarning extends Model
{
protected $casts = [
'start_at' => '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);
}
}

View File

@ -1,25 +0,0 @@
<?php
namespace App\Models;
use App\Enums\DealerManageSubsidyStatus;
use Illuminate\Database\Eloquent\Model;
class DealerManageSubsidy extends Model
{
protected $casts = [
'start_at' => 'datetime',
'end_at' => 'datetime',
'status' => DealerManageSubsidyStatus::class,
'completed_at' => 'datetime',
];
protected $fillable = [
'user_id',
'total_amount',
'start_at',
'end_at',
'status',
'completed_at',
];
}

View File

@ -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');
}
}

View File

@ -173,6 +173,12 @@ class AppSettingSeeder extends Seeder
],
'remarks' => '会员奖励配置',
],
'dealer' => [
'value' => [
'fee_rate' => '6', // 手续费比例(百分比)
],
'remarks' => '经销商配置',
],
] as $key => $values) {
Setting::firstOrCreate(['key' => $key], $values);
}