Explorar o código

Merge branch 'v4.7.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v4.7.0dev

From-wh %!s(int64=2) %!d(string=hai) anos
pai
achega
90c820df36

+ 1 - 0
crmeb/app/api/controller/v1/order/StoreOrderController.php

@@ -430,6 +430,7 @@ class StoreOrderController
      * 订单删除
      * 订单删除
      * @param Request $request
      * @param Request $request
      * @return mixed
      * @return mixed
+     * @throws \Psr\SimpleCache\InvalidArgumentException
      */
      */
     public function del(Request $request)
     public function del(Request $request)
     {
     {

+ 4 - 4
crmeb/app/jobs/UnpaidOrderCancelJob.php

@@ -33,7 +33,7 @@ class UnpaidOrderCancelJob extends BaseJobs
     public function doJob($orderId)
     public function doJob($orderId)
     {
     {
         /** @var StoreOrderServices $services */
         /** @var StoreOrderServices $services */
-        $services  = app()->make(StoreOrderServices::class);
+        $services = app()->make(StoreOrderServices::class);
         $orderInfo = $services->get($orderId);
         $orderInfo = $services->get($orderId);
         if (!$orderInfo) {
         if (!$orderInfo) {
             return true;
             return true;
@@ -49,21 +49,21 @@ class UnpaidOrderCancelJob extends BaseJobs
         }
         }
         /** @var StoreOrderCartInfoServices $cartServices */
         /** @var StoreOrderCartInfoServices $cartServices */
         $cartServices = app()->make(StoreOrderCartInfoServices::class);
         $cartServices = app()->make(StoreOrderCartInfoServices::class);
-        $cartInfo     = $cartServices->getOrderCartInfo($orderId);
+        $cartInfo = $cartServices->getOrderCartInfo($orderId);
         /** @var StoreOrderRefundServices $refundServices */
         /** @var StoreOrderRefundServices $refundServices */
         $refundServices = app()->make(StoreOrderRefundServices::class);
         $refundServices = app()->make(StoreOrderRefundServices::class);
 
 
         try {
         try {
             $res = $refundServices->transaction(function () use ($orderInfo, $refundServices) {
             $res = $refundServices->transaction(function () use ($orderInfo, $refundServices) {
                 //回退积分和优惠卷
                 //回退积分和优惠卷
-                $refundServices->integralAndCouponBack($orderInfo);
+                $refundServices->integralAndCouponBack($orderInfo, 'cancel');
                 //回退库存和销量
                 //回退库存和销量
                 $refundServices->regressionStock($orderInfo);
                 $refundServices->regressionStock($orderInfo);
                 return true;
                 return true;
             });
             });
             if ($res) {
             if ($res) {
                 $orderInfo->is_del = 1;
                 $orderInfo->is_del = 1;
-                $orderInfo->mark   = '订单未支付已超过系统预设时间';
+                $orderInfo->mark = '订单未支付已超过系统预设时间';
                 $orderInfo->save();
                 $orderInfo->save();
             }
             }
             return $res;
             return $res;

+ 1 - 1
crmeb/app/services/order/StoreOrderComputedServices.php

@@ -391,7 +391,7 @@ class StoreOrderComputedServices extends BaseServices
                     foreach ($temp_num as $k => $v) {
                     foreach ($temp_num as $k => $v) {
                         if (isset($temp[$v['temp_id']]['appoint']) && $temp[$v['temp_id']]['appoint'] && isset($freeList[$v['temp_id']])) {
                         if (isset($temp[$v['temp_id']]['appoint']) && $temp[$v['temp_id']]['appoint'] && isset($freeList[$v['temp_id']])) {
                             $free = $freeList[$v['temp_id']];
                             $free = $freeList[$v['temp_id']];
-                            $condition = $v['type'] == 1 ? $free['number'] <= $v['number'] : $free['number'] >= $v['number'];
+                            $condition = $free['number'] <= $v['number'];
                             if ($free['price'] <= $v['price'] && $condition) {
                             if ($free['price'] <= $v['price'] && $condition) {
                                 unset($temp_num[$k]);
                                 unset($temp_num[$k]);
                             }
                             }

+ 14 - 13
crmeb/app/services/order/StoreOrderRefundServices.php

@@ -426,25 +426,26 @@ class StoreOrderRefundServices extends BaseServices
     /**
     /**
      * 回退积分和优惠卷
      * 回退积分和优惠卷
      * @param $order
      * @param $order
+     * @param string $type
      * @return bool
      * @return bool
      */
      */
-    public function integralAndCouponBack($order)
+    public function integralAndCouponBack($order, $type = 'refund')
     {
     {
         /** @var StoreOrderStatusServices $statusService */
         /** @var StoreOrderStatusServices $statusService */
         $statusService = app()->make(StoreOrderStatusServices::class);
         $statusService = app()->make(StoreOrderStatusServices::class);
         $res = true;
         $res = true;
-//        //回退优惠卷 拆分子订单不退优惠券
-//        if (!$order['pid'] && $order['coupon_id'] && $order['coupon_price']) {
-//            /** @var StoreCouponUserServices $couponUserServices */
-//            $couponUserServices = app()->make(StoreCouponUserServices::class);
-//            $res = $couponUserServices->recoverCoupon((int)$order['coupon_id']);
-//            $statusService->save([
-//                'oid' => $order['id'],
-//                'change_type' => 'coupon_back',
-//                'change_message' => '商品退优惠券',
-//                'change_time' => time()
-//            ]);
-//        }
+        //取消的订单退回优惠券
+        if ($type == 'cancel' && $order['coupon_id'] && $order['coupon_price']) {
+            /** @var StoreCouponUserServices $couponUserServices */
+            $couponUserServices = app()->make(StoreCouponUserServices::class);
+            $res = $couponUserServices->recoverCoupon((int)$order['coupon_id']);
+            $statusService->save([
+                'oid' => $order['id'],
+                'change_type' => 'coupon_back',
+                'change_message' => '商品退优惠券',
+                'change_time' => time()
+            ]);
+        }
         //回退积分
         //回退积分
         $order = $this->regressionIntegral($order);
         $order = $this->regressionIntegral($order);
         $statusService->save([
         $statusService->save([

+ 5 - 19
crmeb/app/services/order/StoreOrderServices.php

@@ -1855,9 +1855,10 @@ HTML;
 
 
     /**
     /**
      * 删除订单
      * 删除订单
-     * @param $uni
-     * @param $uid
+     * @param string $uni
+     * @param int $uid
      * @return bool
      * @return bool
+     * @throws \Psr\SimpleCache\InvalidArgumentException
      */
      */
     public function removeOrder(string $uni, int $uid)
     public function removeOrder(string $uni, int $uid)
     {
     {
@@ -1879,21 +1880,6 @@ HTML;
             'change_time' => time()
             'change_time' => time()
         ]);
         ]);
         if ($order->save() && $res) {
         if ($order->save() && $res) {
-            //未支付和已退款的状态下才可以退积分退库存退优惠券
-            if ($order['_status']['_type'] == 0 || $order['_status']['_type'] == -2) {
-                /** @var StoreOrderRefundServices $refundServices */
-                $refundServices = app()->make(StoreOrderRefundServices::class);
-                $this->transaction(function () use ($order, $refundServices) {
-                    //回退积分和优惠卷
-                    $res = $refundServices->integralAndCouponBack($order);
-                    //回退库存
-                    $res = $res && $refundServices->regressionStock($order);
-                    if (!$res) {
-                        throw new ApiException(100020);
-                    }
-                });
-
-            }
             return true;
             return true;
         } else
         } else
             throw new ApiException(100020);
             throw new ApiException(100020);
@@ -1924,7 +1910,7 @@ HTML;
         $refundServices = app()->make(StoreOrderRefundServices::class);
         $refundServices = app()->make(StoreOrderRefundServices::class);
 
 
         $this->transaction(function () use ($refundServices, $order) {
         $this->transaction(function () use ($refundServices, $order) {
-            $res = $refundServices->integralAndCouponBack($order) && $refundServices->regressionStock($order);
+            $res = $refundServices->integralAndCouponBack($order, 'cancel') && $refundServices->regressionStock($order);
             $order->is_del = 1;
             $order->is_del = 1;
             if (!($res && $order->save())) {
             if (!($res && $order->save())) {
                 throw new ApiException(100020);
                 throw new ApiException(100020);
@@ -2136,7 +2122,7 @@ HTML;
                 try {
                 try {
                     $this->transaction(function () use ($order, $refundServices) {
                     $this->transaction(function () use ($order, $refundServices) {
                         //回退积分和优惠卷
                         //回退积分和优惠卷
-                        $res = $refundServices->integralAndCouponBack($order);
+                        $res = $refundServices->integralAndCouponBack($order, 'cancel');
                         //回退库存和销量
                         //回退库存和销量
                         $res = $res && $refundServices->regressionStock($order);
                         $res = $res && $refundServices->regressionStock($order);
                         //修改订单状态
                         //修改订单状态

+ 1 - 1
crmeb/app/services/product/product/StoreProductServices.php

@@ -1815,7 +1815,7 @@ class StoreProductServices extends BaseServices
             $memberCardService = app()->make(MemberCardServices::class);
             $memberCardService = app()->make(MemberCardServices::class);
             $vipStatus = $memberCardService->isOpenMemberCard('vip_price');
             $vipStatus = $memberCardService->isOpenMemberCard('vip_price');
             foreach ($list as &$item) {
             foreach ($list as &$item) {
-                if (!($vipStatus && $item['is_vip'])) {
+                if (!$this->vipIsOpen(!!$item['is_vip'], $vipStatus)) {
                     $item['vip_price'] = 0;
                     $item['vip_price'] = 0;
                 }
                 }
             }
             }

+ 1 - 1
template/admin/src/components/couponList/index.vue

@@ -81,7 +81,7 @@ export default {
       isTemplate: false,
       isTemplate: false,
       loading: false,
       loading: false,
       tableFrom: {
       tableFrom: {
-        receive_type: 1,
+        receive_type: 3,
         page: 1,
         page: 1,
         limit: 10,
         limit: 10,
       },
       },

+ 1 - 1
template/admin/src/components/sendCoupons/index.vue

@@ -97,7 +97,7 @@ export default {
         page: 1, // 当前页
         page: 1, // 当前页
         limit: 15,
         limit: 15,
         coupon_title: '',
         coupon_title: '',
-        receive_type: 1,
+        receive_type: 3,
       },
       },
       total: 0, // 总条数
       total: 0, // 总条数
     };
     };

+ 11 - 7
template/admin/src/pages/marketing/storeCouponIssue/create.vue

@@ -18,13 +18,17 @@
         <FormItem label="优惠券名称">
         <FormItem label="优惠券名称">
           <Input v-model="formData.coupon_title" :maxlength="18" placeholder="请输入优惠券名称"></Input>
           <Input v-model="formData.coupon_title" :maxlength="18" placeholder="请输入优惠券名称"></Input>
         </FormItem>
         </FormItem>
+        <FormItem label="优惠券面值">
+          <InputNumber :min="1" :max="99999" v-model="formData.coupon_price"></InputNumber>
+        </FormItem>
         <FormItem label="发送方式">
         <FormItem label="发送方式">
           <RadioGroup v-model="formData.receive_type">
           <RadioGroup v-model="formData.receive_type">
-            <Radio :label="1">普通券</Radio>
-            <Radio :label="2">新人券</Radio>
-            <!-- <Radio :label="3">赠送</Radio> -->
-            <Radio :label="4">会员券</Radio>
+            <Radio :label="1">手动领取</Radio>
+            <Radio :label="2">新用户自动发放</Radio>
+            <Radio :label="3">后台赠送</Radio>
+            <Radio :label="4">付费会员专享</Radio>
           </RadioGroup>
           </RadioGroup>
+          <div class="tip">手动领取:用户需要手动领取优惠券;新用户自动发放:新注册的用户自动发放;后台赠送:后台发放制定用户或者添加到商品里面用户购买该商品获得;付费会员专享:仅付费会员可以领取和使用</div>
         </FormItem>
         </FormItem>
         <FormItem label="优惠劵类型">
         <FormItem label="优惠劵类型">
           <RadioGroup v-model="formData.type">
           <RadioGroup v-model="formData.type">
@@ -50,9 +54,6 @@
           </Select>
           </Select>
           <div class="info">选择商品的品类</div>
           <div class="info">选择商品的品类</div>
         </FormItem>
         </FormItem>
-        <FormItem label="优惠券面值">
-          <InputNumber :min="1" :max="99999" v-model="formData.coupon_price"></InputNumber>
-        </FormItem>
         <FormItem label="使用门槛">
         <FormItem label="使用门槛">
           <RadioGroup v-model="isMinPrice">
           <RadioGroup v-model="isMinPrice">
             <Radio :label="0">无门槛</Radio>
             <Radio :label="0">无门槛</Radio>
@@ -462,4 +463,7 @@ export default {
   right: 0;
   right: 0;
   transform: translate(50%, -50%);
   transform: translate(50%, -50%);
 }
 }
+.tip {
+  color: #888;
+}
 </style>
 </style>

+ 3 - 4
template/admin/src/pages/marketing/storeCouponIssue/index.vue

@@ -22,10 +22,9 @@
               <Select v-model="receive_type" placeholder="请选择" clearable @on-change="userSearchs">
               <Select v-model="receive_type" placeholder="请选择" clearable @on-change="userSearchs">
                 <Option value="all">全部</Option>
                 <Option value="all">全部</Option>
                 <Option value="1">手动领取</Option>
                 <Option value="1">手动领取</Option>
-                <Option value="2">新人券</Option>
-                <Option value="3">赠送券</Option>
-                <Option value="4">会员券</Option>
-                <Option value="5">购买券</Option>
+                <Option value="2">新用户自动发放</Option>
+                <Option value="3">后台赠送</Option>
+                <Option value="4">付费会员专享</Option>
               </Select>
               </Select>
             </FormItem>
             </FormItem>
           </Col>
           </Col>