From 5685f5789e6f5b64086f25016ead33d787eb6ff0 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 27 Sep 2018 17:42:47 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=81=9C=E8=BD=A6=E5=88=B8=E6=AF=8F=E6=97=A5?= =?UTF-8?q?=E9=99=90=E9=A2=86=E6=A3=80=E6=9F=A5][=E6=96=B0=E5=A2=9E]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/mapper/WxCouponOrderMapper.java | 1 + .../service/impl/WxOrderServiceImpl.java | 55 ++++++++++++------- .../resources/mapper/WxCouponOrderMapper.xml | 29 ++++++---- 3 files changed, 53 insertions(+), 32 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 5d15eb009..7114abda2 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -14,6 +14,7 @@ public interface WxCouponOrderMapper extends CommonMapper { List findList(WxCouponOrder wxCouponOrder); Integer countList(WxCouponOrder wxCouponOrder); + Integer countCarList(Map params); List findListOfOrderedByDate(Map dateMap); List findListOfVerifiedByDate(Map dateMap); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 37a74ee56..b3bc03ff5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -23,9 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; @Service public class WxOrderServiceImpl implements WxOrderService { @@ -83,6 +81,7 @@ public class WxOrderServiceImpl implements WxOrderService { // + couponOrder ---待使用 int countOrder = 0, countCouponOrder = 0; WxOrder orderQ = new WxOrder(); + orderQ.setTenantId(user.getTenantId()); orderQ.setCouponId(counpon.getId()); orderQ.setCUserId(user.getId()); orderQ.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); @@ -93,12 +92,21 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.ORDER_IS_FAIL); } - WxCouponOrder couponOrderQ = new WxCouponOrder(); - couponOrderQ.setCouponId(counpon.getId()); - couponOrderQ.setCUserId(user.getId()); - //////couponOrderQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); try { - countCouponOrder = wxCouponOrderMapper.countList(couponOrderQ); + if (counpon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode())) { + // 停车券 每日限领1张 + Map params = new HashMap(); + params.put("couponId", counpon.getId()); + params.put("cUserId", user.getId()); + countCouponOrder = wxCouponOrderMapper.countCarList(params); + } else { + WxCouponOrder couponOrderQ = new WxCouponOrder(); + couponOrderQ.setTenantId(user.getTenantId()); + couponOrderQ.setCouponId(counpon.getId()); + couponOrderQ.setCUserId(user.getId()); + //////couponOrderQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode()); + countCouponOrder = wxCouponOrderMapper.countList(couponOrderQ); + } } catch (Exception e) { logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.ORDER_IS_FAIL); @@ -125,22 +133,27 @@ public class WxOrderServiceImpl implements WxOrderService { } // check 购买是否超限 - int count = 0; - try { - count = getUserCouponOrderCount(user, coupon); - } catch (Exception e) { - //解锁 - redisLock.unlock(couponIdStr, timeStr); - throw new MallinkException(ErrorCode.DB_FAIL); - } + if (coupon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode())) { - if (count >= coupon.getUseLimitQuantity()) { - //解锁 - redisLock.unlock(couponIdStr, timeStr); - logger.error("此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count); - throw new MallinkException(ErrorCode.ORDER_IS_LIMITED); + } else { + int count = 0; + try { + count = getUserCouponOrderCount(user, coupon); + } catch (Exception e) { + //解锁 + redisLock.unlock(couponIdStr, timeStr); + throw new MallinkException(ErrorCode.DB_FAIL); + } + + if (count >= coupon.getUseLimitQuantity()) { + //解锁 + redisLock.unlock(couponIdStr, timeStr); + logger.error("此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count); + throw new MallinkException(ErrorCode.ORDER_IS_LIMITED); + } } + try { // 减库存 coupon.setRemainInventory(coupon.getRemainInventory() - 1); diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index bbb0e00b7..ea29f6b5c 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -24,57 +24,46 @@ and `id` = #{id} - and `tenant_id` = #{tenantId} - and `coupon_id` = #{couponId} - and `c_user_id` = #{cUserId} - and `b_user_id` = #{bUserId} - and `order_id` = #{orderId} - and `expired_time` = #{expiredTime} - and `coupon_order_status` = #{couponOrderStatus} - and `create_date` = #{createDate} - and `update_date` = #{updateDate} - and `coupon_price` = #{couponPrice} - and id in @@ -95,6 +84,24 @@ + +