记得上下班打卡 | git大法好,push需谨慎

Commit f9a2ab5b authored by 胡佳晨's avatar 胡佳晨

优先券报错 则订单下单失败

优惠券报错则 优惠券逻辑跳过
parent 55634f02
...@@ -260,6 +260,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -260,6 +260,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
} else { } else {
if (memberType == 1) { if (memberType == 1) {
advanceMap = orderUtils.useCoupon(payOrderParam.getAdvanceCode(), "购买 " + performanceData.getTitle(), BigDecimal.ZERO, payOrderParam.getPerformanceId(), payOrderParam.getTimeId(), payOrderParam.getTicketId()); advanceMap = orderUtils.useCoupon(payOrderParam.getAdvanceCode(), "购买 " + performanceData.getTitle(), BigDecimal.ZERO, payOrderParam.getPerformanceId(), payOrderParam.getTimeId(), payOrderParam.getTicketId());
if (advanceMap == null) {
return ResponseDto.failure("优先券券不可用");
}
Integer typeVoucher = (Integer) advanceMap.get("type"); Integer typeVoucher = (Integer) advanceMap.get("type");
if (typeVoucher.equals(-1)) { if (typeVoucher.equals(-1)) {
return ResponseDto.failure("优先券券不可用"); return ResponseDto.failure("优先券券不可用");
...@@ -453,24 +456,24 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -453,24 +456,24 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if (payOrderParam.getVoucherCode() != null) { if (payOrderParam.getVoucherCode() != null) {
HashMap<String, Object> hashMap = orderUtils.useCoupon(payOrderParam.getVoucherCode(), content, orderTickets.getPriceTotal().subtract(priceExpress), payOrderParam.getPerformanceId(), payOrderParam.getTimeId(), payOrderParam.getTicketId()); HashMap<String, Object> hashMap = orderUtils.useCoupon(payOrderParam.getVoucherCode(), content, orderTickets.getPriceTotal().subtract(priceExpress), payOrderParam.getPerformanceId(), payOrderParam.getTimeId(), payOrderParam.getTicketId());
BigDecimal priceVoucher = (BigDecimal) hashMap.get("voucher"); if (null != hashMap) {
Integer typeVoucher = (Integer) hashMap.get("type"); BigDecimal priceVoucher = (BigDecimal) hashMap.get("voucher");
if (typeVoucher.equals(-1)) { Integer typeVoucher = (Integer) hashMap.get("type");
throw new Exception("券不可用"); if (typeVoucher.equals(-1)) {
throw new Exception("券不可用");
}
orderTickets.setPriceVoucher(priceVoucher);
KylinOrderCoupons couponsVoucher = KylinOrderCoupons.getNew();
couponsVoucher.setOrderId(orderTicketId);
couponsVoucher.setCouponCode(payOrderParam.getVoucherCode());
couponsVoucher.setCouponType(typeVoucher);
couponsVoucher.setCouponPrice(priceVoucher);
couponsVoucher.setCreatedAt(now);
couponsList.add(couponsVoucher);
sqlsDataE.add(new Object[]{
orderTicketId, payOrderParam.getVoucherCode(), typeVoucher, priceVoucher, now, now
});
} }
orderTickets.setPriceVoucher(priceVoucher);
KylinOrderCoupons couponsVoucher = KylinOrderCoupons.getNew();
couponsVoucher.setOrderId(orderTicketId);
couponsVoucher.setCouponCode(payOrderParam.getVoucherCode());
couponsVoucher.setCouponType(typeVoucher);
couponsVoucher.setCouponPrice(priceVoucher);
couponsVoucher.setCreatedAt(now);
couponsList.add(couponsVoucher);
sqlsDataE.add(new Object[]{
orderTicketId, payOrderParam.getVoucherCode(), typeVoucher, priceVoucher, now, now
});
} }
if (couponsList.size() > 0) { if (couponsList.size() > 0) {
...@@ -644,11 +647,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -644,11 +647,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
httpData.add("showUrl", payOrderParam.getShowUrl() + orderTicketId); httpData.add("showUrl", payOrderParam.getShowUrl() + orderTicketId);
httpData.add("returnUrl", payOrderParam.getReturnUrl() + orderTicketId); httpData.add("returnUrl", payOrderParam.getReturnUrl() + orderTicketId);
} }
if(payOrderParam.getPayType().equals("douyinpay")){ if (payOrderParam.getPayType().equals("douyinpay")) {
httpData.add("showUrl", payOrderParam.getShowUrl() + orderTicketId); httpData.add("showUrl", payOrderParam.getShowUrl() + orderTicketId);
httpData.add("returnUrl", payOrderParam.getReturnUrl() + orderTicketId); httpData.add("returnUrl", payOrderParam.getReturnUrl() + orderTicketId);
} }
if(payOrderParam.getPayType().equals("unionpay")){ if (payOrderParam.getPayType().equals("unionpay")) {
httpData.add("returnUrl", payOrderParam.getReturnUrl() + orderTicketId); httpData.add("returnUrl", payOrderParam.getReturnUrl() + orderTicketId);
} }
log.debug("调用 DRAGON 参数 = " + httpData.toString()); log.debug("调用 DRAGON 参数 = " + httpData.toString());
...@@ -770,11 +773,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -770,11 +773,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
httpData.add("showUrl", payAgainParam.getShowUrl() + payAgainParam.getOrderId()); httpData.add("showUrl", payAgainParam.getShowUrl() + payAgainParam.getOrderId());
httpData.add("returnUrl", payAgainParam.getReturnUrl() + payAgainParam.getOrderId()); httpData.add("returnUrl", payAgainParam.getReturnUrl() + payAgainParam.getOrderId());
} }
if(payAgainParam.getPayType().equals("douyinpay")){ if (payAgainParam.getPayType().equals("douyinpay")) {
httpData.add("showUrl", payAgainParam.getShowUrl() + payAgainParam.getOrderId()); httpData.add("showUrl", payAgainParam.getShowUrl() + payAgainParam.getOrderId());
httpData.add("returnUrl", payAgainParam.getReturnUrl() + payAgainParam.getOrderId()); httpData.add("returnUrl", payAgainParam.getReturnUrl() + payAgainParam.getOrderId());
} }
if(payAgainParam.getPayType().equals("unionpay")){ if (payAgainParam.getPayType().equals("unionpay")) {
httpData.add("returnUrl", payAgainParam.getReturnUrl() + payAgainParam.getOrderId()); httpData.add("returnUrl", payAgainParam.getReturnUrl() + payAgainParam.getOrderId());
} }
String returnData = HttpUtil.post(payUrl, httpData); String returnData = HttpUtil.post(payUrl, httpData);
......
...@@ -205,75 +205,80 @@ public class GoblinOrderUtils { ...@@ -205,75 +205,80 @@ public class GoblinOrderUtils {
} }
public GoblinUseResultVo useStoreCoupon(String ucouponId, String content, BigDecimal totalPrice, String spuId, String uid) { public GoblinUseResultVo useStoreCoupon(String ucouponId, String content, BigDecimal totalPrice, String spuId, String uid) {
List<GoblinUserCouponVo> voList = redisUtils.getUserCouponVos(uid); try {
GoblinUseResultVo returnVo = GoblinUseResultVo.getNew(); List<GoblinUserCouponVo> voList = redisUtils.getUserCouponVos(uid);
returnVo.setValue(BigDecimal.ZERO); GoblinUseResultVo returnVo = GoblinUseResultVo.getNew();
returnVo.setCouType("-1"); returnVo.setValue(BigDecimal.ZERO);
for (GoblinUserCouponVo vo : voList) { returnVo.setCouType("-1");
if (vo.getUcouponId().equals(ucouponId)) { for (GoblinUserCouponVo vo : voList) {
//判断券状态 和 触发金额 if (vo.getUcouponId().equals(ucouponId)) {
if ((vo.getState().equals(1)) && vo.getTriggers().compareTo(totalPrice) <= 0) { //判断券状态 和 触发金额
if (vo.getUseScope().equals("0")) { if ((vo.getState().equals(1)) && vo.getTriggers().compareTo(totalPrice) <= 0) {
if (vo.getType().equals("1")) {//代金券 if (vo.getUseScope().equals("0")) {
returnVo.setValue(vo.getValFace()); if (vo.getType().equals("1")) {//代金券
returnVo.setCouType(vo.getType()); returnVo.setValue(vo.getValFace());
} else if (vo.getType().equals("2")) {//折扣 returnVo.setCouType(vo.getType());
BigDecimal tempPrice = totalPrice.multiply(vo.getDiscount()).setScale(2, BigDecimal.ROUND_HALF_UP); } else if (vo.getType().equals("2")) {//折扣
if (tempPrice.compareTo(vo.getDeduction()) > 0) { BigDecimal tempPrice = totalPrice.multiply(vo.getDiscount()).setScale(2, BigDecimal.ROUND_HALF_UP);
tempPrice = vo.getDeduction(); if (tempPrice.compareTo(vo.getDeduction()) > 0) {
tempPrice = vo.getDeduction();
}
returnVo.setValue(tempPrice);
returnVo.setCouType(vo.getType());
} else if (vo.getType().equals("3") && vo.getTriggers().compareTo(totalPrice) <= 0) {//满减
returnVo.setValue(vo.getValMinus());
returnVo.setCouType(vo.getType());
} }
returnVo.setValue(tempPrice); vo.setState(5);
returnVo.setCouType(vo.getType()); vo.setUsedFor(content);
} else if (vo.getType().equals("3") && vo.getTriggers().compareTo(totalPrice) <= 0) {//满减 goblinMongoUtils.changeCouponVos(vo.getUcouponId(), vo);
returnVo.setValue(vo.getValMinus()); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_COUPON.getKey(),
returnVo.setCouType(vo.getType()); SqlMapping.get("goblin_user_coupon.updateState", vo.getState(), vo.getUsedFor(), LocalDateTime.now(), vo.getUcouponId()));
} break;
vo.setState(5); } else {
vo.setUsedFor(content); List<String> spuIds = redisUtils.getStoreCouponSpuIds(vo.getStoreCouponId());
goblinMongoUtils.changeCouponVos(vo.getUcouponId(), vo); if (spuId == null) {
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_COUPON.getKey(), continue;
SqlMapping.get("goblin_user_coupon.updateState", vo.getState(), vo.getUsedFor(), LocalDateTime.now(), vo.getUcouponId())); }
break; //判断是否在可用商品内
} else { List<String> spuList = Arrays.asList(spuId.split(","));
List<String> spuIds = redisUtils.getStoreCouponSpuIds(vo.getStoreCouponId()); for (String item : spuIds) {
if (spuId == null) { if (spuList.contains(item)) {
continue; if (vo.getType().equals("1")) {//代金券
} returnVo.setValue(vo.getValFace());
//判断是否在可用商品内 returnVo.setCouType(vo.getType());
List<String> spuList = Arrays.asList(spuId.split(",")); } else if (vo.getType().equals("2")) {//折扣
for (String item : spuIds) { BigDecimal tempPrice = totalPrice.multiply(vo.getDiscount()).setScale(2, BigDecimal.ROUND_HALF_UP);
if (spuList.contains(item)) { if (tempPrice.compareTo(vo.getDeduction()) > 0) {
if (vo.getType().equals("1")) {//代金券 tempPrice = vo.getDeduction();
returnVo.setValue(vo.getValFace()); }
returnVo.setCouType(vo.getType()); returnVo.setValue(tempPrice);
} else if (vo.getType().equals("2")) {//折扣 returnVo.setCouType(vo.getType());
BigDecimal tempPrice = totalPrice.multiply(vo.getDiscount()).setScale(2, BigDecimal.ROUND_HALF_UP); } else if (vo.getType().equals("3") && vo.getTriggers().compareTo(totalPrice) <= 0) {//满减
if (tempPrice.compareTo(vo.getDeduction()) > 0) { returnVo.setValue(vo.getValMinus());
tempPrice = vo.getDeduction(); returnVo.setCouType(vo.getType());
} }
returnVo.setValue(tempPrice); vo.setState(5);
returnVo.setCouType(vo.getType()); vo.setUsedFor(content);
} else if (vo.getType().equals("3") && vo.getTriggers().compareTo(totalPrice) <= 0) {//满减 goblinMongoUtils.changeCouponVos(vo.getUcouponId(), vo);
returnVo.setValue(vo.getValMinus()); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_COUPON.getKey(),
returnVo.setCouType(vo.getType()); SqlMapping.get("goblin_user_coupon.updateState", vo.getState(), vo.getUsedFor(), LocalDateTime.now(), vo.getUcouponId()));
} }
vo.setState(5); break;
vo.setUsedFor(content);
goblinMongoUtils.changeCouponVos(vo.getUcouponId(), vo);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_COUPON.getKey(),
SqlMapping.get("goblin_user_coupon.updateState", vo.getState(), vo.getUsedFor(), LocalDateTime.now(), vo.getUcouponId()));
} }
break;
} }
} }
break;
} }
break;
} }
if (!returnVo.getCouType().equals("-1")) {
redisUtils.setUserCouponVos(uid, voList);
}
return returnVo;
}catch (Exception e){
log.error("店铺券错误:{}",e);
return null;
} }
if (!returnVo.getCouType().equals("-1")) {
redisUtils.setUserCouponVos(uid, voList);
}
return returnVo;
} }
public Boolean backStoreCoupon(List<com.liquidnet.service.goblin.param.BackCouponParam> params) { public Boolean backStoreCoupon(List<com.liquidnet.service.goblin.param.BackCouponParam> params) {
......
...@@ -271,9 +271,10 @@ public class OrderUtils { ...@@ -271,9 +271,10 @@ public class OrderUtils {
return hashMap; return hashMap;
} catch (Exception e) { } catch (Exception e) {
log.error("用券ERROR:{}", e); log.error("用券ERROR:{}", e);
hashMap.put("type", -1); // hashMap.put("type", -1);
hashMap.put("voucher", -1); // hashMap.put("voucher", -1);
return hashMap; // return hashMap;
return null;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment