1
phpcjl
2024-12-18 ea04732899e399c88e2628de224cc13dfcbb2ce2
1
5个文件已修改
2个文件已添加
160 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 = "历史余额")
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java
New file
@@ -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;
    }
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java
New file
@@ -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);
}
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();
    }
}
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);
}
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);
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>