Kaynağa Gözat

订单售后代码提交

wangzhijun 6 saat önce
ebeveyn
işleme
0d94d75e1a

+ 44 - 3
nightFragrance-massage/src/main/java/com/ylx/order/controller/AfterSalesServiceController.java

@@ -1,17 +1,25 @@
 package com.ylx.order.controller;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.ylx.common.core.domain.R;
+import com.ylx.common.core.domain.entity.SysDictData;
+import com.ylx.common.utils.DictUtils;
+import com.ylx.order.domain.dto.AfterSalesServiceDTO;
 import com.ylx.order.domain.vo.RegulationConfigVO;
+import com.ylx.order.enums.AfterSaleServiceDictTypeEnum;
 import com.ylx.order.service.IAfterSalesServiceService;
 import com.ylx.order.service.RegulationService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 @RestController
@@ -25,6 +33,39 @@ public class AfterSalesServiceController {
     @Resource
     private IAfterSalesServiceService afterSalesServiceService;
 
+    @PreAuthorize("@customerAuth.isCustomer()")
+    @ApiOperation("客户端获取售后原因接口:退款=1, 取消订单=2")
+    @GetMapping("/dict/{type}/reason")
+    public R<List<String>> getReasonList(@PathVariable("type") Integer type) {
+
+        String dictType = AfterSaleServiceDictTypeEnum.getDictTypeByCode(type);
+
+        if (ObjectUtil.isNull(dictType)) {
+            return R.fail("无效的type类型参数");
+        }
+
+        List<SysDictData> reasonDictDataList = DictUtils.getSortedDictCache(dictType);
+
+        if (CollUtil.isEmpty(reasonDictDataList)) {
+            return R.ok(Collections.emptyList());
+        }
+
+        List<String> list = new ArrayList<>(reasonDictDataList.size());
+        for (SysDictData data : reasonDictDataList) {
+            list.add(data.getDictValue());
+        }
+        return R.ok(list);
+    }
+
+    @PreAuthorize("@customerAuth.isCustomer()")
+    @ApiOperation("客户端用户提交退款")
+    @PostMapping("/submit")
+    public R<?> submitAfterSale(@Validated @RequestBody AfterSalesServiceDTO dto) {
+        this.afterSalesServiceService.submitAfterSale(dto);
+        return R.ok();
+    }
+
+
     @ApiOperation("根据商户履约状态获取退款描述")
     @GetMapping("/desc/list")
     public R<List<RegulationConfigVO>> getDescList(Integer execStatus) {

+ 19 - 0
nightFragrance-massage/src/main/java/com/ylx/order/domain/dto/AfterSalesServiceDTO.java

@@ -0,0 +1,19 @@
+package com.ylx.order.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+@ApiModel("客户端提交售后DTO")
+public class AfterSalesServiceDTO implements Serializable {
+    private static final long serialVersionUID = -6661594498170063665L;
+
+    @NotNull(message = "订单ID不能为空")
+    @ApiModelProperty("关联的主订单ID")
+    private Long orderId;
+
+}

+ 36 - 0
nightFragrance-massage/src/main/java/com/ylx/order/enums/AfterSaleServiceDictTypeEnum.java

@@ -0,0 +1,36 @@
+package com.ylx.order.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum AfterSaleServiceDictTypeEnum {
+
+
+    /**
+     * 售后退款原因 (对应前端传参: 1)
+     */
+    REFUND_REASON(1, "after_sales_service_reason"),
+
+    /**
+     * 订单取消原因 (对应前端传参: 2)
+     */
+    ORDER_CANCELLED_REASON(2, "order_cancelled_reason");
+
+    private final Integer code;
+    private final String desc;
+
+    AfterSaleServiceDictTypeEnum(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public static String getDictTypeByCode(Integer code) {
+        if (code == null) return null;
+        for (AfterSaleServiceDictTypeEnum e : values()) {
+            if (e.getCode().equals(code)) {
+                return e.getDesc();
+            }
+        }
+        return null;
+    }
+}

+ 2 - 0
nightFragrance-massage/src/main/java/com/ylx/order/service/IAfterSalesServiceService.java

@@ -2,6 +2,8 @@ package com.ylx.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ylx.order.domain.AfterSalesService;
+import com.ylx.order.domain.dto.AfterSalesServiceDTO;
 
 public interface IAfterSalesServiceService extends IService<AfterSalesService> {
+    void submitAfterSale(AfterSalesServiceDTO dto);
 }

+ 10 - 0
nightFragrance-massage/src/main/java/com/ylx/order/service/impl/AfterSalesServiceServiceImpl.java

@@ -2,13 +2,23 @@ package com.ylx.order.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ylx.order.domain.AfterSalesService;
+import com.ylx.order.domain.dto.AfterSalesServiceDTO;
 import com.ylx.order.mapper.AfterSalesServiceMapper;
 import com.ylx.order.service.IAfterSalesServiceService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 @Slf4j
 @Service
 public class AfterSalesServiceServiceImpl extends ServiceImpl<AfterSalesServiceMapper, AfterSalesService>
         implements IAfterSalesServiceService {
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void submitAfterSale(AfterSalesServiceDTO dto) {
+
+        // 1. 获取订单信息
+    }
+
 }