Sfoglia il codice sorgente

销售列表增加退货接口

周箭河 5 anni fa
parent
commit
67ac3e1ab2

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SellOrder.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.biz.dal.enums.AccountType;
+import com.ym.mec.biz.dal.enums.SellStatus;
 import com.ym.mec.biz.dal.enums.SellTypeEnum;
 import com.ym.mec.biz.dal.enums.StockType;
 import io.swagger.annotations.ApiModel;
@@ -155,6 +156,12 @@ public class SellOrder {
     private AccountType accountType;
 
     /**
+     * 状态
+     */
+    @ApiModelProperty(value = "状态")
+    private SellStatus status;
+
+    /**
     * 交易时间
     */
     @ApiModelProperty(value="交易时间")
@@ -411,4 +418,12 @@ public class SellOrder {
     public void setBatchNo(String batchNo) {
         this.batchNo = batchNo;
     }
+
+    public SellStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(SellStatus status) {
+        this.status = status;
+    }
 }

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SellStatus.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+
+public enum SellStatus implements BaseEnum<Integer, SellStatus> {
+    NORMAL(0, "正常"),
+    ONLY_RETURNED(1, "仅退货"),
+    REFUND(2, "退货退费");
+
+    private Integer code;
+    private String msg;
+
+    SellStatus(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return null;
+    }
+}

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SellOrderService.java

@@ -32,4 +32,12 @@ public interface SellOrderService extends BaseService<Integer, SellOrder> {
     List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails, StudentPaymentOrder studentPaymentOrder, MusicGroup musicGroup);
 
     void batchInsert(List<SellOrder> sellOrders);
+
+
+    /**
+     * 退货
+     * @param id
+     * @return
+     */
+    SellOrder refund(Integer id);
 }

+ 35 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -10,10 +10,12 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -30,6 +32,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
     private MusicGroupDao musicGroupDao;
     @Autowired
     private SysPaymentConfigService sysPaymentConfigService;
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
 
     @Override
     public BaseDAO<Integer, SellOrder> getDAO() {
@@ -128,11 +132,11 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 }
             }
             //库存类型
-            if(goodsStockType.equals(StockType.ALL) && accountType.equals(AccountType.INTERNAL)){
+            if (goodsStockType.equals(StockType.ALL) && accountType.equals(AccountType.INTERNAL)) {
                 sellOrder.setStockType(StockType.INTERNAL);
-            }else if(goodsStockType.equals(StockType.ALL) && accountType.equals(AccountType.EXTERNAL)){
+            } else if (goodsStockType.equals(StockType.ALL) && accountType.equals(AccountType.EXTERNAL)) {
                 sellOrder.setStockType(StockType.EXTERNAL);
-            }else {
+            } else {
                 sellOrder.setStockType(goodsStockType);
             }
             //批次号 TODO
@@ -236,11 +240,11 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                     sellOrder.setExpectAmount(BigDecimal.ZERO);
                 }
                 //库存类型
-                if(goods.getStockType().equals(StockType.ALL) && accountType.equals(AccountType.INTERNAL)){
+                if (goods.getStockType().equals(StockType.ALL) && accountType.equals(AccountType.INTERNAL)) {
                     sellOrder.setStockType(StockType.INTERNAL);
-                }else if(goods.getStockType().equals(StockType.ALL) && accountType.equals(AccountType.EXTERNAL)){
+                } else if (goods.getStockType().equals(StockType.ALL) && accountType.equals(AccountType.EXTERNAL)) {
                     sellOrder.setStockType(StockType.EXTERNAL);
-                }else {
+                } else {
                     sellOrder.setStockType(goods.getStockType());
                 }
                 //批次号 TODO
@@ -259,4 +263,29 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         sellOrderDao.batchInsert(sellOrders);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public SellOrder refund(Integer id) {
+        SellOrder sellOrder = sellOrderDao.get(id);
+
+        if (!sellOrder.getStatus().equals(SellStatus.NORMAL)) {
+            throw new BizException("当前状态不能退货,请核查");
+        }
+        if (!sellOrder.getType().equals(SellTypeEnum.SCHOOL_BUY)) {
+            throw new BizException("学校采购不能退货");
+        }
+        //1、更改销售列表状态
+        sellOrder.setStatus(SellStatus.REFUND);
+        sellOrder.setUpdateTime(new Date());
+        sellOrderDao.update(sellOrder);
+
+        //2、金额退到余额
+        if (sellOrder.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
+            sysUserCashAccountService.updateBalance(sellOrder.getUserId(), sellOrder.getActualAmount().negate(), PlatformCashAccountDetailTypeEnum.REFUNDS, "退货");
+        }
+        //3、商品退回库存 TODO
+
+        return sellOrder;
+    }
+
 }

+ 10 - 4
mec-biz/src/main/resources/config/mybatis/SellOrderMapper.xml

@@ -29,6 +29,7 @@
         <result column="user_id_" property="userId"/>
         <result column="payment_channel_" property="paymentChannel"/>
         <result column="mer_no_" property="merNo"/>
+        <result column="status_" property="status"/>
         <result column="sell_time_" property="sellTime"/>
         <result column="create_ime_" property="createIme"/>
         <result column="update_time_" property="updateTime"/>
@@ -36,9 +37,8 @@
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
         id_, edu_teacher_id_,organ_id_, cooperation_organ_id_, trans_no_,order_id_, order_no_, expect_amount_,
-        actual_amount_,
-        balance_amount_, sell_cost_, sell_cost2_, type_, goods_id_,goods_name_, num_, user_id_, payment_channel_,
-        mer_no_, sell_time_, create_ime_, update_time_
+        actual_amount_,balance_amount_, sell_cost_, sell_cost2_, type_, goods_id_,goods_name_, num_, user_id_,
+        payment_channel_,mer_no_,batch_no_,stock_type_,account_type_,status_, sell_time_, create_ime_, update_time_
     </sql>
     <select id="get" parameterType="java.lang.Integer" resultMap="SellOrder">
         <!--@mbg.generated-->
@@ -129,6 +129,9 @@
             <if test="accountType != null">
                 account_type_ = #{accountType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
+            <if test="status != null">
+                status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
             <if test="sellTime != null">
                 sell_time_ = #{sellTime},
             </if>
@@ -190,8 +193,11 @@
             <if test="cooperationOrganId != null">
                 AND so.cooperation_organ_id_ = #{cooperationOrganId}
             </if>
+            <if test="status != null">
+                AND so.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
             <if test="type != null">
-                AND so.type_ = #{type}
+                AND so.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>
             <if test="startTime != null">
                 AND so.sell_time_ >= #{startTime}

+ 7 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SellOrderController.java

@@ -80,4 +80,11 @@ public class SellOrderController extends BaseController {
         return succeed(sellOrder);
     }
 
+    @ApiOperation("退货")
+    @PostMapping(value = "/refund")
+    @PreAuthorize("@pcs.hasPermissions('sellOrder/refund')")
+    public HttpResponseResult<SellOrder> refund(Integer id) {
+        return succeed(sellOrderService.refund(id));
+    }
+
 }