puzhibing
4 天以前 a0e03b646f2c444b0f09687d24e9995112b99017
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
package com.ruoyi.account.controller;
 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.api.dto.AppUserWhitelistAllocateDTO;
import com.ruoyi.account.api.dto.AppUserWhitelistExcelDTO;
import com.ruoyi.account.api.dto.AppUserWhitelistImportDTO;
import com.ruoyi.account.api.dto.AppUserWhitelistQueryDTO;
import com.ruoyi.account.api.dto.AppUserWhitelistSaveDTO;
import com.ruoyi.account.api.dto.AppUserWhitelistStatusDTO;
import com.ruoyi.account.api.model.TAppUserWhitelist;
import com.ruoyi.account.api.vo.AppUserWhitelistAllocateVO;
import com.ruoyi.account.api.vo.AppUserWhitelistMatchVO;
import com.ruoyi.account.api.vo.AppUserWhitelistImportResultVO;
import com.ruoyi.account.service.TAppUserWhitelistService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.log.enums.OperatorType;
import com.ruoyi.common.security.annotation.Logical;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
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.multipart.MultipartFile;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
 
/**
 * 白名单用户管理
 */
@Api(tags = "白名单用户管理")
@RestController
@RequestMapping("/t-app-user-whitelist")
public class TAppUserWhitelistController {
 
    @Resource
    private TAppUserWhitelistService whitelistService;
 
    @ApiOperation("分页查询白名单用户")
    @RequiresPermissions(value = {"/appUserWhitelist/list"}, logical = Logical.OR)
    @PostMapping("/page")
    public R<Page<TAppUserWhitelist>> page(@RequestBody AppUserWhitelistQueryDTO queryDTO) {
        return R.ok(whitelistService.pageList(queryDTO));
    }
 
    @ApiOperation("查询白名单用户详情")
    @RequiresPermissions(value = {"/appUserWhitelist/select"}, logical = Logical.OR)
    @GetMapping("/detail/{id}")
    public R<TAppUserWhitelist> detail(@PathVariable("id") Long id) {
        return R.ok(whitelistService.detail(id));
    }
 
    @ApiOperation("判断用户当前站点是否命中白名单")
    @GetMapping("/match")
    public R<AppUserWhitelistMatchVO> match(@RequestParam("appUserId") Long appUserId, @RequestParam("siteId") Integer siteId) {
        return R.ok(whitelistService.matchWhitelist(appUserId, siteId));
    }
 
    @ApiOperation("按公司查询白名单用户(内部):公司详情-充电用户信息聚合使用")
    @GetMapping("/inner/list-by-company")
    public R<List<TAppUserWhitelist>> listByCompany(@RequestParam("companyId") Integer companyId) {
        return R.ok(whitelistService.listByCompany(companyId));
    }
 
    @ApiOperation("内部接口:锁定白名单账户余额(企业账户流程-分配模式,实扣冻结)")
    @PostMapping("/inner/lock-balance")
    public R<BigDecimal> lockBalance(@RequestParam("whitelistId") Long whitelistId,
                                     @RequestParam("amount") BigDecimal amount) {
        return R.ok(whitelistService.lockBalance(whitelistId, amount));
    }
 
    @ApiOperation("内部接口:结算白名单账户余额(解锁锁定额并按实际消费扣减)")
    @PostMapping("/inner/settle-balance")
    public R<BigDecimal> settleBalance(@RequestParam("whitelistId") Long whitelistId,
                                       @RequestParam("lockedAmount") BigDecimal lockedAmount,
                                       @RequestParam("actualAmount") BigDecimal actualAmount) {
        return R.ok(whitelistService.settleBalance(whitelistId, lockedAmount, actualAmount));
    }
 
    @ApiOperation("内部接口:释放白名单账户锁定金额")
    @PostMapping("/inner/unlock-balance")
    public R<BigDecimal> unlockBalance(@RequestParam("whitelistId") Long whitelistId,
                                       @RequestParam("amount") BigDecimal amount) {
        return R.ok(whitelistService.unlockBalance(whitelistId, amount));
    }
 
    @ApiOperation("新增或修改白名单用户")
    @RequiresPermissions(value = {"/appUserWhitelist/add", "/appUserWhitelist/update"}, logical = Logical.OR)
    @Log(title = "【白名单用户】新增或修改", businessType = BusinessType.INSERT, operatorType = OperatorType.MANAGE)
    @PostMapping("/addOrUpdate")
    public R<Void> addOrUpdate(@RequestBody AppUserWhitelistSaveDTO saveDTO) {
        whitelistService.saveWhitelist(saveDTO);
        return R.ok();
    }
 
    @ApiOperation("删除白名单用户")
    @RequiresPermissions(value = {"/appUserWhitelist/del"}, logical = Logical.OR)
    @Log(title = "【白名单用户】删除", businessType = BusinessType.DELETE, operatorType = OperatorType.MANAGE)
    @DeleteMapping("/delete")
    public R<Void> delete(@RequestParam("ids") String ids) {
        whitelistService.deleteByIds(ids);
        return R.ok();
    }
 
    @ApiOperation("批量解绑车队(清空白名单用户车队归属,返回实际解绑数量)")
    @RequiresPermissions(value = {"/appUserWhitelist/unbind"}, logical = Logical.OR)
    @Log(title = "【白名单用户】批量解绑车队", businessType = BusinessType.UPDATE, operatorType = OperatorType.MANAGE)
    @PutMapping("/unbind-fleet")
    public R<Integer> unbindFleet(@RequestBody List<Long> ids) {
        return R.ok(whitelistService.unbindFleet(ids));
    }
 
    @ApiOperation("启用或停用白名单用户")
    @RequiresPermissions(value = {"/appUserWhitelist/status"}, logical = Logical.OR)
    @Log(title = "【白名单用户】启用或停用", businessType = BusinessType.UPDATE, operatorType = OperatorType.MANAGE)
    @PutMapping("/status")
    public R<Boolean> status(@RequestBody AppUserWhitelistStatusDTO statusDTO) {
        return R.ok(whitelistService.updateStatus(statusDTO));
    }
 
    @ApiOperation("额度分配概览(公司总账户余额、可分配余额)")
    @RequiresPermissions(value = {"/appUserWhitelist/allocate"}, logical = Logical.OR)
    @GetMapping("/allocate-overview")
    public R<AppUserWhitelistAllocateVO> allocateOverview(@RequestParam("companyId") Integer companyId) {
        return R.ok(whitelistService.getAllocateOverview(companyId));
    }
 
    @ApiOperation("白名单额度分配(公司可用余额划入白名单用户余额)")
    @RequiresPermissions(value = {"/appUserWhitelist/allocate"}, logical = Logical.OR)
    @Log(title = "【白名单用户】额度分配", businessType = BusinessType.UPDATE, operatorType = OperatorType.MANAGE)
    @PostMapping("/allocate")
    public R<AppUserWhitelistAllocateVO> allocate(@RequestBody AppUserWhitelistAllocateDTO allocateDTO) {
        return R.ok(whitelistService.allocateQuota(allocateDTO));
    }
 
    @ApiOperation("导出白名单用户列表")
    @RequiresPermissions(value = {"/appUserWhitelist/export"}, logical = Logical.OR)
    @PutMapping("/export")
    public void export(HttpServletResponse response, @RequestBody(required = false) AppUserWhitelistQueryDTO queryDTO) {
        ExcelUtil<AppUserWhitelistExcelDTO> util = new ExcelUtil<>(AppUserWhitelistExcelDTO.class);
        util.exportExcel(response, whitelistService.selectExportList(queryDTO), "白名单用户数据");
    }
 
    @ApiOperation("下载白名单用户导入模板")
    @RequiresPermissions(value = {"/appUserWhitelist/import"}, logical = Logical.OR)
    @GetMapping("/importTemplate")
    public void importTemplate(HttpServletResponse response) {
        ExcelUtil<AppUserWhitelistImportDTO> util = new ExcelUtil<>(AppUserWhitelistImportDTO.class);
        util.importTemplateExcel(response, "白名单用户导入模板",
                "填写说明:用户手机号填写11位手机号,如:13800138000。导入后适用于全部电站。");
    }
 
    @ApiOperation("导入白名单用户")
    @RequiresPermissions(value = {"/appUserWhitelist/import"}, logical = Logical.OR)
    @Log(title = "【白名单用户】导入", businessType = BusinessType.IMPORT, operatorType = OperatorType.MANAGE)
    @PostMapping("/import")
    public R<AppUserWhitelistImportResultVO> importData(@RequestParam("file") MultipartFile file) throws Exception {
        AppUserWhitelistImportResultVO result = whitelistService.importWhitelist(file);
        if (result.getErrorCount() != null && result.getErrorCount() > 0) {
            if (result.getSuccessCount() != null && result.getSuccessCount() > 0) {
                return R.ok(result, "导入完成,部分数据导入失败");
            }
            return R.fail(result, "导入失败,请检查错误数据");
        }
        return R.ok(result, "导入成功");
    }
}