diff --git a/src/main/java/com/example/demo/controller/cash/CashRefundController.java b/src/main/java/com/example/demo/controller/cash/CashRefundController.java index f46367b..1656b36 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -381,7 +381,7 @@ public class CashRefundController { return Result.error(errorMsg); } - Result result = Result.success(refundService.financeSelect(page.getPageNum(), page.getPageSize(), page.getCashRecordDTO())); + Result result = Result.success(refundService.financeSelect2(page.getPageNum(), page.getPageSize(), page.getCashRecordDTO())); // 对返回结果进行多语言转换 if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { diff --git a/src/main/java/com/example/demo/service/cash/RefundService.java b/src/main/java/com/example/demo/service/cash/RefundService.java index 608f32c..8baa23c 100644 --- a/src/main/java/com/example/demo/service/cash/RefundService.java +++ b/src/main/java/com/example/demo/service/cash/RefundService.java @@ -32,6 +32,7 @@ public interface RefundService { int finalreview(CashRecordDone cashRecordDone, String lang); PageInfo financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO); + PageInfo financeSelect2(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO); PageInfo exSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO); //新增线上退款记录 diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index 3c1e6e8..628a8ae 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -361,7 +361,14 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); userGoldRecord.setType((byte) 2); userGoldRecord.setIsRefund((byte) 1); userGoldRecord.setRefundType("金币退款"); - userGoldRecord.setCrefundModel(cashRecordDone.getRefundModel()); + if (cashRecordDone.getRefundModel() == 1){ + userGoldRecord.setRefundModel(Byte.valueOf("1")); + } + else if (cashRecordDone.getRefundModel() == 0){ + userGoldRecord.setRefundModel(Byte.valueOf("0")); + } + + userGoldRecord.setJwcode(cashRecordDone.getJwcode()); userGoldRecord.setSumGold(cashRecordDone.getPermanentGold()+cashRecordDone.getFreeGold()); userGoldRecord.setPermanentGold(cashRecordDone.getPermanentGold()); @@ -418,6 +425,79 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); @Override public PageInfo financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { + List markets = marketMapper.getMarketIds(cashRecordDTO.getMarkets()); + if (markets.contains("9") || markets.contains("9999")){ + markets=null; + } + cashRecordDTO.setMarkets(markets); + PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper +// System.out.println(goldDetail.getMarkets()); + List list = cashRefundMapper.financeSelect(cashRecordDTO); + if (list.isEmpty()) { + return new PageInfo<>(list); + } + + // 批量收集ID + Set relatedIds = new HashSet<>(); + Set marketIds = new HashSet<>(); + Set submitterIds = new HashSet<>(); + Set auditIds = new HashSet<>(); + Set executorIds = new HashSet<>(); + + list.forEach(item -> { + if (item.getRelatedId() != null) relatedIds.add(item.getRelatedId()); + if (item.getMarket() != null) marketIds.add(item.getMarket()); + if (item.getSubmitterId() != null) submitterIds.add(item.getSubmitterId()); + if (item.getAuditId() != null) auditIds.add(item.getAuditId()); + if (item.getExecutor() != null) executorIds.add(item.getExecutor()); + }); + + // 批量查询 + Map cashCollectionMap = cashCollectionMapper.selectBatchIds(relatedIds) + .stream().collect(Collectors.toMap(CashCollection::getId, Function.identity())); + + Map marketNameMap = marketMapper.getMarketByIds(marketIds) + .stream().collect(Collectors.toMap(Market::getId, Market::getName)); + + Map submitterNameMap = auditMapper.getNamesByIds(submitterIds) + .stream().collect(Collectors.toMap(Admin::getId, Admin::getAdminName)); + + Map auditMap = cashRefundMapper.getAuditBatch(auditIds) + .stream().collect(Collectors.toMap(LhlAudit::getId, Function.identity())); + Map executorNameMap = auditMapper.getNamesByJwcodes(executorIds) + .stream().collect(Collectors.toMap(Admin::getAccount, Admin::getAdminName)); + + // 处理数据 + list.forEach(item -> { + CashCollection cashCollection = cashCollectionMap.get(item.getRelatedId()); + if (cashCollection != null) { + processCashCollection(item, cashCollection); + } + + + String marketName = marketNameMap.get(item.getMarket()); + String submitter = submitterNameMap.get(item.getSubmitterId()); + LhlAudit lhlAudit = auditMap.get(item.getAuditId()); + String executorName = executorNameMap.get(String.valueOf(item.getExecutor())); + + item.setMarketName(marketName != null ? marketName : ""); + item.setSubmitter(submitter != null ? submitter : ""); + item.setExecutorName(executorName != null ? executorName : ""); + + if (lhlAudit != null) { + item.setAreaServise(lhlAudit.getAreaServise()); + item.setAreaFinance(lhlAudit.getAreaFinance()); + item.setAreaCharge(lhlAudit.getAreaCharge()); + item.setHeadFinance(lhlAudit.getHeadFinance()); + } + }); + + return new PageInfo<>(list); + } + + @Override + public PageInfo financeSelect2(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { + List markets = marketMapper.getMarketIds(cashRecordDTO.getMarkets()); PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper // System.out.println(goldDetail.getMarkets()); List list = cashRefundMapper.financeSelect(cashRecordDTO); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java index 734daed..dd4344a 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -29,7 +29,9 @@ import com.example.demo.domain.vo.cash.PerformanceVO; import com.example.demo.domain.vo.coin.*; import com.example.demo.mapper.coin.ExportMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.service.coin.ExportExcelService; +import com.example.demo.service.coin.MarketService; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -43,6 +45,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import java.io.*; import java.util.*; @@ -88,6 +91,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { private static final int PAGE_SIZE = 5000; @Autowired private ExportMapper exportMapper; + @Autowired + private MarketService marketService; @Transactional @Override @@ -352,8 +357,36 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode rootNode = objectMapper.readTree(message); JsonNode requestDataNode = rootNode.path("requestData"); JsonNode beanRechargeNode = requestDataNode.path("cashRecordDTO"); + String token = rootNode.path("token").asText(); CashRecordDTO cashRecordDTO = objectMapper.treeToValue(beanRechargeNode, CashRecordDTO.class); page.setCashRecordDTO(cashRecordDTO); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + List userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); + List markets = marketService.getMarketIds(userMarkets); + + + // 获取传入的市场列表 + List requestedMarkets = page.getCashRecordDTO() != null ? page.getCashRecordDTO().getMarkets() : null; + + // 权限校验逻辑 + if (markets.contains("9") || markets.contains("9999")) { + // 特权市场:9 或 9999,跳过权限校验,直接放行传入的 markets + // 如果业务需要,也可以在这里做空值处理 + if (page.getCashRecordDTO() != null) { + // 保持 requestedMarkets 不变,原样接受 + // 可选:如果 requestedMarkets 为 null,可设为默认值或保持 null + } + } else { + // 普通用户:必须校验权限 + if (requestedMarkets == null || requestedMarkets.isEmpty()) { + page.getCashRecordDTO().setMarkets(markets); + } + if (!markets.containsAll(requestedMarkets)) { + String errorMsg = "无权限!请求的市场不在授权范围内。"; + return Result.error(errorMsg); + } + // 校验通过,保持 requestedMarkets 不变 + } // 从请求数据中获取语言设置,如果没有则使用默认值 String lang = "zh_CN"; JsonNode langNode = requestDataNode.path("lang");