mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-14 10:11:53 +08:00
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.trade.controller.admin.aftersale;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.trade.core.annotations.AfterSaleLog;
|
||||
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
|
||||
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
|
||||
import cn.iocoder.yudao.module.product.api.property.ProductPropertyValueApi;
|
||||
@@ -11,6 +12,7 @@ import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSal
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSalePageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleRefuseReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleRespPageItemVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleCreateReqVO;
|
||||
import cn.iocoder.yudao.module.trade.convert.aftersale.TradeAfterSaleConvert;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.TradeAfterSaleDO;
|
||||
import cn.iocoder.yudao.module.trade.service.aftersale.TradeAfterSaleService;
|
||||
@@ -110,4 +112,20 @@ public class TradeAfterSaleController {
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 售后日志测试
|
||||
*
|
||||
* @param createReqVO
|
||||
* @return cn.iocoder.yudao.framework.common.pojo.CommonResult<java.lang.Long>
|
||||
* @author 陈賝
|
||||
* @date 2023/6/14 21:39
|
||||
*/
|
||||
@PostMapping(value = "/create")
|
||||
@AfterSaleLog(id = "#createReqVO.orderItemId", content = "'申请售后:售后编号['+#createReqVO.orderItemId+'] , '", operateType = "#createReqVO.operateType")
|
||||
public CommonResult<Long> createAfterSale(@RequestBody AppTradeAfterSaleCreateReqVO createReqVO) {
|
||||
return success(1L);
|
||||
// return success(afterSaleService.createAfterSale(getLoginUserId(), createReqVO));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.trade.controller.app.aftersale.vo;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
||||
import cn.iocoder.yudao.framework.trade.core.enums.AfterSaleStatusEnum;
|
||||
import cn.iocoder.yudao.module.trade.enums.aftersale.TradeAfterSaleWayEnum;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@@ -31,6 +32,13 @@ public class AppTradeAfterSaleCreateReqVO {
|
||||
@NotNull(message = "申请原因不能为空")
|
||||
private String applyReason;
|
||||
|
||||
/**
|
||||
* @see AfterSaleStatusEnum
|
||||
*/
|
||||
@Schema(description = "操作类型", required = true, example = "1")
|
||||
@NotNull(message = "操作类型不能为空")
|
||||
private String operateType;
|
||||
|
||||
@Schema(description = "补充描述", example = "商品质量不好")
|
||||
private String applyDescription;
|
||||
|
||||
|
@@ -52,29 +52,9 @@ public class TradeAfterSaleLogDO extends BaseDO {
|
||||
*/
|
||||
private Long afterSaleId;
|
||||
/**
|
||||
* 订单编号
|
||||
*
|
||||
* 关联 {@link TradeOrderDO#getId()}
|
||||
* 操作类型 {@link TradeAfterSaleStatusEnum}
|
||||
*/
|
||||
private Long orderId;
|
||||
/**
|
||||
* 订单项编号
|
||||
*
|
||||
* 关联 {@link TradeOrderItemDO#getId()}
|
||||
*/
|
||||
private Long orderItemId;
|
||||
/**
|
||||
* 售后状态(之前)
|
||||
*
|
||||
* 枚举 {@link TradeAfterSaleStatusEnum}
|
||||
*/
|
||||
private Integer beforeStatus;
|
||||
/**
|
||||
* 售后状态(之后)
|
||||
*
|
||||
* 枚举 {@link TradeAfterSaleStatusEnum}
|
||||
*/
|
||||
private Integer afterStatus;
|
||||
private String operateType;
|
||||
/**
|
||||
* 操作明细
|
||||
*/
|
||||
|
@@ -5,6 +5,8 @@ import cn.hutool.core.util.RandomUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
|
||||
import cn.iocoder.yudao.framework.trade.core.dto.TradeAfterSaleLogDTO;
|
||||
import cn.iocoder.yudao.framework.trade.core.service.AfterSaleLogService;
|
||||
import cn.iocoder.yudao.module.pay.api.refund.PayRefundApi;
|
||||
import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleDisagreeReqVO;
|
||||
@@ -26,6 +28,8 @@ import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEn
|
||||
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
|
||||
import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties;
|
||||
import cn.iocoder.yudao.module.trade.service.order.TradeOrderService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.support.TransactionSynchronization;
|
||||
@@ -43,9 +47,10 @@ import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*;
|
||||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@Validated
|
||||
public class TradeAfterSaleServiceImpl implements TradeAfterSaleService {
|
||||
public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSaleLogService {
|
||||
|
||||
@Resource
|
||||
private TradeOrderService tradeOrderService;
|
||||
@@ -80,7 +85,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService {
|
||||
/**
|
||||
* 校验交易订单项是否可以申请售后
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userId 用户编号
|
||||
* @param createReqVO 售后创建信息
|
||||
* @return 交易订单项
|
||||
*/
|
||||
@@ -117,7 +122,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService {
|
||||
}
|
||||
// 如果是【退货退款】的情况,需要额外校验是否发货
|
||||
if (createReqVO.getWay().equals(TradeAfterSaleWayEnum.RETURN_AND_REFUND.getWay())
|
||||
&& !TradeOrderStatusEnum.haveDelivered(order.getStatus())) {
|
||||
&& !TradeOrderStatusEnum.haveDelivered(order.getStatus())) {
|
||||
throw exception(AFTER_SALE_CREATE_FAIL_ORDER_STATUS_NO_DELIVERED);
|
||||
}
|
||||
return orderItem;
|
||||
@@ -133,7 +138,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService {
|
||||
TradeOrderDO order = tradeOrderService.getOrder(orderItem.getUserId(), orderItem.getOrderId());
|
||||
afterSale.setOrderNo(order.getNo()); // 记录 orderNo 订单流水,方便后续检索
|
||||
afterSale.setType(TradeOrderStatusEnum.isCompleted(order.getStatus())
|
||||
? TradeAfterSaleTypeEnum.AFTER_SALE.getType() : TradeAfterSaleTypeEnum.IN_SALE.getType());
|
||||
? TradeAfterSaleTypeEnum.AFTER_SALE.getType() : TradeAfterSaleTypeEnum.IN_SALE.getType());
|
||||
// TODO 退还积分
|
||||
tradeAfterSaleMapper.insert(afterSale);
|
||||
|
||||
@@ -380,13 +385,38 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService {
|
||||
TradeOrderItemAfterSaleStatusEnum.NONE.getStatus(), null);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
private void createAfterSaleLog(Long userId, Integer userType, TradeAfterSaleDO afterSale,
|
||||
Integer beforeStatus, Integer afterStatus) {
|
||||
TradeAfterSaleLogDO afterSaleLog = new TradeAfterSaleLogDO().setUserId(userId).setUserType(userType)
|
||||
.setAfterSaleId(afterSale.getId()).setOrderId(afterSale.getOrderId())
|
||||
.setOrderItemId(afterSale.getOrderItemId()).setBeforeStatus(beforeStatus).setAfterStatus(afterStatus)
|
||||
.setContent(TradeAfterSaleStatusEnum.valueOf(afterStatus).getContent());
|
||||
tradeAfterSaleLogMapper.insert(afterSaleLog);
|
||||
TradeAfterSaleLogDTO logDTO = new TradeAfterSaleLogDTO()
|
||||
.setUserId(userId)
|
||||
.setUserType(userType)
|
||||
.setAfterSaleId(afterSale.getId())
|
||||
.setOperateType(afterStatus.toString());
|
||||
// TODO 废弃,待删除
|
||||
this.insert(logDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 日志记录
|
||||
*
|
||||
* @param logDTO 日志记录
|
||||
* @author 陈賝
|
||||
* @date 2023/6/12 14:18
|
||||
*/
|
||||
@Override
|
||||
@Async
|
||||
public void insert(TradeAfterSaleLogDTO logDTO) {
|
||||
try {
|
||||
TradeAfterSaleLogDO afterSaleLog = new TradeAfterSaleLogDO()
|
||||
.setUserId(logDTO.getUserId())
|
||||
.setUserType(logDTO.getUserType())
|
||||
.setAfterSaleId(logDTO.getAfterSaleId())
|
||||
.setOperateType(logDTO.getOperateType())
|
||||
.setContent(logDTO.getContent());
|
||||
tradeAfterSaleLogMapper.insert(afterSaleLog);
|
||||
}catch (Exception exception){
|
||||
log.error("日志记录错误", exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user