From 506c327ae850d281b58cbf485fd1b4d15821922c Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 22 Sep 2021 14:37:22 +0800
Subject: [PATCH] add cancelOrder

---
 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java               |    3 +++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java        |   16 +++++++++-------
 src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java         |    4 +++-
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   19 +++++++++++++++++--
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                       |    3 +++
 sql/xc_mall.sql                                                                 |    4 ++++
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java                     |    8 ++++++++
 7 files changed, 47 insertions(+), 10 deletions(-)

diff --git a/sql/xc_mall.sql b/sql/xc_mall.sql
index 51a5b35..e82cfb7 100644
--- a/sql/xc_mall.sql
+++ b/sql/xc_mall.sql
@@ -206,3 +206,7 @@
     remark TEXT    COMMENT '备注' ,
     PRIMARY KEY (ID)
 )  COMMENT = '资金流水';
+alter table mall_order_info add del_flag int default 2 null comment '1-已删除2-未删除' after latitude;
+alter table mall_order_info add pay_order_no varchar(500) null comment '支付订单号' after pay_method;
+alter table mall_order_info add pay_result int null comment '支付结果 1-成功2-未成功' after pay_order_no;
+
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 cd8fb00..7189e7a 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
@@ -26,18 +26,20 @@
 
     private final IApiMallOrderInfoService mallOrderInfoService;
 
-    @ApiOperation(value = "提交订单", notes = "提交订单")
-    @PostMapping(value = "/addOrder")
-    public FebsResponse addOrder(@RequestBody AddOrderDto addOrderDto) {
-        String orderNo = mallOrderInfoService.createOrder(addOrderDto);
+    @ApiOperation(value = "创建订单", notes = "创建订单")
+    @PostMapping(value = "/createOrder")
+    public FebsResponse createOrder(@RequestBody AddOrderDto addOrderDto) {
+        Long orderId = mallOrderInfoService.createOrder(addOrderDto);
 
-        // TODO 创建支付订单
-        return new FebsResponse().success().message("创建订单成功");
+        return new FebsResponse().success().data(orderId).message("创建订单成功");
     }
 
     @ApiOperation(value = "取消订单", notes = "取消订单")
     @PostMapping(value = "/cancelOrder/{id}")
     public FebsResponse cancelOrder(@PathVariable("id") Long id) {
-        return null;
+        mallOrderInfoService.cancelOrder(id);
+        return new FebsResponse().success();
     }
+
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
index 48b1f23..fa133c2 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
@@ -27,6 +27,10 @@
 
     private String payMethod;
 
+    private String payOrderNo;
+
+    private String payResult;
+
     /**
      * 状态 1-待支付2-待发货3-待收货4-已完成5-退款中6-已退款7-已取消
      */
@@ -36,6 +40,8 @@
      * 取消类型 1-超时未支付2-主动取消
      */
     private Integer cancelType;
+    public static final Integer CANCEL_OVERTIME_NO_PAY = 1;
+    public static final Integer CANCEL_BY_SELF = 2;
 
     private String name;
 
@@ -48,4 +54,6 @@
     private String latitude;
 
     private String remark;
+
+    private Integer delFlag;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
index 74bdcd4..647c5fb 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -2,10 +2,13 @@
 
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @author wzy
  * @date 2021-09-18
  **/
 public interface MallOrderInfoMapper extends BaseMapper<MallOrderInfo> {
+
+    MallOrderInfo selectOrderByMemberIdAndId(@Param("memberId") Long memberId, @Param("id") Long id);
 }
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 aea0580..4424b48 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
@@ -6,5 +6,7 @@
 
 public interface IApiMallOrderInfoService extends IService<MallOrderInfo> {
 
-    String createOrder(AddOrderDto addOrderDto);
+    Long createOrder(AddOrderDto addOrderDto);
+
+    void cancelOrder(Long id);
 }
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 d6b93d2..cc89996 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
@@ -35,7 +35,7 @@
     private final MallOrderItemMapper mallOrderItemMapper;
 
     @Override
-    public String createOrder(AddOrderDto addOrderDto) {
+    public Long createOrder(AddOrderDto addOrderDto) {
         MallMember member = LoginUserUtil.getLoginUser();
 
         MallAddressInfo address = mallAddressInfoMapper.selectById(addOrderDto.getAddressId());
@@ -91,8 +91,23 @@
         }
 
 
-        return orderNo;
+        return orderInfo.getId();
     }
 
+    @Override
+    public void cancelOrder(Long id) {
+        MallMember member = LoginUserUtil.getLoginUser();
+        MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id);
+        if (orderInfo == null) {
+            throw new FebsException("订单不存在");
+        }
 
+        if (OrderStatusEnum.WAIT_PAY.getValue() != orderInfo.getStatus()) {
+            throw new FebsException("订单不是待付款, 无法取消");
+        }
+
+        orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
+        orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF);
+        this.baseMapper.updateById(orderInfo);
+    }
 }
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index bd39908..66cd3b6 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -2,4 +2,7 @@
 <!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.MallOrderInfoMapper">
 
+    <select id="selectOrderByMemberIdAndId" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo">
+        select * from mall_order_info where member_id=#{memberId} and id=#{id}
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1