调整下单listener通过活动发送优惠券
parent
9020b9501a
commit
b67c53c2c2
|
|
@ -55,50 +55,51 @@ class SendCoupons
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//存在有效分区时
|
||||||
// dd($inValidParts);
|
if ($inValidParts) {
|
||||||
//根据分区获取活动
|
//根据分区获取活动
|
||||||
$partActivities = ActivityProductPart::with(['activity', 'activity.coupons'])->whereHas('activity', function (Builder $query) {
|
$partActivities = ActivityProductPart::with(['activity', 'activity.coupons'])->whereHas('activity', function (Builder $query) {
|
||||||
return $query->where('is_use', true)->where('started_at', '<', now())->where('ended_at', '>=', now());
|
return $query->where('is_use', true)->where('started_at', '<', now())->where('ended_at', '>=', now());
|
||||||
})->whereIn('part_id', array_keys($inValidParts))->get();
|
})->whereIn('part_id', array_keys($inValidParts))->get();
|
||||||
$activityArr = [];
|
$activityArr = [];
|
||||||
$partActivities->each(function ($item) use (&$activityArr) {
|
$partActivities->each(function ($item) use (&$activityArr) {
|
||||||
$activityArr[$item->activity_id][] = $item->part_id;
|
$activityArr[$item->activity_id][] = $item->part_id;
|
||||||
});
|
});
|
||||||
$sendedActivities = [];
|
$sendedActivities = [];
|
||||||
foreach ($partActivities as $partActivity) {
|
foreach ($partActivities as $partActivity) {
|
||||||
//判断该活动是否已处理
|
//判断该活动是否已处理
|
||||||
if (in_array($partActivity->activity_id, $sendedActivities)) {
|
if (in_array($partActivity->activity_id, $sendedActivities)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
$sendedActivities[] = $partActivity->activity_id;
|
|
||||||
//获取活动的赠品赠送规则
|
|
||||||
$_couponsRule = $partActivity->activity?->coupons_rule;
|
|
||||||
//判断是否首单:times=0为仅首单赠送, 1为不限
|
|
||||||
if ($_couponsRule['times'] == 0 && UserCoupon::where([
|
|
||||||
'activity_id' => $partActivity->activity_id,
|
|
||||||
'user_id' => $order->user_id,
|
|
||||||
])->exists()) {
|
|
||||||
continue;//提前结束本次循环
|
|
||||||
}
|
|
||||||
//判断是否满足门槛
|
|
||||||
$inValidGoods = [];
|
|
||||||
foreach ($inValidParts as $key => $part) {
|
|
||||||
if (in_array($key, $activityArr[$partActivity->activity_id])) {
|
|
||||||
$inValidGoods = array_merge($inValidGoods, $part);
|
|
||||||
}
|
}
|
||||||
}
|
$sendedActivities[] = $partActivity->activity_id;
|
||||||
if (bcmul($_couponsRule['value'], 100) > array_sum($inValidGoods)) {
|
//获取活动的赠品赠送规则
|
||||||
continue;//提前结束本次循环
|
$_couponsRule = $partActivity->activity?->coupons_rule;
|
||||||
}
|
//判断是否首单:times=0为仅首单赠送, 1为不限
|
||||||
//赠券
|
if ($_couponsRule['times'] == 0 && UserCoupon::where([
|
||||||
(new CouponService())->receiveActivityCoupons($partActivity->activity, $order->user);
|
'activity_id' => $partActivity->activity_id,
|
||||||
|
'user_id' => $order->user_id,
|
||||||
|
])->exists()) {
|
||||||
|
continue;//提前结束本次循环
|
||||||
|
}
|
||||||
|
//判断是否满足门槛
|
||||||
|
$inValidGoods = [];
|
||||||
|
foreach ($inValidParts as $key => $part) {
|
||||||
|
if (in_array($key, $activityArr[$partActivity->activity_id])) {
|
||||||
|
$inValidGoods = array_merge($inValidGoods, $part);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bcmul($_couponsRule['value'], 100) > array_sum($inValidGoods)) {
|
||||||
|
continue;//提前结束本次循环
|
||||||
|
}
|
||||||
|
//赠券
|
||||||
|
(new CouponService())->receiveActivityCoupons($partActivity->activity, $order->user);
|
||||||
|
|
||||||
//记录订单参与活动信息
|
//记录订单参与活动信息
|
||||||
OrderActivity::firstOrCreate([
|
OrderActivity::firstOrCreate([
|
||||||
'order_id'=>$order->id,
|
'order_id'=>$order->id,
|
||||||
'activity_id'=>$partActivity->activity_id,
|
'activity_id'=>$partActivity->activity_id,
|
||||||
]);
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue