Pu Zhibing
2025-03-27 e7a4c604b4703caf135ec3d360106e7cf028cc89
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package com.ruoyi.other.service.impl;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.web.page.PageInfo;
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.vo.ShopCommissionStatisticsVO;
import org.springframework.stereotype.Service;
 
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author luodangjia
 * @since 2024-11-20
 */
@Service
public class ShopBalanceStatementServiceImpl extends ServiceImpl<ShopBalanceStatementMapper, ShopBalanceStatement> implements ShopBalanceStatementService {
 
 
    @Override
    public ShopCommissionStatisticsVO shopCommissionStatistics(IPage<ShopBalanceStatement> page, ShopBalanceStatement shopBalanceStatement) {
        ShopCommissionStatisticsVO shopCommissionStatisticsVO = new ShopCommissionStatisticsVO();
        List<ShopBalanceStatement> shopBalanceStatements = this.baseMapper.selectShopBalanceStatementList(shopBalanceStatement);
    
        shopBalanceStatements.forEach(s->s.setVariableAmount(s.getVariableAmount().multiply(new BigDecimal(s.getChangeDirection()))));
        Map<Integer, BigDecimal> shopCommissionMap = shopBalanceStatements.stream()
                .collect(Collectors.groupingBy(
                        ShopBalanceStatement::getType,
                        Collectors.reducing(
                                BigDecimal.ZERO,
                                ShopBalanceStatement::getVariableAmount,
                                BigDecimal::add
                        )
                ));
 
        BigDecimal totalCommission = shopCommissionMap.getOrDefault(1,BigDecimal.ZERO);
        BigDecimal totalSubordinateCommission = shopCommissionMap.getOrDefault(2,BigDecimal.ZERO);
        BigDecimal totalServiceCharge = shopCommissionMap.getOrDefault(3,BigDecimal.ZERO);
        shopCommissionStatisticsVO.setTotalCommission(totalCommission);
        shopCommissionStatisticsVO.setTotalSubordinateCommission(totalSubordinateCommission);
        shopCommissionStatisticsVO.setTotalServiceCharge(totalServiceCharge);
        BigDecimal totalAmount = totalCommission.add(totalSubordinateCommission).add(totalServiceCharge);
        shopCommissionStatisticsVO.setTotalAmount(totalAmount);
        
        IPage<ShopBalanceStatement> statementIPage = this.baseMapper.queryShopBalanceStatementPage(page, shopBalanceStatement);
        for (ShopBalanceStatement record : statementIPage.getRecords()) {
            if (record.getChangeDirection() == -1){
                // 减少
                record.setVariableAmountString("-¥"+record.getVariableAmount());
            }else{
                record.setVariableAmountString("+¥"+record.getVariableAmount());
            }
        }
        shopCommissionStatisticsVO.setStatementIPage(statementIPage);
        return shopCommissionStatisticsVO;
    }
    
    
    /**
     * 获取余额明细列表
     * @param type
     * @param pageNum
     * @param pageSize
     * @return
     */
    @Override
    public PageInfo<ShopBalanceStatement> shopCommissionStatisticslist(Integer shopId, Integer type, Integer pageNum, Integer pageSize) {
        PageInfo<ShopBalanceStatement> pageInfo = new PageInfo<>(pageNum, pageSize);
        return this.baseMapper.shopCommissionStatisticslist(pageInfo, shopId, type);
    }
}