1
phpcjl
2024-12-17 f6c948f093a35f20e8fc94b5d0f893c5647c41b7
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.ruoyi.account.controller;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.model.BalanceChangeRecord;
import com.ruoyi.account.api.model.UserClickLog;
import com.ruoyi.account.api.model.UserPoint;
import com.ruoyi.account.dto.BalanceQuery;
import com.ruoyi.account.dto.UserCancelQuery;
import com.ruoyi.account.excel.UserPointEx;
import com.ruoyi.account.service.BalanceChangeRecordService;
import com.ruoyi.account.vo.CommissionStatistics;
import com.ruoyi.account.vo.UserPointStatistics;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
 
/**
 * @author zhibing.pu
 * @Date 2024/12/2 15:36
 */
@RestController
@RequestMapping("/balanceChangeRecord")
public class BalanceChangeRecordController {
    
    @Resource
    private BalanceChangeRecordService balanceChangeRecordService;
    
    
    /**
     * 保存账户流水记录
     * @param balanceChangeRecord
     * @return
     */
    @PostMapping("/saveBalanceChangeRecord")
    public R saveBalanceChangeRecord(@RequestBody BalanceChangeRecord balanceChangeRecord){
        balanceChangeRecordService.save(balanceChangeRecord);
        return R.ok();
    }
 
    @PostMapping("/page")
    @ApiOperation(value = "余额变更明细", tags = {"后台"})
    public R<IPage<BalanceChangeRecord>> page(@RequestBody BalanceQuery agentQuery) {
 
        return R.ok(balanceChangeRecordService.pageList(agentQuery));
    }
 
    /**
     * 用户分佣统计
     */
    @GetMapping("/commissionStatistics")
    @ApiOperation(value = "用户分佣统计", tags = "管理后台-财务统计-用户分佣统计")
    public R<CommissionStatistics> commissionStatistics(UserPoint userPoint) {
        userPoint.setType(2);
        IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(userPoint.getPageNum(), userPoint.getPageSize()), userPoint);
        UserPointStatistics statistics = userPointService.getStatistics(userPoint);
        CommissionStatistics commissionStatistics = new CommissionStatistics();
        commissionStatistics.setStatistics(statistics);
        commissionStatistics.setUserPointPage(userPointPage);
        return R.ok(commissionStatistics);
    }
 
    /**
     * 导出用户分佣统计
     */
    @GetMapping("/commissionExport")
    @ApiOperation(value = "用户分佣统计导出", tags = "管理后台-财务统计-用户分佣统计")
    public void commissionExport(HttpServletResponse response, UserPoint userPoint) {
        userPoint.setType(2);
        IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(1, Integer.MAX_VALUE), userPoint);
        List<UserPoint> userPointList = userPointPage.getRecords();
        List<UserPointEx> userPointExList = new ArrayList<>();
        for (UserPoint point : userPointList) {
            UserPointEx userPointEx = new UserPointEx();
            userPointEx.setUserName(point.getUserName());
            userPointEx.setPhone(point.getPhone());
            userPointEx.setChangeTime(point.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            userPointEx.setChangeNum(point.getVariablePoint().toString());
            Integer type = point.getType();
            switch (type) {
                case 1:
                    userPointEx.setType("消费积分");
                    break;
                case 2:
                    userPointEx.setType("返佣积分");
                    break;
                case 3:
                    userPointEx.setType("拉新人积分");
                    break;
                case 4:
                    userPointEx.setType("兑换商品");
                    break;
                case 5:
                    userPointEx.setType("门店业绩");
                    break;
                case 6:
                    userPointEx.setType("门店返佣");
                    break;
                case 7:
                    userPointEx.setType("技师业绩");
                    break;
                case 8:
                    userPointEx.setType("转赠积分");
                    break;
                case 9:
                    userPointEx.setType("做工积分");
                    break;
                case 10:
                    userPointEx.setType("注册积分");
                    break;
                default:
                    userPointEx.setType("未知积分");
            }
            userPointExList.add(userPointEx);
        }
        ExcelUtil<UserPointEx> util = new ExcelUtil<>(UserPointEx.class);
        util.exportExcel(response, userPointExList, "用户分佣统计");
    }
 
    
    
}