| @@ -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 | |||