From ea04732899e399c88e2628de224cc13dfcbb2ce2 Mon Sep 17 00:00:00 2001
From: phpcjl <phpcjl@gmail.com>
Date: 星期三, 18 十二月 2024 19:05:55 +0800
Subject: [PATCH] 1

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java                     |    5 +
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml                           |   51 ++++------------
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java |   11 +++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java                       |    4 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java             |   23 +++----
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java          |   49 +++++++---------
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java            |   17 +++++
 7 files changed, 81 insertions(+), 79 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java
index 377b1c6..96c2b65 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java
@@ -39,9 +39,9 @@
     @TableField("shop_id")
     private Integer shopId;
 
-    @ApiModelProperty(value = "变动类型(1=门店分佣,2=下级门店分佣,3=门店服务费)")
+    @ApiModelProperty(value = "变动类型(1=门店分佣,2=下级门店分佣,3=门店服务费, 4=提现)")
     @TableField("type")
-    @Excel(name = "变更类型",readConverterExp = "1=门店分佣,2=下级门店分佣,3=门店服务费")
+    @Excel(name = "变更类型",readConverterExp = "1=门店分佣,2=下级门店分佣,3=门店服务费,4=提现")
     private Integer type;
 
     @ApiModelProperty(value = "历史余额")
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java
new file mode 100644
index 0000000..24fefee
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java
@@ -0,0 +1,11 @@
+package com.ruoyi.other.api.factory;
+
+import com.ruoyi.other.api.feignClient.ShopBalanceStatementClient;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+public class ShopBalanceStatementClientFallbackFactory implements FallbackFactory<ShopBalanceStatementClient> {
+    @Override
+    public ShopBalanceStatementClient create(Throwable cause) {
+        return null;
+    }
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java
new file mode 100644
index 0000000..cdc150d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java
@@ -0,0 +1,17 @@
+package com.ruoyi.other.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import com.ruoyi.other.api.factory.ShopBalanceStatementClientFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+@FeignClient(contextId = "ShopBalanceStatementClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = ShopBalanceStatementClientFallbackFactory.class)
+public interface ShopBalanceStatementClient {
+
+    @PostMapping()
+    R<List<ShopBalanceStatement>> getList(ShopBalanceStatement shopBalanceStatement);
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
index f9b7729..9d2c249 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java
@@ -1,9 +1,11 @@
 package com.ruoyi.other.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
 import com.ruoyi.other.service.ShopBalanceStatementService;
@@ -11,13 +13,11 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * <p>
@@ -45,14 +45,6 @@
         ShopCommissionStatisticsVO shopCommissionStatisticsVO = shopBalanceStatementService.shopCommissionStatistics(Page.of(pageNum, pageSize), shopBalanceStatement);
         return R.ok(shopCommissionStatisticsVO);
     }
-    @GetMapping("/commissionStatistics/list")
-    @ApiOperation(value = "门店余额明细", notes = "门店余额明细", tags = {"门店后台"})
-    public R<ShopCommissionStatisticsVO> shopCommissionStatisticslist(@ApiParam("页码") @RequestParam Integer pageNum,
-                                                                  @ApiParam("每一页数据大小") Integer pageSize,
-                                                                  ShopBalanceStatement shopBalanceStatement){
-        ShopCommissionStatisticsVO shopCommissionStatisticsVO = shopBalanceStatementService.shopCommissionStatistics(Page.of(pageNum, pageSize), shopBalanceStatement);
-        return R.ok(shopCommissionStatisticsVO);
-    }
 
     /**
      * 导出门店分佣统计
@@ -66,5 +58,12 @@
         util.exportExcel(response, statementIPage.getRecords(), "用户积分统计");
     }
 
+
+
+    @PostMapping("/getList")
+    public R<List<ShopBalanceStatement>> getList(@RequestBody ShopBalanceStatement shopBalanceStatement){
+        return R.ok();
+    }
+
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java
index 5bd4e28..e0b3725 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java
@@ -16,8 +16,11 @@
  * @since 2024-11-20
  */
 public interface ShopBalanceStatementMapper extends BaseMapper<ShopBalanceStatement> {
-    List<ShopBalanceStatement> findLatestChangeByType(ShopBalanceStatement shopBalanceStatement);
 
     IPage<ShopBalanceStatement> queryShopBalanceStatementPage(@Param("page") IPage<ShopBalanceStatement> page,
                                                               @Param("bs") ShopBalanceStatement shopBalanceStatement);
+
+    List<ShopBalanceStatement> selectShopBalanceStatementList(@Param("bs") ShopBalanceStatement shopBalanceStatement);
+
+
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java
index 9e265b5..8a94449 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java
@@ -1,19 +1,17 @@
 package com.ruoyi.other.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.other.api.domain.Shop;
-import com.ruoyi.other.mapper.ShopBalanceStatementMapper;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import com.ruoyi.other.api.domain.ShopPoint;
+import com.ruoyi.other.mapper.ShopBalanceStatementMapper;
 import com.ruoyi.other.service.ShopBalanceStatementService;
-import com.ruoyi.other.service.ShopService;
 import com.ruoyi.other.vo.ShopCommissionStatisticsVO;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 
-import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -26,32 +24,29 @@
  */
 @Service
 public class ShopBalanceStatementServiceImpl extends ServiceImpl<ShopBalanceStatementMapper, ShopBalanceStatement> implements ShopBalanceStatementService {
-    @Resource
-    private ShopBalanceStatementMapper shopBalanceStatementMapper;
-    @Resource
-    private ShopService shopService;
 
 
     @Override
     public ShopCommissionStatisticsVO shopCommissionStatistics(IPage<ShopBalanceStatement> page, ShopBalanceStatement shopBalanceStatement) {
-        List<ShopBalanceStatement> latestChangeByType = shopBalanceStatementMapper.findLatestChangeByType(shopBalanceStatement);
         ShopCommissionStatisticsVO shopCommissionStatisticsVO = new ShopCommissionStatisticsVO();
-        for (ShopBalanceStatement sp : latestChangeByType) {
-            switch (sp.getType()) {
-                case 1:
-                    shopCommissionStatisticsVO.setTotalCommission(sp.getBalance());
-                    break;
-                case 2:
-                    shopCommissionStatisticsVO.setTotalSubordinateCommission(sp.getBalance());
-                    break;
-                case 3:
-                    shopCommissionStatisticsVO.setTotalServiceCharge(sp.getBalance());
-                    break;
-           }
-        }
-        shopCommissionStatisticsVO.setTotalAmount(shopCommissionStatisticsVO.getTotalCommission()
-                .add(shopCommissionStatisticsVO.getTotalSubordinateCommission())
-                .add(shopCommissionStatisticsVO.getTotalServiceCharge()));
+        List<ShopBalanceStatement> shopBalanceStatements = this.baseMapper.selectShopBalanceStatementList(shopBalanceStatement);
+
+        Map<Integer, BigDecimal> shopCommissionMap = shopBalanceStatements.stream()
+                .collect(Collectors.groupingBy(
+                        ShopBalanceStatement::getType,
+                        Collectors.reducing(
+                                BigDecimal.ZERO,
+                                ShopBalanceStatement::getVariableAmount,
+                                BigDecimal::add
+                        )
+                ));
+
+        BigDecimal totalCommission = shopCommissionMap.get(1);
+        BigDecimal totalSubordinateCommission = shopCommissionMap.get(2);
+        BigDecimal totalServiceCharge = shopCommissionMap.get(3);
+
+        BigDecimal totalAmount = totalCommission.add(totalSubordinateCommission).add(totalServiceCharge);
+        shopCommissionStatisticsVO.setTotalAmount(totalAmount);
 
         IPage<ShopBalanceStatement> statementIPage = this.baseMapper.queryShopBalanceStatementPage(page, shopBalanceStatement);
         shopCommissionStatisticsVO.setStatementIPage(statementIPage);
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml
index cb0fc46..0bcec73 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml
@@ -2,45 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.other.mapper.ShopBalanceStatementMapper">
 
-    <select id="findLatestChangeByType" resultType="com.ruoyi.other.api.domain.ShopBalanceStatement">
+    <sql id="shopBalanceStatementList">
         SELECT
-            id,
-            shop_id,
-            type,
-            historical_balance,
-            variable_amount,
-            balance,
-            create_time,
-            create_user_id,
-            object_id
+        tsbs.*,
+        ts.`name` shopName,
+        ts.shop_manager shopManagerName,
+        ts.phone
         FROM
-            (
-            SELECT
-                id,
-                shop_id,
-                type,
-                historical_balance,
-                variable_amount,
-                balance,
-                create_time,
-                create_user_id,
-                object_id,
-                ROW_NUMBER() OVER ( PARTITION BY type, create_user_id ORDER BY create_time DESC ) AS rn
-            FROM
-                t_shop_balance_statement
-            ) AS subquery
-        WHERE
-            rn = 1
-    </select>
-    <select id="queryShopBalanceStatementPage" resultType="com.ruoyi.other.api.domain.ShopBalanceStatement">
-        SELECT
-            tsbs.*,
-            ts.`name` shopName,
-            ts.shop_manager shopManagerName,
-            ts.phone
-        FROM
-            t_shop_balance_statement tsbs
-                INNER JOIN t_shop ts ON ts.id = tsbs.shop_id AND ts.del_flag = 0
+        t_shop_balance_statement tsbs
+        INNER JOIN t_shop ts ON ts.id = tsbs.shop_id AND ts.del_flag = 0
         <where>
             <if test="bs.shopName != null and bs.shopName != ''">
                 AND ts.`name` like concat('%', #{bs.shopName}, '%')
@@ -58,5 +28,12 @@
                 AND tsbs.create_time BETWEEN #{bs.startTime} AND #{bs.endTime}
             </if>
         </where>
+    </sql>
+
+    <select id="queryShopBalanceStatementPage" resultType="com.ruoyi.other.api.domain.ShopBalanceStatement">
+        <include refid="shopBalanceStatementList"/>
+    </select>
+    <select id="selectShopBalanceStatementList" resultType="com.ruoyi.other.api.domain.ShopBalanceStatement">
+        <include refid="shopBalanceStatementList"/>
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.7.1