Browse Source

fixed 分佣提成结算确认&结算取消

fushengqian 1 năm trước cách đây
mục cha
commit
6847cf2db1

+ 1 - 1
fuint-application/src/main/java/com/fuint/common/enums/CommissionCashStatusEnum.java

@@ -9,7 +9,7 @@ package com.fuint.common.enums;
 public enum CommissionCashStatusEnum {
     WAIT("A", "待确认"),
     SETTLED("B", "已确认"),
-    CANCEL("C", "已支付"),
+    CANCEL("C", "已打款"),
     PAYED("D", "已作废");
 
     private String key;

+ 20 - 0
fuint-application/src/main/java/com/fuint/common/service/CommissionCashService.java

@@ -6,6 +6,7 @@ import com.fuint.framework.pagination.PaginationRequest;
 import com.fuint.framework.pagination.PaginationResponse;
 import com.fuint.framework.exception.BusinessCheckException;
 import com.fuint.module.backendApi.request.CommissionCashRequest;
+import com.fuint.module.backendApi.request.CommissionSettleConfirmRequest;
 import com.fuint.module.backendApi.request.CommissionSettleRequest;
 import com.fuint.repository.model.MtCommissionCash;
 
@@ -51,4 +52,23 @@ public interface CommissionCashService extends IService<MtCommissionCash> {
      * @return
      */
     void updateCommissionCash(CommissionCashRequest commissionCashRequest) throws BusinessCheckException;
+
+    /**
+     * 结算确认
+     *
+     * @param requestParam 确认参数
+     * @throws BusinessCheckException
+     * @return
+     */
+    void confirmCommissionCash(CommissionSettleConfirmRequest requestParam) throws BusinessCheckException;
+
+    /**
+     * 取消结算
+     *
+     * @param requestParam 取消参数
+     * @throws BusinessCheckException
+     * @return
+     */
+    void cancelCommissionCash(CommissionSettleConfirmRequest requestParam) throws BusinessCheckException;
+
 }

+ 45 - 5
fuint-application/src/main/java/com/fuint/common/service/impl/CommissionCashServiceImpl.java

@@ -3,7 +3,6 @@ package com.fuint.common.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fuint.common.Constants;
 import com.fuint.common.enums.*;
 import com.fuint.common.service.*;
 import com.fuint.common.util.CommonUtil;
@@ -13,6 +12,7 @@ import com.fuint.framework.pagination.PaginationRequest;
 import com.fuint.framework.pagination.PaginationResponse;
 import com.fuint.module.backendApi.request.CommissionCashRequest;
 import com.fuint.module.backendApi.request.CommissionLogRequest;
+import com.fuint.module.backendApi.request.CommissionSettleConfirmRequest;
 import com.fuint.module.backendApi.request.CommissionSettleRequest;
 import com.fuint.repository.mapper.MtCommissionCashMapper;
 import com.fuint.common.dto.CommissionCashDto;
@@ -88,7 +88,10 @@ public class CommissionCashServiceImpl extends ServiceImpl<MtCommissionCashMappe
         if (StringUtils.isNotBlank(storeId)) {
             lambdaQueryWrapper.eq(MtCommissionCash::getStoreId, storeId);
         }
-
+        String uuid = paginationRequest.getSearchParams().get("uuid") == null ? "" : paginationRequest.getSearchParams().get("uuid").toString();
+        if (StringUtils.isNotBlank(uuid)) {
+            lambdaQueryWrapper.eq(MtCommissionCash::getUuid, uuid);
+        }
         lambdaQueryWrapper.orderByDesc(MtCommissionCash::getId);
         List<MtCommissionCash> commissionCashList = mtCommissionCashMapper.selectList(lambdaQueryWrapper);
         List<CommissionCashDto> dataList = new ArrayList<>();
@@ -163,6 +166,7 @@ public class CommissionCashServiceImpl extends ServiceImpl<MtCommissionCashMappe
                  BigDecimal totalAmount = new BigDecimal("0");
                  Integer cashMerchantId = 0;
                  Integer cashStoreId = 0;
+                String settleNo = CommonUtil.createSettlementNo();
                  for (MtCommissionLog mtCommissionLog : commissionLogList) {
                       if (mtCommissionLog.getStaffId().equals(staffId)) {
                           totalAmount = totalAmount.add(mtCommissionLog.getAmount());
@@ -174,13 +178,13 @@ public class CommissionCashServiceImpl extends ServiceImpl<MtCommissionCashMappe
                           }
                           CommissionLogRequest commissionLogRequest = new CommissionLogRequest();
                           commissionLogRequest.setId(mtCommissionLog.getId());
+                          commissionLogRequest.setSettleUuid(uuid);
                           commissionLogRequest.setOperator(commissionSettleRequest.getOperator());
                           commissionLogRequest.setStatus(CommissionStatusEnum.SETTLED.getKey());
                           commissionLogService.updateCommissionLog(commissionLogRequest);
                       }
                  }
                  MtCommissionCash mtCommissionCash = new MtCommissionCash();
-                String settleNo = CommonUtil.createSettlementNo();
                  mtCommissionCash.setSettleNo(settleNo);
                  mtCommissionCash.setUuid(uuid);
                  mtCommissionCash.setStaffId(staffId);
@@ -231,9 +235,8 @@ public class CommissionCashServiceImpl extends ServiceImpl<MtCommissionCashMappe
         MtCommissionCash mtCommissionCash =  mtCommissionCashMapper.selectById(commissionCashRequest.getId());
         if (mtCommissionCash == null) {
             logger.error("更新分销提成提现失败...");
-            throw new BusinessCheckException("更新分销提成提现失败");
+            throw new BusinessCheckException("更新分销提成提现失败,数据不存在");
         }
-        mtCommissionCash.setStatus(commissionCashRequest.getStatus() == null ? CommissionStatusEnum.NORMAL.getKey() : commissionCashRequest.getStatus());
         mtCommissionCash.setUpdateTime(new Date());
         if (commissionCashRequest.getAmount() != null) {
             mtCommissionCash.setAmount(new BigDecimal(commissionCashRequest.getAmount()));
@@ -241,7 +244,44 @@ public class CommissionCashServiceImpl extends ServiceImpl<MtCommissionCashMappe
         if (commissionCashRequest.getDescription() != null) {
             mtCommissionCash.setDescription(commissionCashRequest.getDescription());
         }
+        if (commissionCashRequest.getStatus() != null) {
+            mtCommissionCash.setStatus(commissionCashRequest.getStatus());
+        }
         mtCommissionCash.setOperator(commissionCashRequest.getOperator());
         mtCommissionCashMapper.updateById(mtCommissionCash);
     }
+
+    /**
+     * 结算确认
+     *
+     * @param  requestParam 确认参数
+     * @throws BusinessCheckException
+     * @return
+     */
+    @Override
+    @Transactional
+    @OperationServiceLog(description = "结算确认")
+    public void confirmCommissionCash(CommissionSettleConfirmRequest requestParam) throws BusinessCheckException {
+       if (StringUtil.isEmpty(requestParam.getUuid())) {
+           throw new BusinessCheckException("请求有误.");
+       }
+       mtCommissionCashMapper.confirmCommissionCash(requestParam.getMerchantId(), requestParam.getUuid(), requestParam.getOperator());
+    }
+
+    /**
+     * 结算确认
+     *
+     * @param requestParam 确认参数
+     * @throws BusinessCheckException
+     * @return
+     */
+    @Override
+    @Transactional
+    @OperationServiceLog(description = "结算确认")
+    public void cancelCommissionCash(CommissionSettleConfirmRequest requestParam) throws BusinessCheckException {
+        if (StringUtil.isEmpty(requestParam.getUuid())) {
+            throw new BusinessCheckException("请求有误.");
+        }
+        mtCommissionCashMapper.cancelCommissionCash(requestParam.getMerchantId(), requestParam.getUuid(), requestParam.getOperator());
+    }
 }

+ 4 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/CommissionLogServiceImpl.java

@@ -268,7 +268,6 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
             logger.error("更新分销提成记录失败...");
             throw new BusinessCheckException("更新分销提成记录失败,该记录不存在");
         }
-        mtCommissionLog.setUpdateTime(new Date());
         if (commissionLogRequest.getAmount() != null) {
             mtCommissionLog.setAmount(new BigDecimal(commissionLogRequest.getAmount()));
         }
@@ -278,7 +277,11 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
         if (commissionLogRequest.getStatus() != null) {
             mtCommissionLog.setStatus(commissionLogRequest.getStatus());
         }
+        if (commissionLogRequest.getSettleUuid() != null) {
+            mtCommissionLog.setSettleUuid(commissionLogRequest.getSettleUuid());
+        }
         mtCommissionLog.setOperator(commissionLogRequest.getOperator());
+        mtCommissionLog.setUpdateTime(new Date());
         mtCommissionLogMapper.updateById(mtCommissionLog);
     }
 }

+ 59 - 2
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendCommissionCashController.java

@@ -15,6 +15,7 @@ import com.fuint.framework.pagination.PaginationRequest;
 import com.fuint.framework.pagination.PaginationResponse;
 import com.fuint.framework.exception.BusinessCheckException;
 import com.fuint.module.backendApi.request.CommissionCashRequest;
+import com.fuint.module.backendApi.request.CommissionSettleConfirmRequest;
 import com.fuint.repository.model.MtStore;
 import com.fuint.utils.StringUtil;
 import io.swagger.annotations.Api;
@@ -67,6 +68,7 @@ public class BackendCommissionCashController extends BaseController {
         String title = request.getParameter("title");
         String status = request.getParameter("status");
         String searchStoreId = request.getParameter("storeId");
+        String uuid = request.getParameter("uuid");
 
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
         Integer storeId;
@@ -93,6 +95,9 @@ public class BackendCommissionCashController extends BaseController {
         if (storeId != null && storeId > 0) {
             params.put("storeId", storeId);
         }
+        if (StringUtil.isNotEmpty(uuid)) {
+            params.put("uuid", uuid);
+        }
         paginationRequest.setSearchParams(params);
         PaginationResponse<CommissionCashDto> paginationResponse = commissionCashService.queryCommissionCashByPagination(paginationRequest);
 
@@ -150,12 +155,12 @@ public class BackendCommissionCashController extends BaseController {
     }
 
     /**
-     * 修改分销提成提现记录
+     * 修改分销提成提现
      *
      * @param request HttpServletRequest对象
      * @return
      */
-    @ApiOperation(value = "修改分销提成提现记录")
+    @ApiOperation(value = "修改分销提成提现")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @PreAuthorize("@pms.hasPermission('commission:cash:index')")
     public ResponseObject save(HttpServletRequest request, @RequestBody CommissionCashRequest commissionCashRequest) throws BusinessCheckException {
@@ -171,4 +176,56 @@ public class BackendCommissionCashController extends BaseController {
 
         return getSuccessResult(true);
     }
+
+    /**
+     * 结算确认
+     *
+     * @param request HttpServletRequest对象
+     * @return
+     */
+    @ApiOperation(value = "结算确认")
+    @RequestMapping(value = "/confirm", method = RequestMethod.POST)
+    @PreAuthorize("@pms.hasPermission('commission:cash:index')")
+    public ResponseObject confirm(HttpServletRequest request, @RequestBody CommissionSettleConfirmRequest requestParam) throws BusinessCheckException {
+        String token = request.getHeader("Access-Token");
+
+        AccountInfo accountDto = TokenUtil.getAccountInfoByToken(token);
+        if (accountDto == null) {
+            return getFailureResult(1001, "请先登录");
+        }
+
+        requestParam.setOperator(accountDto.getAccountName());
+        if (accountDto.getMerchantId() != null && accountDto.getMerchantId() > 0) {
+            requestParam.setMerchantId(accountDto.getMerchantId());
+        }
+        commissionCashService.confirmCommissionCash(requestParam);
+
+        return getSuccessResult(true);
+    }
+
+    /**
+     * 取消结算
+     *
+     * @param request HttpServletRequest对象
+     * @return
+     */
+    @ApiOperation(value = "取消结算")
+    @RequestMapping(value = "/cancel", method = RequestMethod.POST)
+    @PreAuthorize("@pms.hasPermission('commission:cash:index')")
+    public ResponseObject cancel(HttpServletRequest request, @RequestBody CommissionSettleConfirmRequest requestParam) throws BusinessCheckException {
+        String token = request.getHeader("Access-Token");
+
+        AccountInfo accountDto = TokenUtil.getAccountInfoByToken(token);
+        if (accountDto == null) {
+            return getFailureResult(1001, "请先登录");
+        }
+        if (accountDto.getMerchantId() != null && accountDto.getMerchantId() > 0) {
+            requestParam.setMerchantId(accountDto.getMerchantId());
+        }
+
+        requestParam.setOperator(accountDto.getAccountName());
+        commissionCashService.cancelCommissionCash(requestParam);
+
+        return getSuccessResult(true);
+    }
 }

+ 3 - 0
fuint-application/src/main/java/com/fuint/module/backendApi/request/CommissionLogRequest.java

@@ -16,6 +16,9 @@ public class CommissionLogRequest implements Serializable {
     @ApiModelProperty(value="ID", name="id")
     private Integer id;
 
+    @ApiModelProperty(value="结算uuid", name="settleUuid")
+    private String settleUuid;
+
     @ApiModelProperty(value="分佣金额", name="amount")
     private String amount;
 

+ 25 - 0
fuint-application/src/main/java/com/fuint/module/backendApi/request/CommissionSettleConfirmRequest.java

@@ -0,0 +1,25 @@
+package com.fuint.module.backendApi.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * 分佣提成提现确认参数
+ *
+ * Created by FSQ
+ * CopyRight https://www.fuint.cn
+ */
+@Data
+public class CommissionSettleConfirmRequest implements Serializable {
+
+    @ApiModelProperty(value="结算uuid", name="uuid")
+    private String uuid;
+
+    @ApiModelProperty(value="商户ID", name="merchantId")
+    private Integer merchantId;
+
+    @ApiModelProperty(value="操作人", name="operator")
+    private String operator;
+
+}

+ 6 - 1
fuint-repository/src/main/java/com/fuint/repository/mapper/MtCommissionCashMapper.java

@@ -2,6 +2,7 @@ package com.fuint.repository.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fuint.repository.model.MtCommissionCash;
+import org.apache.ibatis.annotations.Param;
 
 /**
  *  提现记录 Mapper 接口
@@ -10,5 +11,9 @@ import com.fuint.repository.model.MtCommissionCash;
  * CopyRight https://www.fuint.cn
  */
 public interface MtCommissionCashMapper extends BaseMapper<MtCommissionCash> {
-   // empty
+
+    Boolean confirmCommissionCash(@Param("merchantId") Integer merchantId, @Param("uuid") String uuid, @Param("operator") String operator);
+
+    Boolean cancelCommissionCash(@Param("merchantId") Integer merchantId, @Param("uuid") String uuid, @Param("operator") String operator);
+
 }

+ 4 - 1
fuint-repository/src/main/java/com/fuint/repository/model/MtCommissionLog.java

@@ -65,6 +65,9 @@ public class MtCommissionLog implements Serializable {
     @ApiModelProperty("备注")
     private String description;
 
+    @ApiModelProperty("结算uuid")
+    private String settleUuid;
+
     @ApiModelProperty("提现记录ID")
     private Integer cashId;
 
@@ -83,7 +86,7 @@ public class MtCommissionLog implements Serializable {
     @ApiModelProperty("最后操作人")
     private String operator;
 
-    @ApiModelProperty("状态")
+    @ApiModelProperty("状态,A:待结算;B:已结算;C:已作废")
     private String status;
 
 }

+ 12 - 0
fuint-repository/src/main/resources/mapper/MtCommissionCashMapper.xml

@@ -1,5 +1,17 @@
 <?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="com.fuint.repository.mapper.MtCommissionCashMapper">
+    <update id="confirmCommissionCash">
+        update mt_commission_cash t set t.STATUS = 'B',t.OPERATOR = #{operator} where t.uuid = #{uuid}
+        <if test="merchantId != null and merchantId > 0">
+            AND t.MERCHANT_ID = #{merchantId}
+        </if>
+    </update>
 
+    <update id="cancelCommissionCash">
+        update mt_commission_cash t set t.STATUS = 'D',t.OPERATOR = #{operator} where t.uuid = #{uuid}
+        <if test="merchantId != null and merchantId > 0">
+            AND t.MERCHANT_ID = #{merchantId}
+        </if>
+    </update>
 </mapper>