Explorar el Código

确认订单修改

plf hace 3 años
padre
commit
7a5270051f

+ 8 - 0
src/main/java/com/caimei/modules/coupon/dao/CmCouponDao.java

@@ -8,6 +8,7 @@ import com.caimei.modules.user.entity.CmUser;
 import com.caimei.modules.user.entity.NewCmShop;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -78,4 +79,11 @@ public interface CmCouponDao extends CrudDao<CmCoupon> {
      * @return
      */
     List<CmCoupon> findNotRedeemedCoupon();
+
+    /**
+     * 修改优惠券使用状态
+     *
+     * @param clubCouponId
+     */
+    void updateClubCoupon(@Param("clubCouponId") Integer clubCouponId, @Param("orderId") Integer orderId);
 }

+ 9 - 2
src/main/java/com/caimei/modules/order/dao/NewOrderDao.java

@@ -157,16 +157,23 @@ public interface NewOrderDao extends CrudDao<NewOrder> {
     CmCoupon findClubCouponById(Integer clubCouponId);
 
     /**
-     * 保存优惠券与订单信息
+     * 保存优惠券与订单关联信息
      *
      * @param orderRecord
      */
     void insertCouponOrderRecord(CmCouponOrderRecord orderRecord);
 
     /**
-     * 更新优惠券与订单信息
+     * 更新优惠券与订单关联信息
      *
      * @param orderRecord
      */
     void updateCouponOrderRecord(CmCouponOrderRecord orderRecord);
+
+    /**
+     * 删除优惠券与订单关联信息
+     *
+     * @param id
+     */
+    void deleteCouponOrderRecord(Integer id);
 }

+ 11 - 1
src/main/java/com/caimei/modules/order/entity/NewOrder.java

@@ -1,6 +1,7 @@
 package com.caimei.modules.order.entity;
 
 import com.caimei.modules.bulkpurchase.entity.OrderInvoice;
+import com.caimei.modules.coupon.entity.CmCouponOrderRecord;
 import com.caimei.modules.product.entity.CmPromotion;
 import com.thinkgem.jeesite.common.persistence.DataEntity;
 
@@ -136,7 +137,8 @@ public class NewOrder extends DataEntity<NewOrder> {
      * 优惠券机构关联ID
      */
     private Integer clubCouponId;
-    private Double couponAmount;
+    private Double couponAmount;    //优惠券抵扣金额
+    private CmCouponOrderRecord couponOrderRecord;    //优惠券信息
 
     public Integer getClubCouponId() {
         return clubCouponId;
@@ -1040,5 +1042,13 @@ public class NewOrder extends DataEntity<NewOrder> {
     public void setCouponAmount(Double couponAmount) {
         this.couponAmount = couponAmount;
     }
+
+    public CmCouponOrderRecord getCouponOrderRecord() {
+        return couponOrderRecord;
+    }
+
+    public void setCouponOrderRecord(CmCouponOrderRecord couponOrderRecord) {
+        this.couponOrderRecord = couponOrderRecord;
+    }
 }
 

+ 16 - 1
src/main/java/com/caimei/modules/order/service/NewOrderService.java

@@ -241,10 +241,14 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
                 newOrderDao.update(newOrder);
             }
             //优惠券相关
+            CmCouponOrderRecord orderRecord = newOrderDao.findOrderCouponRecord(newOrder.getOrderID());
+            if (orderRecord != null && newOrder.getClubCouponId() == null) {
+                //修改订单时,不使用优惠券
+                newOrderDao.deleteCouponOrderRecord(orderRecord.getId());
+            }
             if (newOrder.getClubCouponId() != null && newOrder.getClubCouponId() > 0) {
                 CmCoupon coupon = newOrderDao.findClubCouponById(newOrder.getClubCouponId());
                 if (coupon != null) {
-                    CmCouponOrderRecord orderRecord = newOrderDao.findOrderCouponRecord(newOrder.getOrderID());
                     if (orderRecord == null) {
                         orderRecord = new CmCouponOrderRecord();
                         orderRecord.setCouponAmount(coupon.getCouponAmount());
@@ -1001,6 +1005,7 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
                 CmCouponOrderRecord couponRecord = newOrderDao.findOrderCouponRecord(newOrder.getOrderID());
                 if (couponRecord != null) {
                     newOrder.setClubCouponId(couponRecord.getClubCouponId());
+                    newOrder.setCouponOrderRecord(couponRecord);
                 }
             }
             //获取订单客户
@@ -2226,5 +2231,15 @@ public class NewOrderService extends CrudService<NewOrderDao, NewOrder> {
         map.put("couponList", couponList);
         return map;
     }
+
+    @Transactional(readOnly = false)
+    public Boolean updateClubCoupon(Integer clubCouponId, Integer orderId) {
+        CmCoupon coupon = newOrderDao.findClubCouponById(orderId);
+        if (coupon == null) {
+            return false;
+        }
+        cmCouponDao.updateClubCoupon(clubCouponId, orderId);
+        return true;
+    }
 }
 

+ 15 - 2
src/main/java/com/caimei/modules/order/web/NewOrderController.java

@@ -10,7 +10,11 @@ import com.caimei.modules.bulkpurchase.service.CmFinanceChargeService;
 import com.caimei.modules.bulkpurchase.service.PurchaseProductService;
 import com.caimei.modules.common.utils.ExcelUtil;
 import com.caimei.modules.common.utils.UploadUtils;
-import com.caimei.modules.order.dao.*;
+import com.caimei.modules.coupon.entity.CmCouponOrderRecord;
+import com.caimei.modules.order.dao.CmDiscernReceiptDao;
+import com.caimei.modules.order.dao.CmReceiptOrderRelationDao;
+import com.caimei.modules.order.dao.CmReturnedPurchaseDao;
+import com.caimei.modules.order.dao.NewOrderProductDao;
 import com.caimei.modules.order.entity.*;
 import com.caimei.modules.order.service.*;
 import com.caimei.modules.order.utils.OrderUtil;
@@ -532,6 +536,15 @@ public class NewOrderController extends BaseController {
     @RequestMapping("confirmOrder")
     public String confirmOrder(Integer orderID, Model model, RedirectAttributes redirectAttributes) {
         NewOrder order = newOrderService.get(orderID + "");
+        //优惠券确认消耗
+        CmCouponOrderRecord orderRecord = order.getCouponOrderRecord();
+        if (order.getCouponAmount() > 0 && orderRecord != null) {
+            Boolean isCoupon = newOrderService.updateClubCoupon(orderRecord.getClubCouponId(), orderID);
+            if (!isCoupon) {
+                addMessage(redirectAttributes, "订单内优惠券已被使用");
+                return "redirect:" + Global.getAdminPath() + "/order/detail/?id=" + orderID;
+            }
+        }
         //————————————————————————————-----
         //确认订单时处理买家商品价格库信息
         final Integer userID;
@@ -673,7 +686,7 @@ public class NewOrderController extends BaseController {
                 u.setUserMoney(userMoney - balancePayFee);
                 cmUserDao.updateMoney(u);
             }
-        }//
+        }
         addMessage(redirectAttributes, "确认订单成功");
         return "redirect:" + Global.getAdminPath() + "/order/detail/?id=" + orderID;
     }

+ 15 - 1
src/main/resources/mappings/modules/coupon/CmCouponMapper.xml

@@ -414,10 +414,12 @@
 		  cc.`couponsMode`,
 		  cc.`createDate`,
 		  cc.`delFlag`,
-		  a.id AS clubCouponId
+		  a.id AS clubCouponId,
+		  ccrc.redemptionCode
 		FROM
 		  cm_coupon_club a
 		  LEFT JOIN cm_coupon cc ON a.couponId = cc.id
+		  LEFT JOIN cm_coupon_redemption_code ccrc ON a.id = ccrc.clubCouponId
 		WHERE
 		  cc.delFlag = 0
 		  AND a.delFlag = 0
@@ -472,6 +474,18 @@
 		  AND NOW() BETWEEN a.startDate
 		  AND a.endDate
 		  AND a.couponsMode = 1
+		  AND ccrc.status = 1
 	</select>
+
+	<update id="updateClubCoupon">
+		UPDATE
+		  cm_coupon_club
+		SET
+		  STATUS = 2,
+		  orderId = #{orderId},
+		  useDate = NOW()
+		WHERE
+		  id = #{clubCouponId}
+	</update>
 	
 </mapper>

+ 5 - 0
src/main/resources/mappings/modules/order/OrderMapper.xml

@@ -898,6 +898,7 @@
 		  LEFT JOIN cm_coupon cc ON a.couponId = cc.id
 		WHERE
 		  a.id = #{clubCouponId}
+		  AND a.status = 1
 	</select>
 
 	<insert id="insertCouponOrderRecord">
@@ -931,4 +932,8 @@
 		WHERE
 		  orderId = #{orderId}
 	</update>
+
+	<delete id="deleteCouponOrderRecord">
+		DELETE FROM cm_coupon_order_record WHERE id = #{id}
+	</delete>
 </mapper>

+ 20 - 1
src/main/webapp/WEB-INF/views/modules/order/orderDetail.jsp

@@ -196,7 +196,26 @@
         <td>
             地址: ${fns:appendLast(fns:appendLast1(order.bpOrderUserinfo.province,order.bpOrderUserinfo.city,order.bpOrderUserinfo.town), order.bpOrderUserinfo.address)}</td>
         <fmt:setLocale value="zh_CN" scope="session"/>
-        <td>订单金额:<fmt:formatNumber value="${order.payTotalFee}" type="currency"/></td>
+        <td>
+            订单金额:<fmt:formatNumber value="${order.payTotalFee}" type="currency"/>&nbsp;
+            <c:if test="${not empty order.couponOrderRecord}">
+                <c:if test="${order.couponOrderRecord.couponType eq 0}">
+                    <a href=""><font color="red">活动券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount}</font></a>
+                </c:if>
+                <c:if test="${order.couponOrderRecord.couponType eq 1}">
+                    <a href=""><font color="red">品类券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount}</font></a>
+                </c:if>
+                <c:if test="${order.couponOrderRecord.couponType eq 2}">
+                    <a href=""><font color="red">用户专享券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount}</font></a>
+                </c:if>
+                <c:if test="${order.couponOrderRecord.couponType eq 3}">
+                    <a href=""><font color="red">店铺券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount}</font></a>
+                </c:if>
+                <c:if test="${order.couponOrderRecord.couponType eq 4}">
+                    <a href=""><font color="red">新用户券抵扣¥${order.couponOrderRecord.couponAmount},满${order.couponOrderRecord.touchPrice}减${order.couponOrderRecord.couponAmount}</font></a>
+                </c:if>
+            </c:if>
+        </td>
     </tr>
     <tr>
         <td>