Browse Source

7.30地区部分修改以及导出的封装

huangqizheng/feature-20250731164458-地区部分修改以及导出的封装
huangqizhen 2 weeks ago
parent
commit
c2f590d6c4
  1. 1
      src/main/java/com/example/demo/DemoApplication.java
  2. 252
      src/main/java/com/example/demo/Export/ExportServiceImpl.java
  3. 5
      src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java
  4. 41
      src/main/java/com/example/demo/controller/coin/ConsumeController.java
  5. 8
      src/main/java/com/example/demo/controller/coin/GoldDetailController.java
  6. 35
      src/main/java/com/example/demo/controller/coin/RechargeController.java
  7. 38
      src/main/java/com/example/demo/controller/coin/RefundController.java
  8. 2
      src/main/java/com/example/demo/controller/coin/WorkbenchController.java
  9. 2
      src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java
  10. 2
      src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java
  11. 42
      src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java
  12. 2
      src/main/java/com/example/demo/domain/vo/coin/RefundUser.java
  13. 7
      src/main/java/com/example/demo/service/coin/ExportExcelService.java
  14. 66
      src/main/java/com/example/demo/service/listen/BaseMessageListener.java
  15. 1165
      src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java
  16. 10
      src/main/java/com/example/demo/serviceImpl/coin/GeneralServiceImpl.java
  17. 2
      src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java
  18. 4
      src/main/java/com/example/demo/serviceImpl/coin/PermissionServiceImpl.java
  19. 6
      src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java
  20. 4
      src/main/resources/mapper/AuditMapper.xml
  21. 11
      src/main/resources/mapper/ConsumeMapper.xml
  22. 2
      src/main/resources/mapper/PermissionMapper.xml
  23. 20
      src/main/resources/mapper/RechargeMapper.xml
  24. 11
      src/main/resources/mapper/RefundMapper.xml
  25. 4
      src/main/resources/mapper/RoleMapper.xml
  26. 2
      src/main/resources/mapper/UserMapper.xml

1
src/main/java/com/example/demo/DemoApplication.java

@ -8,6 +8,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication @SpringBootApplication
@EnableScheduling // 启用调度功能 @EnableScheduling // 启用调度功能
@MapperScan(basePackages = "com.example.demo.mapper", sqlSessionTemplateRef = "mysql1SqlSessionTemplate") @MapperScan(basePackages = "com.example.demo.mapper", sqlSessionTemplateRef = "mysql1SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.bean", sqlSessionTemplateRef = "mysql2SqlSessionTemplate")
public class DemoApplication { public class DemoApplication {
public static void main(String[] args) { public static void main(String[] args) {

252
src/main/java/com/example/demo/Export/ExportServiceImpl.java

@ -32,7 +32,7 @@ import java.util.Map;
* @Version 1.0 * @Version 1.0
**/ **/
@Service @Service
public class ExportServiceImpl implements ExportService{
public class ExportServiceImpl implements ExportService {
@Autowired @Autowired
private GoldDetailMapper goldDetailMapper; private GoldDetailMapper goldDetailMapper;
@Autowired @Autowired
@ -40,174 +40,150 @@ public class ExportServiceImpl implements ExportService{
@Autowired @Autowired
private AdminService adminService; private AdminService adminService;
@Override
public Result addExportRecharge(RechargeDTO dto) {
// 获取操作者 jwcode
HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
/**
* 通用导出逻辑
*
* @param dto 数据传输对象 (RechargeDTO, RefundDTO, ConsumeDTO)
* @param exportType 导出类型 ("充值明细", "退款明细", "消耗明细")
* @param queueName Redis 队列名称
* @param requestData 请求数据字段名 ("rechargeUser", "refundUser", "consumeUser")
* @return Result
*/
private Result addExport(Object dto, String exportType, String queueName, String requestData) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token"); String token = request.getHeader("token");
try { try {
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
dto.setAccount(Integer.valueOf(token1.getUsername()));
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名
String fileName = String.format("%s_%s_%s.xlsx",
"充值明细",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
// System.out.println(fileName);
dto.setUrl("");
dto.setFileName(fileName);
dto.setDataNum(0);
// 获取操作者信息
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
Integer account = Integer.valueOf(admin.getAccount());
String adminName = admin.getAdminName();
// 设置 DTO 的通用字段
setCommonFields(dto, account, adminName);
try{
// 调用方式
// 插入导出记录并获取主键
GoldDetailMapper.ExportRecordIdHolder idHolder = new GoldDetailMapper.ExportRecordIdHolder(); GoldDetailMapper.ExportRecordIdHolder idHolder = new GoldDetailMapper.ExportRecordIdHolder();
goldDetailMapper.insertExportRecord(
idHolder, // 用于接收主键
dto.getAccount(),
dto.getType(),
dto.getState(),
dto.getUrl(),
dto.getFileName(),
dto.getDataNum()
);
// 获取主键
insertExportRecord(dto, idHolder, account);
Long recordId = idHolder.getId(); Long recordId = idHolder.getId();
// 2. 构造完整的 JSON 数据包含所有请求参数
Map<String, Object> exportData = new HashMap<>();
exportData.put("recordId", recordId);
// 添加 token exportData
exportData.put("token", token);
// 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>();
requestData.put("rechargeUser", dto.getRechargeUser());
exportData.put("requestData", requestData);
// 构造完整的 JSON 数据
Map<String, Object> exportData = constructExportData(recordId, token, dto, requestData);
// 3. 发送到 Redis 消息队列
// 发送到 Redis 消息队列
String jsonData = new ObjectMapper().writeValueAsString(exportData); String jsonData = new ObjectMapper().writeValueAsString(exportData);
redisUtil.sendMessage("recharge:queue:export_queue", jsonData);
}catch (Exception e){
redisUtil.sendMessage(queueName, jsonData);
} catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
throw new SystemException("导出数据异常,请稍后重试", e); throw new SystemException("导出数据异常,请稍后重试", e);
} }
return Result.success(); return Result.success();
} }
@Override
public Result addExportRefund(RefundDTO dto) {
// 获取操作者 jwcode
HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
try {
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
dto.setAccount(Integer.valueOf(token1.getUsername()));
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
/**
* 设置 DTO 的通用字段
*/
private void setCommonFields(Object dto, Integer account,String adminName) throws Exception {
if (dto instanceof RechargeDTO rechargeDTO) {
rechargeDTO.setAccount(Integer.valueOf(account));
rechargeDTO.setUrl("");
rechargeDTO.setFileName(generateFileName("充值明细", adminName));
rechargeDTO.setDataNum(0);
} else if (dto instanceof RefundDTO refundDTO) {
refundDTO.setAccount(Integer.valueOf(account));
refundDTO.setUrl("");
refundDTO.setFileName(generateFileName("退款明细", adminName));
refundDTO.setDataNum(0);
} else if (dto instanceof ConsumeDTO consumeDTO) {
consumeDTO.setAccount(Integer.valueOf(account));
consumeDTO.setUrl("");
consumeDTO.setFileName(generateFileName("消耗明细", adminName));
consumeDTO.setDataNum(0);
}
} }
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名
String fileName = String.format("%s_%s_%s.xlsx",
"退款明细",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName);
dto.setUrl("");
dto.setFileName(fileName);
dto.setDataNum(0);
try{
// 调用方式
GoldDetailMapper.ExportRecordIdHolder idHolder = new GoldDetailMapper.ExportRecordIdHolder();
/**
* 插入导出记录
*/
private void insertExportRecord(Object dto, GoldDetailMapper.ExportRecordIdHolder idHolder, Integer account) throws Exception {
if (dto instanceof RechargeDTO rechargeDTO) {
goldDetailMapper.insertExportRecord( goldDetailMapper.insertExportRecord(
idHolder, // 用于接收主键
dto.getAccount(),
dto.getType(),
dto.getState(),
dto.getUrl(),
dto.getFileName(),
dto.getDataNum()
idHolder,
account,
rechargeDTO.getType(),
rechargeDTO.getState(),
rechargeDTO.getUrl(),
rechargeDTO.getFileName(),
rechargeDTO.getDataNum()
); );
// 获取主键
Long recordId = idHolder.getId();
// 2. 构造完整的 JSON 数据包含所有请求参数
} else if (dto instanceof RefundDTO refundDTO) {
goldDetailMapper.insertExportRecord(
idHolder,
account,
refundDTO.getType(),
refundDTO.getState(),
refundDTO.getUrl(),
refundDTO.getFileName(),
refundDTO.getDataNum()
);
} else if (dto instanceof ConsumeDTO consumeDTO) {
goldDetailMapper.insertExportRecord(
idHolder,
account,
consumeDTO.getType(),
consumeDTO.getState(),
consumeDTO.getUrl(),
consumeDTO.getFileName(),
consumeDTO.getDataNum()
);
}
}
/**
* 构造导出数据
*/
private Map<String, Object> constructExportData(Long recordId, String token, Object dto, String requestDataKey) throws Exception {
Map<String, Object> exportData = new HashMap<>(); Map<String, Object> exportData = new HashMap<>();
exportData.put("recordId", recordId); exportData.put("recordId", recordId);
// 添加 token exportData
exportData.put("token", token); exportData.put("token", token);
// 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>(); Map<String, Object> requestData = new HashMap<>();
requestData.put("refundUser", dto.getRefundUser());
if (dto instanceof RechargeDTO rechargeDTO) {
requestData.put(requestDataKey, rechargeDTO.getRechargeUser());
} else if (dto instanceof RefundDTO refundDTO) {
requestData.put(requestDataKey, refundDTO.getRefundUser());
} else if (dto instanceof ConsumeDTO consumeDTO) {
requestData.put(requestDataKey, consumeDTO.getConsumeUser());
}
exportData.put("requestData", requestData); exportData.put("requestData", requestData);
// 3. 发送到 Redis 消息队列
String jsonData = new ObjectMapper().writeValueAsString(exportData);
redisUtil.sendMessage("refund:queue:export_queue", jsonData);
}catch (Exception e){
e.printStackTrace();
throw new SystemException("导出数据异常,请稍后重试", e);
return exportData;
} }
return Result.success();
/**
* 生成文件名
*/
private String generateFileName(String exportType, String adminName) {
return String.format("%s_%s_%s.xlsx",
exportType,
adminName,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
} }
@Override @Override
public Result addExportConsume(ConsumeDTO dto) {
// 获取操作者 jwcode
HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
try {
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
dto.setAccount(Integer.valueOf(token1.getUsername()));
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
public Result addExportRecharge(RechargeDTO dto) {
return addExport(dto, "充值明细", "recharge:queue:export_queue", "rechargeUser");
} }
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名
String fileName = String.format("%s_%s_%s.xlsx",
"消耗明细",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName);
dto.setUrl("");
dto.setFileName(fileName);
dto.setDataNum(0);
try{
// 调用方式
GoldDetailMapper.ExportRecordIdHolder idHolder = new GoldDetailMapper.ExportRecordIdHolder();
goldDetailMapper.insertExportRecord(
idHolder, // 用于接收主键
dto.getAccount(),
dto.getType(),
dto.getState(),
dto.getUrl(),
dto.getFileName(),
dto.getDataNum()
);
// 获取主键
Long recordId = idHolder.getId();
// 2. 构造完整的 JSON 数据包含所有请求参数
Map<String, Object> exportData = new HashMap<>();
exportData.put("recordId", recordId);
// 添加 token exportData
exportData.put("token", token);
// 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>();
requestData.put("consumeUser", dto.getConsumeUser());
exportData.put("requestData", requestData);
// 3. 发送到 Redis 消息队列
String jsonData = new ObjectMapper().writeValueAsString(exportData);
redisUtil.sendMessage("consume:queue:export_queue", jsonData);
}catch (Exception e){
e.printStackTrace();
throw new SystemException("导出数据异常,请稍后重试", e);
@Override
public Result addExportRefund(RefundDTO dto) {
return addExport(dto, "退款明细", "refund:queue:export_queue", "refundUser");
} }
return Result.success();
@Override
public Result addExportConsume(ConsumeDTO dto) {
return addExport(dto, "消耗明细", "consume:queue:export_queue", "consumeUser");
} }
} }

5
src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java

@ -17,10 +17,7 @@ import javax.sql.DataSource;
@Slf4j @Slf4j
@Configuration @Configuration
@MapperScan(
basePackages = "com.example.demo.mapper.bean", // 扫描coin包
sqlSessionTemplateRef = "mysql2SqlSessionTemplate"
)
public class Mysql2DataSourceConfig { public class Mysql2DataSourceConfig {
@Bean(name = "mysql2DataSource") @Bean(name = "mysql2DataSource")

41
src/main/java/com/example/demo/controller/coin/ConsumeController.java

@ -10,6 +10,7 @@ import com.example.demo.service.coin.ConsumeService;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -85,15 +86,15 @@ public class ConsumeController {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} else { } else {
//解token权限 //解token权限
if(page.getConsumeUser().getMarkets()==null||page.getConsumeUser().getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
page.getConsumeUser().setMarkets(list);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("1")) {
page.getConsumeUser().setMarkets(markets);
} }
else{
return Result.error("角色为空");
} }
return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser())); return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser()));
} }
@ -108,16 +109,15 @@ public class ConsumeController {
@PostMapping("/statsGold") @PostMapping("/statsGold")
public Result statsGold(@RequestBody ConsumeUser consumeUser) { public Result statsGold(@RequestBody ConsumeUser consumeUser) {
try { try {
//解token权限
if(consumeUser.getMarkets()==null||consumeUser.getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
consumeUser.setMarkets(list);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("1")) {
consumeUser.setMarkets(markets);
} }
else{
return Result.error("角色为空");
} }
Gold gold = consumeService.statsGold(consumeUser); Gold gold = consumeService.statsGold(consumeUser);
return Result.success(gold); return Result.success(gold);
@ -144,6 +144,25 @@ public class ConsumeController {
} }
} }
public Result select(@RequestBody Page page) {
try {
//页码校验
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
//页面大小校验
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查筛选数据的格式");
}
}
} }

8
src/main/java/com/example/demo/controller/coin/GoldDetailController.java

@ -65,7 +65,7 @@ public class GoldDetailController {
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));; List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));;
if(!markets.contains("总部")) {
if(!markets.contains("1")) {
page.getGoldDetail().setMarkets(markets); page.getGoldDetail().setMarkets(markets);
} }
} }
@ -82,7 +82,7 @@ public class GoldDetailController {
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
if(!markets.contains("1")) {
page.getGoldDetail().setMarkets(markets); page.getGoldDetail().setMarkets(markets);
} }
} }
@ -96,7 +96,7 @@ public class GoldDetailController {
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
if(!markets.contains("1")) {
user.setMarkets(markets); user.setMarkets(markets);
} }
} }
@ -117,7 +117,7 @@ public class GoldDetailController {
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
if(!markets.contains("1")) {
page.getUser().setMarkets(markets); page.getUser().setMarkets(markets);
} }
} }

35
src/main/java/com/example/demo/controller/coin/RechargeController.java

@ -7,6 +7,7 @@ import com.example.demo.service.coin.RechargeService;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -78,15 +79,14 @@ public class RechargeController {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} else { } else {
//解token权限 //解token权限
if(page.getRechargeUser().getMarkets()==null||page.getRechargeUser().getMarkets().isEmpty()){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
page.getRechargeUser().setMarkets(list);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));;
if(!markets.contains("1")) {
page.getRechargeUser().setMarkets(markets);
} }
else{
return Result.error("角色为空");
} }
return Result.success(rechargeService.selectBy(page.getPageNum(), page.getPageSize(), page.getRechargeUser())); return Result.success(rechargeService.selectBy(page.getPageNum(), page.getPageSize(), page.getRechargeUser()));
} }
@ -101,15 +101,14 @@ public class RechargeController {
public Result statsGold(@RequestBody RechargeUser rechargeUser) { public Result statsGold(@RequestBody RechargeUser rechargeUser) {
try { try {
//解token权限 //解token权限
if(rechargeUser.getMarkets()==null||rechargeUser.getMarkets().isEmpty()){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
rechargeUser.setMarkets(list);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));;
if(!markets.contains("1")) {
rechargeUser.setMarkets(markets);
} }
else{
return Result.error("角色为空");
} }
Gold gold = rechargeService.statsGold(rechargeUser); Gold gold = rechargeService.statsGold(rechargeUser);
return Result.success(gold); return Result.success(gold);
@ -129,5 +128,21 @@ public class RechargeController {
} }
public Result selcet(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
//解token权限
return Result.success(rechargeService.selectBy(page.getPageNum(), page.getPageSize(), page.getRechargeUser()));
}
} catch (Exception e) {
return Result.error("请检查筛选数据的格式");
}
}
} }

38
src/main/java/com/example/demo/controller/coin/RefundController.java

@ -6,6 +6,7 @@ import com.example.demo.service.coin.RefundService;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -73,14 +74,15 @@ public class RefundController {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} else { } else {
//解token权限 //解token权限
if(page.getRefundUser().getMarkets()==null||page.getRefundUser().getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
page.getRefundUser().setMarkets(list);
} else {
return Result.error("角色为空");
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("1")) {
page.getRefundUser().setMarkets(markets);
}
} }
return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser())); return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
} }
@ -95,15 +97,15 @@ public class RefundController {
public Result statsGold(@RequestBody RefundUser refundUser) { public Result statsGold(@RequestBody RefundUser refundUser) {
try { try {
//解token权限 //解token权限
if(refundUser.getMarkets()==null||refundUser.getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
refundUser.setMarkets(list);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("1")) {
refundUser.setMarkets(markets);
} }
else{
return Result.error("角色为空");
} }
Gold gold = refundService.statsGold(refundUser); Gold gold = refundService.statsGold(refundUser);
return Result.success(gold); return Result.success(gold);
@ -135,4 +137,20 @@ public class RefundController {
return Result.error("请检查数据的格式"); return Result.error("请检查数据的格式");
} }
} }
public Result selcet(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
}
} catch (Exception e) {
return Result.error("请检查筛选数据的格式");
}
}
} }

2
src/main/java/com/example/demo/controller/coin/WorkbenchController.java

@ -57,7 +57,7 @@ public class WorkbenchController {
List<String> markets = workbenchService.getAdminMarket(account); List<String> markets = workbenchService.getAdminMarket(account);
WorkbenchCard result; WorkbenchCard result;
//判断是否是总部 //判断是否是总部
if (markets != null && markets.contains("总部")) {
if (markets != null && markets.contains("1")) {
result = workbenchService.getCardCache(markets);//走缓存拿全部市场的缓存数据 result = workbenchService.getCardCache(markets);//走缓存拿全部市场的缓存数据
} else { } else {
result = workbenchService.getCard(markets);//不走缓存计算卡片属性 result = workbenchService.getCard(markets);//不走缓存计算卡片属性

2
src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java

@ -68,6 +68,6 @@ public class ConsumeUser implements Serializable {
private String sortField; //排序字段 private String sortField; //排序字段
@ExcelIgnore @ExcelIgnore
private String sortOrder; //排序顺序 private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表 private List<String> markets; // 地区列表
} }

2
src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java

@ -57,7 +57,7 @@ public class GoldDetail {
private String sortField; //排序字段 private String sortField; //排序字段
@ExcelIgnore @ExcelIgnore
private String sortOrder; //排序顺序 private String sortOrder; //排序顺序
@ExcelIgnore
@ExcelProperty("更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime; private Date auditTime;
@ExcelIgnore @ExcelIgnore

42
src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java

@ -25,64 +25,64 @@ public class RechargeUser {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
// @ExcelProperty("客户姓名")
@ExcelProperty("客户姓名")
private String name; // 客户姓名 private String name; // 客户姓名
// @ExcelProperty("精网号")
@ExcelProperty("精网号")
private Integer jwcode; // 精网号 private Integer jwcode; // 精网号
// @ExcelProperty("所属地区")
@ExcelProperty("所属地区")
private String market; // 所属地区 private String market; // 所属地区
// @ExcelProperty("活动名称")
@ExcelProperty("活动名称")
private String activity; // 活动名称 private String activity; // 活动名称
// @ExcelProperty("汇率ID")
@ExcelProperty("汇率ID")
private Integer rateId; // 汇率ID private Integer rateId; // 汇率ID
// @ExcelProperty("汇率名称")
@ExcelProperty("汇率名称")
private String rateName; // 汇率名称 private String rateName; // 汇率名称
// @ExcelProperty("金额[分]")
@ExcelProperty("金额[分]")
private Integer money; // 金额[] private Integer money; // 金额[]
// @ExcelProperty("永久金币")
@ExcelProperty("永久金币")
private Integer permanentGold; // 永久金币 private Integer permanentGold; // 永久金币
// @ExcelProperty("免费金币")
@ExcelProperty("免费金币")
private Integer freeGold; // 免费金币 private Integer freeGold; // 免费金币
// @ExcelProperty("支付方式")
@ExcelProperty("支付方式")
private String payModel; // 支付方式 private String payModel; // 支付方式
// @ExcelProperty("支付平台")
@ExcelProperty("支付平台")
private String payPlatform; // 支付平台 private String payPlatform; // 支付平台
// @ExcelProperty("支付凭证")
@ExcelProperty("支付凭证")
private String voucher; // 支付凭证 private String voucher; // 支付凭证
// @ExcelProperty("备注")
@ExcelProperty("备注")
private String remark; // 备注 private String remark; // 备注
// @ExcelProperty("提交人Id")
@ExcelProperty("提交人Id")
private Integer adminId; // 提交人Id private Integer adminId; // 提交人Id
// @ExcelProperty("提交人姓名")
@ExcelProperty("提交人姓名")
private String adminName; // 提交人姓名 private String adminName; // 提交人姓名
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
// @ExcelProperty("创建时间")
@ExcelProperty("创建时间")
private Date payTime; // 创建时间 private Date payTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
// @ExcelIgnore
@ExcelIgnore
private Date startTime; // 开始时间 private Date startTime; // 开始时间
// @ExcelIgnore
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间 private Date endTime; // 结束时间
// @ExcelIgnore
@ExcelIgnore
private String sortField; //排序字段 private String sortField; //排序字段
// @ExcelIgnore
@ExcelIgnore
private String sortOrder; //排序顺序 private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表 private List<String> markets; // 地区列表
} }

2
src/main/java/com/example/demo/domain/vo/coin/RefundUser.java

@ -68,6 +68,6 @@ public class RefundUser {
private String sortField; //排序字段 private String sortField; //排序字段
@ExcelIgnore @ExcelIgnore
private String sortOrder; //排序顺序 private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表 private List<String> markets; // 地区列表
} }

7
src/main/java/com/example/demo/service/coin/ExportExcelService.java

@ -1,8 +1,12 @@
package com.example.demo.service.coin; package com.example.demo.service.coin;
import com.example.demo.domain.entity.Export; import com.example.demo.domain.entity.Export;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.function.Function;
/** /**
* @program: GOLD * @program: GOLD
@ -19,4 +23,7 @@ public interface ExportExcelService {
Exception consumeExcel(String message) throws Exception; Exception consumeExcel(String message) throws Exception;
Exception refundExcel(String message) throws Exception; Exception refundExcel(String message) throws Exception;
List<Export> getExcel(Export export); List<Export> getExcel(Export export);
@Transactional
Exception exportExcelGeneric(String message, String exportType, Function<Page, Result> dataFetcher) throws Exception;
} }

66
src/main/java/com/example/demo/service/listen/BaseMessageListener.java

@ -0,0 +1,66 @@
package com.example.demo.service.listen;
import cn.hutool.core.util.StrUtil;
import com.example.demo.Util.ExecutionContextUtil;
import com.example.demo.Util.FeiShuAlertUtil;
import com.example.demo.Util.RedisUtil;
import com.example.demo.domain.vo.coin.ExecutionContext;
import com.example.demo.service.queue.AbstractMessageListener;
public abstract class BaseMessageListener<T> extends AbstractMessageListener<T> {
protected BaseMessageListener(RedisUtil redisQueueUtil, String queueName) {
super(redisQueueUtil, queueName);
System.out.println("监听器已启动,队列: " + queueName);
}
@Override
protected void handleError(Exception e, T message) {
handleException(e, message.toString()); // 统一异常处理
}
/**
* 验证消息是否为空
*/
protected void validateMessage(T message) {
if (message == null || (message instanceof String && StrUtil.isBlank((String) message))) {
throw new IllegalArgumentException("Redis消息队列数据为空: " + message);
}
}
/**
* 统一异常处理
*/
protected void handleException(Exception e, String message) {
logError(e, message); // 记录错误日志
sendAlert(e, message); // 发送告警通知
throw new RuntimeException("Failed to process message: " + e.getMessage(), e);
}
/**
* 记录错误日志
*/
protected void logError(Exception e, String message) {
System.err.println("Message listener exception: " + e.getMessage());
e.printStackTrace();
}
/**
* 发送告警通知
*/
protected void sendAlert(Exception e, String message) {
try {
ExecutionContext context = ExecutionContextUtil.getExecutionContext();
String cause = e.getCause() != null ? e.getCause().getMessage() : "";
FeiShuAlertUtil.sendAlertMessage(
context,
e.getStackTrace()[0].getFileName(),
e.getStackTrace()[0].getLineNumber(),
"Message Listener Error: " + e.getMessage() + " 底层错误: " + cause,
"Failed message: " + message
);
} catch (Exception alertEx) {
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage());
}
}
}

1165
src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java
File diff suppressed because it is too large
View File

10
src/main/java/com/example/demo/serviceImpl/coin/GeneralServiceImpl.java

@ -130,10 +130,10 @@ public class GeneralServiceImpl implements GeneralService {
} }
List<String> list = Arrays.asList(market.split(",")); List<String> list = Arrays.asList(market.split(","));
//判断是否是总部 //判断是否是总部
if (list != null && list.contains("总部")) {
if (list != null && list.contains("1")) {
List<String> allMarkets = getMarket(); // 获取所有地区 List<String> allMarkets = getMarket(); // 获取所有地区
allMarkets.remove("总部"); // 先移除可能存在的总部
allMarkets.add(0, "总部"); // 将总部添加到列表第一位
allMarkets.remove("1"); // 先移除可能存在的总部
allMarkets.add(0, "1"); // 将总部添加到列表第一位
list = allMarkets; // 更新list list = allMarkets; // 更新list
} }
return list; return list;
@ -156,7 +156,7 @@ public class GeneralServiceImpl implements GeneralService {
} }
List<String> list = Arrays.asList(market.split(",")); List<String> list = Arrays.asList(market.split(","));
//判断是否是总部 //判断是否是总部
if (list != null && list.contains("总部")) {
if (list != null && list.contains("1")) {
list=getMarket();//总部有所有地区的权限 list=getMarket();//总部有所有地区的权限
} }
return list; return list;
@ -181,7 +181,7 @@ public class GeneralServiceImpl implements GeneralService {
} }
List<String> list = Arrays.asList(market.split(",")); List<String> list = Arrays.asList(market.split(","));
//判断是否是总部 //判断是否是总部
if (list != null && list.contains("总部")) {
if (list != null && list.contains("1")) {
list=getAllRoleMarket();//总部有所有地区的权限 list=getAllRoleMarket();//总部有所有地区的权限
} }
return list; return list;

2
src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java

@ -20,7 +20,7 @@ public class MarketServiceImpl implements MarketService {
List<Market> markets = marketMapper.getMarket(); List<Market> markets = marketMapper.getMarket();
// 2. 构建树形结构根节点parentId=1 // 2. 构建树形结构根节点parentId=1
return buildTree(markets, 1);
return buildTree(markets, -1);
} }
private List<Market> buildTree(List<Market> markets, Integer parentId) { private List<Market> buildTree(List<Market> markets, Integer parentId) {
// 过滤出当前父节点的子菜单 // 过滤出当前父节点的子菜单

4
src/main/java/com/example/demo/serviceImpl/coin/PermissionServiceImpl.java

@ -75,7 +75,7 @@ public class PermissionServiceImpl implements PermissionService {
if (ObjectUtils.isEmpty(admin.getMarket())) { if (ObjectUtils.isEmpty(admin.getMarket())) {
throw new Exception("地区为空!"); throw new Exception("地区为空!");
} }
if (admin.getMarket().contains("总部") && admin.getMarket().size() > 1) {
if (admin.getMarket().contains("1") && admin.getMarket().size() > 1) {
throw new Exception("总部不可与其他地区共存"); throw new Exception("总部不可与其他地区共存");
} }
if (ObjectUtils.isEmpty(admin.getPostiton())) { if (ObjectUtils.isEmpty(admin.getPostiton())) {
@ -148,7 +148,7 @@ public class PermissionServiceImpl implements PermissionService {
if (ObjectUtils.isEmpty(adminVo.getMarket())) { if (ObjectUtils.isEmpty(adminVo.getMarket())) {
throw new Exception("地区为空!"); throw new Exception("地区为空!");
} }
if (adminVo.getMarket().contains("总部") && adminVo.getMarket().size() > 1) {
if (adminVo.getMarket().contains("1") && adminVo.getMarket().size() > 1) {
throw new Exception("总部不可与其他地区共存"); throw new Exception("总部不可与其他地区共存");
} }
// 校验职位是否为空管理员职位为必填项 // 校验职位是否为空管理员职位为必填项

6
src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java

@ -60,10 +60,10 @@ public class WorkbenchServiceImpl implements WorkbenchService {
} }
List<String> list = Arrays.asList(market.split(",")); List<String> list = Arrays.asList(market.split(","));
//判断是否是总部 //判断是否是总部
if (list != null && list.contains("总部")) {
if (list != null && list.contains("1")) {
List<String> allMarkets = workBenchMapper.getMarket(); // 获取所有地区 List<String> allMarkets = workBenchMapper.getMarket(); // 获取所有地区
allMarkets.remove("总部"); // 先移除可能存在的总部
allMarkets.add(0, "总部"); // 将总部添加到列表第一位
allMarkets.remove("1"); // 先移除可能存在的总部
allMarkets.add(0, "1"); // 将总部添加到列表第一位
list = allMarkets; // 更新list list = allMarkets; // 更新list
} }
return list; return list;

4
src/main/resources/mapper/AuditMapper.xml

@ -61,7 +61,7 @@
<if test="rechargeAudit.activity != null and rechargeAudit.activity != ''"> <if test="rechargeAudit.activity != null and rechargeAudit.activity != ''">
AND ugr.activity = #{rechargeAudit.activity} AND ugr.activity = #{rechargeAudit.activity}
</if> </if>
<if test="rechargeAudit.markets != null and rechargeAudit.markets.size() > 0 and '总部' not in rechargeAudit.markets">
<if test="rechargeAudit.markets != null and rechargeAudit.markets.size() > 0 and '1' not in rechargeAudit.markets">
AND ( AND (
<foreach collection="rechargeAudit.markets" item="market" separator=" OR "> <foreach collection="rechargeAudit.markets" item="market" separator=" OR ">
u.market LIKE CONCAT('%', #{market}, '%') u.market LIKE CONCAT('%', #{market}, '%')
@ -122,7 +122,7 @@
<if test="refundAudit.market != null and refundAudit.market != ''"> <if test="refundAudit.market != null and refundAudit.market != ''">
AND u.market = #{refundAudit.market} AND u.market = #{refundAudit.market}
</if> </if>
<if test="refundAudit.markets != null and refundAudit.markets.size() > 0 and '总部' not in refundAudit.markets">
<if test="refundAudit.markets != null and refundAudit.markets.size() > 0 and '1' not in refundAudit.markets">
AND ( AND (
<foreach collection="refundAudit.markets" item="market" separator=" OR "> <foreach collection="refundAudit.markets" item="market" separator=" OR ">
u.market LIKE CONCAT('%', #{market}, '%') u.market LIKE CONCAT('%', #{market}, '%')

11
src/main/resources/mapper/ConsumeMapper.xml

@ -24,7 +24,7 @@
<where> <where>
ugr.type = 1 AND ugr.flag = 1 ugr.type = 1 AND ugr.flag = 1
<!-- 判断 market 是否不为总部且 markets 不为空 --> <!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
<if test="markets != null and markets.size() > 0 and '1' not in markets">
AND ( AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR "> <foreach collection="markets" item="market" open="" close="" separator=" OR ">
u.market LIKE CONCAT('%', #{market}, '%') u.market LIKE CONCAT('%', #{market}, '%')
@ -92,12 +92,11 @@
admin a ON ugr.admin_id = a.id admin a ON ugr.admin_id = a.id
<where> <where>
ugr.type = 1 AND ugr.flag = 1 ugr.type = 1 AND ugr.flag = 1
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR ">
u.market LIKE CONCAT('%', #{market}, '%')
<if test="markets != null and markets.size > 0 and !(markets.size() == 1 and markets[0] == '')">
AND u.market IN
<foreach collection="markets" item="market" open="(" separator="," close=")">
#{market}
</foreach> </foreach>
)
</if> </if>
<if test="jwcode != null and jwcode != ''"> <if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode} AND ugr.jwcode = #{jwcode}

2
src/main/resources/mapper/PermissionMapper.xml

@ -84,7 +84,7 @@
<if test="postiton!=null and postiton.length>0"> <if test="postiton!=null and postiton.length>0">
and admin.postiton=#{postiton} and admin.postiton=#{postiton}
</if> </if>
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
<if test="markets != null and markets.size() > 0 and '1' not in markets">
AND ( AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR "> <foreach collection="markets" item="market" open="" close="" separator=" OR ">
admin.market LIKE CONCAT('%', #{market}, '%') admin.market LIKE CONCAT('%', #{market}, '%')

20
src/main/resources/mapper/RechargeMapper.xml

@ -27,13 +27,12 @@
<where> <where>
ugr.type = 0 AND ugr.audit_status IN (1,3) ugr.type = 0 AND ugr.audit_status IN (1,3)
AND ugr.flag = 1 AND ugr.flag = 1
<!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR ">
u.market LIKE CONCAT('%', #{market}, '%')
<if test="markets!= null and markets.size > 0">
AND user.market IN
<foreach collection="markets" item="markets" open="(" separator="," close=")">
#{markets}
</foreach> </foreach>
)
</if> </if>
</where> </where>
<trim prefix="ORDER BY" suffixOverrides=","> <trim prefix="ORDER BY" suffixOverrides=",">
@ -97,12 +96,11 @@
ugr.type = 0 AND ugr.audit_status IN (1,3) ugr.type = 0 AND ugr.audit_status IN (1,3)
AND ugr.flag = 1 AND ugr.flag = 1
<!-- 判断 market 是否不为总部且 markets 不为空 --> <!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR ">
u.market LIKE CONCAT('%', #{market}, '%')
<if test="markets != null and markets.size > 0 and !(markets.size() == 1 and markets[0] == '')">
AND u.market IN
<foreach collection="markets" item="market" open="(" separator="," close=")">
#{market}
</foreach> </foreach>
)
</if> </if>
<if test="jwcode != null and jwcode != ''"> <if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode} AND ugr.jwcode = #{jwcode}

11
src/main/resources/mapper/RefundMapper.xml

@ -26,7 +26,7 @@
<where> <where>
ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1 ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1
<!-- 判断 market 是否不为总部且 markets 不为空 --> <!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
<if test="markets != null and markets.size() > 0 and '1' not in markets">
AND ( AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR "> <foreach collection="markets" item="market" open="" close="" separator=" OR ">
u.market LIKE CONCAT('%', #{market}, '%') u.market LIKE CONCAT('%', #{market}, '%')
@ -95,12 +95,11 @@
admin a ON ugr.admin_id = a.id admin a ON ugr.admin_id = a.id
<where> <where>
ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1 ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR ">
u.market LIKE CONCAT('%', #{market}, '%')
<if test="markets != null and markets.size > 0 and !(markets.size() == 1 and markets[0] == '')">
AND u.market IN
<foreach collection="markets" item="market" open="(" separator="," close=")">
#{market}
</foreach> </foreach>
)
</if> </if>
<if test="jwcode != null and jwcode != ''"> <if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode} AND ugr.jwcode = #{jwcode}

4
src/main/resources/mapper/RoleMapper.xml

@ -37,7 +37,7 @@
SELECT id,role_name FROM role SELECT id,role_name FROM role
<where> <where>
<!-- 判断 market 是否不为总部且 markets 不为空 --> <!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
<if test="markets != null and markets.size() > 0 and '1' not in markets">
AND market IN AND market IN
<foreach collection="markets" item="market" open="(" close=")" separator=","> <foreach collection="markets" item="market" open="(" close=")" separator=",">
#{market} #{market}
@ -91,7 +91,7 @@
r.market LIKE CONCAT('%', #{market}, '%') r.market LIKE CONCAT('%', #{market}, '%')
</if> </if>
<!-- 判断 market 是否不为总部且 markets 不为空 --> <!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
<if test="markets != null and markets.size() > 0 and '1' not in markets">
AND r.market IN AND r.market IN
<foreach collection="markets" item="market" open="(" close=")" separator=","> <foreach collection="markets" item="market" open="(" close=")" separator=",">
#{market} #{market}

2
src/main/resources/mapper/UserMapper.xml

@ -57,7 +57,7 @@
<where> <where>
jwcode = #{jwcode} jwcode = #{jwcode}
<!-- 判断 market 是否不为总部且 markets 不为空 --> <!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
<if test="markets != null and markets.size() > 0 and '1' not in markets">
AND ( AND (
<foreach collection="markets" item="market" open="" close="" separator=" OR "> <foreach collection="markets" item="market" open="" close="" separator=" OR ">
market LIKE CONCAT('%', #{market}, '%') market LIKE CONCAT('%', #{market}, '%')

Loading…
Cancel
Save