guomengjiao месяцев назад: 6
Родитель
Сommit
84d8665f20

+ 9 - 52
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/OrderRefundController.java

@@ -1,32 +1,26 @@
 package com.ruoyi.web.controller.info;
 
-import java.util.List;
-import java.util.Arrays;
-import java.util.concurrent.TimeUnit;
-
-import lombok.RequiredArgsConstructor;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.info.order.domain.vo.OrderRefundVo;
 import com.ruoyi.info.order.domain.bo.OrderRefundBo;
+import com.ruoyi.info.order.domain.vo.OrderRefundVo;
 import com.ruoyi.info.order.service.IOrderRefundService;
-import com.ruoyi.common.core.page.TableDataInfo;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * 售后订单Controller
@@ -65,18 +59,6 @@ public class OrderRefundController extends BaseController {
         return R.ok(iOrderRefundService.queryById(id));
     }
 
-    /**
-     * 新增售后订单
-     */
-    @ApiOperation("新增售后订单")
-    @SaCheckPermission("order:orderRefund:add")
-    @Log(title = "售后订单", businessType = BusinessType.INSERT)
-    @RepeatSubmit()
-    @PostMapping("/add")
-    public R<Void> add(@Validated(AddGroup.class) @RequestBody OrderRefundBo bo) {
-        return toAjax(iOrderRefundService.insertByBo(bo) ? 1 : 0);
-    }
-
     /**
      * 修改售后订单
      */
@@ -89,29 +71,4 @@ public class OrderRefundController extends BaseController {
         return toAjax(iOrderRefundService.updateByBo(bo) ? 1 : 0);
     }
 
-    /**
-     * 删除售后订单
-     */
-    @ApiOperation("删除售后订单")
-    @SaCheckPermission("order:orderRefund:remove")
-    @Log(title = "售后订单", businessType = BusinessType.DELETE)
-    @PostMapping("/del/{ids}")
-    public R<Void> remove(@ApiParam("主键串")
-                                       @NotEmpty(message = "主键不能为空")
-                                       @PathVariable Long[] ids) {
-        return toAjax(iOrderRefundService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
-    }
-
-    /**
-     * 导出售后订单列表
-     */
-    @ApiOperation("导出售后订单列表")
-    @SaCheckPermission("order:orderRefund:export")
-    @Log(title = "售后订单", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(@Validated OrderRefundBo bo, HttpServletResponse response) {
-        List<OrderRefundVo> list = iOrderRefundService.queryList(bo);
-        ExcelUtil.exportExcel(list, "售后订单", OrderRefundVo.class, response);
-    }
-
 }

+ 80 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/info/ApiOrderRefundController.java

@@ -0,0 +1,80 @@
+package com.ruoyi.api.controller.info;
+
+import com.ruoyi.api.controller.common.AbstractApiController;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.info.order.domain.bo.OrderRefundBo;
+import com.ruoyi.info.order.domain.vo.OrderRefundVo;
+import com.ruoyi.info.order.service.IOrderRefundService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 售后订单Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-29
+ */
+@Validated
+@Api(value = "售后订单控制器", tags = {"售后订单管理"})
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/orderRefund")
+public class ApiOrderRefundController extends AbstractApiController {
+
+    private final IOrderRefundService iOrderRefundService;
+
+    /**
+     * 分页查询售后订单列表
+     */
+    @ApiOperation("查询售后订单列表")
+    @GetMapping("/page")
+    public TableDataInfo<OrderRefundVo> page(@Validated(QueryGroup.class) OrderRefundBo bo, PageQuery pageQuery) {
+        return iOrderRefundService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 获取售后订单详细信息
+     */
+    @ApiOperation("获取售后订单详细信息")
+    @GetMapping("/info/{id}")
+    public R<OrderRefundVo> getInfo(@ApiParam("主键")
+                                                  @NotNull(message = "主键不能为空")
+                                                  @PathVariable("id") Long id) {
+        return R.ok(iOrderRefundService.queryById(id));
+    }
+
+    /**
+     * 新增售后订单
+     */
+    @ApiOperation("新增售后订单")
+    @RepeatSubmit()
+    @PostMapping("/add")
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody OrderRefundBo bo) {
+        bo.setUserId(getUserId());
+        return toAjax(iOrderRefundService.insertByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 取消售后订单
+     */
+    @ApiOperation("取消售后订单")
+    @RepeatSubmit()
+    @PostMapping("/cancel/{id}")
+    public R<Void> cancel(@ApiParam("主键")
+                          @NotNull(message = "主键不能为空")
+                          @PathVariable("id") Long id) {
+        return toAjax(iOrderRefundService.cancel(id) ? 1 : 0);
+    }
+
+}

+ 2 - 0
ruoyi-info/src/main/java/com/ruoyi/info/order/domain/bo/OrderRefundBo.java

@@ -31,6 +31,8 @@ public class OrderRefundBo extends BaseEntity {
     @ApiModelProperty(value = "ID", required = true)
     private Long id;
 
+    private Long userId;
+
     /**
      * 订单ID
      */

+ 0 - 5
ruoyi-info/src/main/java/com/ruoyi/info/order/domain/vo/OrderVo.java

@@ -190,26 +190,21 @@ public class OrderVo {
     /**
      * 实付价格
      */
-    @ExcelProperty(value = "实付金额")
     @ApiModelProperty("实付价格")
     private BigDecimal payPrice;
     /**
      * 支付方式
      */
-    @ExcelProperty(value = "支付方式", converter = ExcelEnumConvert.class)
-    @ExcelDictFormat(readConverterExp = "wx=微信")
     @ApiModelProperty("支付方式")
     private PayMethod payMethod;
     /**
      * 订单支付时间
      */
-    @ExcelProperty(value = "订单支付时间")
     @ApiModelProperty("订单支付时间")
     private Date payTime;
     /**
      * 订单支付流水号
      */
-    @ExcelProperty(value = "订单支付流水号")
     @ApiModelProperty("订单支付流水号")
     private String payTradeNo;
     /**

+ 1 - 0
ruoyi-info/src/main/java/com/ruoyi/info/order/enums/RefundStatus.java

@@ -14,6 +14,7 @@ public enum RefundStatus implements IIntegerEnum<Integer> {
     wait(1, "退款中"),
     complete(2, "退款成功"),
     fail(3, "退款失败"),
+    cancel(4, "取消退款"),
     ;
 
     RefundStatus(Integer code, String msg) {

+ 3 - 2
ruoyi-info/src/main/java/com/ruoyi/info/order/exception/OrderRefundExceptionEnum.java

@@ -11,8 +11,9 @@ public enum OrderRefundExceptionEnum implements IIntegerEnum {
 
     // TODO 注意检查错误码,保证系统内唯一
     OrderRefund_IS_NOT_EXISTS(180001, "售后订单不存在"),
-
-    ;
+    Order_STATUS_ERROR(180002, "订单状态无法申请退款"),
+    Order_USER_ERROR(180003, "当前订单不是您本人的订单,不可退款!"),
+    OrderRefund_STATUS_ERROR(180004, "售后订单不是待退款,无法取消!");
 
     private Integer code;
 

+ 4 - 3
ruoyi-info/src/main/java/com/ruoyi/info/order/service/IOrderRefundService.java

@@ -1,10 +1,10 @@
 package com.ruoyi.info.order.service;
 
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.info.order.domain.OrderRefund;
-import com.ruoyi.info.order.domain.vo.OrderRefundVo;
 import com.ruoyi.info.order.domain.bo.OrderRefundBo;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.info.order.domain.vo.OrderRefundVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -74,4 +74,5 @@ public interface IOrderRefundService {
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
+    boolean cancel(Long id);
 }

+ 34 - 10
ruoyi-info/src/main/java/com/ruoyi/info/order/service/impl/OrderRefundServiceImpl.java

@@ -2,26 +2,30 @@ package com.ruoyi.info.order.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanCopyUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.domain.PageQuery;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
+import com.ruoyi.info.order.domain.Order;
+import com.ruoyi.info.order.domain.OrderRefund;
 import com.ruoyi.info.order.domain.bo.OrderRefundBo;
 import com.ruoyi.info.order.domain.vo.OrderRefundVo;
-import com.ruoyi.info.order.domain.OrderRefund;
+import com.ruoyi.info.order.enums.OrderStatus;
+import com.ruoyi.info.order.enums.RefundStatus;
+import com.ruoyi.info.order.exception.OrderRefundExceptionEnum;
 import com.ruoyi.info.order.mapper.OrderRefundMapper;
 import com.ruoyi.info.order.service.IOrderRefundService;
-import com.ruoyi.info.order.exception.OrderRefundExceptionEnum;
+import com.ruoyi.info.order.service.IOrderService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Collection;
 
 /**
  * 售后订单Service业务层处理
@@ -34,6 +38,7 @@ import java.util.Collection;
 public class OrderRefundServiceImpl implements IOrderRefundService {
 
     private final OrderRefundMapper baseMapper;
+    private final IOrderService orderService;
 
     /**
      * 查询售后订单分页
@@ -111,8 +116,17 @@ public class OrderRefundServiceImpl implements IOrderRefundService {
      */
     @Override
     public Boolean insertByBo(OrderRefundBo bo) {
+        //判断订单状态
+        Order order = orderService.loadById(bo.getOrderId(), true);
+        if (!OrderStatus.wait_service.equals(order.getStatus()) && !OrderStatus.in_progress.equals(order.getStatus())) {
+            throw new ServiceException(OrderRefundExceptionEnum.Order_STATUS_ERROR);
+        }
+        if (!order.getUserId().equals(bo.getUserId())) {
+            throw new ServiceException(OrderRefundExceptionEnum.Order_USER_ERROR);
+        }
         OrderRefund add = BeanUtil.toBean(bo, OrderRefund.class);
         validEntityBeforeSave(add);
+        add.setRefundStatus(RefundStatus.wait);
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
             bo.setId(add.getId());
@@ -157,4 +171,14 @@ public class OrderRefundServiceImpl implements IOrderRefundService {
         return baseMapper.deleteBatchIds(ids) > 0;
     }
 
+    @Override
+    public boolean cancel(Long id) {
+        OrderRefund orderRefund = loadById(id, true);
+        if (!orderRefund.getRefundStatus().equals(RefundStatus.wait)) {
+            throw new ServiceException(OrderRefundExceptionEnum.OrderRefund_STATUS_ERROR);
+        }
+        orderRefund.setRefundStatus(RefundStatus.cancel);
+        return baseMapper.updateById(orderRefund) > 0;
+    }
+
 }