fix: 创建订单会员价计算有误修复

This commit is contained in:
张松
2024-11-06 16:20:35 +08:00
parent 090e5d320e
commit 14a2b5884b
3 changed files with 11 additions and 7 deletions

View File

@@ -72,6 +72,6 @@ public interface MpCashierCartService extends IService<TbCashierCart> {
List<TbCashierCart> selectByOrderIdAndState(Integer orderId, TableConstant.OrderInfo.Status status); List<TbCashierCart> selectByOrderIdAndState(Integer orderId, TableConstant.OrderInfo.Status status);
boolean updateMemberByOrderId(Integer orderId, boolean isMember); boolean updateMemberAndAmountByOrderId(Integer orderId, boolean isMember);
} }

View File

@@ -99,9 +99,10 @@ public class MpCashierCartServiceImpl extends ServiceImpl<TbCashierCartMapper, T
} }
@Override @Override
public boolean updateMemberByOrderId(Integer orderId, boolean isMember) { public boolean updateMemberAndAmountByOrderId(Integer orderId, boolean isMember) {
return update(new LambdaUpdateWrapper<TbCashierCart>() return update(new LambdaUpdateWrapper<TbCashierCart>()
.eq(TbCashierCart::getOrderId, orderId) .eq(TbCashierCart::getOrderId, orderId)
.setSql(StrUtil.format("total_amount=total_number*{}", isMember ? "member_price" : "sale_price"))
.set(TbCashierCart::getIsMember, isMember ? 1 : 0)); .set(TbCashierCart::getIsMember, isMember ? 1 : 0));
} }

View File

@@ -1423,7 +1423,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
priceDTO.setOriginAmount(priceDTO.getOriginAmount().add(cashierCart.getTotalAmount())); priceDTO.setOriginAmount(priceDTO.getOriginAmount().add(cashierCart.getTotalAmount()));
} }
TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null); TbProductSku productSku = productSkuRepository.findById(Integer.valueOf(cashierCart.getSkuId())).orElse(null);
TbOrderDetail orderDetail = null; TbOrderDetail orderDetail = null;
if (cashierCart.getOrderId() != null) { if (cashierCart.getOrderId() != null) {
@@ -1991,8 +1990,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 计算优惠券价格信息 // 计算优惠券价格信息
if (payDTO.getVipUserId() == null) { if (payDTO.getVipUserId() == null) {
payDTO.setVipUserId(orderInfo.getMemberId() != null ? Integer.valueOf(orderInfo.getMemberId()) : null);
payDTO.setVipUserId(Integer.valueOf(orderInfo.getMemberId()));
} }
@@ -2182,17 +2180,22 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
if (updateVipDTO.getType() == 0) { if (updateVipDTO.getType() == 0) {
TbOrderInfo orderInfo = mpOrderInfoService.getById(orderId);
if(TableConstant.OrderInfo.Status.UNPAID.equalsVals(orderInfo.getStatus())) {
throw new BadRequestException("订单状态异常");
}
TbShopUser shopUser = tbShopUserMapper.selectById(updateVipDTO.getVipUserId()); TbShopUser shopUser = tbShopUserMapper.selectById(updateVipDTO.getVipUserId());
if (shopUser == null) { if (shopUser == null) {
throw new BadRequestException("用户信息不存在"); throw new BadRequestException("用户信息不存在");
} }
mpCashierCartService.updateMemberByOrderId(orderId, true);
return orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>() return orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, orderId) .eq(TbOrderInfo::getId, orderId)
.set(TbOrderInfo::getUserId, shopUser.getUserId()) .set(TbOrderInfo::getUserId, shopUser.getUserId())
.set(TbOrderInfo::getMemberId, updateVipDTO.getVipUserId())); .set(TbOrderInfo::getMemberId, updateVipDTO.getVipUserId()));
} else { } else {
mpCashierCartService.updateMemberByOrderId(orderId, false); mpCashierCartService.updateMemberAndAmountByOrderId(orderId, false);
return orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>() return orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, orderId) .eq(TbOrderInfo::getId, orderId)
.set(TbOrderInfo::getUserId, null) .set(TbOrderInfo::getUserId, null)