【代码评审】商城:纯积分兑换时,直接设置为待发货

This commit is contained in:
YunaiV 2024-10-04 19:17:16 +08:00
parent e604cba3bf
commit 2c4d8298cf
2 changed files with 11 additions and 1 deletions

View File

@ -245,7 +245,10 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
} }
// 3. 生成预支付 // 3. 生成预支付
createPayOrder(order, orderItems); // 特殊情况积分兑换时可能支付金额为零
if (order.getPayPrice() > 0) {
createPayOrder(order, orderItems);
}
// 4. 插入订单日志 // 4. 插入订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getStatus()); TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getStatus());

View File

@ -5,11 +5,13 @@ import cn.hutool.core.lang.Assert;
import cn.iocoder.yudao.module.promotion.api.point.PointActivityApi; import cn.iocoder.yudao.module.promotion.api.point.PointActivityApi;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 积分商城活动订单的 {@link TradeOrderHandler} 实现类 * 积分商城活动订单的 {@link TradeOrderHandler} 实现类
@ -33,6 +35,11 @@ public class TradePointOrderHandler implements TradeOrderHandler {
// 扣减积分商城活动的库存 // 扣减积分商城活动的库存
pointActivityApi.updatePointStockDecr(order.getPointActivityId(), pointActivityApi.updatePointStockDecr(order.getPointActivityId(),
orderItems.get(0).getSkuId(), orderItems.get(0).getCount()); orderItems.get(0).getSkuId(), orderItems.get(0).getCount());
// 如果支付金额为 0则直接设置为已支付
if (Objects.equals(order.getPayPrice(), 0)) {
order.setPayStatus(true).setStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus());
}
} }
@Override @Override