puzhibing
2026-09-28 0564c0db0aba89b3dafb59a3a4250f670cb971e6
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
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.AppUserWhitelistImportDTO;
import com.ruoyi.account.api.dto.AppUserWhitelistQueryDTO;
import com.ruoyi.account.api.dto.AppUserWhitelistSaveDTO;
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.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("新增或修改白名单用户")
    @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/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/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, "导入成功");
    }
}