|
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.trade.service.aftersale;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
|
|
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
|
|
|
import cn.iocoder.yudao.module.pay.api.refund.PayRefundApi;
|
|
@@ -45,7 +46,7 @@ import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString
|
|
|
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
/**
|
|
|
- * 交易售后 Service 实现类
|
|
|
+ * 售后订单 Service 实现类
|
|
|
*
|
|
|
* @author 芋道源码
|
|
|
*/
|
|
@@ -75,13 +76,23 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa
|
|
|
return tradeAfterSaleMapper.selectPage(pageReqVO);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public PageResult<TradeAfterSaleDO> getAfterSalePage(Long userId, PageParam pageParam) {
|
|
|
+ return tradeAfterSaleMapper.selectPage(userId, pageParam);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TradeAfterSaleDO getAfterSale(Long userId, Long id) {
|
|
|
+ return tradeAfterSaleMapper.selectByIdAndUserId(id, userId);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Long createAfterSale(Long userId, AppTradeAfterSaleCreateReqVO createReqVO) {
|
|
|
// 第一步,前置校验
|
|
|
TradeOrderItemDO tradeOrderItem = validateOrderItemApplicable(userId, createReqVO);
|
|
|
|
|
|
- // 第二步,存储交易售后
|
|
|
+ // 第二步,存储售后订单
|
|
|
TradeAfterSaleDO afterSale = createAfterSale(createReqVO, tradeOrderItem);
|
|
|
return afterSale.getId();
|
|
|
}
|
|
@@ -168,7 +179,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa
|
|
|
// 更新售后单的状态
|
|
|
// 情况一:退款:标记为 WAIT_REFUND 状态。后续等退款发起成功后,在标记为 COMPLETE 状态
|
|
|
// 情况二:退货退款:需要等用户退货后,才能发起退款
|
|
|
- Integer newStatus = afterSale.getType().equals(TradeAfterSaleWayEnum.REFUND.getWay()) ?
|
|
|
+ Integer newStatus = afterSale.getWay().equals(TradeAfterSaleWayEnum.REFUND.getWay()) ?
|
|
|
TradeAfterSaleStatusEnum.WAIT_REFUND.getStatus() : TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus();
|
|
|
updateAfterSaleStatus(afterSale.getId(), TradeAfterSaleStatusEnum.APPLY.getStatus(), new TradeAfterSaleDO()
|
|
|
.setStatus(newStatus).setAuditUserId(userId).setAuditTime(LocalDateTime.now()));
|
|
@@ -243,7 +254,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa
|
|
|
updateAfterSaleStatus(afterSale.getId(), TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus(), new TradeAfterSaleDO()
|
|
|
.setStatus(TradeAfterSaleStatusEnum.BUYER_DELIVERY.getStatus())
|
|
|
.setLogisticsId(deliveryReqVO.getLogisticsId()).setLogisticsNo(deliveryReqVO.getLogisticsNo())
|
|
|
- .setDeliveryTime(deliveryReqVO.getDeliveryTime()));
|
|
|
+ .setDeliveryTime(LocalDateTime.now()));
|
|
|
|
|
|
// 记录售后日志
|
|
|
createAfterSaleLog(userId, UserTypeEnum.MEMBER.getValue(),
|
|
@@ -318,7 +329,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void refundAfterSale(Long userId, String userIp, Long id) {
|
|
|
// 校验售后单的状态,并状态待退款
|
|
|
- TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectByPayRefundId(id);
|
|
|
+ TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectById(id);
|
|
|
if (afterSale == null) {
|
|
|
throw exception(AFTER_SALE_NOT_FOUND);
|
|
|
}
|
|
@@ -362,13 +373,14 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa
|
|
|
@Override
|
|
|
public void cancelAfterSale(Long userId, Long id) {
|
|
|
// 校验售后单的状态,并状态待退款
|
|
|
- TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectByPayRefundId(id);
|
|
|
+ TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectById(id);
|
|
|
if (afterSale == null) {
|
|
|
throw exception(AFTER_SALE_NOT_FOUND);
|
|
|
}
|
|
|
- if (ObjectUtils.equalsAny(afterSale.getStatus(), TradeAfterSaleStatusEnum.APPLY.getStatus(),
|
|
|
- TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus())) {
|
|
|
- throw exception(AFTER_SALE_CANCEL_FAIL_STATUS_NOT_APPLY_OR_AGREE);
|
|
|
+ if (!ObjectUtils.equalsAny(afterSale.getStatus(), TradeAfterSaleStatusEnum.APPLY.getStatus(),
|
|
|
+ TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus(),
|
|
|
+ TradeAfterSaleStatusEnum.BUYER_DELIVERY.getStatus())) {
|
|
|
+ throw exception(AFTER_SALE_CANCEL_FAIL_STATUS_NOT_APPLY_OR_AGREE_OR_BUYER_DELIVERY);
|
|
|
}
|
|
|
|
|
|
// 更新售后单的状态为【已取消】
|