Przeglądaj źródła

[收银台][修复]:预核销券再使用

release_toaliyun_real
Stormeye Wu 6 lat temu
rodzic
commit
1b2d70ab5d
1 zmienionych plików z 68 dodań i 34 usunięć
  1. +68
    -34
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java

+ 68
- 34
mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java Wyświetl plik

@@ -1081,6 +1081,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {

@Override
public JSONArray queryMicroPayCouponOrder(WxMerchantBUser user, WxCUser cUser, Integer payPrice) {
// 1. 是否有核销未完成的券

Map<String, Object> coQ = new HashMap<>();
coQ.put("tenantId", user.getTenantId());
coQ.put("cUserId", cUser.getId());
@@ -1208,22 +1210,18 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
}

// 3. 券包状态检查
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) {
if (couponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) {
logger.error("已过期: couponOrder-" + couponOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) {
if (couponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) {
logger.error("已退款: couponOrder-" + couponOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID);
}
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) {
if (couponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) {
logger.error("已经核销过的券: couponOrder-" + couponOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()) {
logger.error("券已被预核销: couponOrder-" + couponOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_PRE_VERIFY);
}
if (couponOrder.getCouponType().equals(EnumCouponType.COUPON_MANJIAN.getCode())) {
if (payPrice < wxCoupon.getUsePrice()) {
logger.error("券达不到满减条件: couponOrder-" + couponOrder.getId());
@@ -1231,34 +1229,70 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
}
}

// 1. insert posOrderId
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.updateTenantInfo(couponOrder);
posCouponOrderVerify.setCouponOrderId(couponOrder.getId());
posCouponOrderVerify.setPosOrderId(microOrder.getId());
posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode());
posCouponOrderVerify.setState(EnumEnableType.Enable.getCode());
try {
posCouponOrderVerifyMapper.insert(posCouponOrderVerify);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
if (couponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode())) {
// 1. insert posOrderId
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.updateTenantInfo(couponOrder);
posCouponOrderVerify.setCouponOrderId(couponOrder.getId());
posCouponOrderVerify.setPosOrderId(microOrder.getId());
posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode());
posCouponOrderVerify.setState(EnumEnableType.Enable.getCode());
try {
posCouponOrderVerifyMapper.insert(posCouponOrderVerify);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

int num = 0;
try {
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()); //预核销
couponOrder.setBUserId(bUser.getId());
couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_B.getCode());
couponOrder.setUpdateDate(new Date());
num = wxCouponOrderMapper.updateVerifyCouponOrder(couponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
if (num != 1) {
logger.error("核销异常:updatete num " + num);
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num);
int num = 0;
try {
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()); //预核销
couponOrder.setBUserId(bUser.getId());
couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_B.getCode());
couponOrder.setUpdateDate(new Date());
num = wxCouponOrderMapper.updateVerifyCouponOrder(couponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
if (num != 1) {
logger.error("核销异常:updatete num " + num);
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num);
}
} else if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()) {
// 券已预核销后,但是未做支付,此券还能继续使用
// 1. update posOrderId
PosCouponOrderVerify vQ = new PosCouponOrderVerify();
vQ.updateTenantInfo(couponOrder);
vQ.setCouponOrderId(couponOrder.getId());
PosCouponOrderVerify posCouponOrderVerify = new PosCouponOrderVerify();
posCouponOrderVerify.updateTenantInfo(couponOrder);
posCouponOrderVerify.setCouponOrderId(couponOrder.getId());
posCouponOrderVerify.setPosOrderId(microOrder.getId());
posCouponOrderVerify.setOrderFrom(EnumOrderFrom.INSIDE.getCode());
posCouponOrderVerify.setState(EnumEnableType.Enable.getCode());
try {
posCouponOrderVerifyMapper.update(posCouponOrderVerify, new QueryWrapper<>(vQ));
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

int num = 0;
try {
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()); //预核销
couponOrder.setBUserId(bUser.getId());
couponOrder.setVerifyType(EnumCouponVerifyType.VERIFY_B.getCode());
couponOrder.setUpdateDate(new Date());
num = wxCouponOrderMapper.updateVerifyCouponOrder(couponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrder.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
if (num != 1) {
logger.error("核销异常:updatete num " + num);
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num);
}
}

// 添加payOrder


Ładowanie…
Anuluj
Zapisz