Browse Source

[C端][修改][优化支付订单提示语]

release_toaliyun_real
gongbiao 7 years ago
parent
commit
e4272a331e
2 changed files with 32 additions and 35 deletions
  1. +1
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  2. +31
    -35
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java

+ 1
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java View File

@@ -149,6 +149,7 @@ public enum ErrorCode{
ORDER_HAD_CANCEL(3009, "订单已取消"),
ORDER_PRESS_IS_OVERTIME(3010, "砍价已过期"),
ORDER_PRESS_IS_COMPLETE(3011, "砍价已完成"),
ORDER_UNPAID(3012, "您有未支付的订单"),

/**
* 卡券


+ 31
- 35
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java View File

@@ -176,66 +176,49 @@ public class WxOrderServiceImpl implements WxOrderService {
}


private int getUserCouponOrderCount(WxCUser user, WxCoupon counpon) {
private int getUserOrderCount(WxCUser user, WxCoupon counpon) {
// 用户购买的券包数量
// + Order 待支付
// + couponOrder ---待使用
int countOrder = 0, countCouponOrder = 0;

//拼团
if (counpon.getType().equals(EnumCouponType.COUPON_GROUP.getCode())) {
try {
WxOrder orderQ = new WxOrder();
orderQ.setTenantId(user.getTenantId());
orderQ.setProductId(counpon.getId());
orderQ.setType(EnumOrderType.COUPON.getCode());
orderQ.setcUserId(user.getId());
List<Integer> statusS = new ArrayList<>();
statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING.getCode());
statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode());
statusS.add(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode());
statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode());
orderQ.setStatusS(statusS);
return wxOrderMapper.countList(orderQ);
} catch (Exception e) {
logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
}
}

try {
WxOrder orderQ = new WxOrder();
orderQ.setTenantId(user.getTenantId());
orderQ.setProductId(counpon.getId());
orderQ.setType(EnumOrderType.COUPON.getCode());
orderQ.setcUserId(user.getId());
List<Integer> statusS = new ArrayList<Integer>();
List<Integer> statusS = new ArrayList<>();
statusS.add(EnumOrderStatus.ORDER_STATUS_PRESSING.getCode());
statusS.add(EnumOrderStatus.ORDER_STATUS_PRESS_COMPLETE.getCode()); //砍价券专有状态
statusS.add(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode());//砍价券专有状态
statusS.add(EnumOrderStatus.ORDER_STATUS_PRESS_COMPLETE.getCode());
statusS.add(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode());
statusS.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode());
orderQ.setStatusS(statusS);
countOrder = wxOrderMapper.countList(orderQ);
return wxOrderMapper.countList(orderQ);
} catch (Exception e) {
logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
}

}

private int getUserCouponOrderCount(WxCUser user, WxCoupon counpon) {
// 用户购买的券包数量
// + couponOrder ---待使用
try {
WxCouponOrder couponOrderQ = new WxCouponOrder();
couponOrderQ.setTenantId(user.getTenantId());
couponOrderQ.setCouponId(counpon.getId());
couponOrderQ.setcUserId(user.getId());
if (counpon.getSendType().equals(EnumCouponSendType.PASSIVE))
if (counpon.getSendType().equals(EnumCouponSendType.PASSIVE)) {
couponOrderQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
countCouponOrder = wxCouponOrderMapper.findCount(couponOrderQ);
}
return wxCouponOrderMapper.findCount(couponOrderQ);
} catch (Exception e) {
logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
}

return countOrder + countCouponOrder;
}


private void stockReduce(WxCUser user, WxCoupon coupon, String couponIdStr) {
long time = System.currentTimeMillis() + RedisLock.TIMEOUT;
String timeStr = String.valueOf(time);
@@ -253,16 +236,30 @@ public class WxOrderServiceImpl implements WxOrderService {
throw new MallinkException(ErrorCode.REMAIN_IS_EMPTY);
}

// check 购买是否超限
// 检查是否未支付订单
int count = 0;
try {
count = getUserCouponOrderCount(user, coupon);
count = getUserOrderCount(user, coupon);
} catch (Exception e) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
throw new MallinkException(ErrorCode.DB_FAIL);
}
if (count > 0) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
logger.error("此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count);
throw new MallinkException(ErrorCode.ORDER_UNPAID);
}

//检查已购买数量
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);
@@ -270,7 +267,6 @@ public class WxOrderServiceImpl implements WxOrderService {
throw new MallinkException(ErrorCode.ORDER_IS_LIMITED);
}


try {
WxCoupon updateRecord = new WxCoupon();
updateRecord.setId(coupon.getId());


Loading…
Cancel
Save