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, "导入成功");
|
}
|
}
|