添加:参与消费返利商品指定时间段内只能购买一次该商品
This commit is contained in:
parent
77ee4bbf34
commit
7b3570a8a6
|
|
@ -20,6 +20,8 @@ use app\common\models\Order;
|
|||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use app\common\facades\Setting;
|
||||
use Yunshop\Rebate\models\GoodsRebate;
|
||||
use Yunshop\Rebate\models\Rebate;
|
||||
|
||||
/**
|
||||
* Class Privilege
|
||||
|
|
@ -180,6 +182,8 @@ class Privilege extends BaseModel
|
|||
$this->validateMemberGroupLimit($member);
|
||||
$this->validateBuyMultipleLimit($num);
|
||||
$this->validateTimeLimits($member,$num);
|
||||
|
||||
$this->validateRebate($member,$num);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -203,6 +207,8 @@ class Privilege extends BaseModel
|
|||
$this->validateMemberGroupLimit($member);
|
||||
$this->validateBuyMultipleLimit($num);
|
||||
$this->validateTimeLimits($member,$num);
|
||||
|
||||
$this->validateRebate($member,$num);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -582,4 +588,45 @@ class Privilege extends BaseModel
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 消费返利商品判断
|
||||
public function validateRebate($member,$num){
|
||||
// 判断:是否开启消费返利
|
||||
$goodsRebate = GoodsRebate::where('goods_id',$this->goods_id)->first();
|
||||
if($goodsRebate->is_open == 1){
|
||||
// 判断:当前返利记录是否已经失效 最后一条返利信息已失效或者已结算 则允许重新购买 状态:0=冻结中,1=待结算,2=已结算,3=已失效,4=已退款(失效)
|
||||
$endTime = Rebate::where('uid', $member->uid)
|
||||
->where('goods_id', $this->goods_id)
|
||||
->max('expect_thaw_time');
|
||||
if(empty($endTime)) return false;
|
||||
$endInfo = Rebate::where('uid', $member->uid)
|
||||
->where('goods_id', $this->goods_id)
|
||||
->where('expect_thaw_time', $endTime)
|
||||
->first();
|
||||
if(!$endInfo || in_array($endInfo->status,[2,3,4])) return false;
|
||||
// 获取已经返利的 最大时间
|
||||
$maxTime = Rebate::where('uid', $member->uid)
|
||||
->where('goods_id', $this->goods_id)
|
||||
->where('status', 2)
|
||||
->max('reality_thaw_time');
|
||||
if(empty($maxTime)) return false;
|
||||
$lastInfo = Rebate::where('uid', $member->uid)
|
||||
->where('goods_id', $this->goods_id)
|
||||
->where('status', 2)
|
||||
->where('reality_thaw_time', $maxTime)
|
||||
->first();
|
||||
if(!$lastInfo) return false;
|
||||
$lastInfo = $lastInfo->toArray();
|
||||
if($lastInfo['is_repurchase'] != 1) throw new AppException('未到复购时间');
|
||||
// 判断:需要复购 最后一次结算时间N天内
|
||||
$set = Setting::get('plugin.rebate');
|
||||
$repurchase_day = $set['repurchase_day'] ?? 0;
|
||||
$limitTime = strtotime(date("Y-m-d H:i:s",$maxTime)." +{$repurchase_day} day");
|
||||
if($limitTime >= time()) throw new AppException('已超过复购时间');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -159,10 +159,12 @@ class Rebate extends BaseModel{
|
|||
public static function rebateThaw(){
|
||||
$time = time();
|
||||
// 预计解冻时间 低于当前时间 解冻
|
||||
self::where('expect_thaw_time','<=', $time)->update([
|
||||
'status' => 1,
|
||||
'reality_thaw_time' => $time
|
||||
]);
|
||||
self::where('expect_thaw_time','<=',$time)
|
||||
->where('status',0)
|
||||
->update([
|
||||
'status' => 1,
|
||||
'reality_thaw_time' => $time
|
||||
]);
|
||||
// 执行 已解冻佣金结算到账
|
||||
self::rebateSettlement();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,12 @@
|
|||
</div>
|
||||
</el-form-item>
|
||||
<template v-if="set.is_switch == 1">
|
||||
<el-form-item label="复购限制时间">
|
||||
<el-input v-model.number="set.repurchase_day" min="0" type="number" class="shortInput">
|
||||
<template slot="prepend">需要在复购返利结算后</template>
|
||||
<template slot="append">天内复购</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="返利季度">
|
||||
<el-input placeholder="请输入返利总季度" v-model.number="set.total_quarter" min="0" type="number" class="shortInput">
|
||||
<template slot="prepend">总共返利</template>
|
||||
|
|
@ -137,6 +143,7 @@
|
|||
// 设置信息
|
||||
set:{
|
||||
is_switch: Number("{{ $set['is_switch'] ?? 0 }}"),
|
||||
repurchase_day: Number("{{ $set['repurchase_day'] ?? 0 }}"),
|
||||
total_quarter: "{{ $set['total_quarter'] ?? '' }}",
|
||||
quarter_list: JSON.parse('{!! json_encode($set['quarter_list']) !!}') || {},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -735,7 +735,7 @@ class PluginApplication extends \app\common\services\PluginApplication
|
|||
});
|
||||
|
||||
// 经销商佣金解冻 每5分钟执行一次
|
||||
\Cron::add('Team-dividend', '*/5 * * * *', function () {
|
||||
\Cron::add('Team-dividend-rebate-thaw', '*/5 * * * *', function () {
|
||||
(new \Yunshop\TeamDividend\services\TimedTaskService)->rebateThaw();
|
||||
return;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -398,10 +398,12 @@ class TimedTaskService
|
|||
public static function rebateThaw(){
|
||||
$time = time();
|
||||
// 预计解冻时间 低于当前时间 解冻
|
||||
TeamDividendModel::where('expect_thaw_time','<=', $time)->update([
|
||||
'status' => 0,
|
||||
'reality_thaw_time' => $time
|
||||
]);
|
||||
TeamDividendModel::where('expect_thaw_time','<=',$time)
|
||||
->where('status',2)
|
||||
->update([
|
||||
'status' => 0,
|
||||
'reality_thaw_time' => $time
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue