Kaynağa Gözat

小程序订单

guomengjiao 4 gün önce
ebeveyn
işleme
90f67e4f22

+ 9 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/info/ApiOrderController.java

@@ -77,4 +77,13 @@ public class ApiOrderController extends AbstractApiController {
         return toAjax(iOrderService.insertByBo(bo) ? 1 : 0);
     }
 
+    @ApiOperation("取消订单")
+    @RepeatSubmit()
+    @PostMapping("/cancel/{id}")
+    public R<Void> cancel(@ApiParam("主键")
+                              @NotNull(message = "主键不能为空")
+                              @PathVariable("id") Long id) {
+        return toAjax(iOrderService.cancel(id, getUserId()) ? 1 : 0);
+    }
+
 }

+ 6 - 0
ruoyi-info/src/main/java/com/ruoyi/info/order/enums/CancellationMethod.java

@@ -2,6 +2,9 @@ package com.ruoyi.info.order.enums;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
 import com.ruoyi.common.enums.IIntegerEnum;
 
 import java.util.Objects;
@@ -18,6 +21,8 @@ public enum CancellationMethod implements IIntegerEnum<Integer> {
         this.msg = msg;
     }
 
+    @EnumValue
+    @JsonValue
     private Integer code;
 
     private String msg;
@@ -40,6 +45,7 @@ public enum CancellationMethod implements IIntegerEnum<Integer> {
         this.msg = msg;
     }
 
+    @JsonCreator
     public static CancellationMethod getByCode(Integer code) {
         for (CancellationMethod value : CancellationMethod.values()) {
             if (Objects.equals(code, value.getCode())) {

+ 6 - 0
ruoyi-info/src/main/java/com/ruoyi/info/order/enums/OrderStatus.java

@@ -2,6 +2,9 @@ package com.ruoyi.info.order.enums;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
 import com.ruoyi.common.enums.IIntegerEnum;
 
 import java.util.Objects;
@@ -21,6 +24,8 @@ public enum OrderStatus implements IIntegerEnum<Integer> {
         this.msg = msg;
     }
 
+    @EnumValue
+    @JsonValue
     private Integer code;
 
     private String msg;
@@ -43,6 +48,7 @@ public enum OrderStatus implements IIntegerEnum<Integer> {
         this.msg = msg;
     }
 
+    @JsonCreator
     public static OrderStatus getByCode(Integer code) {
         for (OrderStatus value : OrderStatus.values()) {
             if (Objects.equals(code, value.getCode())) {

+ 2 - 1
ruoyi-info/src/main/java/com/ruoyi/info/order/exception/OrderExceptionEnum.java

@@ -11,7 +11,8 @@ public enum OrderExceptionEnum implements IIntegerEnum {
 
     // TODO 注意检查错误码,保证系统内唯一
     Order_IS_NOT_EXISTS(800001, "订单不存在"),
-
+    Order_IS_NOT_YOURS(800002, "当前订单不是您本人的订单,不可取消!"),
+    Order_STATUS_ERROR(800003, "订单不是待确认,不可取消!"),
     ;
 
     private Integer code;

+ 4 - 3
ruoyi-info/src/main/java/com/ruoyi/info/order/service/IOrderService.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.Order;
-import com.ruoyi.info.order.domain.vo.OrderVo;
 import com.ruoyi.info.order.domain.bo.OrderBo;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.info.order.domain.vo.OrderVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -74,4 +74,5 @@ public interface IOrderService {
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
+    boolean cancel(Long id, Long userId);
 }

+ 16 - 0
ruoyi-info/src/main/java/com/ruoyi/info/order/service/impl/OrderServiceImpl.java

@@ -16,6 +16,7 @@ import com.ruoyi.info.hospital.service.IHospitalService;
 import com.ruoyi.info.order.domain.Order;
 import com.ruoyi.info.order.domain.bo.OrderBo;
 import com.ruoyi.info.order.domain.vo.OrderVo;
+import com.ruoyi.info.order.enums.CancellationMethod;
 import com.ruoyi.info.order.enums.OrderStatus;
 import com.ruoyi.info.order.exception.OrderExceptionEnum;
 import com.ruoyi.info.order.mapper.OrderMapper;
@@ -213,4 +214,19 @@ public class OrderServiceImpl implements IOrderService {
         return baseMapper.deleteBatchIds(ids) > 0;
     }
 
+    @Override
+    public boolean cancel(Long id, Long userId) {
+        Order order = loadById(id, true);
+        if (!order.getUserId().equals(userId)) {
+            throw new ServiceException(OrderExceptionEnum.Order_IS_NOT_YOURS);
+        }
+        if (!OrderStatus.wait_confirmed.equals(order.getStatus())) {
+            throw new ServiceException(OrderExceptionEnum.Order_STATUS_ERROR);
+        }
+        order.setStatus(OrderStatus.canceled);
+        order.setCancellationMethod(CancellationMethod.user_canceled);
+        order.setCancellationTime(new Date());
+        return baseMapper.updateById(order) > 0;
+    }
+
 }

+ 1 - 1
ruoyi-info/src/main/java/com/ruoyi/info/service/domain/bo/ServiceProductBo.java

@@ -81,7 +81,7 @@ public class ServiceProductBo extends BaseEntity {
      * 服务单位
      */
     @ApiModelProperty(value = "服务单位", required = true)
-    @NotBlank(message = "服务单位不能为空", groups = { AddGroup.class, EditGroup.class })
+    @NotNull(message = "服务单位不能为空", groups = { AddGroup.class, EditGroup.class })
     private ServiceUnit serviceUnit;
 
     /**

+ 16 - 10
ruoyi-info/src/main/java/com/ruoyi/info/service/enums/ServiceUnit.java

@@ -2,33 +2,38 @@ package com.ruoyi.info.service.enums;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
 import com.ruoyi.common.enums.IIntegerEnum;
 
 import java.util.Objects;
 
-public enum ServiceUnit implements IIntegerEnum<String> {
+public enum ServiceUnit implements IIntegerEnum<Integer> {
 
-    day("day", "天"),
-    hour("hour", "小时"),
-    time("time", "次"),
-    cover("cover", "套"),
+    day(0, "天"),
+    hour(1, "小时"),
+    time(2, "次"),
+    cover(3, "套"),
     ;
 
-    ServiceUnit(String code, String msg) {
+    ServiceUnit(Integer code, String msg) {
         this.code = code;
         this.msg = msg;
     }
 
-    private String code;
+    @EnumValue
+    @JsonValue
+    private Integer code;
 
     private String msg;
 
     @Override
-    public String getCode() {
+    public Integer getCode() {
         return code;
     }
 
-    public void setCode(String code) {
+    public void setCode(Integer code) {
         this.code = code;
     }
 
@@ -41,7 +46,8 @@ public enum ServiceUnit implements IIntegerEnum<String> {
         this.msg = msg;
     }
 
-    public static ServiceUnit getByCode(String code) {
+    @JsonCreator
+    public static ServiceUnit getByCode(Integer code) {
         for (ServiceUnit value : ServiceUnit.values()) {
             if (Objects.equals(code, value.getCode())) {
                 return value;