|
@@ -92,6 +92,8 @@ class CouponDetailService
|
|
|
throw new BusinessException("优惠券余量不足");
|
|
|
}
|
|
|
$periodJson['now_nbr'] = 1;
|
|
|
+ // 手动发券会传来时间
|
|
|
+ $periodJson['gain_datetime'] = $params['coupon_detail_gain_datetime'] ?? date('Y-m-d H:i:s');
|
|
|
if (!empty($periodJson['nbr'])) {
|
|
|
for ($i = 0; $i < $periodJson['nbr']; $i++) {
|
|
|
$periodParams = self::generatePeriod($periodJson);
|
|
@@ -112,12 +114,11 @@ class CouponDetailService
|
|
|
Db::commit();
|
|
|
} catch (BusinessException $e) {
|
|
|
Db::rollBack();
|
|
|
- Log::error("发券失败:".$e->getMessage());
|
|
|
+ Log::error("发券失败:" . $e->getMessage());
|
|
|
throw new BusinessException($e->getMessage());
|
|
|
} catch (\Exception $e) {
|
|
|
-// dump($e->getMessage());
|
|
|
Db::rollBack();
|
|
|
- Log::error("发券失败:".$e->getMessage());
|
|
|
+ Log::error("发券失败:" . $e->getMessage());
|
|
|
throw new BusinessException("优惠券发放失败");
|
|
|
}
|
|
|
}
|
|
@@ -204,63 +205,75 @@ class CouponDetailService
|
|
|
$val = $periodJson['val'] - 1;
|
|
|
if ($val < 1) {
|
|
|
if ($now_nbr == 1) {
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00');
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59');
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime($periodJson['gain_datetime']));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime($periodJson['gain_datetime']));
|
|
|
} else {
|
|
|
$now_nbr -= 1;
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime("+" . $now_nbr . ' day'));
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime("+" . $now_nbr . ' day'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime($periodJson['gain_datetime'] . "+" . $now_nbr . ' day'));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime($periodJson['gain_datetime'] . "+" . $now_nbr . ' day'));
|
|
|
}
|
|
|
} else {
|
|
|
if ($now_nbr == 1) {
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00');
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime("+" . $val . ' day'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime($periodJson['gain_datetime']));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime($periodJson['gain_datetime'] . "+" . $val . ' day'));
|
|
|
} else {
|
|
|
$now_nbr -= 1;
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime("+" . ((($val + 1) * $now_nbr)) . " day"));
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime("+" . ((($val + 1) * $now_nbr) + $val) . " day"));
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime($periodJson['gain_datetime'] . "+" . ((($val + 1) * $now_nbr)) . " day"));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime($periodJson['gain_datetime'] . "+" . ((($val + 1) * $now_nbr) + $val) . " day"));
|
|
|
}
|
|
|
}
|
|
|
} elseif ($periodJson['unit'] == 'week') {
|
|
|
$val = $periodJson['val'] - 1;
|
|
|
+ // 选的日期的周一距离今周周一是几个周
|
|
|
+ $timestamp = strtotime($periodJson['gain_datetime']);
|
|
|
+ $gainWeekDay = date("w", $timestamp);
|
|
|
+ $gainWeekAdd = date("w", $gainWeekDay) == 1 ? 0 : 1 - $gainWeekDay;
|
|
|
+ $gainMonday = date("Y-m-d 00:00:00", strtotime("$gainWeekAdd days", $timestamp));
|
|
|
+ $nowMonday = date('Y-m-d 00:00:00', strtotime('this week Monday'));
|
|
|
+
|
|
|
+ $interval = (new \DateTime(date($gainMonday)))->diff(new \DateTime($nowMonday));
|
|
|
+ $weekCut = $interval->days / 7;
|
|
|
if ($val < 1) {
|
|
|
if ($now_nbr == 1) {
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime('this week Monday'));
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime('this week Sunday'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = $gainMonday;
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime($gainMonday . "+6 days"));
|
|
|
} else {
|
|
|
$now_nbr -= 1;
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday')) . "+" . $now_nbr . ' week'));
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime(date('Y-m-d 23:59:59', strtotime('this week Sunday')) . "+" . $now_nbr . ' week'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday')) . "+" . ($now_nbr + $weekCut) . ' week'));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime(date('Y-m-d 23:59:59', strtotime('this week Sunday')) . "+" . ($now_nbr + $weekCut) . ' week'));
|
|
|
}
|
|
|
} else {
|
|
|
if ($now_nbr == 1) {
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime('this week Monday'));
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime(date('Y-m-d 23:59:59', strtotime('this week Sunday')) . "+" . $val . ' week'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = $gainMonday;
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime(date('Y-m-d 23:59:59', strtotime('this week Sunday')) . "+" . ($val + $weekCut) . ' week'));
|
|
|
} else {
|
|
|
$now_nbr -= 1;
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday')) . "+" . ((($val + 1) * $now_nbr)) . ' week'));
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime(date('Y-m-d 23:59:59', strtotime('this week Sunday')) . "+" . ((($val + 1) * $now_nbr) + $val) . ' week'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-d 00:00:00', strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday')) . "+" . ((($val + 1) * $now_nbr) + $weekCut) . ' week'));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-d 23:59:59', strtotime(date('Y-m-d 23:59:59', strtotime('this week Sunday')) . "+" . ((($val + 1) * $now_nbr) + $val + $weekCut) . ' week'));
|
|
|
}
|
|
|
}
|
|
|
} elseif ($periodJson['unit'] == 'month') {
|
|
|
$val = $periodJson['val'] - 1;
|
|
|
+ // 选的日期的1号距离今月1号是几个月
|
|
|
+ $interval = (new \DateTime(date('Y-m-01 00:00:00', strtotime($periodJson['gain_datetime']))))->diff(new \DateTime(date('Y-m-01 00:00:00')));
|
|
|
+ $monthCut = $interval->m + ($interval->y * 12);
|
|
|
if ($val < 1) {
|
|
|
if ($now_nbr == 1) {
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-01 00:00:00');
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-t 23:59:59');
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-01 00:00:00', strtotime($periodJson['gain_datetime']));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-t 23:59:59', strtotime($periodJson['gain_datetime']));
|
|
|
} else {
|
|
|
$now_nbr -= 1;
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-01 00:00:00', strtotime("+" . $now_nbr . ' month'));
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-t 23:59:59', strtotime(date('Y-m-01 00:00:00')."+" . $now_nbr . ' month'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-01 00:00:00', strtotime("+" . ($now_nbr + $monthCut) . ' month'));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-t 23:59:59', strtotime(date('Y-m-01 00:00:00') . "+" . ($now_nbr + $monthCut) . ' month'));
|
|
|
}
|
|
|
} else {
|
|
|
if ($now_nbr == 1) {
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-01 00:00:00');
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-t 23:59:59', strtotime(date('Y-m-01 00:00:00')."+" . $val . ' month'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-01 00:00:00', strtotime($periodJson['gain_datetime']));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-t 23:59:59', strtotime(date('Y-m-01 00:00:00') . "+" . ($val + $monthCut) . ' month'));
|
|
|
} else {
|
|
|
$now_nbr -= 1;
|
|
|
- $params['coupon_detail_gain_datetime'] = date('Y-m-01 00:00:00', strtotime( "+" . ((($val + 1) * $now_nbr)) . ' month'));
|
|
|
- $params['coupon_detail_deadline_datetime'] = date('Y-m-t 23:59:59', strtotime(date('Y-m-01 00:00:00')."+" . ((($val + 1) * $now_nbr) + $val) . ' month'));
|
|
|
+ $params['coupon_detail_gain_datetime'] = date('Y-m-01 00:00:00', strtotime("+" . ((($val + 1) * $now_nbr) + $monthCut) . ' month'));
|
|
|
+ $params['coupon_detail_deadline_datetime'] = date('Y-m-t 23:59:59', strtotime(date('Y-m-01 00:00:00') . "+" . ((($val + 1) * $now_nbr) + $val + $monthCut) . ' month'));
|
|
|
}
|
|
|
}
|
|
|
}
|