From 1482c90ec996bb994200aba63a235a3820621f21 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 23 Sep 2021 15:47:07 +0800
Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-mall

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |  110 +++++++++++
 sql/xc_mall.sql                                                                 |   33 +++
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundOperationMapper.java    |    7 
 src/main/java/cc/mrbird/febs/mall/dto/DelCartGoodsDto.java                      |   20 ++
 src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java                           |    2 
 src/main/java/cc/mrbird/febs/common/enumerates/OrderRefundStatusEnum.java       |   42 ++++
 src/main/resources/mapper/modules/MallShoppingCartMapper.xml                    |    5 
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefund.java                   |   33 +++
 src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java            |    2 
 src/main/java/cc/mrbird/febs/mall/dto/GoodsCntDto.java                          |   25 ++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java        |   24 ++
 src/main/java/cc/mrbird/febs/mall/vo/OrderRefundVo.java                         |   32 +++
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundMapper.java             |   10 +
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefundOperation.java          |   20 ++
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                       |    1 
 src/main/java/cc/mrbird/febs/mall/conversion/MallOrderRefundConversion.java     |   17 +
 src/main/java/cc/mrbird/febs/mall/dto/RefundExpressDto.java                     |   24 ++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java |   24 ++
 src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java             |    2 
 src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java         |   10 
 src/main/java/cc/mrbird/febs/common/utils/AppContants.java                      |    4 
 src/main/resources/mapper/modules/MallOrderRefundOperationMapper.xml            |    5 
 src/main/java/cc/mrbird/febs/mall/dto/AddRefundDto.java                         |   23 ++
 src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java                         |    3 
 src/main/resources/mapper/modules/MallOrderRefundMapper.xml                     |    8 
 25 files changed, 467 insertions(+), 19 deletions(-)

diff --git a/sql/xc_mall.sql b/sql/xc_mall.sql
index 89585f9..5f99d0f 100644
--- a/sql/xc_mall.sql
+++ b/sql/xc_mall.sql
@@ -243,3 +243,36 @@
 
 alter table mall_order_info add receiving_time datetime null comment '收货时间';
 
+DROP TABLE IF EXISTS mall_order_refund;
+CREATE TABLE mall_order_refund(
+  REVISION INT    COMMENT '乐观锁' ,
+  CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+  CREATED_TIME DATETIME    COMMENT '创建时间' ,
+  UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+  UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+  ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+  member_id BIGINT    COMMENT '用户ID' ,
+  order_id BIGINT    COMMENT '订单ID' ,
+  reason VARCHAR(255)    COMMENT '退款原因' ,
+  desp TEXT    COMMENT '描述' ,
+  remark TEXT    COMMENT '备注' ,
+  status INT    COMMENT '状态;1-已申请2-同意退款3-驳回退款4-已提交物流信息5-已退款' ,
+  express_no VARCHAR(255)    COMMENT '物流单号' ,
+  express_com VARCHAR(255)    COMMENT '物流公司' ,
+  PRIMARY KEY (ID)
+)  COMMENT = '订单退款';
+
+DROP TABLE IF EXISTS mall_order_refund_operation;
+CREATE TABLE mall_order_refund_operation(
+    REVISION INT    COMMENT '乐观锁' ,
+    CREATED_BY VARCHAR(32)    COMMENT '创建人' ,
+    CREATED_TIME DATETIME    COMMENT '创建时间' ,
+    UPDATED_BY VARCHAR(32)    COMMENT '更新人' ,
+    UPDATED_TIME DATETIME    COMMENT '更新时间' ,
+    ID BIGINT NOT NULL AUTO_INCREMENT  COMMENT '主键' ,
+    refund_id BIGINT    COMMENT '退款ID' ,
+    order_id BIGINT    COMMENT '订单ID' ,
+    content TEXT    COMMENT '操作内容' ,
+    PRIMARY KEY (ID)
+)  COMMENT = '退款操作明细';
+
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/OrderRefundStatusEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/OrderRefundStatusEnum.java
new file mode 100644
index 0000000..60e36fc
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/OrderRefundStatusEnum.java
@@ -0,0 +1,42 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Getter
+public enum OrderRefundStatusEnum {
+
+    /**
+     * 退款已提交
+     */
+    REFUND_APPLY(1),
+    /**
+     * 同意退款
+     */
+    AGREE(2),
+    /**
+     * 驳回退款
+     */
+    DISAGREE(3),
+    /**
+     * 物流信息已提交
+     */
+    EXPRESS_SUBMIT(4),
+    /**
+     * 已退款
+     */
+    FINISH(5),
+    /**
+     * 已取消
+     */
+    CANCEL(6);
+
+    private final Integer value;
+
+    OrderRefundStatusEnum(int value) {
+        this.value = value;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java
index a03318e..96cf5b7 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/OrderStatusEnum.java
@@ -26,7 +26,7 @@
      */
     REFUNDING(5),
     /**
-     * 已退款
+     * 退款处理完成
      */
     REFUNDED(6),
     /**
diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
index 4d0dd5b..c8af7fd 100644
--- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
+++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java
@@ -58,5 +58,9 @@
 
     public static final String TIME_OUT = "time_out";
 
+    public static final int DEL_FLAG_Y = 1;
+
+    public static final int DEL_FLAG_N = 2;
+
 
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
index 4902ff1..3005441 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
@@ -1,9 +1,7 @@
 package cc.mrbird.febs.mall.controller;
 
 import cc.mrbird.febs.common.entity.FebsResponse;
-import cc.mrbird.febs.mall.dto.AddOrderDto;
-import cc.mrbird.febs.mall.dto.OrderListDto;
-import cc.mrbird.febs.mall.dto.PayOrderDto;
+import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
 import cc.mrbird.febs.mall.vo.OrderDetailVo;
 import cc.mrbird.febs.mall.vo.OrderListVo;
@@ -85,4 +83,24 @@
         return new FebsResponse().success().message("确认成功");
     }
 
+    @ApiOperation(value = "删除订单", notes = "删除订单")
+    @PostMapping(value = "/delOrder/{id}")
+    public FebsResponse delOrder(@PathVariable("id") Long id) {
+        mallOrderInfoService.delOrder(id);
+        return new FebsResponse().success().message("删除成功");
+    }
+
+    @ApiOperation(value = "提交退款申请", notes = "提交退款申请")
+    @PostMapping(value = "/applyRefund")
+    public FebsResponse applyRefund(@RequestBody AddRefundDto addRefundDto) {
+        mallOrderInfoService.applyRefund(addRefundDto);
+        return new FebsResponse().success().message("提交成功");
+    }
+
+    @ApiOperation(value = "提交退款物流信息", notes = "提交退款物流信息")
+    @PostMapping(value = "/refundExpress")
+    public FebsResponse refundExpress(@RequestBody RefundExpressDto refundExpressDto) {
+        mallOrderInfoService.refundExpress(refundExpressDto);
+        return new FebsResponse().success().message("提交成功");
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
index a2d4ae7..d057459 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShoppingCartController.java
@@ -2,8 +2,12 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.AddCartDto;
+import cc.mrbird.febs.mall.dto.DelCartGoodsDto;
+import cc.mrbird.febs.mall.dto.GoodsCntDto;
+import cc.mrbird.febs.mall.entity.MallShoppingCart;
 import cc.mrbird.febs.mall.service.IApiMallShoppingCartService;
 import cc.mrbird.febs.mall.vo.ShoppingCartGoodsVo;
+import cn.hutool.core.util.StrUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
@@ -12,6 +16,8 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * @author wzy
@@ -44,9 +50,21 @@
     }
 
     @ApiOperation(value = "从购物车中删除商品", notes = "从购物车中删除商品")
-    @PostMapping(value = "/delGoods/{id}")
-    public FebsResponse delGoods(@PathVariable("id") Long id) {
-        mallShoppingCartService.removeById(id);
+    @PostMapping(value = "/delGoods")
+    public FebsResponse delGoods(@RequestBody DelCartGoodsDto delCartGoodsDto) {
+        List<String> ids = StrUtil.split(delCartGoodsDto.getIds(), ',');
+        mallShoppingCartService.removeByIds(ids);
         return new FebsResponse().success().data("删除成功");
     }
+
+    @ApiOperation(value = "修改购物车商品数量", notes = "修改购物车商品数量")
+    @PostMapping(value = "/goodsCnt")
+    public FebsResponse goodsCnt(@RequestBody GoodsCntDto goodsCntDto) {
+        MallShoppingCart shoppingCart = new MallShoppingCart();
+        shoppingCart.setId(goodsCntDto.getId());
+        shoppingCart.setCnt(goodsCntDto.getCnt());
+
+        mallShoppingCartService.updateById(shoppingCart);
+        return new FebsResponse().success();
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/conversion/MallOrderRefundConversion.java b/src/main/java/cc/mrbird/febs/mall/conversion/MallOrderRefundConversion.java
new file mode 100644
index 0000000..5eaaa0f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/conversion/MallOrderRefundConversion.java
@@ -0,0 +1,17 @@
+package cc.mrbird.febs.mall.conversion;
+
+import cc.mrbird.febs.mall.entity.MallOrderRefund;
+import cc.mrbird.febs.mall.vo.OrderRefundVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Mapper
+public abstract class MallOrderRefundConversion {
+    public static final MallOrderRefundConversion INSTANCE = Mappers.getMapper(MallOrderRefundConversion.class);
+
+    public abstract OrderRefundVo entityToVo(MallOrderRefund orderRefund);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddRefundDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddRefundDto.java
new file mode 100644
index 0000000..1b0071f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AddRefundDto.java
@@ -0,0 +1,23 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Data
+@ApiModel(value = "AddRefundDto", description = "提交退款申请参数接收类")
+public class AddRefundDto {
+
+    @ApiModelProperty(value = "订单ID", example = "1")
+    private Long id;
+
+    @ApiModelProperty(value = "退款原因", example = "太差了")
+    private String reason;
+
+    @ApiModelProperty(value = "描述", example = "描述")
+    private String desp;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/DelCartGoodsDto.java b/src/main/java/cc/mrbird/febs/mall/dto/DelCartGoodsDto.java
new file mode 100644
index 0000000..0cd3c0a
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/DelCartGoodsDto.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Data
+@ApiModel(value = "DelCartGoodsDto", description = "删除购物车商品接口接收参数类")
+public class DelCartGoodsDto {
+
+    @NotBlank(message = "参数不能为空")
+    @ApiModelProperty(value = "逗号隔开id", example = "1,2,3")
+    private String ids;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/GoodsCntDto.java b/src/main/java/cc/mrbird/febs/mall/dto/GoodsCntDto.java
new file mode 100644
index 0000000..ed26674
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/GoodsCntDto.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Data
+@ApiModel(value = "GoodsCntDto", description = "修改购物车数量参数接收类")
+public class GoodsCntDto {
+
+    @NotNull(message = "参数不能为空")
+    @ApiModelProperty(value = "购物车ID", example = "1")
+    private Long id;
+
+    @Min(1)
+    @ApiModelProperty(value = "数量", example = "12")
+    private Integer cnt;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/RefundExpressDto.java b/src/main/java/cc/mrbird/febs/mall/dto/RefundExpressDto.java
new file mode 100644
index 0000000..94e5948
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/RefundExpressDto.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Data
+@ApiModel(value = "RefundExpressDto", description = "退款订单物流接收参数类")
+public class RefundExpressDto {
+
+    @ApiModelProperty(value = "订单ID", example = "1")
+    private Long id;
+
+    @ApiModelProperty(value = "物流单号", example = "123")
+    private String expressNo;
+
+    @ApiModelProperty(value = "物流公司", example = "中通")
+    private String expressCom;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefund.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefund.java
new file mode 100644
index 0000000..dd56255
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefund.java
@@ -0,0 +1,33 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Data
+@TableName("mall_order_refund")
+public class MallOrderRefund extends BaseEntity {
+
+    private Long memberId;
+
+    private Long orderId;
+
+    private String reason;
+
+    private String desp;
+
+    private String remark;
+
+    /**
+     * 1-已申请 2-同意退款 3-驳回退款 4-已提交物流信息 5-已退款 6-已取消
+     */
+    private Integer status;
+
+    private String expressNo;
+
+    private String expressCom;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefundOperation.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefundOperation.java
new file mode 100644
index 0000000..de05e22
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderRefundOperation.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Data
+@TableName("mall_order_refund_operation")
+public class MallOrderRefundOperation extends BaseEntity {
+
+    private Long refundId;
+
+    private Long orderId;
+
+    private String content;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundMapper.java
new file mode 100644
index 0000000..c99e4ee
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundMapper.java
@@ -0,0 +1,10 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallOrderRefund;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+public interface MallOrderRefundMapper extends BaseMapper<MallOrderRefund> {
+
+    MallOrderRefund selectOrderRefundByOrderId(@Param("orderId") Long orderId);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundOperationMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundOperationMapper.java
new file mode 100644
index 0000000..8ce4622
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderRefundOperationMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallOrderRefundOperation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface MallOrderRefundOperationMapper extends BaseMapper<MallOrderRefundOperation> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java
index 8b79d93..c90781a 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallShoppingCartMapper.java
@@ -15,4 +15,6 @@
     List<MallShoppingCart> selectCartGoodsList(@Param("memberId") Long memberId);
 
     MallShoppingCart selectCartGoodsBySkuId(@Param("skuId") Long skuId, @Param("memberId") Long memberId);
+
+    int delBySkuId(@Param("skuId") Long skuId, @Param("memberId") Long memberId);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
index fc62ef8..bfefbbc 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
@@ -1,8 +1,6 @@
 package cc.mrbird.febs.mall.service;
 
-import cc.mrbird.febs.mall.dto.AddOrderDto;
-import cc.mrbird.febs.mall.dto.OrderListDto;
-import cc.mrbird.febs.mall.dto.PayOrderDto;
+import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import cc.mrbird.febs.mall.vo.OrderDetailVo;
 import cc.mrbird.febs.mall.vo.OrderListVo;
@@ -23,4 +21,10 @@
     OrderDetailVo findOrderDetailsById(Long id);
 
     void confirmOrder(Long id);
+
+    void delOrder(Long id);
+
+    void applyRefund(AddRefundDto addRefundDto);
+
+    void refundExpress(RefundExpressDto refundExpressDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 5ccdcba..e66a8cd 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -1,20 +1,21 @@
 package cc.mrbird.febs.mall.service.impl;
 
+import cc.mrbird.febs.common.enumerates.OrderRefundStatusEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
 import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.AppContants;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion;
-import cc.mrbird.febs.mall.dto.AddOrderDto;
-import cc.mrbird.febs.mall.dto.AddOrderItemDto;
-import cc.mrbird.febs.mall.dto.OrderListDto;
-import cc.mrbird.febs.mall.dto.PayOrderDto;
+import cc.mrbird.febs.mall.conversion.MallOrderRefundConversion;
+import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
 import cc.mrbird.febs.mall.vo.OrderDetailVo;
 import cc.mrbird.febs.mall.vo.OrderListVo;
+import cc.mrbird.febs.mall.vo.OrderRefundVo;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.SecureUtil;
@@ -48,6 +49,9 @@
     private final MallMemberMapper memberMapper;
     private final IApiMallMemberWalletService memberWalletService;
     private final MallExpressInfoMapper expressInfoMapper;
+    private final MallOrderRefundMapper mallOrderRefundMapper;
+    private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper;
+    private final MallShoppingCartMapper mallShoppingCartMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -106,6 +110,10 @@
 
             sku.setStock(sku.getStock() - item.getCnt());
             mallGoodsSkuMapper.updateById(sku);
+
+            if (addOrderDto.getType() == 1) {
+                mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
+            }
         }
 
         orderInfo.setAmount(total);
@@ -119,7 +127,7 @@
     public void cancelOrder(Long id) {
         MallMember member = LoginUserUtil.getLoginUser();
         MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id);
-        if (orderInfo == null) {
+        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
             throw new FebsException("订单不存在");
         }
 
@@ -137,7 +145,7 @@
     public String payOrder(PayOrderDto payOrderDto) {
         MallMember member = LoginUserUtil.getLoginUser();
         MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), payOrderDto.getId());
-        if (orderInfo == null) {
+        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
             throw new FebsException("订单不存在");
         }
 
@@ -186,7 +194,7 @@
     @Override
     public OrderDetailVo findOrderDetailsById(Long id) {
         MallOrderInfo orderInfo = this.baseMapper.selectOrderDetailsById(id);
-        if (orderInfo == null) {
+        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
             throw new FebsException("订单不存在");
         }
 
@@ -197,6 +205,12 @@
             orderDetailVo.setExpressNo(expressInfo.getExpressNo());
             orderDetailVo.setExpressCom(expressInfo.getExpressCom());
         }
+
+        if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue() || orderInfo.getStatus() == OrderStatusEnum.REFUNDED.getValue()) {
+            MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId());
+            OrderRefundVo orderRefundVo = MallOrderRefundConversion.INSTANCE.entityToVo(orderRefund);
+            orderDetailVo.setOrderRefund(orderRefundVo);
+        }
         return orderDetailVo;
     }
 
@@ -205,12 +219,92 @@
     public void confirmOrder(Long id) {
         MallMember member = LoginUserUtil.getLoginUser();
         MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id);
-        if (orderInfo == null) {
+        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
             throw new FebsException("订单不存在");
+        }
+
+        if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) {
+            throw new FebsException("该状态不能确认收货");
         }
 
         orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
         orderInfo.setReceivingTime(new Date());
         this.baseMapper.updateById(orderInfo);
     }
+
+    @Override
+    public void delOrder(Long id) {
+        MallMember member = LoginUserUtil.getLoginUser();
+        MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id);
+        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
+            throw new FebsException("订单不存在");
+        }
+
+        orderInfo.setDelFlag(AppContants.DEL_FLAG_Y);
+        this.baseMapper.updateById(orderInfo);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void applyRefund(AddRefundDto addRefundDto) {
+        MallOrderInfo orderInfo = this.baseMapper.selectById(addRefundDto.getId());
+        if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
+            throw new FebsException("订单不存在");
+        }
+
+        if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue()) {
+            throw new FebsException("已提交退款, 请勿重复提交");
+        }
+
+        if (orderInfo.getStatus() == OrderStatusEnum.WAIT_PAY.getValue()) {
+            throw new FebsException("该订单不能退款");
+        }
+
+        MallMember member = LoginUserUtil.getLoginUser();
+        orderInfo.setStatus(OrderStatusEnum.REFUNDING.getValue());
+        this.baseMapper.updateById(orderInfo);
+
+        MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId());
+        if (orderRefund == null) {
+            orderRefund = new MallOrderRefund();
+            orderRefund.setOrderId(orderInfo.getId());
+            orderRefund.setMemberId(member.getId());
+            orderRefund.setDesp(addRefundDto.getDesp());
+            orderRefund.setReason(addRefundDto.getReason());
+            orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue());
+            mallOrderRefundMapper.insert(orderRefund);
+        } else {
+            orderRefund.setDesp(addRefundDto.getDesp());
+            orderRefund.setReason(addRefundDto.getReason());
+            orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue());
+            mallOrderRefundMapper.updateById(orderRefund);
+        }
+
+
+        MallOrderRefundOperation operation = new MallOrderRefundOperation();
+        operation.setOrderId(orderInfo.getId());
+        operation.setRefundId(orderRefund.getId());
+        operation.setContent(StrUtil.format("用户:{}提交退款申请", member.getName()));
+        mallOrderRefundOperationMapper.insert(operation);
+    }
+
+    @Override
+    public void refundExpress(RefundExpressDto refundExpressDto) {
+        MallMember member = LoginUserUtil.getLoginUser();
+
+        MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(refundExpressDto.getId());
+        if (!OrderRefundStatusEnum.AGREE.getValue().equals(orderRefund.getStatus())) {
+            throw new FebsException("暂不能提交物流信息");
+        }
+
+        orderRefund.setExpressNo(refundExpressDto.getExpressNo());
+        orderRefund.setExpressCom(refundExpressDto.getExpressCom());
+        mallOrderRefundMapper.updateById(orderRefund);
+
+        MallOrderRefundOperation operation = new MallOrderRefundOperation();
+        operation.setOrderId(refundExpressDto.getId());
+        operation.setRefundId(orderRefund.getId());
+        operation.setContent(StrUtil.format("用户:{}提交物流信息,快递公司:{},单号:{}", member.getName(), refundExpressDto.getExpressCom(), refundExpressDto.getExpressNo()));
+        mallOrderRefundOperationMapper.insert(operation);
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
index 36d8f8e..f18c329 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
@@ -51,4 +51,7 @@
 
     @ApiModelProperty(value = "订单明细")
     private List<OrderItemVo> items;
+
+    @ApiModelProperty(value = "订单退款信息")
+    private OrderRefundVo orderRefund;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
index 24b70e1..85089a9 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
@@ -25,7 +25,7 @@
     @ApiModelProperty(value = "下单时间")
     private Date orderTime;
 
-    @ApiModelProperty(value = "状态 1-待支付2-待发货3-待收货4-已完成5-退款中6-已退款7-已取消")
+    @ApiModelProperty(value = "状态 1-待支付 2-待发货 3-待收货 4-已完成 5-退款中 6-退款处理完成 7-已取消")
     private Integer status;
 
     @ApiModelProperty(value = "订单金额")
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderRefundVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderRefundVo.java
new file mode 100644
index 0000000..c320147
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderRefundVo.java
@@ -0,0 +1,32 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2021-09-23
+ **/
+@Data
+@ApiModel(value = "OrderRefundVo", description = "订单退款详情返回参数类")
+public class OrderRefundVo {
+
+    @ApiModelProperty(value = "退款ID")
+    private Long id;
+
+    @ApiModelProperty(value = "退款理由")
+    private String reason;
+
+    @ApiModelProperty(value = "描述")
+    private String desp;
+
+    @ApiModelProperty(value = "退款状态 1-已申请 2-同意退款 3-驳回退款 4-已提交物流信息 5-已退款 6-已取消")
+    private Integer status;
+
+    @ApiModelProperty(value = "物流单号")
+    private String expressNo;
+
+    @ApiModelProperty(value = "物流公司")
+    private String expressCom;
+}
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index cf66ff2..a519661 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -53,6 +53,7 @@
         <result column="longitude" property="longitude" />
         <result column="latitude" property="latitude" />
         <result column="remark" property="remark" />
+        <result column="del_flag" property="delFlag" />
         <collection property="items" ofType="cc.mrbird.febs.mall.entity.MallOrderItem">
             <id property="id" column="item_id" />
             <result property="orderId" column="order_id" />
diff --git a/src/main/resources/mapper/modules/MallOrderRefundMapper.xml b/src/main/resources/mapper/modules/MallOrderRefundMapper.xml
new file mode 100644
index 0000000..383920b
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallOrderRefundMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.mall.mapper.MallOrderRefundMapper">
+
+    <select id="selectOrderRefundByOrderId" resultType="cc.mrbird.febs.mall.entity.MallOrderRefund">
+        select * from mall_order_refund where order_id=#{orderId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallOrderRefundOperationMapper.xml b/src/main/resources/mapper/modules/MallOrderRefundOperationMapper.xml
new file mode 100644
index 0000000..e136417
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallOrderRefundOperationMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.mall.mapper.MallOrderRefundOperationMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallShoppingCartMapper.xml b/src/main/resources/mapper/modules/MallShoppingCartMapper.xml
index 1dd5d8d..353e3ff 100644
--- a/src/main/resources/mapper/modules/MallShoppingCartMapper.xml
+++ b/src/main/resources/mapper/modules/MallShoppingCartMapper.xml
@@ -20,4 +20,9 @@
         select * from mall_shopping_cart
         where member_id=#{memberId} and sku_id=#{skuId}
     </select>
+
+    <delete id="delBySkuId">
+        delete from mall_shopping_cart
+        where member_id=#{memberId} and sku_id=#{skuId}
+    </delete>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1