|
@@ -249,12 +249,12 @@ class CouponController extends Curd
|
|
|
$data = $this->inputFilter($params);
|
|
|
$data['coupon_id'] = "CU" . str_pad(SysSerial::getSerial(), 6, '0') . random_string(6, 'up');
|
|
|
if (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'date') {
|
|
|
- $data['coupon_validdate_day'] = null;
|
|
|
+ $data['coupon_validdate_day'] = 0;
|
|
|
$data['coupon_validdate_begin'] = date("Y-m-d H:i:s", strtotime($data['coupon_validdate_begin']));
|
|
|
$data['coupon_validdate_end'] = date("Y-m-d H:i:s", strtotime($data['coupon_validdate_end']));
|
|
|
} elseif (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'day') {
|
|
|
- $data['coupon_validdate_begin'] = null;
|
|
|
- $data['coupon_validdate_end'] = null;
|
|
|
+ $data['coupon_validdate_begin'] = '';
|
|
|
+ $data['coupon_validdate_end'] = '';
|
|
|
}
|
|
|
$couponJson = [];
|
|
|
if ($params['coupon_use_member'] == 'member' && isset($params['member_list'])) {
|
|
@@ -305,13 +305,16 @@ class CouponController extends Curd
|
|
|
return json_fail($this->validateClass->getError());
|
|
|
}
|
|
|
|
|
|
+ $params = $request->post();
|
|
|
+
|
|
|
Db::beginTransaction();
|
|
|
try {
|
|
|
[$id, $data] = $this->updateInput($request);
|
|
|
$originCouponNumber = $data['origin_coupon_number'];
|
|
|
- unset($data['origin_coupon_number']);
|
|
|
+ $originCouponValiddateDay = $data['origin_coupon_validdate_day'];
|
|
|
+ $originCouponValiddateEnd = $data['origin_coupon_validdate_end'];
|
|
|
+ unset($data['origin_coupon_number'], $data['origin_coupon_validdate_day'], $data['origin_coupon_validdate_end']);
|
|
|
$this->updateCouponGoods($request->post('goodsContentList'), $id);
|
|
|
- $this->doUpdate($id, $data);
|
|
|
if ($originCouponNumber == 0 && $data['coupon_number'] != 0) {
|
|
|
// 查已领取多少了
|
|
|
$detailCount = CouponDetail::where('join_detail_coupon_id', $id)->count();
|
|
@@ -326,12 +329,23 @@ class CouponController extends Curd
|
|
|
->limit($originCouponNumber - $data['coupon_number'])
|
|
|
->delete();
|
|
|
}
|
|
|
+ // 修改时间了
|
|
|
+ if ($params['coupon_use_time'] == 'day' && $originCouponValiddateDay != $data['coupon_validdate_day']) {
|
|
|
+ $this->updateDetailTimeForDay($id, $data['coupon_validdate_day']);
|
|
|
+ } elseif ($params['coupon_use_time'] == 'date' && $originCouponValiddateEnd != $data['coupon_validdate_end']) {
|
|
|
+ $this->updateDetailTimeForDate($id, $data['coupon_validdate_end']);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
// 激活状态,初始改为待领取
|
|
|
if ($data['coupon_status'] == 'ACTIVED') {
|
|
|
CouponDetail::where('join_detail_coupon_id', $id)->where('coupon_detail_status', 'INIT')->update(['coupon_detail_status' => 'PENDING']);
|
|
|
} elseif ($data['coupon_status'] == 'DISABLED') { // 禁用状态,未领取未使用的都是禁用
|
|
|
CouponDetail::where('join_detail_coupon_id', $id)->where('coupon_detail_status', '<>', 'USED')->update(['coupon_detail_status' => 'DISABLED']);
|
|
|
}
|
|
|
+
|
|
|
+ $this->doUpdate($id, $data);
|
|
|
+
|
|
|
Db::commit();
|
|
|
|
|
|
return json_success('success');
|
|
@@ -346,6 +360,50 @@ class CouponController extends Curd
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public function updateDetailTimeForDay($couponId, $day)
|
|
|
+ {
|
|
|
+ $details = CouponDetail::where('join_detail_coupon_id', $couponId)
|
|
|
+ ->where('coupon_detail_status', '<>', 'USED')
|
|
|
+ ->where('coupon_detail_deadline_datetime', '<>', '')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ try {
|
|
|
+ foreach ($details as $detail) {
|
|
|
+ $couponDetailGainDatetime = strtotime($detail['coupon_detail_gain_datetime']);
|
|
|
+ CouponDetail::where('coupon_detail_id', $detail['coupon_detail_id'])
|
|
|
+ ->update([
|
|
|
+ 'coupon_detail_deadline_datetime' => date('Y-m-d H:i:s', $couponDetailGainDatetime + ($day * 24 * 3600))
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ dump($e->getMessage());
|
|
|
+ throw new BusinessException("优惠券更新失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function updateDetailTimeForDate($couponId, $endDate)
|
|
|
+ {
|
|
|
+ dump($endDate);
|
|
|
+ $details = CouponDetail::where('join_detail_coupon_id', $couponId)
|
|
|
+ ->where('coupon_detail_status', '<>', 'USED')
|
|
|
+ ->where('coupon_detail_deadline_datetime', '<>', '')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ try {
|
|
|
+ foreach ($details as $detail) {
|
|
|
+ CouponDetail::where('coupon_detail_id', $detail['coupon_detail_id'])
|
|
|
+ ->update([
|
|
|
+ 'coupon_detail_deadline_datetime' => $endDate
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ dump($e->getMessage());
|
|
|
+ throw new BusinessException("优惠券更新失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public function updateCouponGoods($goods, $couponId)
|
|
|
{
|
|
|
try {
|
|
@@ -387,16 +445,20 @@ class CouponController extends Curd
|
|
|
$id = $request->post($primary_key);
|
|
|
$data = $this->inputFilter($params);
|
|
|
if (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'date') {
|
|
|
- $data['coupon_validdate_day'] = null;
|
|
|
+ $data['coupon_validdate_day'] = 0;
|
|
|
$data['coupon_validdate_begin'] = date("Y-m-d H:i:s", strtotime($data['coupon_validdate_begin']));
|
|
|
$data['coupon_validdate_end'] = date("Y-m-d H:i:s", strtotime($data['coupon_validdate_end']));
|
|
|
} elseif (!empty($params['coupon_use_time']) && $params['coupon_use_time'] == 'day') {
|
|
|
- $data['coupon_validdate_begin'] = null;
|
|
|
- $data['coupon_validdate_end'] = null;
|
|
|
+ $data['coupon_validdate_begin'] = '';
|
|
|
+ $data['coupon_validdate_end'] = '';
|
|
|
}
|
|
|
$model = $this->model->find($id);
|
|
|
// 原数量
|
|
|
$data['origin_coupon_number'] = $model->coupon_number;
|
|
|
+ // 原优惠天数
|
|
|
+ $data['origin_coupon_validdate_day'] = $model->coupon_validdate_day;
|
|
|
+ // 原结束时间
|
|
|
+ $data['origin_coupon_validdate_end'] = $model->coupon_validdate_end;
|
|
|
if (!$model) {
|
|
|
throw new BusinessException('记录不存在', 2);
|
|
|
}
|
|
@@ -443,6 +505,9 @@ class CouponController extends Curd
|
|
|
$couponJson['premises'] = $params['premises'];
|
|
|
$couponJson['premises_range'] = '部分门店可用';
|
|
|
}
|
|
|
+ if (empty($data['coupon_validdate_day'])) {
|
|
|
+ $data['coupon_validdate_day'] = 0;
|
|
|
+ }
|
|
|
|
|
|
$data['coupon_json'] = json_encode($couponJson, JSON_UNESCAPED_UNICODE);
|
|
|
|
|
@@ -584,16 +649,16 @@ class CouponController extends Curd
|
|
|
// 删除优惠券关联的产品
|
|
|
foreach ($ids as $id) {
|
|
|
$couponDetail = CouponDetail::with([
|
|
|
- 'coupon'=>function($query){
|
|
|
- $query->select('coupon_id','coupon_name');
|
|
|
+ 'coupon' => function ($query) {
|
|
|
+ $query->select('coupon_id', 'coupon_name');
|
|
|
}
|
|
|
- ])->where('join_detail_coupon_id',$id)
|
|
|
- ->where('join_coupon_detail_member_id','<>','')
|
|
|
+ ])->where('join_detail_coupon_id', $id)
|
|
|
+ ->where('join_coupon_detail_member_id', '<>', '')
|
|
|
->first();
|
|
|
- if (!empty($couponDetail)){
|
|
|
+ if (!empty($couponDetail)) {
|
|
|
Db::rollBack();
|
|
|
|
|
|
- return json_fail($couponDetail->coupon && $couponDetail->coupon->coupon_name ? $couponDetail->coupon->coupon_name."已被领取,无法删除,请禁用" : "删除的优惠券中有已被领取的,无法删除,请禁用");
|
|
|
+ return json_fail($couponDetail->coupon && $couponDetail->coupon->coupon_name ? $couponDetail->coupon->coupon_name . "已被领取,无法删除,请禁用" : "删除的优惠券中有已被领取的,无法删除,请禁用");
|
|
|
}
|
|
|
CouponGoods::where('join_goods_coupon_id', $id)->delete();
|
|
|
|