trade:取消订单、确认收货,增加订单日志

This commit is contained in:
YunaiV 2023-09-23 18:13:35 +08:00
parent e9c9ac0cab
commit a9485ad6bf
3 changed files with 22 additions and 11 deletions

View File

@ -14,7 +14,9 @@ import lombok.RequiredArgsConstructor;
public enum TradeOrderOperateTypeEnum { public enum TradeOrderOperateTypeEnum {
MEMBER_CREATE(1, "用户下单"), MEMBER_CREATE(1, "用户下单"),
MEMBER_RECEIVE(30, "用户已收货") MEMBER_RECEIVE(30, "用户已收货"),
MEMBER_COMMENT(31, "用户评价"),
MEMBER_CANCEL(40, "取消订单"),
; ;
/** /**

View File

@ -63,6 +63,9 @@ public class TradeOrderLogAspect {
Long userId = getUserId(); Long userId = getUserId();
// 1.2 订单信息 // 1.2 订单信息
Long orderId = ORDER_ID.get(); Long orderId = ORDER_ID.get();
if (orderId == null) { // 如果未设置只有注解说明不需要记录订单日志
return;
}
Integer beforeStatus = BEFORE_STATUS.get(); Integer beforeStatus = BEFORE_STATUS.get();
Integer afterStatus = AFTER_STATUS.get(); Integer afterStatus = AFTER_STATUS.get();
Map<String, Object> exts = ObjectUtil.defaultIfNull(EXTS.get(), emptyMap()); Map<String, Object> exts = ObjectUtil.defaultIfNull(EXTS.get(), emptyMap());

View File

@ -486,6 +486,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_RECEIVE)
public void receiveOrder(Long userId, Long id) { public void receiveOrder(Long userId, Long id) {
// 校验并获得交易订单可收货 // 校验并获得交易订单可收货
TradeOrderDO order = validateOrderReceivable(userId, id); TradeOrderDO order = validateOrderReceivable(userId, id);
@ -677,6 +678,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_COMMENT)
public Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO) { public Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO) {
// 先通过订单项 ID查询订单项是否存在 // 先通过订单项 ID查询订单项是否存在
TradeOrderItemDO orderItem = tradeOrderItemMapper.selectByIdAndUserId(createReqVO.getOrderItemId(), userId); TradeOrderItemDO orderItem = tradeOrderItemMapper.selectByIdAndUserId(createReqVO.getOrderItemId(), userId);
@ -704,12 +706,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(order.getId()); List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(order.getId());
if (!anyMatch(orderItems, item -> Objects.equals(item.getCommentStatus(), Boolean.FALSE))) { if (!anyMatch(orderItems, item -> Objects.equals(item.getCommentStatus(), Boolean.FALSE))) {
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE)); tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE));
// TODO 待实现已完成评价要不要写一条订单日志目前 crmeb 会写有赞可以研究下 // 增加订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
} }
return comment; return comment;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CANCEL)
public void cancelOrder(Long userId, Long id) { public void cancelOrder(Long userId, Long id) {
// 校验存在 // 校验存在
TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(id, userId); TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(id, userId);
@ -721,7 +726,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
} }
// 1.更新 TradeOrderDO 状态为已取消 // 1. 更新 TradeOrderDO 状态为已取消
int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getStatus(), int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getStatus(),
new TradeOrderDO().setStatus(TradeOrderStatusEnum.CANCELED.getStatus()) new TradeOrderDO().setStatus(TradeOrderStatusEnum.CANCELED.getStatus())
.setCancelTime(LocalDateTime.now()) .setCancelTime(LocalDateTime.now())
@ -730,22 +735,23 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
} }
// TODO 活动相关库存回滚需要活动 id活动 id 怎么获取app 端能否传过来 // TODO 活动相关库存回滚需要活动 id活动 id 怎么获取app 端能否传过来回复从订单里拿呀
tradeOrderHandlers.forEach(handler -> handler.rollback()); tradeOrderHandlers.forEach(handler -> handler.rollback());
// 2.回滚库存 // 2. 回滚库存
List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(id); List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(id);
productSkuApi.updateSkuStock(TradeOrderConvert.INSTANCE.convert(orderItems)); productSkuApi.updateSkuStock(TradeOrderConvert.INSTANCE.convert(orderItems));
// 3.回滚优惠券 // 3. 回滚优惠券
if (order.getCouponId() > 0) {
couponApi.returnUsedCoupon(order.getCouponId()); couponApi.returnUsedCoupon(order.getCouponId());
}
// 4.回滚积分积分是支付成功后才增加的吧 回复每个项目不同目前看下来确认收货貌似更合适我再看看其它项目的业务选择 // 4. 回滚积分积分是支付成功后才增加的吧 回复每个项目不同目前看下来确认收货貌似更合适我再看看其它项目的业务选择
// TODO @疯狂有赞是可配置支付 or 确认收货我们按照支付好列然后这里的退积分指的是下单时的积分抵扣 // TODO @疯狂有赞是可配置支付 or 确认收货我们按照支付好列然后这里的退积分指的是下单时的积分抵扣
// TODO 芋艿OrderLog // 5. 增加订单日志
TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.CANCELED.getStatus());
// TODO 芋艿lili 发送订单变化的消息
} }
/** /**