浏览代码

确认订单时真正使用优惠券

chao 3 年之前
父节点
当前提交
c5af52b7d2

+ 9 - 0
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -1,6 +1,7 @@
 package com.caimei365.order.mapper;
 
 import com.caimei365.order.model.po.BalanceRecordPo;
+import com.caimei365.order.model.po.CouponOrderRecordPo;
 import com.caimei365.order.model.po.OrderPo;
 import com.caimei365.order.model.po.OrderProductPo;
 import com.caimei365.order.model.vo.*;
@@ -171,8 +172,16 @@ public interface OrderClubMapper {
      * 保存分享码使用记录
      */
     void insertOrderShareCodeRecord(OrderShareCodeRecordVo codeRecord);
+    /**
+     * 根据clubCouponId获取优惠券
+     */
+    CouponVo getClubCouponById(Integer clubCouponId);
     /**
      * 修改优惠券使用情况
      */
     void updateCouponClubStatus(Integer clubCouponId, Integer orderId);
+    /**
+     * 查询订单优惠信息
+     */
+    CouponOrderRecordPo getOrderCouponRecord(Integer orderId);
 }

+ 0 - 4
src/main/java/com/caimei365/order/mapper/SubmitMapper.java

@@ -93,10 +93,6 @@ public interface SubmitMapper {
      * 保存 订单用户地址
      */
     void insertOrderUserInfo(OrderUserInfoPo userInfo);
-    /**
-     * 根据clubCouponId获取优惠券
-     */
-    CouponVo getClubCouponById(Integer clubCouponId);
     /**
      * 保存订单优惠记录
      */

+ 11 - 6
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -10,10 +10,7 @@ import com.caimei365.order.mapper.OrderClubMapper;
 import com.caimei365.order.mapper.OrderCommonMapper;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.enums.OrderStatus;
-import com.caimei365.order.model.po.BalanceRecordPo;
-import com.caimei365.order.model.po.OrderPo;
-import com.caimei365.order.model.po.OrderProductPo;
-import com.caimei365.order.model.po.UserBeansHistoryPo;
+import com.caimei365.order.model.po.*;
 import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.RemoteCallService;
 import com.caimei365.order.service.OrderClubService;
@@ -212,8 +209,6 @@ public class OrderClubServiceImpl implements OrderClubService {
         return ResponseJson.success(map);
     }
 
-
-
     /**
      * 机构确认订单
      *
@@ -226,6 +221,16 @@ public class OrderClubServiceImpl implements OrderClubService {
             // 非待确认订单
             return ResponseJson.error("订单异常!", null);
         }
+        if (MathUtil.compare(order.getCouponAmount(), 0) > 0) {
+            // 确认订单时才真正使用优惠券
+            CouponOrderRecordPo couponOrderRecord = orderClubMapper.getOrderCouponRecord(orderId);
+            CouponVo coupon = orderClubMapper.getClubCouponById(couponOrderRecord.getClubCouponId());
+            if (coupon == null) {
+                return ResponseJson.error("订单内优惠券已被使用", null);
+            } else {
+                orderClubMapper.updateCouponClubStatus(couponOrderRecord.getClubCouponId(), orderId);
+            }
+        }
         Date date = new Date();
         String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
         String note = "【确认订单】";

+ 2 - 2
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -717,7 +717,7 @@ public class SubmitServiceImpl implements SubmitService {
             // 统计商品总金额
             productTotalFee.set(MathUtil.add(productTotalFee.get(), shopProductFee.get()).doubleValue());
         }
-        if (orderProductList.size()==0){
+        if (orderProductList.isEmpty()){
             return ResponseJson.error("订单商品数据异常!", null);
         }
         // 设置是否是二手订单
@@ -772,7 +772,7 @@ public class SubmitServiceImpl implements SubmitService {
         Double couponAmount = 0d;
         CouponVo coupon = null;
         if (null != orderParamBo.getClubCouponId() && orderParamBo.getClubCouponId() > 0) {
-            coupon = submitMapper.getClubCouponById(orderParamBo.getClubCouponId());
+            coupon = orderClubMapper.getClubCouponById(orderParamBo.getClubCouponId());
             if (null == coupon) {
                 // 设置手动回滚事务
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

+ 28 - 0
src/main/resources/mapper/OrderClubMapper.xml

@@ -436,4 +436,32 @@
         WHERE scr.openid = #{openId} AND osc.orderID = #{orderId}
         AND scr.delFlag = '0' AND osc.expiredTime > NOW()
     </select>
+    <select id="getClubCouponById" resultType="com.caimei365.order.model.vo.CouponVo">
+        SELECT
+        a.id AS clubCouponId,
+        cc.id AS couponId,
+        cc.couponAmount,
+        cc.touchPrice,
+        cc.startDate,
+        cc.endDate,
+        cc.couponType,
+        cc.userId,
+        cc.shopId,
+        cc.productType,
+        cc.categoryType
+        FROM cm_coupon_club a
+        LEFT JOIN cm_coupon cc ON a.couponId = cc.id
+        WHERE cc.delFlag = 0
+        AND a.delFlag = 0
+        AND a.id = #{clubCouponId}
+        AND a.status = 1
+        AND NOW() BETWEEN cc.startDate
+        AND cc.endDate
+        AND cc.status != 2
+    </select>
+    <select id="getOrderCouponRecord" resultType="com.caimei365.order.model.po.CouponOrderRecordPo">
+        SELECT id, orderId, clubCouponId, couponType, couponAmount, touchPrice, createDate
+        FROM cm_coupon_order_record
+        WHERE orderId = #{orderId}
+    </select>
 </mapper>

+ 0 - 23
src/main/resources/mapper/SubmitMapper.xml

@@ -138,27 +138,4 @@
         WHERE a.addressID = #{addressId}
         LIMIT 1
     </select>
-    <select id="getClubCouponById" resultType="com.caimei365.order.model.vo.CouponVo">
-        SELECT
-            a.id AS clubCouponId,
-            cc.id AS couponId,
-            cc.couponAmount,
-            cc.touchPrice,
-            cc.startDate,
-            cc.endDate,
-            cc.couponType,
-            cc.userId,
-            cc.shopId,
-            cc.productType,
-            cc.categoryType
-        FROM cm_coupon_club a
-        LEFT JOIN cm_coupon cc ON a.couponId = cc.id
-        WHERE cc.delFlag = 0
-        AND a.delFlag = 0
-        AND a.id = #{clubCouponId}
-        AND a.status = 1
-        AND NOW() BETWEEN cc.startDate
-        AND cc.endDate
-        AND cc.status != 2
-    </select>
 </mapper>