Browse Source

8.22修改同步数据库代码逻辑

lijianlin/feature-20250728171217-三期金豆消费相关
huangqizhen 2 months ago
parent
commit
f0ec3546db
  1. 163
      src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
  2. 2
      src/main/java/com/example/demo/Util/GoldTistV2.java
  3. 10
      src/main/java/com/example/demo/controller/coin/GeneralController.java
  4. 99
      src/main/java/com/example/demo/controller/coin/GoldDetailController.java
  5. 23
      src/main/java/com/example/demo/domain/entity/Goods.java
  6. 19
      src/main/java/com/example/demo/domain/entity/Platform.java
  7. 26
      src/main/resources/application.yml

163
src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java

@ -65,24 +65,49 @@ public class MysqlServiceImpl implements MysqlService {
// @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次 // @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次
public void getSqlserverData() throws Exception { public void getSqlserverData() throws Exception {
logger.info("开始从 SQL Server 同步数据到 MySQL"); logger.info("开始从 SQL Server 同步数据到 MySQL");
try (Connection sqlServerConn = mysql1DataSource.getConnection();
try (Connection sqlServerConn = sqlserver1DataSource.getConnection();
Connection mysqlConn = mysql1DataSource.getConnection()) { Connection mysqlConn = mysql1DataSource.getConnection()) {
logger.info("开始查询数据..."); 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> ?";
// 定义分页参数
int pageSize = 100;
int offset = 0;
boolean hasMoreData = true;
// 查询 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)) { try (PreparedStatement sqlServerStmt = sqlServerConn.prepareStatement(querySql)) {
sqlServerStmt.setTimestamp(1, Timestamp.valueOf(LocalDateTime.now().minusHours(1))); // 获取最近一小时的数据 sqlServerStmt.setTimestamp(1, Timestamp.valueOf(LocalDateTime.now().minusHours(1))); // 获取最近一小时的数据
sqlServerStmt.setInt(2, offset); // 设置 OFFSET
sqlServerStmt.setInt(3, pageSize); // 设置 FETCH NEXT
ResultSet resultSet = sqlServerStmt.executeQuery(); ResultSet resultSet = sqlServerStmt.executeQuery();
logger.info("查询数据完毕!");
// 插入到 MySQL
//退款类型 61ERP退款退金币
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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
// 如果没有数据了退出循环
if (!resultSet.next()) {
hasMoreData = false;
break;
}
logger.info("查询到 {} 条数据", pageSize);
try (PreparedStatement mysqlStmt = mysqlConn.prepareStatement(insertSql)) { try (PreparedStatement mysqlStmt = mysqlConn.prepareStatement(insertSql)) {
while (resultSet.next()) {
do {
int gtype = resultSet.getInt("gtype"); int gtype = resultSet.getInt("gtype");
Integer jwcode = resultSet.getInt("jwcode"); Integer jwcode = resultSet.getInt("jwcode");
int free = resultSet.getInt("free"); int free = resultSet.getInt("free");
@ -95,96 +120,92 @@ public class MysqlServiceImpl implements MysqlService {
String goods_name = resultSet.getString("goods_name"); String goods_name = resultSet.getString("goods_name");
String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
if(StringUtils.isNumeric(name)){
if (StringUtils.isNumeric(name)) {
Integer admin_id = Integer.valueOf(adminService.getId(name)); Integer admin_id = Integer.valueOf(adminService.getId(name));
logger.info("用户传输完毕");
mysqlStmt.setInt(14, admin_id); mysqlStmt.setInt(14, admin_id);
}else {
} else {
mysqlStmt.setInt(14, 99999); mysqlStmt.setInt(14, 99999);
} }
Random random = new Random(); Random random = new Random();
int randomNumber = random.nextInt(900) + 100; int randomNumber = random.nextInt(900) + 100;
// 判断gtype
mysqlStmt.setString(10,null);
// 根据 gtype 设置不同的值
mysqlStmt.setString(10, null);
mysqlStmt.setNull(11, java.sql.Types.INTEGER); mysqlStmt.setNull(11, java.sql.Types.INTEGER);
if(validFourTypes.contains(gtype)){
if (validFourTypes.contains(gtype)) {
continue; continue;
} }
if(validZeroTypes.contains(gtype)){
if (validZeroTypes.contains(gtype)) {
mysqlStmt.setInt(13, 0); mysqlStmt.setInt(13, 0);
mysqlStmt.setString(1, "ERPCZ"+timestampPart+randomNumber);
mysqlStmt.setNull(20, java.sql.Types.INTEGER);
mysqlStmt.setString(1, "ERPCZ_" + timestampPart + randomNumber);
} }
if(validOneTypes.contains(gtype)){
if (validOneTypes.contains(gtype)) {
mysqlStmt.setInt(13, 1); mysqlStmt.setInt(13, 1);
mysqlStmt.setString(1, "ERPXF"+timestampPart+randomNumber);
mysqlStmt.setInt(20, 0);
mysqlStmt.setString(1, "ERPXF_" + timestampPart + randomNumber);
} }
if(validTwoTypes.contains(gtype)){
if (validTwoTypes.contains(gtype)) {
mysqlStmt.setInt(13, 2); mysqlStmt.setInt(13, 2);
mysqlStmt.setString(1, "ERPTK"+timestampPart+randomNumber);
mysqlStmt.setString(10,"退款商品");
mysqlStmt.setInt(20, 0);
mysqlStmt.setString(1, "ERPTK_" + timestampPart + randomNumber);
mysqlStmt.setString(10, "退款商品");
mysqlStmt.setInt(11, 0); mysqlStmt.setInt(11, 0);
} }
if(validThreeTypes.contains(gtype)){
if (validThreeTypes.contains(gtype)) {
mysqlStmt.setInt(13, 3); mysqlStmt.setInt(13, 3);
mysqlStmt.setString(1, "ERPQT"+timestampPart+randomNumber);
mysqlStmt.setString(1, "ERPQT_" + timestampPart + randomNumber);
} }
mysqlStmt.setInt(2, jwcode); mysqlStmt.setInt(2, jwcode);
mysqlStmt.setInt(3, free+core_jb+buy_jb);
mysqlStmt.setInt(4,buy_jb);
// 判断月份
if(currentMonth.getValue() >= 7){
mysqlStmt.setInt(3, free + core_jb + buy_jb);
mysqlStmt.setInt(4, buy_jb);
if (currentMonth.getValue() >= 7) {
mysqlStmt.setInt(6, free); mysqlStmt.setInt(6, free);
mysqlStmt.setInt(5, 0); mysqlStmt.setInt(5, 0);
} }
if(currentMonth.getValue() < 7){
if (currentMonth.getValue() < 7) {
mysqlStmt.setInt(6, 0); mysqlStmt.setInt(6, 0);
mysqlStmt.setInt(5, free); mysqlStmt.setInt(5, free);
} }
mysqlStmt.setInt(7, core_jb); 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")){
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; continue;
}
else if(operation_platform.equals("0")){
mysqlStmt.setString(8, "初始化金币");
}
else {
mysqlStmt.setString(8, "其他");
} else if (operation_platform.equals("0")) {
mysqlStmt.setString(8, "4");
} else {
mysqlStmt.setString(8, "2");
} }
mysqlStmt.setString(9, goods_name); mysqlStmt.setString(9, goods_name);
mysqlStmt.setString(12, remark); mysqlStmt.setString(12, remark);
mysqlStmt.setInt(15, 3); mysqlStmt.setInt(15, 3);
mysqlStmt.setTimestamp(16, created_at); mysqlStmt.setTimestamp(16, created_at);
if(remark.contains("测试")&&remark.contains("员工")){
if (remark.contains("测试") && remark.contains("员工")) {
mysqlStmt.setInt(17, 0); mysqlStmt.setInt(17, 0);
}else {
} else {
mysqlStmt.setInt(17, 1); mysqlStmt.setInt(17, 1);
} }
mysqlStmt.setTimestamp(18, created_at); mysqlStmt.setTimestamp(18, created_at);
mysqlStmt.setTimestamp(19, created_at); mysqlStmt.setTimestamp(19, created_at);
// 更新时的值
mysqlStmt.addBatch(); mysqlStmt.addBatch();
// 更新用户信息逻辑
logger.info("查询用户是否存在"); logger.info("查询用户是否存在");
User user = userService.selectAllUser(String.valueOf(jwcode)); User user = userService.selectAllUser(String.valueOf(jwcode));
if(ObjectUtils.isEmpty(user)){
if (ObjectUtils.isEmpty(user)) {
logger.info("用户不存在"); logger.info("用户不存在");
user = new User(); user = new User();
List<String> country = Collections.singletonList("未知"); List<String> country = Collections.singletonList("未知");
BaseDES des = new BaseDES(); BaseDES des = new BaseDES();
String desjwcode= des.encrypt(String.valueOf(jwcode));
// System.out.println("desjwcode:"+desjwcode);
String desjwcode = des.encrypt(String.valueOf(jwcode));
// 创建 JSON 请求体 // 创建 JSON 请求体
Map<String, String> requestBody = new HashMap<>(); Map<String, String> requestBody = new HashMap<>();
@ -207,10 +228,10 @@ public class MysqlServiceImpl implements MysqlService {
if (response.getStatusCode().is2xxSuccessful()) { if (response.getStatusCode().is2xxSuccessful()) {
Map<String, Object> responseBody = response.getBody(); Map<String, Object> responseBody = response.getBody();
if (responseBody != null) { if (responseBody != null) {
// 获取data部分
// 获取 data 部分
Map<String, Object> data = (Map<String, Object>) responseBody.get("data"); Map<String, Object> data = (Map<String, Object>) responseBody.get("data");
if (data != null) { if (data != null) {
// 提取name和country
// 提取 name country
name = (String) data.get("name"); name = (String) data.get("name");
country = (List<String>) data.get("country"); country = (List<String>) data.get("country");
@ -232,9 +253,9 @@ public class MysqlServiceImpl implements MysqlService {
country = Collections.singletonList("未知"); country = Collections.singletonList("未知");
} }
String market= String.join(",",marketService.getMarketIds(country));
String market = String.join(",", marketService.getMarketIds(country));
user.setJwcode(jwcode); user.setJwcode(jwcode);
user.setName( name);
user.setName(name);
user.setMarket(market); user.setMarket(market);
logger.info("新添用户"); logger.info("新添用户");
userService.addUser(user); userService.addUser(user);
@ -242,8 +263,8 @@ public class MysqlServiceImpl implements MysqlService {
user = userService.selectAllUser(String.valueOf(jwcode)); 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))); user.setCurrentFreeJune(user.getCurrentFreeJune().add(BigDecimal.valueOf(free)));
} else { } else {
BigDecimal remaining = user.getCurrentFreeJune().add(BigDecimal.valueOf(free)); BigDecimal remaining = user.getCurrentFreeJune().add(BigDecimal.valueOf(free));
@ -251,8 +272,8 @@ public class MysqlServiceImpl implements MysqlService {
user.setCurrentFreeDecember(user.getCurrentFreeDecember().add(remaining)); 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))); user.setCurrentFreeDecember(user.getCurrentFreeDecember().add(BigDecimal.valueOf(free)));
} else { } else {
BigDecimal remaining = user.getCurrentFreeDecember().add(BigDecimal.valueOf(free)); 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.setCurrentPermanentGold(user.getCurrentPermanentGold().add(BigDecimal.valueOf(buy_jb)));
user.setCurrentTaskGold(user.getCurrentTaskGold().add(BigDecimal.valueOf(core_jb))); user.setCurrentTaskGold(user.getCurrentTaskGold().add(BigDecimal.valueOf(core_jb)));
if(validZeroTypes.contains(gtype)) {
if (validZeroTypes.contains(gtype)) {
user.setRechargeNum(user.getRechargeNum() + 1); user.setRechargeNum(user.getRechargeNum() + 1);
user.setSumPermanentGold(user.getSumPermanentGold().add(BigDecimal.valueOf(buy_jb))); user.setSumPermanentGold(user.getSumPermanentGold().add(BigDecimal.valueOf(buy_jb)));
user.setSumTaskGold(user.getSumTaskGold().add(BigDecimal.valueOf(core_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))); user.setSumFreeJune(user.getSumFreeJune().add(BigDecimal.valueOf(free)));
} }
if(currentMonth.getValue() < 7){
if (currentMonth.getValue() < 7) {
user.setSumFreeDecember(user.getSumFreeDecember().add(BigDecimal.valueOf(free))); user.setSumFreeDecember(user.getSumFreeDecember().add(BigDecimal.valueOf(free)));
} }
} }
if (validOneTypes.contains(gtype)){
if (validOneTypes.contains(gtype)) {
user.setConsumeNum(user.getConsumeNum() + 1); user.setConsumeNum(user.getConsumeNum() + 1);
user.setSumConsumePermanent(user.getSumConsumePermanent().add(BigDecimal.valueOf(buy_jb))); user.setSumConsumePermanent(user.getSumConsumePermanent().add(BigDecimal.valueOf(buy_jb)));
user.setSumConsumeTask(user.getSumConsumeTask().add(BigDecimal.valueOf(core_jb))); user.setSumConsumeTask(user.getSumConsumeTask().add(BigDecimal.valueOf(core_jb)));
@ -282,10 +303,18 @@ public class MysqlServiceImpl implements MysqlService {
} }
userService.updateAllGold(user); userService.updateAllGold(user);
} while (resultSet.next());
// 批量插入 MySQL
mysqlStmt.executeBatch();
logger.info("已成功插入 {} 条数据", pageSize);
} }
mysqlStmt.executeBatch(); // 批量插入
} }
// 更新分页参数
offset += pageSize;
} }
logger.info("数据同步完成"); logger.info("数据同步完成");
} catch (SQLException e) { } catch (SQLException e) {
logger.error("数据连接失败", e.getMessage()); logger.error("数据连接失败", e.getMessage());
@ -304,7 +333,7 @@ public class MysqlServiceImpl implements MysqlService {
try ( try (
Connection sourceConn = mysql1DataSource.getConnection();
Connection sourceConn = sqlserver1DataSource.getConnection();
Connection targetConn = mysql1DataSource.getConnection() Connection targetConn = mysql1DataSource.getConnection()
) { ) {
// 关闭自动提交手动控制事务 // 关闭自动提交手动控制事务

2
src/main/java/com/example/demo/Util/GoldTistV2.java

@ -218,7 +218,7 @@ public class GoldTistV2 {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
//调用demo //调用demo
addCoinNew("94226013",64,1,"充1金币测试",0,"黄其振 ","文章11");
addCoinNew("94226013",65,-2,"测试",-1,"黄其振","文章11");
} }

10
src/main/java/com/example/demo/controller/coin/GeneralController.java

@ -37,7 +37,7 @@ public class GeneralController {
return Result.success(list); return Result.success(list);
} }
//获取用户地区权限列表 //获取用户地区权限列表
@Log("获取用户地区权限列表")
// @Log("获取用户地区权限列表")
@PostMapping("/adminMarkets") @PostMapping("/adminMarkets")
public Result getAdminMarkets(@RequestBody AdminVo adminVo) throws Exception { public Result getAdminMarkets(@RequestBody AdminVo adminVo) throws Exception {
String account = adminVo.getAccount(); String account = adminVo.getAccount();
@ -45,20 +45,20 @@ public class GeneralController {
return Result.success(list); return Result.success(list);
} }
//获取角色地区权限 //获取角色地区权限
@Log("获取角色地区权限")
// @Log("获取角色地区权限")
@PostMapping("/roleMarket") @PostMapping("/roleMarket")
public Result getroleMarkets(@RequestBody RoleVo roleVo) throws Exception { public Result getroleMarkets(@RequestBody RoleVo roleVo) throws Exception {
List<String> market = generalService.getRoleMarket(roleVo.getId()); List<String> market = generalService.getRoleMarket(roleVo.getId());
return Result.success(market); return Result.success(market);
} }
//获取全部的角色地区 //获取全部的角色地区
@Log("获取全部的角色地区")
// @Log("获取全部的角色地区")
@PostMapping("/allRoleMarket") @PostMapping("/allRoleMarket")
public Result getAllRoleMarket(){ public Result getAllRoleMarket(){
List<String> list = generalService.getAllRoleMarket(); List<String> list = generalService.getAllRoleMarket();
return Result.success(list); return Result.success(list);
} }
@Log("获取平台信息")
// @Log("获取平台信息")
@PostMapping("/platform") @PostMapping("/platform")
public Result getPlatform() public Result getPlatform()
{ {
@ -66,7 +66,7 @@ public class GeneralController {
return Result.success(list); return Result.success(list);
} }
//获取商品名称 //获取商品名称
@Log("获取商品名称")
// @Log("获取商品名称")
@PostMapping("/goods") @PostMapping("/goods")
public Result getGoods() public Result getGoods()
{ {

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

@ -79,19 +79,23 @@ public class GoldDetailController {
// 获取传入的市场列表 // 获取传入的市场列表
List<String> requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null; List<String> requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null;
// 权限校验
if (requestedMarkets != null && !requestedMarkets.isEmpty()) {
if (!markets.containsAll(requestedMarkets)) {
// 如果 markets 不包含 requestedMarkets 中的所有元素则返回无权限
return Result.error("无权限!");
}
} else {
// 如果传入的市场为空则设置默认市场
// 权限校验逻辑
if (markets.contains("9") || markets.contains("9999")) { if (markets.contains("9") || markets.contains("9999")) {
page.getGoldDetail().setMarkets(null); // 包含 9 9999 null
// 特权市场9 9999跳过权限校验直接放行传入的 markets
// 如果业务需要也可以在这里做空值处理
if (page.getGoldDetail() != null) {
// 保持 requestedMarkets 不变原样接受
// 可选如果 requestedMarkets null可设为默认值或保持 null
}
} else { } 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<String> requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null; List<String> requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null;
// 权限校验
if (requestedMarkets != null && !requestedMarkets.isEmpty()) {
if (!markets.containsAll(requestedMarkets)) {
// 如果 markets 不包含 requestedMarkets 中的所有元素则返回无权限
return Result.error("无权限!");
}
} else {
// 如果传入的市场为空则设置默认市场
// 权限校验逻辑
if (markets.contains("9") || markets.contains("9999")) { if (markets.contains("9") || markets.contains("9999")) {
page.getGoldDetail().setMarkets(null); // 包含 9 9999 null
// 特权市场9 9999跳过权限校验直接放行传入的 markets
// 如果业务需要也可以在这里做空值处理
if (page.getGoldDetail() != null) {
// 保持 requestedMarkets 不变原样接受
// 可选如果 requestedMarkets null可设为默认值或保持 null
}
} else { } 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)); return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail));
} }
@Log("客户金币余额金币合计数统计") @Log("客户金币余额金币合计数统计")
@ -150,20 +159,25 @@ public class GoldDetailController {
// 获取传入的市场列表 // 获取传入的市场列表
List<String> requestedMarkets = user != null ? user.getMarkets() : null; List<String> requestedMarkets = user != null ? user.getMarkets() : null;
// 权限校验
if (requestedMarkets != null && !requestedMarkets.isEmpty()) {
if (!markets.containsAll(requestedMarkets)) {
// 如果 markets 不包含 requestedMarkets 中的所有元素则返回无权限
return Result.error("无权限!");
}
} else {
// 如果传入的市场为空则设置默认市场
// 权限校验逻辑
if (markets.contains("9") || markets.contains("9999")) { if (markets.contains("9") || markets.contains("9999")) {
user.setMarkets(null); // 包含 9 9999 null
// 特权市场9 9999跳过权限校验直接放行传入的 markets
// 如果业务需要也可以在这里做空值处理
if (user != null) {
// 保持 requestedMarkets 不变原样接受
// 可选如果 requestedMarkets null可设为默认值或保持 null
}
} else { } 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)); return Result.success(goldDetailService.GoldTotal(user));
} }
@Log("获取客户金币余额记录") @Log("获取客户金币余额记录")
@ -189,20 +203,25 @@ public class GoldDetailController {
// 获取传入的市场列表 // 获取传入的市场列表
List<String> requestedMarkets = page.getUser() != null ? page.getUser().getMarkets() : null; List<String> requestedMarkets = page.getUser() != null ? page.getUser().getMarkets() : null;
// 权限校验
if (requestedMarkets != null && !requestedMarkets.isEmpty()) {
if (!markets.containsAll(requestedMarkets)) {
// 如果 markets 不包含 requestedMarkets 中的所有元素则返回无权限
return Result.error("无权限!");
}
} else {
// 如果传入的市场为空则设置默认市场
// 权限校验逻辑
if (markets.contains("9") || markets.contains("9999")) { if (markets.contains("9") || markets.contains("9999")) {
page.getUser().setMarkets(null); // 包含 9 9999 null
// 特权市场9 9999跳过权限校验直接放行传入的 markets
// 如果业务需要也可以在这里做空值处理
if (page.getUser() != null) {
// 保持 requestedMarkets 不变原样接受
// 可选如果 requestedMarkets null可设为默认值或保持 null
}
} else { } 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())); return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser()));
} }
@PostMapping("/export") @PostMapping("/export")

23
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: 202508-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;
}

19
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: 202508-21 17:05
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class Platform {
private Integer id;
private String platform;
}

26
src/main/resources/application.yml

@ -21,32 +21,6 @@ spring:
application: application:
name: demo 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: mybatis:
type-handlers-package: com.example.demo.Util type-handlers-package: com.example.demo.Util
configuration: configuration:

Loading…
Cancel
Save