fix: 订单保存优惠券折扣价格
This commit is contained in:
@@ -14,8 +14,8 @@ public class OrderCouponInfoDTO {
|
||||
private TbShopUser shopUser;
|
||||
private List<TbActivateOutRecord> outRecordList = new ArrayList<>();
|
||||
// 满减优惠券
|
||||
private HashMap<Integer, TbUserCouponVo> fullReductionCouponMap = new HashMap<>();
|
||||
private HashMap<String, TbUserCouponVo> fullReductionCouponMap = new HashMap<>();
|
||||
// 商品优惠券
|
||||
private HashMap<Integer, TbUserCouponVo> productCouponMap = new HashMap<>();
|
||||
private HashMap<Integer, List<TbUserCouponVo>> couponMap;
|
||||
private HashMap<String, TbUserCouponVo> productCouponMap = new HashMap<>();
|
||||
private HashMap<String, List<TbUserCouponVo>> couponMap;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ public class TbUserCouponVo {
|
||||
private boolean isUse = false;
|
||||
|
||||
private Integer currentUseNum = 0;
|
||||
private BigDecimal currentDiscountAmount = new BigDecimal(0);
|
||||
|
||||
|
||||
public void setEndTime(Date endTime) {
|
||||
|
||||
@@ -705,7 +705,7 @@ public class CartService {
|
||||
throw new MsgException(couponVo.getName() + "数量不足: " + couponVo.getNum());
|
||||
}
|
||||
couponVo.setCurrentUseNum(item.getNum());
|
||||
infoDTO.getFullReductionCouponMap().put(couponVo.getId(), couponVo);
|
||||
infoDTO.getFullReductionCouponMap().put(couponVo.getId().toString(), couponVo);
|
||||
return;
|
||||
}
|
||||
couponVo = productCoupon.get(item.getUserCouponId());
|
||||
@@ -713,7 +713,7 @@ public class CartService {
|
||||
throw new MsgException("存在不可用优惠券");
|
||||
}
|
||||
couponVo.setCurrentUseNum(item.getNum());
|
||||
infoDTO.getProductCouponMap().put(item.getUserCouponId(), couponVo);
|
||||
infoDTO.getProductCouponMap().put(item.getUserCouponId().toString(), couponVo);
|
||||
});
|
||||
|
||||
infoDTO.setShopUser(shopUser);
|
||||
@@ -955,6 +955,7 @@ public class CartService {
|
||||
tbActivateOutRecord.setStatus(TableConstant.ActivateOutRecord.Status.CLOSED.getValue());
|
||||
tbActivateOutRecord.setCreateTime(DateUtil.date());
|
||||
tbActivateOutRecord.setRefNum(0);
|
||||
couponVo.setCurrentDiscountAmount(couponVo.getDiscountAmount());
|
||||
|
||||
}
|
||||
|
||||
@@ -1128,7 +1129,7 @@ public class CartService {
|
||||
return null;
|
||||
}
|
||||
|
||||
private BigDecimal reduceProCoupon(HashMap<String, List<TbUserCouponVo>> couponMap, TbCashierCart cashierCart, HashMap<Integer,
|
||||
private BigDecimal reduceProCoupon(HashMap<String, List<TbUserCouponVo>> couponMap, TbCashierCart cashierCart, HashMap<String,
|
||||
List<TbUserCouponVo>> usedCouponMap, BigDecimal discountAmount, ArrayList<TbCashierCart> balanceCartList,
|
||||
ArrayList<TbActivateOutRecord> outRecords, Integer memberId) {
|
||||
TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId());
|
||||
@@ -1139,7 +1140,7 @@ public class CartService {
|
||||
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
|
||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
|
||||
}
|
||||
List<TbUserCouponVo> tbUserCouponVos = usedCouponMap.computeIfAbsent(Integer.valueOf(cashierCart.getProductId()), k -> new ArrayList<>());
|
||||
List<TbUserCouponVo> tbUserCouponVos = usedCouponMap.computeIfAbsent(cashierCart.getProductId(), k -> new ArrayList<>());
|
||||
tbUserCouponVos.add(couponVo);
|
||||
|
||||
TbCashierCart balanceCart = null;
|
||||
@@ -1188,6 +1189,7 @@ public class CartService {
|
||||
tbActivateOutRecord.setRefNum(0);
|
||||
outRecords.add(tbActivateOutRecord);
|
||||
|
||||
couponVo.setCurrentDiscountAmount(couponVo.getCurrentDiscountAmount().add(couponVo.getCurrentDiscountAmount()));
|
||||
// 优惠券未消耗完毕
|
||||
if (balanceCart != null && getCanUseCoupon(couponMap, balanceCart.getProductId()) != null) {
|
||||
discountAmount = reduceProCoupon(couponMap, balanceCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId);
|
||||
@@ -1221,11 +1223,10 @@ public class CartService {
|
||||
tbUserCouponVos.add(item);
|
||||
}
|
||||
});
|
||||
HashMap<Integer, List<TbUserCouponVo>> usedCouponMap = new HashMap<>();
|
||||
HashMap<String, List<TbUserCouponVo>> usedCouponMap = new HashMap<>();
|
||||
ArrayList<TbActivateOutRecord> outRecords = new ArrayList<>();
|
||||
for (TbCashierCart cashierCart : cartInfoDTO.getNewCashierCarts()) {
|
||||
discountAmount = reduceProCoupon(couponMap, cashierCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId);
|
||||
|
||||
}
|
||||
|
||||
if (!balanceCartList.isEmpty()) {
|
||||
@@ -1399,11 +1400,14 @@ public class CartService {
|
||||
if (outRecord != null) {
|
||||
couponInfo.getOutRecordList().add(outRecord);
|
||||
}
|
||||
orderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfo));
|
||||
|
||||
couponInfo.setProductCouponMap(BeanUtil.copyProperties(couponInfo.getProductCouponMap(), HashMap.class));
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("outRecordList", couponInfo.getOutRecordList());
|
||||
map.put("couponInfo", couponInfo.getProductCouponMap().values().addAll(couponInfo.getFullReductionCouponMap().values()));
|
||||
orderInfo.setCouponInfoList(JSONObject.toJSONString(map));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 修改订单详情并打票
|
||||
updateDetailAndPrint(orderInfo, detailPriceDTO, shopEatTypeInfoDTO);
|
||||
|
||||
|
||||
@@ -472,8 +472,8 @@ public class PayService {
|
||||
|
||||
// 设置优惠券信息
|
||||
OrderCouponInfoDTO couponInfoDTO = new OrderCouponInfoDTO();
|
||||
couponInfoDTO.setFullReductionCouponMap(new HashMap<Integer, TbUserCouponVo>() {{
|
||||
put(userCouponVo.getId(), userCouponVo);
|
||||
couponInfoDTO.setFullReductionCouponMap(new HashMap<String, TbUserCouponVo>() {{
|
||||
put(userCouponVo.getId().toString(), userCouponVo);
|
||||
}});
|
||||
orderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfoDTO));
|
||||
orderInfo.setUserCouponAmount(userCouponVo.getDiscountAmount());
|
||||
|
||||
@@ -43,7 +43,7 @@ public class TbCashierCartServiceImpl extends ServiceImpl<MpCashierCartMapper, T
|
||||
}
|
||||
|
||||
// 所有订单信息
|
||||
return list(queryWrapper);
|
||||
return list(queryWrapper.orderByAsc(TbCashierCart::getTotalAmount));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user