From f0ec3546db01e617d9a05c679514b2d089f122e9 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 22 Aug 2025 14:48:16 +0800 Subject: [PATCH] =?UTF-8?q?8.22=E4=BF=AE=E6=94=B9=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Mysql/MysqlServiceImpl.java | 273 ++++++++++++--------- .../java/com/example/demo/Util/GoldTistV2.java | 2 +- .../demo/controller/coin/GeneralController.java | 10 +- .../demo/controller/coin/GoldDetailController.java | 99 +++++--- .../java/com/example/demo/domain/entity/Goods.java | 23 ++ .../com/example/demo/domain/entity/Platform.java | 19 ++ src/main/resources/application.yml | 26 -- 7 files changed, 258 insertions(+), 194 deletions(-) create mode 100644 src/main/java/com/example/demo/domain/entity/Goods.java create mode 100644 src/main/java/com/example/demo/domain/entity/Platform.java diff --git a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java index 09452ab..09b0920 100644 --- a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java +++ b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java @@ -65,126 +65,147 @@ public class MysqlServiceImpl implements MysqlService { // @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次 public void getSqlserverData() throws Exception { logger.info("开始从 SQL Server 同步数据到 MySQL"); - try (Connection sqlServerConn = mysql1DataSource.getConnection(); + + try (Connection sqlServerConn = sqlserver1DataSource.getConnection(); Connection mysqlConn = mysql1DataSource.getConnection()) { logger.info("开始查询数据..."); - // 从 SQL Server 查询数据 - String querySql = "SELECT gtype,jwcode,free,core_jb,buy_jb,cz_time,cz_user,cz_bz,operation_platform,goods_name " + - "FROM user_gold_records WHERE flag=1 and cz_time> ?"; - - try (PreparedStatement sqlServerStmt = sqlServerConn.prepareStatement(querySql)) { - sqlServerStmt.setTimestamp(1, Timestamp.valueOf(LocalDateTime.now().minusHours(1))); // 获取最近一小时的数据 - ResultSet resultSet = sqlServerStmt.executeQuery(); - logger.info("查询数据完毕!"); - // 插入到 MySQL - //退款类型 61:ERP退款(退金币) - String insertSql = "INSERT INTO user_gold_record (order_code,jwcode,sum_gold,permanent_gold,free_june,free_december," + - "task_gold,pay_platform,goods_name,refund_type,refund_model,remark,type,admin_id," + - "audit_status,create_time,flag,update_time,audit_time) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "; - try (PreparedStatement mysqlStmt = mysqlConn.prepareStatement(insertSql)) { - while (resultSet.next()) { - int gtype = resultSet.getInt("gtype"); - Integer jwcode = resultSet.getInt("jwcode"); - int free = resultSet.getInt("free"); - int core_jb = resultSet.getInt("core_jb"); - int buy_jb = resultSet.getInt("buy_jb"); - Timestamp created_at = resultSet.getTimestamp("cz_time"); - String name = resultSet.getString("cz_user"); - String remark = resultSet.getString("cz_bz"); - String operation_platform = resultSet.getString("operation_platform"); - String goods_name = resultSet.getString("goods_name"); - String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); - - if(StringUtils.isNumeric(name)){ - Integer admin_id = Integer.valueOf(adminService.getId(name)); - logger.info("用户传输完毕"); - mysqlStmt.setInt(14, admin_id); - }else { - mysqlStmt.setInt(14, 99999); - } - Random random = new Random(); - int randomNumber = random.nextInt(900) + 100; - // 判断gtype + // 定义分页参数 + int pageSize = 100; + int offset = 0; + boolean hasMoreData = true; - mysqlStmt.setString(10,null); - mysqlStmt.setNull(11, java.sql.Types.INTEGER); - if(validFourTypes.contains(gtype)){ - continue; - } - if(validZeroTypes.contains(gtype)){ - mysqlStmt.setInt(13, 0); - mysqlStmt.setString(1, "ERPCZ"+timestampPart+randomNumber); - } - if(validOneTypes.contains(gtype)){ - mysqlStmt.setInt(13, 1); - mysqlStmt.setString(1, "ERPXF"+timestampPart+randomNumber); - } - if(validTwoTypes.contains(gtype)){ - mysqlStmt.setInt(13, 2); - mysqlStmt.setString(1, "ERPTK"+timestampPart+randomNumber); - mysqlStmt.setString(10,"退款商品"); - mysqlStmt.setInt(11, 0); - } - if(validThreeTypes.contains(gtype)){ - mysqlStmt.setInt(13, 3); - mysqlStmt.setString(1, "ERPQT"+timestampPart+randomNumber); - } + // 查询 SQL Server 数据的 SQL 语句 + String querySql = """ + SELECT gtype, jwcode, free, core_jb, buy_jb, cz_time, cz_user, cz_bz, operation_platform, goods_name + FROM hwhcGold.dbo.user_gold_records + WHERE flag = 1 AND cz_time > ? + ORDER BY cz_time ASC + OFFSET ? ROWS FETCH NEXT ? ROWS ONLY + """; + + // 插入 MySQL 数据的 SQL 语句 + String insertSql = "INSERT INTO user_gold_record (order_code, jwcode, sum_gold, permanent_gold, free_june, free_december, " + + "task_gold, pay_platform, goods_name, refund_type, refund_model, remark, type, admin_id, " + + "audit_status, create_time, flag, update_time, audit_time, is_refund) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + while (hasMoreData) { + try (PreparedStatement sqlServerStmt = sqlServerConn.prepareStatement(querySql)) { + sqlServerStmt.setTimestamp(1, Timestamp.valueOf(LocalDateTime.now().minusHours(1))); // 获取最近一小时的数据 + sqlServerStmt.setInt(2, offset); // 设置 OFFSET + sqlServerStmt.setInt(3, pageSize); // 设置 FETCH NEXT + + ResultSet resultSet = sqlServerStmt.executeQuery(); + + // 如果没有数据了,退出循环 + if (!resultSet.next()) { + hasMoreData = false; + break; + } - mysqlStmt.setInt(2, jwcode); - mysqlStmt.setInt(3, free+core_jb+buy_jb); - mysqlStmt.setInt(4,buy_jb); - // 判断月份 - if(currentMonth.getValue() >= 7){ - mysqlStmt.setInt(6, free); - mysqlStmt.setInt(5, 0); - } - if(currentMonth.getValue() < 7){ - mysqlStmt.setInt(6, 0); - mysqlStmt.setInt(5, free); - } - mysqlStmt.setInt(7, core_jb); - if (operation_platform.equals("1")){ - mysqlStmt.setString(8, "ERP"); - } - else if (operation_platform.equals("2")){ - mysqlStmt.setString(8, "HomilyLink"); - } - else if(operation_platform.equals("3")){ - mysqlStmt.setString(8, "HomilyChart"); - } - else if(operation_platform.equals("4")){ - continue; - } - else if(operation_platform.equals("0")){ - mysqlStmt.setString(8, "初始化金币"); - } - else { - mysqlStmt.setString(8, "其他"); - } - mysqlStmt.setString(9, goods_name); - mysqlStmt.setString(12, remark); - mysqlStmt.setInt(15, 3); - mysqlStmt.setTimestamp(16, created_at); - if(remark.contains("测试")&&remark.contains("员工")){ - mysqlStmt.setInt(17, 0); - }else { - mysqlStmt.setInt(17, 1); - } - mysqlStmt.setTimestamp(18, created_at); - mysqlStmt.setTimestamp(19, created_at); + logger.info("查询到 {} 条数据", pageSize); + + try (PreparedStatement mysqlStmt = mysqlConn.prepareStatement(insertSql)) { + do { + int gtype = resultSet.getInt("gtype"); + Integer jwcode = resultSet.getInt("jwcode"); + int free = resultSet.getInt("free"); + int core_jb = resultSet.getInt("core_jb"); + int buy_jb = resultSet.getInt("buy_jb"); + Timestamp created_at = resultSet.getTimestamp("cz_time"); + String name = resultSet.getString("cz_user"); + String remark = resultSet.getString("cz_bz"); + String operation_platform = resultSet.getString("operation_platform"); + String goods_name = resultSet.getString("goods_name"); + String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); + + if (StringUtils.isNumeric(name)) { + Integer admin_id = Integer.valueOf(adminService.getId(name)); + mysqlStmt.setInt(14, admin_id); + } else { + mysqlStmt.setInt(14, 99999); + } + + Random random = new Random(); + int randomNumber = random.nextInt(900) + 100; + + // 根据 gtype 设置不同的值 + mysqlStmt.setString(10, null); + mysqlStmt.setNull(11, java.sql.Types.INTEGER); + if (validFourTypes.contains(gtype)) { + continue; + } + if (validZeroTypes.contains(gtype)) { + mysqlStmt.setInt(13, 0); + mysqlStmt.setNull(20, java.sql.Types.INTEGER); + mysqlStmt.setString(1, "ERPCZ_" + timestampPart + randomNumber); + } + if (validOneTypes.contains(gtype)) { + mysqlStmt.setInt(13, 1); + mysqlStmt.setInt(20, 0); + mysqlStmt.setString(1, "ERPXF_" + timestampPart + randomNumber); + } + if (validTwoTypes.contains(gtype)) { + mysqlStmt.setInt(13, 2); + mysqlStmt.setInt(20, 0); + mysqlStmt.setString(1, "ERPTK_" + timestampPart + randomNumber); + mysqlStmt.setString(10, "退款商品"); + mysqlStmt.setInt(11, 0); + } + if (validThreeTypes.contains(gtype)) { + mysqlStmt.setInt(13, 3); + mysqlStmt.setString(1, "ERPQT_" + timestampPart + randomNumber); + } + + mysqlStmt.setInt(2, jwcode); + mysqlStmt.setInt(3, free + core_jb + buy_jb); + mysqlStmt.setInt(4, buy_jb); + if (currentMonth.getValue() >= 7) { + mysqlStmt.setInt(6, free); + mysqlStmt.setInt(5, 0); + } + if (currentMonth.getValue() < 7) { + mysqlStmt.setInt(6, 0); + mysqlStmt.setInt(5, free); + } + mysqlStmt.setInt(7, core_jb); + if (operation_platform.equals("1")) { + mysqlStmt.setString(8, "6"); + } else if (operation_platform.equals("2")) { + mysqlStmt.setString(8, "5"); + } else if (operation_platform.equals("3")) { + mysqlStmt.setString(8, "3"); + } else if (operation_platform.equals("4")) { + continue; + } else if (operation_platform.equals("0")) { + mysqlStmt.setString(8, "4"); + } else { + mysqlStmt.setString(8, "2"); + } + mysqlStmt.setString(9, goods_name); + mysqlStmt.setString(12, remark); + mysqlStmt.setInt(15, 3); + mysqlStmt.setTimestamp(16, created_at); + if (remark.contains("测试") && remark.contains("员工")) { + mysqlStmt.setInt(17, 0); + } else { + mysqlStmt.setInt(17, 1); + } + mysqlStmt.setTimestamp(18, created_at); + mysqlStmt.setTimestamp(19, created_at); + + mysqlStmt.addBatch(); - // 更新时的值 - mysqlStmt.addBatch(); + // 更新用户信息逻辑 logger.info("查询用户是否存在"); User user = userService.selectAllUser(String.valueOf(jwcode)); - if(ObjectUtils.isEmpty(user)){ + if (ObjectUtils.isEmpty(user)) { logger.info("用户不存在"); user = new User(); List country = Collections.singletonList("未知"); BaseDES des = new BaseDES(); - String desjwcode= des.encrypt(String.valueOf(jwcode)); -// System.out.println("desjwcode:"+desjwcode); + String desjwcode = des.encrypt(String.valueOf(jwcode)); // 创建 JSON 请求体 Map requestBody = new HashMap<>(); @@ -207,10 +228,10 @@ public class MysqlServiceImpl implements MysqlService { if (response.getStatusCode().is2xxSuccessful()) { Map responseBody = response.getBody(); if (responseBody != null) { - // 获取data部分 + // 获取 data 部分 Map data = (Map) responseBody.get("data"); if (data != null) { - // 提取name和country + // 提取 name 和 country name = (String) data.get("name"); country = (List) data.get("country"); @@ -232,9 +253,9 @@ public class MysqlServiceImpl implements MysqlService { country = Collections.singletonList("未知"); } - String market= String.join(",",marketService.getMarketIds(country)); + String market = String.join(",", marketService.getMarketIds(country)); user.setJwcode(jwcode); - user.setName( name); + user.setName(name); user.setMarket(market); logger.info("新添用户"); userService.addUser(user); @@ -242,8 +263,8 @@ public class MysqlServiceImpl implements MysqlService { user = userService.selectAllUser(String.valueOf(jwcode)); } - if(currentMonth.getValue() >= 7){ - if(user.getCurrentFreeJune().add(BigDecimal.valueOf(free)).compareTo(BigDecimal.ZERO)>=0){ + if (currentMonth.getValue() >= 7) { + if (user.getCurrentFreeJune().add(BigDecimal.valueOf(free)).compareTo(BigDecimal.ZERO) >= 0) { user.setCurrentFreeJune(user.getCurrentFreeJune().add(BigDecimal.valueOf(free))); } else { BigDecimal remaining = user.getCurrentFreeJune().add(BigDecimal.valueOf(free)); @@ -251,8 +272,8 @@ public class MysqlServiceImpl implements MysqlService { user.setCurrentFreeDecember(user.getCurrentFreeDecember().add(remaining)); } } - if(currentMonth.getValue() <7){ - if(user.getCurrentFreeDecember().add(BigDecimal.valueOf(free)).compareTo(BigDecimal.ZERO)>=0){ + if (currentMonth.getValue() < 7) { + if (user.getCurrentFreeDecember().add(BigDecimal.valueOf(free)).compareTo(BigDecimal.ZERO) >= 0) { user.setCurrentFreeDecember(user.getCurrentFreeDecember().add(BigDecimal.valueOf(free))); } else { BigDecimal remaining = user.getCurrentFreeDecember().add(BigDecimal.valueOf(free)); @@ -263,18 +284,18 @@ public class MysqlServiceImpl implements MysqlService { user.setCurrentPermanentGold(user.getCurrentPermanentGold().add(BigDecimal.valueOf(buy_jb))); user.setCurrentTaskGold(user.getCurrentTaskGold().add(BigDecimal.valueOf(core_jb))); - if(validZeroTypes.contains(gtype)) { + if (validZeroTypes.contains(gtype)) { user.setRechargeNum(user.getRechargeNum() + 1); user.setSumPermanentGold(user.getSumPermanentGold().add(BigDecimal.valueOf(buy_jb))); user.setSumTaskGold(user.getSumTaskGold().add(BigDecimal.valueOf(core_jb))); - if(currentMonth.getValue() >= 7){ + if (currentMonth.getValue() >= 7) { user.setSumFreeJune(user.getSumFreeJune().add(BigDecimal.valueOf(free))); } - if(currentMonth.getValue() < 7){ + if (currentMonth.getValue() < 7) { user.setSumFreeDecember(user.getSumFreeDecember().add(BigDecimal.valueOf(free))); } } - if (validOneTypes.contains(gtype)){ + if (validOneTypes.contains(gtype)) { user.setConsumeNum(user.getConsumeNum() + 1); user.setSumConsumePermanent(user.getSumConsumePermanent().add(BigDecimal.valueOf(buy_jb))); user.setSumConsumeTask(user.getSumConsumeTask().add(BigDecimal.valueOf(core_jb))); @@ -282,10 +303,18 @@ public class MysqlServiceImpl implements MysqlService { } userService.updateAllGold(user); + } while (resultSet.next()); + + // 批量插入 MySQL + mysqlStmt.executeBatch(); + logger.info("已成功插入 {} 条数据", pageSize); } - mysqlStmt.executeBatch(); // 批量插入 } + + // 更新分页参数 + offset += pageSize; } + logger.info("数据同步完成"); } catch (SQLException e) { logger.error("数据连接失败", e.getMessage()); @@ -304,7 +333,7 @@ public class MysqlServiceImpl implements MysqlService { try ( - Connection sourceConn = mysql1DataSource.getConnection(); + Connection sourceConn = sqlserver1DataSource.getConnection(); Connection targetConn = mysql1DataSource.getConnection() ) { // 关闭自动提交,手动控制事务 diff --git a/src/main/java/com/example/demo/Util/GoldTistV2.java b/src/main/java/com/example/demo/Util/GoldTistV2.java index a2e9063..04b87f2 100644 --- a/src/main/java/com/example/demo/Util/GoldTistV2.java +++ b/src/main/java/com/example/demo/Util/GoldTistV2.java @@ -218,7 +218,7 @@ public class GoldTistV2 { public static void main(String[] args) throws Exception { //调用demo - addCoinNew("94226013",64,1,"充1金币测试",0,"黄其振 ","文章11"); + addCoinNew("94226013",65,-2,"测试",-1,"黄其振","文章11"); } diff --git a/src/main/java/com/example/demo/controller/coin/GeneralController.java b/src/main/java/com/example/demo/controller/coin/GeneralController.java index e640d1c..adcfe3d 100644 --- a/src/main/java/com/example/demo/controller/coin/GeneralController.java +++ b/src/main/java/com/example/demo/controller/coin/GeneralController.java @@ -37,7 +37,7 @@ public class GeneralController { return Result.success(list); } //获取用户地区权限列表 - @Log("获取用户地区权限列表") +// @Log("获取用户地区权限列表") @PostMapping("/adminMarkets") public Result getAdminMarkets(@RequestBody AdminVo adminVo) throws Exception { String account = adminVo.getAccount(); @@ -45,20 +45,20 @@ public class GeneralController { return Result.success(list); } //获取角色地区权限 - @Log("获取角色地区权限") +// @Log("获取角色地区权限") @PostMapping("/roleMarket") public Result getroleMarkets(@RequestBody RoleVo roleVo) throws Exception { List market = generalService.getRoleMarket(roleVo.getId()); return Result.success(market); } //获取全部的角色地区 - @Log("获取全部的角色地区") +// @Log("获取全部的角色地区") @PostMapping("/allRoleMarket") public Result getAllRoleMarket(){ List list = generalService.getAllRoleMarket(); return Result.success(list); } - @Log("获取平台信息") +// @Log("获取平台信息") @PostMapping("/platform") public Result getPlatform() { @@ -66,7 +66,7 @@ public class GeneralController { return Result.success(list); } //获取商品名称 - @Log("获取商品名称") +// @Log("获取商品名称") @PostMapping("/goods") public Result getGoods() { diff --git a/src/main/java/com/example/demo/controller/coin/GoldDetailController.java b/src/main/java/com/example/demo/controller/coin/GoldDetailController.java index 89a4822..77bde91 100644 --- a/src/main/java/com/example/demo/controller/coin/GoldDetailController.java +++ b/src/main/java/com/example/demo/controller/coin/GoldDetailController.java @@ -79,19 +79,23 @@ public class GoldDetailController { // 获取传入的市场列表 List requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null; -// 权限校验 - if (requestedMarkets != null && !requestedMarkets.isEmpty()) { - if (!markets.containsAll(requestedMarkets)) { - // 如果 markets 不包含 requestedMarkets 中的所有元素,则返回无权限 - return Result.error("无权限!"); +// 权限校验逻辑 + if (markets.contains("9") || markets.contains("9999")) { + // 特权市场:9 或 9999,跳过权限校验,直接放行传入的 markets + // 如果业务需要,也可以在这里做空值处理 + if (page.getGoldDetail() != null) { + // 保持 requestedMarkets 不变,原样接受 + // 可选:如果 requestedMarkets 为 null,可设为默认值或保持 null } } else { - // 如果传入的市场为空,则设置默认市场 - if (markets.contains("9") || markets.contains("9999")) { - page.getGoldDetail().setMarkets(null); // 包含 9 或 9999,传 null - } else { - page.getGoldDetail().setMarkets(markets); // 不包含,传原值 + // 普通用户:必须校验权限 + if (requestedMarkets == null || requestedMarkets.isEmpty()) { + page.getGoldDetail().setMarkets(requestedMarkets); + } + if (!markets.containsAll(requestedMarkets)) { + return Result.error("无权限!请求的市场不在授权范围内。"); } + // 校验通过,保持 requestedMarkets 不变 } // 返回详情数据 @@ -118,20 +122,25 @@ public class GoldDetailController { // 获取传入的市场列表 List requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null; -// 权限校验 - if (requestedMarkets != null && !requestedMarkets.isEmpty()) { - if (!markets.containsAll(requestedMarkets)) { - // 如果 markets 不包含 requestedMarkets 中的所有元素,则返回无权限 - return Result.error("无权限!"); +// 权限校验逻辑 + if (markets.contains("9") || markets.contains("9999")) { + // 特权市场:9 或 9999,跳过权限校验,直接放行传入的 markets + // 如果业务需要,也可以在这里做空值处理 + if (page.getGoldDetail() != null) { + // 保持 requestedMarkets 不变,原样接受 + // 可选:如果 requestedMarkets 为 null,可设为默认值或保持 null } } else { - // 如果传入的市场为空,则设置默认市场 - if (markets.contains("9") || markets.contains("9999")) { - page.getGoldDetail().setMarkets(null); // 包含 9 或 9999,传 null - } else { - page.getGoldDetail().setMarkets(markets); // 不包含,传原值 + // 普通用户:必须校验权限 + if (requestedMarkets == null || requestedMarkets.isEmpty()) { + page.getGoldDetail().setMarkets(requestedMarkets); } + if (!markets.containsAll(requestedMarkets)) { + return Result.error("无权限!请求的市场不在授权范围内。"); + } + // 校验通过,保持 requestedMarkets 不变 } + return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail)); } @Log("客户金币余额金币合计数统计") @@ -150,20 +159,25 @@ public class GoldDetailController { // 获取传入的市场列表 List requestedMarkets = user != null ? user.getMarkets() : null; -// 权限校验 - if (requestedMarkets != null && !requestedMarkets.isEmpty()) { - if (!markets.containsAll(requestedMarkets)) { - // 如果 markets 不包含 requestedMarkets 中的所有元素,则返回无权限 - return Result.error("无权限!"); +// 权限校验逻辑 + if (markets.contains("9") || markets.contains("9999")) { + // 特权市场:9 或 9999,跳过权限校验,直接放行传入的 markets + // 如果业务需要,也可以在这里做空值处理 + if (user != null) { + // 保持 requestedMarkets 不变,原样接受 + // 可选:如果 requestedMarkets 为 null,可设为默认值或保持 null } } else { - // 如果传入的市场为空,则设置默认市场 - if (markets.contains("9") || markets.contains("9999")) { - user.setMarkets(null); // 包含 9 或 9999,传 null - } else { - user.setMarkets(markets); // 不包含,传原值 + // 普通用户:必须校验权限 + if (requestedMarkets == null || requestedMarkets.isEmpty()) { + user.setMarkets(null); } + if (!markets.containsAll(requestedMarkets)) { + return Result.error("无权限!请求的市场不在授权范围内。"); + } + // 校验通过,保持 requestedMarkets 不变 } + return Result.success(goldDetailService.GoldTotal(user)); } @Log("获取客户金币余额记录") @@ -189,20 +203,25 @@ public class GoldDetailController { // 获取传入的市场列表 List requestedMarkets = page.getUser() != null ? page.getUser().getMarkets() : null; -// 权限校验 - if (requestedMarkets != null && !requestedMarkets.isEmpty()) { - if (!markets.containsAll(requestedMarkets)) { - // 如果 markets 不包含 requestedMarkets 中的所有元素,则返回无权限 - return Result.error("无权限!"); +// 权限校验逻辑 + if (markets.contains("9") || markets.contains("9999")) { + // 特权市场:9 或 9999,跳过权限校验,直接放行传入的 markets + // 如果业务需要,也可以在这里做空值处理 + if (page.getUser() != null) { + // 保持 requestedMarkets 不变,原样接受 + // 可选:如果 requestedMarkets 为 null,可设为默认值或保持 null } } else { - // 如果传入的市场为空,则设置默认市场 - if (markets.contains("9") || markets.contains("9999")) { - page.getUser().setMarkets(null); // 包含 9 或 9999,传 null - } else { - page.getUser().setMarkets(markets); // 不包含,传原值 + // 普通用户:必须校验权限 + if (requestedMarkets == null || requestedMarkets.isEmpty()) { + page.getUser().setMarkets(null); } + if (!markets.containsAll(requestedMarkets)) { + return Result.error("无权限!请求的市场不在授权范围内。"); + } + // 校验通过,保持 requestedMarkets 不变 } + return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser())); } @PostMapping("/export") diff --git a/src/main/java/com/example/demo/domain/entity/Goods.java b/src/main/java/com/example/demo/domain/entity/Goods.java new file mode 100644 index 0000000..4fac5ae --- /dev/null +++ b/src/main/java/com/example/demo/domain/entity/Goods.java @@ -0,0 +1,23 @@ +package com.example.demo.domain.entity; + + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @program: GOLD + * @ClassName Goods + * @description: + * @author: huangqizhen + * @create: 2025−08-21 17:03 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class Goods implements Serializable { + private static final long serialVersionUID = 1L; + private Integer id; + private String goodsname; +} diff --git a/src/main/java/com/example/demo/domain/entity/Platform.java b/src/main/java/com/example/demo/domain/entity/Platform.java new file mode 100644 index 0000000..06115de --- /dev/null +++ b/src/main/java/com/example/demo/domain/entity/Platform.java @@ -0,0 +1,19 @@ +package com.example.demo.domain.entity; + +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @program: GOLD + * @ClassName Platform + * @description: + * @author: huangqizhen + * @create: 2025−08-21 17:05 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class Platform { + private Integer id; + private String platform; +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f11474f..52f02ac 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -21,32 +21,6 @@ spring: application: name: demo - cache: - type: redis - redis: - time-to-live: 3600000 - use-key-prefix: true - cache-null-values: true - - servlet: - multipart: - enabled: true - max-file-size: 10MB - max-request-size: 10MB - - data: - redis: - database: 0 - host: 54.255.212.181 - port: 10703 - password: Ngc0FYUTA6h3wC5J - - lettuce: - pool: - max-active: 20 - max-wait: -1 - max-idle: 5 - mybatis: type-handlers-package: com.example.demo.Util configuration: