调整活动奖励逻辑
parent
89830ee9f0
commit
ce27c4d16e
|
|
@ -435,7 +435,8 @@ class OrderController extends AdminController
|
||||||
$column->row($packagesBox->collapsable());
|
$column->row($packagesBox->collapsable());
|
||||||
$logsBox = Box::make('操作记录', $orderLogoGrid);
|
$logsBox = Box::make('操作记录', $orderLogoGrid);
|
||||||
$column->row($logsBox->collapsable());
|
$column->row($logsBox->collapsable());
|
||||||
$activityBox = Box::make('参与活动', Grid::make(OrderActivity::with('activity'), function (Grid $grid) {
|
$activityBuilder = OrderActivity::with('activity')->where('order_id', $id);
|
||||||
|
$activityBox = Box::make('参与活动', Grid::make($activityBuilder, function (Grid $grid) {
|
||||||
$grid->column('activity.title', '活动名称');
|
$grid->column('activity.title', '活动名称');
|
||||||
$grid->column('show', '活动详情')->display(function () {
|
$grid->column('show', '活动详情')->display(function () {
|
||||||
return '查看';
|
return '查看';
|
||||||
|
|
|
||||||
|
|
@ -44,31 +44,42 @@ class SendCoupons
|
||||||
$partSkus = ProductPartSku::with('part')->whereIn('sku_id', array_keys($_products))->get();
|
$partSkus = ProductPartSku::with('part')->whereIn('sku_id', array_keys($_products))->get();
|
||||||
foreach ($partSkus as $partSku) {
|
foreach ($partSkus as $partSku) {
|
||||||
if ($partSku->part?->is_show) {
|
if ($partSku->part?->is_show) {
|
||||||
if (isset($inValidParts[$partSku->part_id])) {
|
$inValidParts[$partSku->part_id][$partSku->sku_id] = $_products[$partSku->sku_id] ?? 0;
|
||||||
$inValidParts[$partSku->part_id] += $_products[$partSku->sku_id] ?? 0;
|
// if (isset($inValidParts[$partSku->part_id])) {
|
||||||
} else {
|
// $inValidParts[$partSku->part_id] += $_products[$partSku->sku_id] ?? 0;
|
||||||
$inValidParts[$partSku->part_id] = $_products[$partSku->sku_id] ?? 0;
|
// } else {
|
||||||
}
|
// $inValidParts[$partSku->part_id] = $_products[$partSku->sku_id] ?? 0;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// dd($inValidParts);
|
||||||
//根据分区获取活动
|
//根据分区获取活动
|
||||||
$partActivities = ActivityProductPart::with(['activity', 'activity.gifts'])->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 = [];
|
||||||
|
$partActivities->each(function ($item) use (&$activityArr) {
|
||||||
|
$activityArr[$item->activity_id][] = $item->part_id;
|
||||||
|
});
|
||||||
foreach ($partActivities as $partActivity) {
|
foreach ($partActivities as $partActivity) {
|
||||||
//获取活动的赠送规则
|
//获取活动的赠品赠送规则
|
||||||
$_giftsRule = $partActivity->activity?->gifts_rule;
|
$_couponsRule = $partActivity->activity?->coupons_rule;
|
||||||
//判断是否首单:times=0为仅首单赠送, 1为不限
|
//判断是否首单:times=0为仅首单赠送, 1为不限
|
||||||
if ($_giftsRule['times'] == 0 && UserCoupon::where('activity_id', $partActivity->activity_id)->exists()) {
|
if ($_couponsRule['times'] == 0 && UserCoupon::where('activity_id', $partActivity->activity_id)->exists()) {
|
||||||
continue;//提前结束本次循环
|
continue;//提前结束本次循环
|
||||||
}
|
}
|
||||||
//判断是否满足门槛
|
//判断是否满足门槛
|
||||||
if (bcdiv($_giftsRule['value'], 100) > $inValidParts[$partActivity->part_id]) {
|
$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;//提前结束本次循环
|
continue;//提前结束本次循环
|
||||||
}
|
}
|
||||||
//赠券
|
//赠券
|
||||||
(new CouponService())->receiveActivityCoupons($partActivity->activity, $order->user, $order->id);
|
(new CouponService())->receiveActivityCoupons($partActivity->activity, $order->user);
|
||||||
|
|
||||||
//记录订单参与活动信息
|
//记录订单参与活动信息
|
||||||
OrderActivity::firstOrCreate([
|
OrderActivity::firstOrCreate([
|
||||||
|
|
|
||||||
|
|
@ -381,18 +381,23 @@ class OrderService
|
||||||
$partSkus = ProductPartSku::with('part')->whereIn('sku_id', array_keys($_products))->get();
|
$partSkus = ProductPartSku::with('part')->whereIn('sku_id', array_keys($_products))->get();
|
||||||
foreach ($partSkus as $partSku) {
|
foreach ($partSkus as $partSku) {
|
||||||
if ($partSku->part?->is_show) {
|
if ($partSku->part?->is_show) {
|
||||||
if (isset($inValidParts[$partSku->part_id])) {
|
$inValidParts[$partSku->part_id][$partSku->sku_id] = $_products[$partSku->sku_id] ?? 0;
|
||||||
$inValidParts[$partSku->part_id] += $_products[$partSku->sku_id] ?? 0;
|
// if (isset($inValidParts[$partSku->part_id])) {
|
||||||
} else {
|
// $inValidParts[$partSku->part_id] += $_products[$partSku->sku_id] ?? 0;
|
||||||
$inValidParts[$partSku->part_id] = $_products[$partSku->sku_id] ?? 0;
|
// } else {
|
||||||
}
|
// $inValidParts[$partSku->part_id] = $_products[$partSku->sku_id] ?? 0;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// dd($inValidParts);
|
||||||
//根据分区获取活动
|
//根据分区获取活动
|
||||||
$partActivities = ActivityProductPart::with(['activity', 'activity.gifts'])->whereHas('activity', function (Builder $query) {
|
$partActivities = ActivityProductPart::with(['activity', 'activity.gifts'])->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 = [];
|
||||||
|
$partActivities->each(function ($item) use (&$activityArr) {
|
||||||
|
$activityArr[$item->activity_id][] = $item->part_id;
|
||||||
|
});
|
||||||
$giveGifts = [];
|
$giveGifts = [];
|
||||||
foreach ($partActivities as $partActivity) {
|
foreach ($partActivities as $partActivity) {
|
||||||
//获取活动的赠品赠送规则
|
//获取活动的赠品赠送规则
|
||||||
|
|
@ -402,7 +407,13 @@ class OrderService
|
||||||
continue;//提前结束本次循环
|
continue;//提前结束本次循环
|
||||||
}
|
}
|
||||||
//判断是否满足门槛
|
//判断是否满足门槛
|
||||||
if (bcdiv($_giftsRule['value'], 100) > $inValidParts[$partActivity->part_id]) {
|
$inValidGoods = [];
|
||||||
|
foreach ($inValidParts as $key => $part) {
|
||||||
|
if (in_array($key, $activityArr[$partActivity->activity_id])) {
|
||||||
|
$inValidGoods = array_merge($inValidGoods, $part);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bcmul($_giftsRule['value'], 100) > array_sum($inValidGoods)) {
|
||||||
continue;//提前结束本次循环
|
continue;//提前结束本次循环
|
||||||
}
|
}
|
||||||
//返回赠品
|
//返回赠品
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue