管理津贴结算
parent
2884a85cbd
commit
eb13478d19
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace App\Enums;
|
||||
|
||||
enum DealerManageSubsidyStatus: int {
|
||||
enum DealerEarningStatus: int {
|
||||
case Pending = 0;
|
||||
case Completed = 5;
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace App\Enums;
|
||||
|
||||
enum DealerEarningType: int {
|
||||
case ManageSubsidy = 1;
|
||||
case ManagerSubsidy = 2;
|
||||
case PurchaseSubsidy = 3;
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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',
|
||||
];
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
@ -173,6 +173,12 @@ class AppSettingSeeder extends Seeder
|
|||
],
|
||||
'remarks' => '会员奖励配置',
|
||||
],
|
||||
'dealer' => [
|
||||
'value' => [
|
||||
'fee_rate' => '6', // 手续费比例(百分比)
|
||||
],
|
||||
'remarks' => '经销商配置',
|
||||
],
|
||||
] as $key => $values) {
|
||||
Setting::firstOrCreate(['key' => $key], $values);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue