|
|
|
@ -29,6 +29,8 @@ import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUp
|
|
|
|
import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi;
|
|
|
|
import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi;
|
|
|
|
import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO;
|
|
|
|
import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO;
|
|
|
|
import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;
|
|
|
|
import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderAdjustAddressReqVO;
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderAdjustPriceReqVO;
|
|
|
|
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
|
|
|
|
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
|
|
|
|
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
|
|
|
|
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
|
|
|
|
import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
|
|
|
|
import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
|
|
|
|
@ -54,6 +56,7 @@ import cn.iocoder.yudao.module.trade.service.price.TradePriceService;
|
|
|
|
import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateReqBO;
|
|
|
|
import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateReqBO;
|
|
|
|
import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateRespBO;
|
|
|
|
import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateRespBO;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
|
|
@ -65,6 +68,7 @@ import java.util.Objects;
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
|
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
|
|
|
|
import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.ORDER_NOT_FOUND;
|
|
|
|
import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.ORDER_NOT_FOUND;
|
|
|
|
|
|
|
|
import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.ORDER_PAID_NO_ADJUST_PRICE;
|
|
|
|
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*;
|
|
|
|
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
@ -346,10 +350,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private KeyValue<TradeOrderDO, PayOrderRespDTO> validateOrderPayable(Long id, Long payOrderId) {
|
|
|
|
private KeyValue<TradeOrderDO, PayOrderRespDTO> validateOrderPayable(Long id, Long payOrderId) {
|
|
|
|
// 校验订单是否存在
|
|
|
|
// 校验订单是否存在
|
|
|
|
TradeOrderDO order = tradeOrderMapper.selectById(id);
|
|
|
|
TradeOrderDO order = validateOrder(id);
|
|
|
|
if (order == null) {
|
|
|
|
|
|
|
|
throw exception(ORDER_NOT_FOUND);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 校验订单未支付
|
|
|
|
// 校验订单未支付
|
|
|
|
if (!TradeOrderStatusEnum.isUnpaid(order.getStatus()) || order.getPayStatus()) {
|
|
|
|
if (!TradeOrderStatusEnum.isUnpaid(order.getStatus()) || order.getPayStatus()) {
|
|
|
|
log.error("[validateOrderPaid][order({}) 不处于待支付状态,请进行处理!order 数据是:{}]",
|
|
|
|
log.error("[validateOrderPaid][order({}) 不处于待支付状态,请进行处理!order 数据是:{}]",
|
|
|
|
@ -392,7 +393,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
public void deliveryOrder(Long userId, TradeOrderDeliveryReqVO deliveryReqVO) {
|
|
|
|
public void deliveryOrder(TradeOrderDeliveryReqVO deliveryReqVO) {
|
|
|
|
// TODO @puhui999:只有选择快递的,才可以发货
|
|
|
|
// TODO @puhui999:只有选择快递的,才可以发货
|
|
|
|
// 1.1 校验并获得交易订单(可发货)
|
|
|
|
// 1.1 校验并获得交易订单(可发货)
|
|
|
|
TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId());
|
|
|
|
TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId());
|
|
|
|
@ -424,7 +425,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
|
|
|
|
|
|
|
|
// 发送站内信
|
|
|
|
// 发送站内信
|
|
|
|
tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO().setOrderId(order.getId())
|
|
|
|
tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO().setOrderId(order.getId())
|
|
|
|
.setUserId(userId).setMessage(null));
|
|
|
|
.setUserId(order.getUserId()).setMessage(null));
|
|
|
|
|
|
|
|
|
|
|
|
// TODO 芋艿:OrderLog
|
|
|
|
// TODO 芋艿:OrderLog
|
|
|
|
// TODO 设计:lili:是不是发货后,才支持售后?
|
|
|
|
// TODO 设计:lili:是不是发货后,才支持售后?
|
|
|
|
@ -439,11 +440,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
* @return 交易订单
|
|
|
|
* @return 交易订单
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private TradeOrderDO validateOrderDeliverable(Long id) {
|
|
|
|
private TradeOrderDO validateOrderDeliverable(Long id) {
|
|
|
|
// 校验订单是否存在
|
|
|
|
TradeOrderDO order = validateOrder(id);
|
|
|
|
TradeOrderDO order = tradeOrderMapper.selectById(id);
|
|
|
|
|
|
|
|
if (order == null) {
|
|
|
|
|
|
|
|
throw exception(ORDER_NOT_FOUND);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 校验订单是否是待发货状态
|
|
|
|
// 校验订单是否是待发货状态
|
|
|
|
if (!TradeOrderStatusEnum.isUndelivered(order.getStatus())) {
|
|
|
|
if (!TradeOrderStatusEnum.isUndelivered(order.getStatus())) {
|
|
|
|
throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED);
|
|
|
|
throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED);
|
|
|
|
@ -469,6 +466,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
return order;
|
|
|
|
return order;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@NotNull
|
|
|
|
|
|
|
|
private TradeOrderDO validateOrder(Long id) {
|
|
|
|
|
|
|
|
// 校验订单是否存在
|
|
|
|
|
|
|
|
TradeOrderDO order = tradeOrderMapper.selectById(id);
|
|
|
|
|
|
|
|
if (order == null) {
|
|
|
|
|
|
|
|
throw exception(ORDER_NOT_FOUND);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return order;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
public void receiveOrder(Long userId, Long id) {
|
|
|
|
public void receiveOrder(Long userId, Long id) {
|
|
|
|
@ -489,14 +496,39 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void remarkOrder(Long loginUserId, TradeOrderRemarkReqVO remarkReqVO) {
|
|
|
|
public void remarkOrder(TradeOrderRemarkReqVO reqVO) {
|
|
|
|
// 校验并获得交易订单
|
|
|
|
// 校验并获得交易订单
|
|
|
|
validateOrderDeliverable(remarkReqVO.getId());
|
|
|
|
validateOrder(reqVO.getId());
|
|
|
|
|
|
|
|
|
|
|
|
TradeOrderDO updateOrderObj = new TradeOrderDO();
|
|
|
|
// 更新
|
|
|
|
updateOrderObj.setId(remarkReqVO.getId());
|
|
|
|
TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(reqVO);
|
|
|
|
updateOrderObj.setRemark(remarkReqVO.getRemark());
|
|
|
|
tradeOrderMapper.updateById(order);
|
|
|
|
tradeOrderMapper.updateById(updateOrderObj);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void adjustPrice(TradeOrderAdjustPriceReqVO reqVO) {
|
|
|
|
|
|
|
|
// 校验交易订单
|
|
|
|
|
|
|
|
TradeOrderDO order = validateOrder(reqVO.getId());
|
|
|
|
|
|
|
|
if (order.getPayStatus()) {
|
|
|
|
|
|
|
|
throw exception(ORDER_PAID_NO_ADJUST_PRICE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更新
|
|
|
|
|
|
|
|
TradeOrderDO update = TradeOrderConvert.INSTANCE.convert(reqVO);
|
|
|
|
|
|
|
|
update.setPayPrice(update.getPayPrice() + update.getAdjustPrice());
|
|
|
|
|
|
|
|
tradeOrderMapper.updateById(update);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void adjustAddress(TradeOrderAdjustAddressReqVO reqVO) {
|
|
|
|
|
|
|
|
// 校验交易订单
|
|
|
|
|
|
|
|
validateOrder(reqVO.getId());
|
|
|
|
|
|
|
|
// TODO 是否需要校验订单是否发货
|
|
|
|
|
|
|
|
// TODO 发货后是否支持修改收货地址
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 更新
|
|
|
|
|
|
|
|
TradeOrderDO update = TradeOrderConvert.INSTANCE.convert(reqVO);
|
|
|
|
|
|
|
|
tradeOrderMapper.updateById(update);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
|