diff --git a/README.md b/README.md index ae69c0b..fcbde7e 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,15 @@ ## Mysql:5.7.44 地址端口号:18.143.76.3:3306 -### 测试 :数据库:正式 hwgold aDiw7MERSATdfGta 测试 hwgoldc zB48T55wCsHC8KPz +### 数据库: +#### 正式 hwgold aDiw7MERSATdfGta +#### 测试 hwgoldc zB48T55wCsHC8KPz ## 域名 -### 测试:hwjb.homilychart.com +### 测试:hwjb.homilychart.com/dev -### 正式: +### 正式:hwjb.homilychart.com diff --git a/src/main/java/com/example/demo/Export/ExportServiceImpl.java b/src/main/java/com/example/demo/Export/ExportServiceImpl.java index b822651..b3aeaf9 100644 --- a/src/main/java/com/example/demo/Export/ExportServiceImpl.java +++ b/src/main/java/com/example/demo/Export/ExportServiceImpl.java @@ -61,7 +61,7 @@ public class ExportServiceImpl implements ExportService{ "充值明细", admin, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); - System.out.println(fileName); +// System.out.println(fileName); dto.setUrl(""); dto.setFileName(fileName); dto.setDataNum(0); diff --git a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java index 5e0f08e..0a89bb8 100644 --- a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java +++ b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java @@ -103,6 +103,9 @@ public class MysqlServiceImpl implements MysqlService { 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; } @@ -175,7 +178,7 @@ public class MysqlServiceImpl implements MysqlService { String country = "未知"; BaseDES des = new BaseDES(); String desjwcode= des.encrypt(String.valueOf(jwcode)); - System.out.println("desjwcode:"+desjwcode); +// System.out.println("desjwcode:"+desjwcode); // 创建 JSON 请求体 Map requestBody = new HashMap<>(); diff --git a/src/main/java/com/example/demo/Util/JWTUtil.java b/src/main/java/com/example/demo/Util/JWTUtil.java index 373f780..8c70bab 100644 --- a/src/main/java/com/example/demo/Util/JWTUtil.java +++ b/src/main/java/com/example/demo/Util/JWTUtil.java @@ -47,8 +47,8 @@ public class JWTUtil { ObjectMapper mapper = new ObjectMapper(); try { String json = mapper.writeValueAsString(user); - System.out.println("用户的JSON"); - System.out.println(json); +// System.out.println("用户的JSON"); +// System.out.println(json); return createJWT(json, JWT_TTL); } catch (JsonProcessingException e) { throw new RuntimeException(e); @@ -142,7 +142,7 @@ public class JWTUtil { */ public static Claims parseJWT(String jwt) throws Exception { SecretKey secretKey = generalKey(); - System.out.println(jwt); +// System.out.println(jwt); return Jwts.parser() .setSigningKey(secretKey) .parseClaimsJws(jwt) diff --git a/src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java b/src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java index be58aa2..3687418 100644 --- a/src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java +++ b/src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java @@ -20,7 +20,7 @@ public class Mysql1DataSourceConfig { @Bean(name = "mysql1DataSource") @ConfigurationProperties(prefix = "spring.datasource.mysql1") -public DataSource mysql2DataSource() { +public DataSource mysql1DataSource() { return DataSourceBuilder.create().type(HikariDataSource.class).build(); } @Bean(name = "mysql1SqlSessionFactory") diff --git a/src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java b/src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java new file mode 100644 index 0000000..2e94cf2 --- /dev/null +++ b/src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java @@ -0,0 +1,47 @@ +package com.example.demo.config; + +import com.zaxxer.hikari.HikariDataSource; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; + +import javax.sql.DataSource; + +@Slf4j +@Configuration +public class Mysql2DataSourceConfig { + + @Bean(name = "mysql2DataSource") + @ConfigurationProperties(prefix = "spring.datasource.mysql2") + public DataSource mysql2DataSource() { + return DataSourceBuilder.create().type(HikariDataSource.class).build(); + } + @Bean(name = "mysql2SqlSessionFactory") +// @Primary + public SqlSessionFactory mysql2SqlSessionFactory(@Qualifier("mysql2DataSource") DataSource dataSource, + @Qualifier("globalConfiguration2") org.apache.ibatis.session.Configuration globalConfiguration2) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:jindouMapper/*.xml")); + sessionFactory.setConfiguration(globalConfiguration2); + return sessionFactory.getObject(); + } + + @Bean(name = "mysql2SqlSessionTemplate") +// @Primary + public SqlSessionTemplate mysql2SqlSessionTemplate(@Qualifier("mysql2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } + @Bean + @ConfigurationProperties(prefix = "mybatis.configuration.mysql2") + public org.apache.ibatis.session.Configuration globalConfiguration2() { + return new org.apache.ibatis.session.Configuration(); + } +} diff --git a/src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java b/src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java new file mode 100644 index 0000000..52577d3 --- /dev/null +++ b/src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java @@ -0,0 +1,47 @@ +package com.example.demo.config; + +import com.zaxxer.hikari.HikariDataSource; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.SqlSessionFactoryBean; +import org.mybatis.spring.SqlSessionTemplate; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; + +import javax.sql.DataSource; + +@Slf4j +@Configuration +public class Mysql3DataSourceConfig { + + @Bean(name = "mysql3DataSource") + @ConfigurationProperties(prefix = "spring.datasource.mysql3") + public DataSource mysql2DataSource() { + return DataSourceBuilder.create().type(HikariDataSource.class).build(); + } + @Bean(name = "mysql3SqlSessionFactory") +// @Primary + public SqlSessionFactory mysql3SqlSessionFactory(@Qualifier("mysql3DataSource") DataSource dataSource, + @Qualifier("globalConfiguration3") org.apache.ibatis.session.Configuration globalConfiguration3) throws Exception { + SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); + sessionFactory.setDataSource(dataSource); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:jindouMapper/*.xml")); + sessionFactory.setConfiguration(globalConfiguration3); + return sessionFactory.getObject(); + } + + @Bean(name = "mysql3SqlSessionTemplate") +// @Primary + public SqlSessionTemplate mysql3SqlSessionTemplate(@Qualifier("mysql3SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { + return new SqlSessionTemplate(sqlSessionFactory); + } + @Bean + @ConfigurationProperties(prefix = "mybatis.configuration.mysql3") + public org.apache.ibatis.session.Configuration globalConfiguration3() { + return new org.apache.ibatis.session.Configuration(); + } +} diff --git a/src/main/java/com/example/demo/controller/AdminController.java b/src/main/java/com/example/demo/controller/AdminController.java index 0af8e9f..c95afe1 100644 --- a/src/main/java/com/example/demo/controller/AdminController.java +++ b/src/main/java/com/example/demo/controller/AdminController.java @@ -43,7 +43,7 @@ public class AdminController { try { admin = adminService.login(admin); String token = JWTUtil.createJWT(admin); - System.out.println(token); +// System.out.println(token); admin.setPassword(null); return Result.success(token, admin); @@ -59,9 +59,9 @@ public class AdminController { //String token = token1.getToken(); String token = token1; - System.out.println("1/*/*/*/*//*-*-*-*-*-*-1" + token); + try { - System.out.println("/+/+/+/+/+/+/+//" + JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class)); + return JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); } catch (Exception e) { diff --git a/src/main/java/com/example/demo/controller/AuditController.java b/src/main/java/com/example/demo/controller/AuditController.java index 4506952..1a0df66 100644 --- a/src/main/java/com/example/demo/controller/AuditController.java +++ b/src/main/java/com/example/demo/controller/AuditController.java @@ -1,14 +1,22 @@ package com.example.demo.controller; +import com.example.demo.Util.JWTUtil; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.vo.*; import com.example.demo.service.AuditService; import com.github.pagehelper.PageInfo; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.util.Arrays; +import java.util.List; /** * @program: gold-java @@ -39,37 +47,68 @@ public class AuditController { } //多条件查询充值审核订单列表 @PostMapping("selectRecharge") - public PageInfo searchRechargeAudit( - @RequestBody Page page) { + public PageInfo searchRechargeAudit ( + @RequestBody Page page) throws Exception { Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); RechargeAudit rechargeAudit = page.getRechargeAudit(); + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + rechargeAudit.setMarkets(list); + } return auditService.selectRechargeBy(pageNum, pageSize, rechargeAudit); } //多条件查询退款审核订单列表 @PostMapping("selectRefund") - public PageInfo searchRefundAudit( - @RequestBody Page page) { + public PageInfo searchRefundAudit(@RequestBody Page page) throws Exception { Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); RefundAudit refundAudit = page.getRefundAudit(); + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + refundAudit.setMarkets(list); + } return auditService.selectRefundBy(pageNum, pageSize, refundAudit); } //充值审核合计数 @PostMapping("sumRechargeGold") - public Gold sumRechargeGold(@RequestBody Page page) { + public Gold sumRechargeGold(@RequestBody Page page)throws Exception { Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); RechargeAudit rechargeAudit = page.getRechargeAudit(); + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + rechargeAudit.setMarkets(list); + } return auditService.sumRechargeGold(pageNum, pageSize, rechargeAudit); } //退款审核合计数 @PostMapping("sumRefundGold") - public Gold sumRefundGold(@RequestBody Page page) { + public Gold sumRefundGold(@RequestBody Page page) throws Exception{ Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); RefundAudit refundAudit = page.getRefundAudit(); + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + refundAudit.setMarkets(list); + } return auditService.sumRefundGold(pageNum, pageSize, refundAudit); } } diff --git a/src/main/java/com/example/demo/controller/ConsumeController.java b/src/main/java/com/example/demo/controller/ConsumeController.java index 809ceaa..63d0709 100644 --- a/src/main/java/com/example/demo/controller/ConsumeController.java +++ b/src/main/java/com/example/demo/controller/ConsumeController.java @@ -1,17 +1,25 @@ package com.example.demo.controller; +import com.example.demo.Util.JWTUtil; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Result; import com.example.demo.service.ConsumeService; +import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.util.Arrays; +import java.util.List; /** * @program: gold-java @@ -34,7 +42,7 @@ public class ConsumeController { //消耗明细 @PostMapping("/selectAll") - public Result selcetAll(@RequestBody Page page) { + public Result selectAll(@RequestBody Page page) { try { //页码校验 if (ObjectUtils.isEmpty(page.getPageNum())) { @@ -44,6 +52,17 @@ public class ConsumeController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + page.getConsumeUser().setMarkets(list); + } + else{ + return Result.error("角色为空"); + } return Result.success(consumeService.selectAll(page.getPageNum(), page.getPageSize(),page.getConsumeUser())); } } catch (Exception e) { @@ -57,7 +76,7 @@ public class ConsumeController { //消耗明细筛选 @PostMapping("/selectBy") - public Result selcetBy(@RequestBody Page page) { + public Result selectBy(@RequestBody Page page) { try { //页码校验 if (ObjectUtils.isEmpty(page.getPageNum())) { @@ -67,6 +86,17 @@ public class ConsumeController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + page.getConsumeUser().setMarkets(list); + } + else{ + return Result.error("角色为空"); + } return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser())); } } catch (Exception e) { @@ -80,6 +110,17 @@ public class ConsumeController { @PostMapping("/statsGold") public Result statsGold(@RequestBody ConsumeUser consumeUser) { try { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + consumeUser.setMarkets(list); + } + else{ + return Result.error("角色为空"); + } Gold gold = consumeService.statsGold(consumeUser); return Result.success(gold); } catch (Exception e) { diff --git a/src/main/java/com/example/demo/controller/GeneralController.java b/src/main/java/com/example/demo/controller/GeneralController.java index 93c6914..b7af0fb 100644 --- a/src/main/java/com/example/demo/controller/GeneralController.java +++ b/src/main/java/com/example/demo/controller/GeneralController.java @@ -44,9 +44,15 @@ public class GeneralController { //获取角色地区权限 @PostMapping("/roleMarket") public Result getroleMarkets(@RequestBody RoleVo roleVo) throws Exception { - String market = generalService.getRoleMarket(roleVo.getId()); + List market = generalService.getRoleMarket(roleVo.getId()); return Result.success(market); } + //获取全部的角色地区 + @PostMapping("/allRoleMarket") + public Result getAllRoleMarket(){ + List list = generalService.getAllRoleMarket(); + return Result.success(list); + } @PostMapping("/platform") public Result getPlatform() { diff --git a/src/main/java/com/example/demo/controller/GoldDetailController.java b/src/main/java/com/example/demo/controller/GoldDetailController.java index 54143af..7a7aad6 100644 --- a/src/main/java/com/example/demo/controller/GoldDetailController.java +++ b/src/main/java/com/example/demo/controller/GoldDetailController.java @@ -105,7 +105,7 @@ public class GoldDetailController { } @PostMapping("/getGold") public Result getGold(@RequestBody Page page) throws Exception { - System.out.println( page); +// System.out.println( page); if(ObjectUtils.isEmpty(page.getPageNum())){ return Result.error("页码数为空!"); } @@ -174,7 +174,7 @@ public class GoldDetailController { } public Result ExcelGold(@RequestBody Page page) throws Exception { - System.out.println( page); +// System.out.println( page); if(ObjectUtils.isEmpty(page.getPageNum())){ return Result.error("页码数为空!"); } diff --git a/src/main/java/com/example/demo/controller/MarketController.java b/src/main/java/com/example/demo/controller/MarketController.java new file mode 100644 index 0000000..afd8bc8 --- /dev/null +++ b/src/main/java/com/example/demo/controller/MarketController.java @@ -0,0 +1,26 @@ +package com.example.demo.controller; + +import com.example.demo.domain.vo.Result; +import com.example.demo.service.MarketService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/market") +@RequiredArgsConstructor +@Slf4j +@CrossOrigin +public class MarketController { + @Autowired + private MarketService marketService; + + @RequestMapping("/selectMarket") + public Result selectMarket() + { + return Result.success(marketService.selectMarket()); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/controller/PermissionController.java b/src/main/java/com/example/demo/controller/PermissionController.java index 94f1d9a..b3482f4 100644 --- a/src/main/java/com/example/demo/controller/PermissionController.java +++ b/src/main/java/com/example/demo/controller/PermissionController.java @@ -1,5 +1,6 @@ package com.example.demo.controller; +import com.example.demo.Util.JWTUtil; import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.AdminRole; import com.example.demo.domain.vo.AdminVo; @@ -7,11 +8,15 @@ import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Permission; import com.example.demo.domain.vo.Result; import com.example.demo.service.PermissionService; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import java.util.Arrays; +import java.util.List; /** * @program: GOLD @@ -38,12 +43,28 @@ public class PermissionController { } @PostMapping("/getPermission") public Result getPermission(@RequestBody Page page){ - return Result.success(permissionService.getpermission(page.getPageNum(), page.getPageSize(), page.getPermission())); + try { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + page.getPermission().setMarkets(list); + } + else{ + return Result.error("角色为空"); + } + } catch (Exception e) { + e.printStackTrace(); + return Result.error("获取地区失败"); + } + return Result.success(permissionService.getpermission(page.getPageNum(), page.getPageSize(), page.getPermission())); } //新增用户 @PostMapping("/addPermission") public Result addPermission(@RequestBody Admin admin) throws Exception { - System.out.println( admin); +// System.out.println( admin); try { return Result.success(permissionService.addpermission(admin)); } diff --git a/src/main/java/com/example/demo/controller/RechargeController.java b/src/main/java/com/example/demo/controller/RechargeController.java index 1615080..eef30d8 100644 --- a/src/main/java/com/example/demo/controller/RechargeController.java +++ b/src/main/java/com/example/demo/controller/RechargeController.java @@ -1,13 +1,21 @@ package com.example.demo.controller; +import com.example.demo.Util.JWTUtil; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.vo.*; import com.example.demo.service.ConsumeService; import com.example.demo.service.RechargeService; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.util.Arrays; +import java.util.List; /** * @program: gold-java @@ -39,6 +47,17 @@ public class RechargeController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + page.getRechargeUser().setMarkets(list); + } + else{ + return Result.error("角色为空"); + } return Result.success(rechargeService.selectAll(page.getPageNum(), page.getPageSize(),page.getRechargeUser())); } } catch (Exception e) { @@ -59,6 +78,17 @@ public class RechargeController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + page.getRechargeUser().setMarkets(list); + } + else{ + return Result.error("角色为空"); + } return Result.success(rechargeService.selectBy(page.getPageNum(), page.getPageSize(), page.getRechargeUser())); } } catch (Exception e) { @@ -71,6 +101,17 @@ public class RechargeController { @PostMapping("/statsGold") public Result statsGold(@RequestBody RechargeUser rechargeUser) { try { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + rechargeUser.setMarkets(list); + } + else{ + return Result.error("角色为空"); + } Gold gold = rechargeService.statsGold(rechargeUser); return Result.success(gold); } catch (Exception e) { diff --git a/src/main/java/com/example/demo/controller/RefundController.java b/src/main/java/com/example/demo/controller/RefundController.java index ec46014..06710c2 100644 --- a/src/main/java/com/example/demo/controller/RefundController.java +++ b/src/main/java/com/example/demo/controller/RefundController.java @@ -1,14 +1,20 @@ package com.example.demo.controller; +import com.example.demo.Util.JWTUtil; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.vo.*; import com.example.demo.service.ConsumeService; import com.example.demo.service.RefundService; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import java.util.Arrays; import java.util.List; /** @@ -40,6 +46,16 @@ public class RefundController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + page.getRefundUser().setMarkets(list); + } else { + return Result.error("角色为空"); + } return Result.success(refundService.selectAll(page.getPageNum(), page.getPageSize(), page.getRefundUser())); } } catch (Exception e) { @@ -58,7 +74,16 @@ public class RefundController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { - + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + page.getRefundUser().setMarkets(list); + } else { + return Result.error("角色为空"); + } return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser())); } } catch (Exception e) { @@ -71,6 +96,17 @@ public class RefundController { @PostMapping("/statsGold") public Result statsGold(@RequestBody RefundUser refundUser) { try { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + refundUser.setMarkets(list); + } + else{ + return Result.error("角色为空"); + } Gold gold = refundService.statsGold(refundUser); return Result.success(gold); } catch (Exception e) { @@ -80,16 +116,14 @@ public class RefundController { //获取退款类型 @PostMapping("/refundType") - public Result getRefundType() - { + public Result getRefundType() { List list = refundService.getRefundType(); return Result.success(list); } //筛选产品 @PostMapping("/selectGoods") - public Result getSelectGoods(@RequestBody RefundUser refundUser) - { + public Result getSelectGoods(@RequestBody RefundUser refundUser) { List list = refundService.selectGoods(refundUser.getJwcode()); return Result.success(list); } diff --git a/src/main/java/com/example/demo/controller/RoleController.java b/src/main/java/com/example/demo/controller/RoleController.java index 6bfd729..3dc466d 100644 --- a/src/main/java/com/example/demo/controller/RoleController.java +++ b/src/main/java/com/example/demo/controller/RoleController.java @@ -1,17 +1,23 @@ package com.example.demo.controller; +import com.example.demo.Util.JWTUtil; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Role; import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.RoleVo; import com.example.demo.service.RefundService; import com.example.demo.service.RoleService; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import java.util.Arrays; import java.util.List; /** @@ -39,6 +45,12 @@ public class RoleController { return roleService.addRole(roleVo); } + //新增角色二期替补 + @PostMapping("/add2") + public Result addRole2(@RequestBody RoleVo roleVo) { + + return roleService.addRole2(roleVo); + } //删除角色 @PostMapping("/delete") public Result deleteRole(@RequestBody RoleVo roleVo) { @@ -49,8 +61,7 @@ public class RoleController { //查找全部角色 @PostMapping("/selectAll") public Result selectRole() { - List list = roleService.selectAllRole(); - return Result.success(list); + return roleService.selectAllRole(); } //获取上级角色的下属角色列表 @PostMapping("/selectSub") @@ -79,6 +90,17 @@ public class RoleController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + page.getRoleVo().setMarkets(list); + } + else{ + return Result.error("角色为空"); + } return Result.success(roleService.selectBy(page.getPageNum(), page.getPageSize(), page.getRoleVo())); } } catch (Exception e) { diff --git a/src/main/java/com/example/demo/controller/UserController.java b/src/main/java/com/example/demo/controller/UserController.java index 1033fce..1a02d95 100644 --- a/src/main/java/com/example/demo/controller/UserController.java +++ b/src/main/java/com/example/demo/controller/UserController.java @@ -34,8 +34,7 @@ public class UserController { @PostMapping("/selectUser") public Result selectUser(@RequestBody GoldUser user) { try { - user = userService.selectUser(user.getJwcode().toString()); - return Result.success(user); + return userService.selectUser(user.getJwcode().toString()); } catch (Exception e) { return Result.error("请检查输入精网号"); } diff --git a/src/main/java/com/example/demo/controller/WorkbenchController.java b/src/main/java/com/example/demo/controller/WorkbenchController.java index ad9dab3..8f64591 100644 --- a/src/main/java/com/example/demo/controller/WorkbenchController.java +++ b/src/main/java/com/example/demo/controller/WorkbenchController.java @@ -1,11 +1,13 @@ package com.example.demo.controller; +import com.example.demo.Util.JWTUtil; import com.example.demo.domain.entity.Admin; import com.example.demo.domain.vo.WorkbenchCard; import com.example.demo.mapper.StatisticsMapper; import com.example.demo.service.GeneralService; import com.example.demo.service.StatisticsService; import com.example.demo.service.WorkbenchService; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +15,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import java.util.Date; import java.util.List; @@ -47,15 +51,13 @@ public class WorkbenchController { 获取各地区工作台卡片的数据 */ @PostMapping("getCard") - public ResponseEntity card1(@RequestBody WorkbenchCard workbench, - @AuthenticationPrincipal Admin admin) { - if (admin == null) { - return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null); - } - - String account = admin.getAccount(); + public ResponseEntity card1(@RequestBody WorkbenchCard workbench) throws Exception{ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + String account = admin.getAccount(); //获取当前用户的市场列表 - List markets = generalService.getAdminMarket(account); + List markets = workbenchService.getAdminMarket(account); WorkbenchCard result; //判断是否是总部 if (markets != null && markets.contains("总部")) { @@ -79,15 +81,5 @@ public class WorkbenchController { WorkbenchCard result =workbenchService.getGraph(workbench.getStartDate(),workbench.getEndDate(),workbench.getMarkets()); return ResponseEntity.ok(result); } - /* - 更新统计表并获取卡片数据 - */ - /*@PostMapping("updateCard") - public ResponseEntity updateCard(@RequestBody WorkbenchCard workbench){ - statisticsService.runHourlyTaskPart1(); //更新余量数据 - statisticsService.runHourlyTaskPart2(); //更新余量外数据 - WorkbenchCard result =workbenchService.getCard(workbench.getMarkets()); //获取卡片数据 - return ResponseEntity.ok(result); - }*/ } diff --git a/src/main/java/com/example/demo/domain/entity/Market.java b/src/main/java/com/example/demo/domain/entity/Market.java new file mode 100644 index 0000000..f79ec67 --- /dev/null +++ b/src/main/java/com/example/demo/domain/entity/Market.java @@ -0,0 +1,33 @@ +package com.example.demo.domain.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + + +/** + * @program: GOLD + * @ClassName Export + * @description: + * @author: huangqizhen + * @create: 2025−07-26 16:17 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class Market { + private Integer id; + private String name; + private Integer parentId; + private Date createTime; + private String treelist; + private Integer type; + + private List children; + + + +} diff --git a/src/main/java/com/example/demo/mapper/AuditMapper.java b/src/main/java/com/example/demo/mapper/AuditMapper.java index 9df520f..410d095 100644 --- a/src/main/java/com/example/demo/mapper/AuditMapper.java +++ b/src/main/java/com/example/demo/mapper/AuditMapper.java @@ -21,6 +21,8 @@ import java.util.List; @Mapper public interface AuditMapper { + //获取用户的地区权限列表 + List getAdminMarket(String account) ; //根据订单号查未审核订单 UserGoldRecord selectOrderByOrderCode(String orderCode); //根据订单号查订单 diff --git a/src/main/java/com/example/demo/mapper/GeneralMapper.java b/src/main/java/com/example/demo/mapper/GeneralMapper.java index 49d6d76..dff92af 100644 --- a/src/main/java/com/example/demo/mapper/GeneralMapper.java +++ b/src/main/java/com/example/demo/mapper/GeneralMapper.java @@ -22,8 +22,10 @@ public interface GeneralMapper { //获取活动 List getActivity(); - //获取用户的地区权限列表 + //获取管理员的地区权限列表 String getAdminMarket(String account); //获取角色地区列表 String getRoleMarket(Integer roleId); + + List getAllRoleMarket(); } diff --git a/src/main/java/com/example/demo/mapper/MarketMapper.java b/src/main/java/com/example/demo/mapper/MarketMapper.java new file mode 100644 index 0000000..91b99c6 --- /dev/null +++ b/src/main/java/com/example/demo/mapper/MarketMapper.java @@ -0,0 +1,9 @@ +package com.example.demo.mapper; + +import com.example.demo.domain.entity.Market; + +import java.util.List; + +public interface MarketMapper { + List getMarket(); +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/mapper/MenuMapper.java b/src/main/java/com/example/demo/mapper/MenuMapper.java index d0f3b40..d123e72 100644 --- a/src/main/java/com/example/demo/mapper/MenuMapper.java +++ b/src/main/java/com/example/demo/mapper/MenuMapper.java @@ -33,4 +33,6 @@ public interface MenuMapper { void updateMenu(List roleMenuList); //删除权限 void deleteMenu(Integer id); + + Integer selectFatherId(Integer id); } diff --git a/src/main/java/com/example/demo/mapper/WorkBenchMapper.java b/src/main/java/com/example/demo/mapper/WorkBenchMapper.java index f822a92..e4e5f9f 100644 --- a/src/main/java/com/example/demo/mapper/WorkBenchMapper.java +++ b/src/main/java/com/example/demo/mapper/WorkBenchMapper.java @@ -19,6 +19,10 @@ import java.util.List; @Mapper public interface WorkBenchMapper { + //获取所有用户地区 + List getMarket(); + //获取用户的地区权限列表 + String getAdminMarket(String account); //给定时间范围内的该地区充值金币数(永久+免费) Integer sumRecharge(String market, Date startDate, Date endDate); //给定时间范围内的该地区充值金额(永久金币数) diff --git a/src/main/java/com/example/demo/service/GeneralService.java b/src/main/java/com/example/demo/service/GeneralService.java index f253d12..6e01eae 100644 --- a/src/main/java/com/example/demo/service/GeneralService.java +++ b/src/main/java/com/example/demo/service/GeneralService.java @@ -39,5 +39,7 @@ public interface GeneralService { //获取用户的地区权限列表(工作台图表专用) List getAdminMarket1(String account) ; //获取角色的地区 - String getRoleMarket(Integer roleId); + List getRoleMarket(Integer roleId); + //获取所有市场(地区) + List getAllRoleMarket(); } diff --git a/src/main/java/com/example/demo/service/MarketService.java b/src/main/java/com/example/demo/service/MarketService.java new file mode 100644 index 0000000..85010d1 --- /dev/null +++ b/src/main/java/com/example/demo/service/MarketService.java @@ -0,0 +1,17 @@ +package com.example.demo.service; + +import com.example.demo.domain.entity.Market; + +import java.util.List; + +/** + * @program: GOLD + * @ClassName MarketService + * @description: + * @author: huangqizhen + * @create: 2025−07-26 15:20 + * @Version 1.0 + **/ +public interface MarketService { + List selectMarket(); +} diff --git a/src/main/java/com/example/demo/service/RoleService.java b/src/main/java/com/example/demo/service/RoleService.java index 331737d..9f9f3fc 100644 --- a/src/main/java/com/example/demo/service/RoleService.java +++ b/src/main/java/com/example/demo/service/RoleService.java @@ -21,9 +21,10 @@ public interface RoleService { //新增角色 Result addRole(RoleVo roleVo); - + //新增角色二期替补 + Result addRole2(RoleVo roleVo); //查找全部角色 - List selectAllRole(); + Result selectAllRole(); //根据父级id查找下属角色 List selectSubRole(Integer id); diff --git a/src/main/java/com/example/demo/service/StatisticsService.java b/src/main/java/com/example/demo/service/StatisticsService.java index dcd591f..52f5a69 100644 --- a/src/main/java/com/example/demo/service/StatisticsService.java +++ b/src/main/java/com/example/demo/service/StatisticsService.java @@ -23,20 +23,5 @@ public interface StatisticsService { public void runHourlyTaskYear(); //0点执行定时任务更新近一周part2数据 public void runDailyTaskPart2(); - //查询某地区某天是否已存在统计数据 - public Statistics getExistStatistics(String market,Date date); - - //新增或更新或不修改某地区某天part1统计数据 - public void saveStatisticsPart1(String market, Date date); - //新增或更新或不修改某地区某天年度统计数据 - public void saveStatisticsYear(String market,Date yearlyStartDate, Date date); - //新增或更新或不修改某地区某天part2统计数据 - public void saveStatisticsPart2(String market, Date date); - //根据地区与日期获取part1(余量属性)统计数据 - public Statistics getStatisticsPart1(String market, Date date); - //根据地区与日期获取part2(余量外属性)统计数据 - public Statistics getStatisticsPart2(String market, Date date); - //根据地区与日期获取全年累计统计数据 - public Statistics getYearlyStatistics(String market,Date yearlyStartDate, Date date); } diff --git a/src/main/java/com/example/demo/service/UserService.java b/src/main/java/com/example/demo/service/UserService.java index b945d93..583e3b8 100644 --- a/src/main/java/com/example/demo/service/UserService.java +++ b/src/main/java/com/example/demo/service/UserService.java @@ -3,6 +3,7 @@ package com.example.demo.service; import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.GoldUser; +import com.example.demo.domain.vo.Result; import java.util.List; @@ -18,7 +19,7 @@ import java.util.List; public interface UserService { //查找用户部分信息 - GoldUser selectUser(String jwcode); + Result selectUser(String jwcode); //查找用户金币 GoldUser selectgold(String jwcode); diff --git a/src/main/java/com/example/demo/service/WorkbenchService.java b/src/main/java/com/example/demo/service/WorkbenchService.java index 658ce21..abdb02f 100644 --- a/src/main/java/com/example/demo/service/WorkbenchService.java +++ b/src/main/java/com/example/demo/service/WorkbenchService.java @@ -19,6 +19,8 @@ import java.util.Map; public interface WorkbenchService { + //获取用户的地区权限列表 + List getAdminMarket(String account) ; //获取不同地区的工作台统计卡片 WorkbenchCard getCard(List markets ); //缓存卡片数据 @@ -27,8 +29,7 @@ public interface WorkbenchService { WorkbenchMarketCard createWorkbenchMarketCard(String market, Statistics currentStatistics,Statistics ydayStatistics, Date currentDate); //获取不同地区的工作台柱状图数据(根据类型,起止时间,地区查询) WorkbenchCard getGraph(Date startDate, Date endDate, List markets); - //根据类型获取年初至今的统计数据 - Map calculateAllSum(String market, Date startDate, Date endDate); + //获取该日期该市场的日环比 Integer calculateDayOverDay(String market,Date date); //获取总体日环比 diff --git a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java index a5c500c..959f37c 100644 --- a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java @@ -37,7 +37,7 @@ public class AdminServiceImpl implements AdminService { } Admin adminInDB = adminMapper.getAdmin(account); - System.out.println("adminInDB:" + adminInDB); +// System.out.println("adminInDB:" + adminInDB); if (adminInDB == null) { throw new RuntimeException("无此精网号"); } @@ -48,14 +48,14 @@ public class AdminServiceImpl implements AdminService { } try { - System.out.println("admin:" + account); - System.out.println("admin:" + admin.getPassword()); +// System.out.println("admin:" + account); +// System.out.println("admin:" + admin.getPassword()); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(account, admin.getPassword()); Authentication authentication = authenticationManager.authenticate(token); SecurityContextHolder.getContext().setAuthentication(authentication); // 存储认证信息 Admin authenticatedAdmin = (Admin) authentication.getPrincipal(); - System.out.println("authenticatedAdmin markets: " + authenticatedAdmin.getMarkets()); // 添加日志检查 +// System.out.println("authenticatedAdmin markets: " + authenticatedAdmin.getMarkets()); // 添加日志检查 return authenticatedAdmin; } catch (Exception e) { diff --git a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java index 910addc..03108ea 100644 --- a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java @@ -17,6 +17,7 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.Date; @@ -44,6 +45,7 @@ public class AuditServiceImpl implements AuditService { /* 审核订单并修改用户余额等 */ + @Transactional @Override public boolean auditOrder(String token, String orderCode, Integer auditId, Integer action,String rejectReason) { UserGoldRecord order=auditMapper.selectOrderByOrderCode(orderCode); @@ -56,11 +58,7 @@ public class AuditServiceImpl implements AuditService { updateOrder.setAuditId(auditId); //判断是通过还是驳回 if (action==2){ //驳回 - updateOrder.setAuditStatus(2); - updateOrder.setRejectReason(rejectReason); - updateOrder.setAuditTime(new Date()); - // 执行审核更新 - auditMapper.updateOrder(updateOrder); + if (order.getType()==2) { //退款 //2.获取对应的消费订单(退款订单号去掉开头"TK"即为对应消费订单) String consumeOrderCode = order.getOrderCode().replaceFirst("TK", ""); @@ -71,6 +69,11 @@ public class AuditServiceImpl implements AuditService { }else { throw new IllegalArgumentException("找不到对应的订单或不是有效订单"); } + updateOrder.setAuditStatus(2); + updateOrder.setRejectReason(rejectReason); + updateOrder.setAuditTime(new Date()); + // 执行审核更新 + auditMapper.updateOrder(updateOrder); } }else if (action==1) { //通过 @@ -136,9 +139,7 @@ public class AuditServiceImpl implements AuditService { */ @Override public PageInfo selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - rechargeAudit.setMarkets(markets); + PageHelper.startPage(pageNum, pageSize); List rechargeAudits = auditMapper.selectRechargeBy(pageNum, pageSize, rechargeAudit); // rechargeAudit.setFreeGold(rechargeAudit.getFreeJune()+rechargeAudit.getFreeDecember()); @@ -149,9 +150,9 @@ public class AuditServiceImpl implements AuditService { */ @Override public PageInfo selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - refundAudit.setMarkets(markets); + + + PageHelper.startPage(pageNum, pageSize); List refundAudits = auditMapper.selectRefundBy(pageNum, pageSize, refundAudit); @@ -163,9 +164,7 @@ public class AuditServiceImpl implements AuditService { */ @Override public Gold sumRechargeGold(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - rechargeAudit.setMarkets(markets); + Gold gold = new Gold(); //获取充值审核订单列表 List rechargeAudits = auditMapper.selectRechargeBy(1, 500000, rechargeAudit); @@ -199,9 +198,6 @@ public class AuditServiceImpl implements AuditService { */ @Override public Gold sumRefundGold(Integer pageNum, Integer pageSize, RefundAudit refundAudit) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - refundAudit.setMarkets(markets); Gold gold = new Gold(); //获取充值审核订单列表 List refundAudits = auditMapper.selectRefundBy(1, 500000, refundAudit); diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index df38875..d147f16 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -45,17 +45,10 @@ public class ConsumeServiceImpl implements ConsumeService { @Autowired private UserMapper userMapper; - @Autowired - private AdminService adminService; - @Autowired - private GeneralService generalService; //消耗明细 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser){ - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List consumeUsers = consumeMapper.selectAll(consumeUser); return new PageInfo<>(consumeUsers); @@ -64,9 +57,6 @@ public class ConsumeServiceImpl implements ConsumeService { //消耗金币统计 @Override public Gold statsGold(ConsumeUser consumeUser) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - consumeUser.setMarkets(markets); Gold gold = new Gold(); List consumeUsers = consumeMapper.selectBy(consumeUser); @@ -102,9 +92,6 @@ public class ConsumeServiceImpl implements ConsumeService { //消耗明细筛选 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List consumeUsers = consumeMapper.selectBy(consumeUser); return new PageInfo<>(consumeUsers); diff --git a/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java index 9abcc07..e4c38c7 100644 --- a/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java @@ -76,6 +76,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { private ExportMapper exportMapper; + @Transactional @Override public Exception handleExcelExportData(String message) throws Exception { @@ -87,6 +88,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { OutputStream outputStream = null; ExcelWriter excelWriter = null; + try { // 1. 解析JSON任务 JsonNode rootNode = objectMapper.readTree(message); @@ -830,7 +832,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { } catch (Exception e) { e.printStackTrace(); } - Result pageResult = consumeController.selcetBy(page); + Result pageResult = consumeController.selectBy(page); Integer code = pageResult.getCode(); Object data = pageResult.getData(); diff --git a/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java index 5611023..a8602b2 100644 --- a/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java @@ -131,13 +131,15 @@ public class GeneralServiceImpl implements GeneralService { List list = Arrays.asList(market.split(",")); //判断是否是总部 if (list != null && list.contains("总部")) { - list=getMarket();//总部有所有地区的权限 - list.add("总部"); //添加总部 + List allMarkets = getMarket(); // 获取所有地区 + allMarkets.remove("总部"); // 先移除可能存在的总部 + allMarkets.add(0, "总部"); // 将总部添加到列表第一位 + list = allMarkets; // 更新list } return list; } catch (Exception e) { // 记录日志 - log.error("获取地区权限失败", e); +// log.error("获取地区权限失败", e); // 重新抛出异常,或者根据需要返回一个默认值或空列表 throw new RuntimeException("获取地区权限失败", e); } @@ -160,7 +162,7 @@ public class GeneralServiceImpl implements GeneralService { return list; } catch (Exception e) { // 记录日志 - log.error("获取地区权限失败", e); +// log.error("获取地区权限失败", e); // 重新抛出异常,或者根据需要返回一个默认值或空列表 throw new RuntimeException("获取地区权限失败", e); } @@ -171,17 +173,29 @@ public class GeneralServiceImpl implements GeneralService { 获取觉得的地区列表 */ @Override - public String getRoleMarket(Integer roleId) { + public List getRoleMarket(Integer roleId) { try { String market = generalMapper.getRoleMarket(roleId); if (market == null) { throw new Exception("没有地区权限"); } - return market; + List list = Arrays.asList(market.split(",")); + //判断是否是总部 + if (list != null && list.contains("总部")) { + list=getAllRoleMarket();//总部有所有地区的权限 + } + return list; } catch (Exception e) { // 记录日志 - log.error("获取地区权限失败", e); +// log.error("获取地区权限失败", e); // 重新抛出异常,或者根据需要返回一个默认值或空列表 throw new RuntimeException("获取地区权限失败", e); } - }} + } + + @Override + public List getAllRoleMarket() { + List list = generalMapper.getAllRoleMarket(); + return list; + } +} diff --git a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java index f1fc02c..ed51f40 100644 --- a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java @@ -49,7 +49,7 @@ public class GoldDetailServiceImpl implements GoldDetailService { @Override public PageInfo getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) { PageHelper.startPage(pageNum, pageSize); - System.out.println(goldDetail.getMarkets()); +// System.out.println(goldDetail.getMarkets()); List list = goldDetailMapper.getGoldDetail(goldDetail); return new PageInfo<>(list); } diff --git a/src/main/java/com/example/demo/serviceImpl/MarketServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/MarketServiceImpl.java new file mode 100644 index 0000000..64bd0a5 --- /dev/null +++ b/src/main/java/com/example/demo/serviceImpl/MarketServiceImpl.java @@ -0,0 +1,42 @@ +package com.example.demo.serviceImpl; + +import com.example.demo.domain.entity.Market; +import com.example.demo.domain.vo.MenuVo; +import com.example.demo.mapper.MarketMapper; +import com.example.demo.service.MarketService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +@Service +public class MarketServiceImpl implements MarketService { + @Autowired + private MarketMapper marketMapper; + @Override + public List selectMarket() { + List markets = marketMapper.getMarket(); + + // 2. 构建树形结构(根节点parentId=1) + return buildTree(markets, 1); + } + private List buildTree(List markets, Integer parentId) { + // 过滤出当前父节点的子菜单 + List children = markets.stream() + .filter(menu -> Objects.equals(menu.getParentId(), parentId)) + .collect(Collectors.toList()); + // 过滤出当前父节点的子菜单,同时过滤掉id为9的权限 +// List children = allMenus.stream() +// .filter(menu -> Objects.equals(menu.getParentId(), parentId) && !Objects.equals(menu.getId(), 9)) +// .collect(Collectors.toList()); + + // 递归为每个子菜单设置子节点 + for (Market child : children) { + child.setChildren(buildTree(markets, child.getId())); + } + + return children; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java index cfce95d..801ef9d 100644 --- a/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java @@ -1,5 +1,6 @@ package com.example.demo.serviceImpl; +import com.example.demo.domain.entity.Role; import com.example.demo.domain.vo.MenuVo; import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.RoleMenu; @@ -12,9 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -55,6 +54,10 @@ public class MenuServiceImpl implements MenuService { List children = allMenus.stream() .filter(menu -> Objects.equals(menu.getParentId(), parentId)) .collect(Collectors.toList()); + // 过滤出当前父节点的子菜单,同时过滤掉id为9的权限 +// List children = allMenus.stream() +// .filter(menu -> Objects.equals(menu.getParentId(), parentId) && !Objects.equals(menu.getId(), 9)) +// .collect(Collectors.toList()); // 递归为每个子菜单设置子节点 for (MenuVo child : children) { @@ -100,6 +103,7 @@ public class MenuServiceImpl implements MenuService { @Override public Result updatePermission(RoleVo roleVo) { + roleVo.setRoleName(roleVo.getRoleName().trim()); //校验 if(Objects.isNull(roleVo)) { return Result.error("传入角色为空"); @@ -107,8 +111,44 @@ public class MenuServiceImpl implements MenuService { if(Objects.isNull(roleVo.getId())) { return Result.error("角色ID为空"); } + // 新增校验:角色名长度需在 2 - 20 之间 + if (roleVo.getRoleName().length() < 2 || roleVo.getRoleName().length() > 20) { + return Result.error("角色名长度需在2-20个字符之间"); + } + Role role = roleMapper.selectByRoleName(roleVo.getRoleName()); + if (role != null) { + if(!role.getId().equals(roleVo.getId())) { + return Result.error("角色名重复"); + } + } if(roleVo.getMenuIds() == null||roleVo.getMenuIds().isEmpty()) { return Result.error("角色权限为空"); + }else + { + List menuIds = new ArrayList<>(roleVo.getMenuIds()); // 创建副本避免修改原始列表 + Set processedIds = new HashSet<>(menuIds); // 使用Set快速检查存在性 + + // 处理每个菜单ID及其所有父菜单 + for (int i = 0; i < menuIds.size(); i++) { + Integer currentId = menuIds.get(i); + + // ID为1不处理 + if (currentId == 1) continue; + + // 获取父菜单ID + Integer fatherId = menuMapper.selectFatherId(currentId); + + // 递归添加所有父菜单 + while (fatherId != null) { + if (!processedIds.contains(fatherId)) { + menuIds.add(fatherId); + processedIds.add(fatherId); + } + // 继续向上查找父菜单的父菜单 + fatherId = menuMapper.selectFatherId(fatherId); + } + } + roleVo.setMenuIds(menuIds); } if(roleMapper.selectByRoleId(roleVo.getId())==null){ return Result.error("角色不存在"); diff --git a/src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java index f5e592d..5a6b2f1 100644 --- a/src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java @@ -39,10 +39,6 @@ public class PermissionServiceImpl implements PermissionService { private PermissionMapper permissionMapper; @Autowired private AdminMapper adminMapper; - @Autowired - private AdminService adminService; - @Autowired - private GeneralService generalService; @Override public List getposition(String token) { @@ -56,9 +52,6 @@ public class PermissionServiceImpl implements PermissionService { @Override public PageInfo getpermission(Integer pageNum, Integer pageSize, Permission permission) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - permission.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List list = permissionMapper.getPermission(permission); for (Permission item : list) { diff --git a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java index f665f4a..4ceffd1 100644 --- a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java @@ -41,18 +41,10 @@ public class RechargeServiceImpl implements RechargeService { private UserMapper userMapper; - @Autowired - private AdminService adminService; - - @Autowired - private GeneralService generalService; //查询所有充值 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{ - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - rechargeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List rechargeUsers = rechargeMapper.selectAll(rechargeUser); return new PageInfo<>(rechargeUsers); @@ -61,9 +53,6 @@ public class RechargeServiceImpl implements RechargeService { //查询筛选充值 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{ - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - rechargeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List rechargeUsers = rechargeMapper.selectBy(rechargeUser); return new PageInfo<>(rechargeUsers); @@ -72,9 +61,6 @@ public class RechargeServiceImpl implements RechargeService { //统计金币记录 @Override public Gold statsGold(RechargeUser rechargeUser) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - rechargeUser.setMarkets(markets); Gold gold = new Gold(); List rechargeUsers = rechargeMapper.selectBy(rechargeUser); diff --git a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java index 2f24a2f..f1dcdb5 100644 --- a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java @@ -46,18 +46,10 @@ public class RefundServiceImpl implements RefundService { @Autowired private UserMapper userMapper; - @Autowired - private AdminService adminService; - - @Autowired - private GeneralService generalService; //查找全部退款 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception{ - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - refundUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List refundUsers = refundMapper.selectAll(refundUser); return new PageInfo<>(refundUsers); @@ -66,9 +58,6 @@ public class RefundServiceImpl implements RefundService { //统计退款金额 @Override public Gold statsGold(RefundUser refundUser) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - refundUser.setMarkets(markets); Gold gold = new Gold(); List refundUsers = refundMapper.selectBy(refundUser); @@ -104,9 +93,6 @@ public class RefundServiceImpl implements RefundService { //查找筛选退款 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser)throws Exception { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - refundUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List refundUsers = refundMapper.selectBy(refundUser); return new PageInfo<>(refundUsers); diff --git a/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java index 3d96a18..b90cdb5 100644 --- a/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java @@ -1,10 +1,13 @@ package com.example.demo.serviceImpl; +import com.example.demo.Util.JWTUtil; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Role; import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.MenuVo; import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.RoleVo; +import com.example.demo.mapper.MenuMapper; import com.example.demo.mapper.RefundMapper; import com.example.demo.mapper.RoleMapper; import com.example.demo.service.AdminService; @@ -13,11 +16,14 @@ import com.example.demo.service.MenuService; import com.example.demo.service.RoleService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; -import java.util.List; +import java.util.*; /** * @program: gold-java @@ -36,15 +42,14 @@ public class RoleServiceImpl implements RoleService { @Autowired private MenuService menuService; @Autowired - private AdminService adminService; - @Autowired - private GeneralService generalService; + private MenuMapper menuMapper; //新增角色 @Override @Transactional public Result addRole(RoleVo roleVo) { - //校验角色 + roleVo.setRoleName(roleVo.getRoleName().trim()); + // 对角色名进行去空格处理后判断是否为空 if (roleVo.getRoleName() == null || roleVo.getRoleName().isEmpty()) { return Result.error("角色名为空"); } @@ -69,6 +74,89 @@ public class RoleServiceImpl implements RoleService { if (roleVo.getMarket() == null || roleVo.getMarket().isEmpty()) { return Result.error("所属市场为空"); } + + if (roleVo.getFatherId() == null || roleVo.getFatherId() != 2) { + for (Integer menuId : roleVo.getMenuIds()) { + if (menuId == 9) { + return Result.error("上级角色非管理员用户不能赋予权限管理"); + } + } + } + + + try { + + roleMapper.addRole(roleVo); + Role role = roleMapper.selectByRoleName(roleVo.getRoleName()); + if (role == null) { + return Result.error("角色添加失败"); + } else { + roleVo.setId(role.getId()); + } + menuService.addPermission(roleVo); + } catch (Exception e) { + return Result.error("添加失败"); + } + + return Result.success("创建成功"); + } + + //新增角色 + @Override + @Transactional + public Result addRole2(RoleVo roleVo) { + //校验角色 + // 对角色名进行去空格处理后判断是否为空 + if (roleVo.getRoleName() == null || roleVo.getRoleName().trim().isEmpty()) { + return Result.error("角色名为空"); + } + // 新增校验:角色名长度需在 2 - 20 之间 + if (roleVo.getRoleName().length() < 2 || roleVo.getRoleName().length() > 20) { + return Result.error("角色名长度需在2-20个字符之间"); + } + if (roleMapper.selectByRoleName(roleVo.getRoleName()) != null) { + return Result.error("角色名重复"); + } + + + if (roleVo.getPriority() == null) { + return Result.error("优先级为空"); + } + if (roleVo.getPriority() <= 0 || roleVo.getPriority() > 999) { + return Result.error("优先级不在1-999"); + } + if (roleVo.getMenuIds() == null || roleVo.getMenuIds().isEmpty()) { + return Result.error("权限为空"); + } else { + List menuIds = new ArrayList<>(roleVo.getMenuIds()); // 创建副本避免修改原始列表 + Set processedIds = new HashSet<>(menuIds); // 使用Set快速检查存在性 + + // 处理每个菜单ID及其所有父菜单 + for (int i = 0; i < menuIds.size(); i++) { + Integer currentId = menuIds.get(i); + + // ID为1不处理 + if (currentId == 1) continue; + + // 获取父菜单ID + Integer fatherId = menuMapper.selectFatherId(currentId); + + // 递归添加所有父菜单 + while (fatherId != null) { + if (!processedIds.contains(fatherId)) { + menuIds.add(fatherId); + processedIds.add(fatherId); + } + // 继续向上查找父菜单的父菜单 + fatherId = menuMapper.selectFatherId(fatherId); + } + } + roleVo.setMenuIds(menuIds); + } + + if (roleVo.getMarket() == null || roleVo.getMarket().isEmpty()) { + return Result.error("所属市场为空"); + } if (roleVo.getFatherId() != null) { if (roleVo.getFatherId() != 2) { for (Integer menuId : roleVo.getMenuIds()) { @@ -89,6 +177,7 @@ public class RoleServiceImpl implements RoleService { roleVo.setId(role.getId()); } menuService.addPermission(roleVo); + System.out.println(roleVo.getMenuIds()); } catch (Exception e) { return Result.error("添加失败"); } @@ -127,10 +216,23 @@ public class RoleServiceImpl implements RoleService { //查找全部角色 @Override - public List selectAllRole() { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - return roleMapper.selectAllRole(markets); + public Result selectAllRole() { + try { + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin == null) { + return Result.error("当前用户未登录"); + } + List list = Arrays.asList(admin.getMarkets().split(",")); + List listRole = roleMapper.selectAllRole(list); + return Result.success(listRole); + } catch (Exception e) { + return Result.error("查找失败"); + } + + } @Override @@ -141,9 +243,6 @@ public class RoleServiceImpl implements RoleService { //分页查找角色 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - roleVo.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List roleVos = roleMapper.selectBy(roleVo); // 遍历 roleVos 列表 diff --git a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java index c831549..5f5a1cc 100644 --- a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java @@ -33,10 +33,7 @@ public class StatisticsServiceImpl implements StatisticsService { private static final Logger log = LoggerFactory.getLogger(StatisticsServiceImpl.class); @Autowired private StatisticsMapper statisticsMapper; - @Autowired - private GeneralService generalService; - @Autowired - private WorkbenchService workbenchService; + /* 每小时第十分执行定时任务更新当天part1数据 @@ -58,9 +55,13 @@ public class StatisticsServiceImpl implements StatisticsService { @Override @Scheduled(cron = "0 10 * * * ?") // 每小时执行一次 public void runHourlyTaskPart2() { + //设定起止时间 当天00:00:00至23:59:59 LocalDate today = LocalDate.now(); Date start = Date.from(today.atStartOfDay(ZoneId.systemDefault()).toInstant()); - Date end = Date.from(today.plusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); + Date end = Date.from( + today.atTime(LocalTime.MAX) // 当天 23:59:59 + .atZone(ZoneId.systemDefault()) + .toInstant()); List list = statisticsMapper.listPart2All(start, end,today); if (!list.isEmpty()) { statisticsMapper.batchInsertPart2(list); @@ -77,7 +78,10 @@ public class StatisticsServiceImpl implements StatisticsService { LocalDate today = LocalDate.now(); LocalDate firstDay = today.withDayOfYear(1); Date yearStart = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant()); - Date end = Date.from(today.plusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant()); + Date end = Date.from( + today.atTime(LocalTime.MAX) // 当天 23:59:59 + .atZone(ZoneId.systemDefault()) + .toInstant()); List list = statisticsMapper.listYearAll(yearStart, end, today); if (!list.isEmpty()) { statisticsMapper.batchInsertYear(list); @@ -97,299 +101,4 @@ public class StatisticsServiceImpl implements StatisticsService { } } - /* - 查询某地区某天已存在的统计数据 - */ - @Override - public Statistics getExistStatistics(String market, Date date) { - LocalDateTime startTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN); - LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1); - return statisticsMapper.selectByMarketAndDate(market, - Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), - Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); - } - - /* - 新增或更新或不修改某地区某天part1统计数据 - */ - @Override - public void saveStatisticsPart1(String market, Date date) { - //获取该地区该日期part1(余量属性)统计数据 - Statistics newStats=getStatisticsPart1(market,date); - //获取该地区该日期已存在的数据 - Statistics existStats = getExistStatistics(market, date); - //判断是否存在已存在的数据 - if(existStats==null){ - //没有记录,新增 - statisticsMapper.insertPart1(newStats ); - }else { - //判断新旧数据part1部分(余量属性)是否一致 - if (!isSameStatisticsPart1(existStats,newStats)){ - statisticsMapper.updatePart1(newStats); - }else{ - System.out.println("数据未发生改变"); - } - } - } - /* - 新增或更新或不修改某地区某天年度统计数据 - */ - @Override - public void saveStatisticsYear(String market,Date yearlyStartDate, Date date) { - - //获取该地区该日期年度统计数据 - Statistics newStats=getYearlyStatistics(market,yearlyStartDate,date); - //获取该地区该日期已存在的数据 - Statistics existStats = getExistStatistics(market, date); - //判断是否存在已存在的数据 - if(existStats==null){ - //没有记录,新增 - statisticsMapper.insertYear(newStats ); - }else { - //判断新旧数据年度部分是否一致 - if (!isSameStatisticsYear(existStats,newStats)){ - statisticsMapper.updateYear(newStats); - }else{ - System.out.println("数据未发生改变"); - } - } - } - - /* - 新增或更新或不修改某地区某天part2统计数据 - */ - @Override - public void saveStatisticsPart2(String market, Date date){ - //获取该地区该日期part2(余量外属性)统计数据 - Statistics newStats=getStatisticsPart2(market,date); - //获取该地区该日期已存在的数据 - Statistics existStats = getExistStatistics(market, date); - //判断是否存在已存在的数据 - if(existStats==null){ - //没有记录,新增 - statisticsMapper.insertPart2(newStats ); - }else { - //判断新旧数据part2部分(余量外属性)是否一致 - if (!isSameStatisticsPart2(existStats,newStats)){ - statisticsMapper.updatePart2(newStats); - }else{ - // existStats.setUpdateTime(date); - // statisticsMapper.updatePart2(existStats); - System.out.println("数据未发生改变"); - } - } - } - - - @Override - public Statistics getStatisticsPart1(String market, Date date) { - //获取日期 - LocalDate localDate=date.toInstant() - .atZone(ZoneId.of("Asia/Shanghai")) // 使用系统默认时区 - .toLocalDate(); - //初始化Statistics对象 - Statistics statistics = new Statistics(); - statistics.setMarket(market); - statistics.setCurrentDatetime(localDate); - //计算属性 - //当前金币余量 - Integer currentGold = statisticsMapper.sumCurrentPermanentGold(market)+ - statisticsMapper.sumCurrentFreeJune( market)+ - statisticsMapper.sumCurrentFreeDecember(market)+ - statisticsMapper.sumCurrentTaskGold( market); - statistics.setCurrentGold(currentGold); - //较前一日变化 - Date yesterday =generalService.getYesterday(); - //把yesterday改为昨天的开始时间和结束时间 - LocalDateTime startTime = yesterday.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN); - LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1); - - //昨天金币余量 - Statistics ydayStats = statisticsMapper.selectByMarketAndDate(market, Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()), - Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); - Integer yesterdayGold=0; - if (ydayStats != null) { - yesterdayGold = ydayStats.getCurrentGold(); - - } - Integer dailyChange = currentGold - yesterdayGold; - statistics.setDailyChange(dailyChange); - - - - //当前永久金币 - Integer currentPermanent = statisticsMapper.sumCurrentPermanentGold(market); - statistics.setCurrentPermanent(currentPermanent); - //当前免费六月金币 - Integer currentFreeJune = statisticsMapper.sumCurrentFreeJune(market); - statistics.setCurrentFreeJune(currentFreeJune); - //当前免费十二月金币 - Integer currentFreeDecember = statisticsMapper.sumCurrentFreeDecember(market); - statistics.setCurrentFreeDecember(currentFreeDecember); - //当前任务金币 - Integer currentTask = statisticsMapper.sumCurrentTaskGold(market); - statistics.setCurrentTask(currentTask); - return statistics; - } - - /* - 根据地区与日期获取part2(余量外属性)统计数据 - */ - @Override - public Statistics getStatisticsPart2(String market, Date date) { - //获取日期 - LocalDate localDate=date.toInstant() - .atZone(ZoneId.of("Asia/Shanghai")) // 使用系统默认时区 - .toLocalDate(); - //把date改为当天的开始时间和结束时间 - LocalDateTime startTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().with(LocalTime.MIN); - LocalDateTime endTime= startTime.plusDays(1).minusSeconds(1); - //定义审核状态列表 - List auditStatusList = new ArrayList<>(); - auditStatusList.add(1); // 审核通过 - auditStatusList.add(3); // 外部传入默认通过 - //查询当天该地区审核通过的所有数据 - List records = statisticsMapper.findByMarketAndAuditStatus(market, auditStatusList, - Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); - //初始化Statistics对象 - Statistics statistics = new Statistics(); - statistics.setMarket(market); - statistics.setCurrentDatetime(localDate); - - //计算属性 - //充值相关-当日充值(永久+免费) - Integer recharge = records.stream() - .filter(record -> record.getType() == 0) // 类型为充值 - .mapToInt(record -> record.getPermanentGold() + record.getFreeJune() + record.getFreeDecember() + record.getTaskGold()) - .sum(); - statistics.setRecharge(recharge); - //充值相关-当日金额(永久) - Integer money = records.stream() - .filter(record -> record.getType() == 0) // 类型为充值 - .mapToInt(UserGoldRecord::getPermanentGold) - .sum(); - statistics.setMoney(money); - //消费相关-当日新增消费(永久) - Integer consumePermanent = records.stream() - .filter(record -> record.getType() == 1) // 类型为消费 - .mapToInt(UserGoldRecord::getPermanentGold) - .sum(); - statistics.setConsumePermanent(Math.abs(consumePermanent)); - //消费相关-当日新增消费(六月免费) - Integer consumeFreeJune = records.stream() - .filter(record -> record.getType() == 1) // 类型为消费 - .mapToInt(UserGoldRecord::getFreeJune) - .sum(); - statistics.setConsumeFreeJune(Math.abs(consumeFreeJune)); - //消费相关-当日新增消费(十二月免费) - Integer consumeFreeDecember = records.stream() - .filter(record -> record.getType() == 1) // 类型为消费 - .mapToInt(UserGoldRecord::getFreeDecember) - .sum(); - statistics.setConsumeFreeDecember(Math.abs(consumeFreeDecember)); - //消费相关-当日新增消费(任务) - Integer consumeTask = records.stream() - .filter(record -> record.getType() == 1) // 类型为消费 - .mapToInt(UserGoldRecord::getTaskGold) - .sum(); - statistics.setConsumeTask(Math.abs(consumeTask)); // 使用 Math.abs 确保为正数 - //退款相关-当日退款(永久) - Integer refundPermanent = records.stream() - .filter(record -> record.getType() == 2) // 类型为退款 - .mapToInt(UserGoldRecord::getPermanentGold) - .sum(); - statistics.setRefundPermanent(refundPermanent); - //退款相关-当日退款(六月免费) - Integer refundFreeJune = records.stream() - .filter(record -> record.getType() == 2) // 类型为退款 - .mapToInt(UserGoldRecord::getFreeJune) - .sum(); - statistics.setRefundFreeJune(refundFreeJune); - //退款相关-当日退款(十二月免费) - Integer refundFreeDecember = records.stream() - .filter(record -> record.getType() == 2) // 类型为退款 - .mapToInt(UserGoldRecord::getFreeDecember) - .sum(); - statistics.setRefundFreeDecember(refundFreeDecember); - //退款相关-当日退款(任务) - Integer refundTask = records.stream() - .filter(record -> record.getType() == 2) // 类型为退款 - .mapToInt(UserGoldRecord::getTaskGold) - .sum(); - statistics.setRefundTask(refundTask); - //充值人数 - int rechargeNum= statisticsMapper.countRechargeNum(market,Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); - statistics.setRechargeNum(rechargeNum); - //首充人数 - int firstRecharge= statisticsMapper.countFirstRecharge(market,Date.from(startTime.atZone(ZoneId.systemDefault()).toInstant()),Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant())); - statistics.setFirstRecharge(firstRecharge); - return statistics; - } - - @Override - public Statistics getYearlyStatistics(String market,Date yearlyStartDate, Date date) { - //获取日期 - LocalDate localDate=date.toInstant() - .atZone(ZoneId.of("Asia/Shanghai")) // 使用系统默认时区 - .toLocalDate(); - - // 一次性获取全年统计数据(从年初到今天) - Map yearlyStats = workbenchService.calculateAllSum(market, yearlyStartDate, date); - //初始化Statistics对象 - Statistics statistics = new Statistics(); - statistics.setMarket(market); - statistics.setCurrentDatetime(localDate); - statistics.setYearlyRecharge(yearlyStats.getOrDefault("recharge", 0)); // 充值-全年累计充值 - statistics.setYearlyMoney(yearlyStats.getOrDefault("money", 0)); // 充值-全年累计金额(永久)//充值-全年累计金额(永久) - statistics.setYearlyConsume(yearlyStats.getOrDefault("consume", 0)); // 年累计消费 - statistics.setYearlyRefund(yearlyStats.getOrDefault("refund", 0)); // 年累计退款 - statistics.setYearlyRechargeNum(yearlyStats.getOrDefault("rechargeNum", 0));//年累计充值人数 - - return statistics; - } - - /* - * 判断两个统计对象part1(余量属性)是否相同 - */ -private boolean isSameStatisticsPart1(Statistics oldStats, Statistics newStats) { - return Objects.equals(oldStats.getCurrentGold(), newStats.getCurrentGold()) && - Objects.equals(oldStats.getCurrentPermanent(), newStats.getCurrentPermanent()) && - Objects.equals(oldStats.getCurrentFreeJune(), newStats.getCurrentFreeJune()) && - Objects.equals(oldStats.getCurrentFreeDecember(), newStats.getCurrentFreeDecember()) && - Objects.equals(oldStats.getCurrentTask(), newStats.getCurrentTask()) && - Objects.equals(oldStats.getDailyChange(), newStats.getDailyChange()) ; -} - /* - * 判断两个统计对象part2(余量外属性)是否相同 - */ - private boolean isSameStatisticsPart2(Statistics oldStats, Statistics newStats) { - return Objects.equals(oldStats.getRecharge(), newStats.getRecharge()) && - Objects.equals(oldStats.getMoney(), newStats.getMoney()) && - Objects.equals(oldStats.getConsumePermanent(), newStats.getConsumePermanent()) && - Objects.equals(oldStats.getConsumeFreeJune(), newStats.getConsumeFreeJune()) && - Objects.equals(oldStats.getConsumeFreeDecember(), newStats.getConsumeFreeDecember()) && - Objects.equals(oldStats.getConsumeTask(), newStats.getConsumeTask()) && - Objects.equals(oldStats.getRefundPermanent(), newStats.getRefundPermanent()) && - Objects.equals(oldStats.getRefundFreeJune(), newStats.getRefundFreeJune()) && - Objects.equals(oldStats.getRefundFreeDecember(), newStats.getRefundFreeDecember()) && - Objects.equals(oldStats.getRefundTask(), newStats.getRefundTask()) && - Objects.equals(oldStats.getRechargeNum(), newStats.getRechargeNum()) && - Objects.equals(oldStats.getFirstRecharge(), newStats.getFirstRecharge()) && - Objects.equals(oldStats.getCurrentGold(), newStats.getCurrentGold()) && - Objects.equals(oldStats.getDailyChange(), newStats.getDailyChange()) && - Objects.equals(oldStats.getCurrentPermanent(), newStats.getCurrentPermanent()) && - Objects.equals(oldStats.getCurrentFreeJune(), newStats.getCurrentFreeJune()) && - Objects.equals(oldStats.getCurrentFreeDecember(), newStats.getCurrentFreeDecember()) && - Objects.equals(oldStats.getCurrentTask(), newStats.getCurrentTask()); - } - /* - * 判断两个统计对象年度统计是否相同 - */ - private boolean isSameStatisticsYear(Statistics oldStats, Statistics newStats) { - return Objects.equals(oldStats.getYearlyRecharge(), newStats.getYearlyRecharge()) && - Objects.equals(oldStats.getYearlyMoney(), newStats.getYearlyMoney()) && - Objects.equals(oldStats.getYearlyConsume(), newStats.getYearlyConsume()) && - Objects.equals(oldStats.getYearlyRefund(), newStats.getYearlyRefund()) && - - Objects.equals(oldStats.getYearlyRechargeNum(), newStats.getYearlyRechargeNum()) ;} } diff --git a/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java index f473e2f..7f51f31 100644 --- a/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java @@ -1,17 +1,24 @@ package com.example.demo.serviceImpl; +import com.example.demo.Util.JWTUtil; +import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.GoldUser; +import com.example.demo.domain.vo.Result; import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.UserMapper; import com.example.demo.service.AdminService; import com.example.demo.service.GeneralService; import com.example.demo.service.UserService; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -30,18 +37,28 @@ public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; - @Autowired - private AdminService adminService; - @Autowired - private GeneralService generalService; + //查找用户部分信息 @Override - public GoldUser selectUser(String jwcode) { - String account = adminService.getCurrentAdminAccount(); - List markets = generalService.getAdminMarket(account); - GoldUser user = userMapper.selectUserCard(jwcode,markets); - return user; + public Result selectUser(String jwcode) { + //解token权限 + try { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + GoldUser user = userMapper.selectUserCard(jwcode,list); + return Result.success(user); + } + else{ + return Result.error("用户为空"); + } + } catch (Exception e) { + return Result.error("用户查找不到"); + } + } //查找用户全部信息 @@ -64,7 +81,7 @@ public class UserServiceImpl implements UserService { 每小时更新用户首充时间 */ @Override - @Scheduled(cron = "0 0 0 * * ?") +// @Scheduled(cron = "0 0 0 * * ?") public void updateFirstRecharge() { List jwcodeList = userMapper.getAllJwcode(); for(Integer jwcode : jwcodeList){ diff --git a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java index 99eea74..ee20c63 100644 --- a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java @@ -10,6 +10,8 @@ import com.example.demo.mapper.WorkBenchMapper; import com.example.demo.service.GeneralService; import com.example.demo.service.StatisticsService; import com.example.demo.service.WorkbenchService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.redis.core.RedisTemplate; @@ -24,6 +26,9 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; + + + /** * @program: gold-java * @ClassName WorkbenchServiceImpl @@ -35,14 +40,12 @@ import java.util.stream.Collectors; @Service public class WorkbenchServiceImpl implements WorkbenchService { - + private static final Logger log = LoggerFactory.getLogger(GeneralServiceImpl.class); private final RedisTemplate redisTemplate; - // private final StatisticsMapper statisticsMapper; + @Autowired private WorkBenchMapper workBenchMapper; @Autowired - private GeneralService generalService; - @Autowired private StatisticsMapper statisticsMapper; @Autowired public WorkbenchServiceImpl(RedisTemplate redisTemplate, StatisticsMapper statisticsMapper) { @@ -50,6 +53,32 @@ public class WorkbenchServiceImpl implements WorkbenchService { this.statisticsMapper = statisticsMapper; } private static final String CACHE_KEY = "workbench_card_cache"; + + @Override + public List getAdminMarket(String account) { + try { + String market = workBenchMapper.getAdminMarket(account); + if (market == null) { + throw new Exception("没有地区权限"); + } + List list = Arrays.asList(market.split(",")); + //判断是否是总部 + if (list != null && list.contains("总部")) { + List allMarkets = workBenchMapper.getMarket(); // 获取所有地区 + allMarkets.remove("总部"); // 先移除可能存在的总部 + allMarkets.add(0, "总部"); // 将总部添加到列表第一位 + list = allMarkets; // 更新list + } + return list; + } catch (Exception e) { + // 记录日志 + log.error("获取地区权限失败", e); + // 重新抛出异常,或者根据需要返回一个默认值或空列表 + throw new RuntimeException("获取地区权限失败", e); + } + + } + @Override public WorkbenchCard getCard( List markets) { Date date=new Date(); @@ -59,24 +88,19 @@ public class WorkbenchServiceImpl implements WorkbenchService { // 获取开始时间和结束时间(昨天) LocalDateTime startOfYday = startOfDay.minusDays(1); LocalDateTime endOfYday = endOfDay.minusDays(1); - - // 获取当前年份的第一天 - LocalDate firstDayOfYear = LocalDate.now().withDayOfYear(1); - Date yearlyStartDate = Date.from(firstDayOfYear.atStartOfDay(ZoneId.systemDefault()).toInstant()); - // markets = generalService.getAdminMarket(); - // 批量获取统计数据 + //当天的统计数据 List currentStatsList = statisticsMapper.selectByMarketsAndDate(markets, Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()), Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant())); - + //昨天的统计数据 List ydayStatsList = statisticsMapper.selectByMarketsAndDate(markets, Date.from(startOfYday.atZone(ZoneId.systemDefault()).toInstant()), Date.from(endOfYday.atZone(ZoneId.systemDefault()).toInstant())); - // 将 List 转换为 Map + // 将 List 转换为 Map,以market为键,保留第一个出现的数据 Map currentStatsMap = currentStatsList.stream() .collect(Collectors.toMap(Statistics::getMarket, Function.identity(), (existing, replacement) -> existing)); - + //转换昨日统计数据为Map<> Map ydayStatsMap = ydayStatsList.stream() .collect(Collectors.toMap(Statistics::getMarket, Function.identity(), (existing, replacement) -> existing)); @@ -99,15 +123,14 @@ public class WorkbenchServiceImpl implements WorkbenchService { @Override public WorkbenchCard getCardCache(List markets) { - markets = generalService.getMarket(); //从缓存中获取工作台数据 WorkbenchCard cached = redisTemplate.opsForValue().get(CACHE_KEY); + //有缓存直接返回缓存数据 if (cached != null) { - //直接返回缓存数据 System.out.println("读取缓存数据: " + new Date()); return cached; } - + //没缓存获取新数据并存入缓存 try { //获取新的工作台数据 WorkbenchCard freshData = getCard(markets); @@ -126,12 +149,10 @@ public class WorkbenchServiceImpl implements WorkbenchService { */ @Override public WorkbenchMarketCard createWorkbenchMarketCard(String market,Statistics currentStatistics, Statistics ydayStatistics, Date currentDate) { - Date date=new Date(); + WorkbenchMarketCard card = new WorkbenchMarketCard(); card.setMarket(market); if (currentStatistics != null&& ydayStatistics != null) { - // 一次性获取全年统计数据(从年初到今天) - // Map yearlyStats = calculateAllSum(market, yearlyStartDate, date); // 卡片一:当前金币相关 card.setCurrentPermanent(currentStatistics.getCurrentPermanent());//余量-永久金币 card.setCurrentFreeJune(currentStatistics.getCurrentFreeJune()); //余量-免费六月金币 @@ -163,10 +184,10 @@ public class WorkbenchServiceImpl implements WorkbenchService { card.setYearlyRefund(currentStatistics.getYearlyRefund()); // 年累计退款 card.setYearlyReduce(card.getYearlyConsume() - card.getYearlyRefund());//年累计消耗 // 卡片四:人头数相关 - card.setRechargeNum(currentStatistics.getRechargeNum()); - card.setYdayRechargeNum(ydayStatistics.getRechargeNum()); - card.setFirstRecharge(currentStatistics.getFirstRecharge()); - card.setYearlyRechargeNum(currentStatistics.getYearlyRechargeNum()); + card.setRechargeNum(currentStatistics.getRechargeNum());//当天充值人数 + card.setYdayRechargeNum(ydayStatistics.getRechargeNum()); //昨日充值人数 + card.setFirstRecharge(ydayStatistics.getFirstRecharge()); //昨日充值人数中首充的数量 + card.setYearlyRechargeNum(ydayStatistics.getYearlyRechargeNum()); //年累计充值人数-至昨天 // 周环比、日同比 card.setWow(calculateWeekOverWeek(market, currentDate)); card.setDaily(calculateDayOverDay(market, currentDate)); @@ -219,30 +240,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { return new WorkbenchCard(new ArrayList<>(), marketGraphs, markets, startDate, endDate,0,0,new Date()); } - /* - 根据类型获取统计数据 - */ - @Override - - public Map calculateAllSum(String market, Date startDate, Date endDate) { - WorkbenchFullStatistics stats = workBenchMapper.getFullStatisticsByMarketAndDate(market, startDate, endDate); - Map result = new HashMap<>(); - result.put("recharge", stats.getTotalRecharge() != null ? stats.getTotalRecharge() : 0);//获取充值统计数据 - result.put("money", stats.getTotalMoney() != null ? stats.getTotalMoney() : 0); //充值金额统计数据 - result.put("rFree", (stats.getTotalRecharge() != null ? stats.getTotalRecharge() : 0) //获取充值的免费金币统计数据 - - (stats.getTotalMoney() != null ? stats.getTotalMoney() : 0)); - result.put("cPermanent", stats.getTotalConsumePermanent() != null ? stats.getTotalConsumePermanent() : 0); //获取消费的永久金币统计数据 - result.put("cFree", stats.getTotalConsumeFree() != null ? stats.getTotalConsumeFree() : 0); //获取消费的免费金币统计数据 - result.put("cTask", stats.getTotalConsumeTask() != null ? stats.getTotalConsumeTask() : 0);//获取消费的任金币统计数据 - result.put("consume",(stats.getTotalConsumePermanent() != null ? stats.getTotalConsumePermanent() : 0)//获取全部消费统计数据 - +(stats.getTotalConsumeFree() != null ? stats.getTotalConsumeFree() : 0) - +(stats.getTotalConsumeTask() != null ? stats.getTotalConsumeTask() : 0)); - result.put("refund", stats.getTotalRefund() != null ? stats.getTotalRefund() : 0); //获取退款统计数据 - result.put("rechargeNum", stats.getTotalRechargeNum() != null ? stats.getTotalRechargeNum() : 0);//获取充值人数统计数据 - return result; - - } /* 获取该日期该市场的日环比 */ @@ -319,12 +317,12 @@ public class WorkbenchServiceImpl implements WorkbenchService { return (int) Math.round(rate); } /* - 获取改天总体的的周环比 + 获取该天总体的的周环比 */ @Override public Integer calculateAllWeekOverWeek( Date date,List markets) { - // List markets = generalService.getMarket(); + int thisWeekTotal = 0; //本周至当天充值人数 int lastWeekTotal = 0; //上周至当天充值人数 //获取本周周一 diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 25718af..9e0b8a1 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -45,17 +45,6 @@ spring: max-wait: -1 max-idle: 5 -mybatis: - configuration: - mysql1: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - sqlserver1: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -upload: - path: D:\upload - file: upload: url: http://39.101.133.168:8828/hljw/api/aws/upload diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index ad43c0f..f1d908d 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -35,9 +35,9 @@ spring: data: redis: database: 2 - host: 18.143.76.3 - port: 10703 - password: Ngc0FYUTA6h3wC5J + host: localhost + port: 6379 + password: 123456 lettuce: pool: @@ -45,20 +45,10 @@ spring: max-wait: -1 max-idle: 5 -mybatis: - configuration: - mysql1: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - sqlserver1: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -upload: - path: D:\upload file: upload: - url: https://api.homilychart.com/hljw/api/aws/upload + url: http://api.homilychart.com/hljw/api/aws/upload feishu: webhook: url: https://open.feishu.cn/open-apis/bot/v2/hook/1a515b19-b64f-46b7-9486-35842b9539fe @@ -66,7 +56,7 @@ feishu: server: - port: 10705 + port: 8081 logging: level: diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 9fd308f..612d4bd 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -45,16 +45,6 @@ spring: max-wait: -1 max-idle: 5 -mybatis: - configuration: - mysql1: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - sqlserver1: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -upload: - path: D:\upload file: upload: diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 024f557..4031b8d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -13,38 +13,23 @@ spring: hikari: pool-name: mysql1HikariCP maximum-pool-size: 10 - # mysql1: - # jdbc-url: jdbc:mysql://54.251.137.151:10701/hwgold?serverTimezone=Asia/Shanghai - # username: hwgold - # password: AGX4Z3YMxiCG3GR2 - # driver-class-name: com.mysql.cj.jdbc.Driver - # hikari: - # pool-name: mysql1HikariCP - # maximum-pool-size: 10 -# mysql1: -# jdbc-url: jdbc:mysql://39.101.133.168:3306/hwgold?serverTimezone=Asia/Shanghai -# username: hwgold -# password: AGX4Z3YMxiCG3GR2 -# driver-class-name: com.mysql.cj.jdbc.Driver -# hikari: -# pool-name: mysql1HikariCP -# maximum-pool-size: 10 -# mysql2: -# jdbc-url: jdbc:mysql://39.101.133.168:3306/hljw?serverTimezone=Asia/Shanghai -# username: hljw -# password: 5dmWCCKfEk3TTeyn -# driver-class-name: com.mysql.cj.jdbc.Driver -# hikari: -# pool-name: mysql2HikariCP -# maximum-pool-size: 10 -# mysql3: -# jdbc-url: jdbc:mysql://121.89.234.155:3306/pay_xxcg_com?serverTimezone=Asia/Shanghai -# username: pay_xxcg_com -# password: 4hHmzxZH4rF4c5xr -# driver-class-name: com.mysql.cj.jdbc.Driver -# hikari: -# pool-name: mysql2HikariCP -# maximum-pool-size: 10 + + mysql2: + jdbc-url: jdbc:mysql://39.101.133.168:3306/hljw?serverTimezone=Asia/Shanghai + username: hljw + password: 5dmWCCKfEk3TTeyn + driver-class-name: com.mysql.cj.jdbc.Driver + hikari: + pool-name: mysql2HikariCP + maximum-pool-size: 10 + mysql3: + jdbc-url: jdbc:mysql://121.89.234.155:3306/pay_xxcg_com?serverTimezone=Asia/Shanghai + username: pay_xxcg_com + password: 4hHmzxZH4rF4c5xr + driver-class-name: com.mysql.cj.jdbc.Driver + hikari: + pool-name: mysql2HikariCP + maximum-pool-size: 10 sqlserver1: jdbc-url: jdbc:sqlserver://52.76.43.43:1433;databaseName=hwhcGold;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true; username: hwhc_gold_query @@ -84,16 +69,16 @@ mybatis: configuration: mysql1: map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl sqlserver1: map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -# mysql2: -# map-underscore-to-camel-case: true -# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl -# mysql3: -# map-underscore-to-camel-case: true # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + mysql2: + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + mysql3: + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl upload: path: D:\upload diff --git a/src/main/resources/mapper/AuditMapper.xml b/src/main/resources/mapper/AuditMapper.xml index b42e648..e82557f 100644 --- a/src/main/resources/mapper/AuditMapper.xml +++ b/src/main/resources/mapper/AuditMapper.xml @@ -152,8 +152,11 @@ + diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index e6f6442..624f93b 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -5,7 +5,7 @@ SELECT u.name AS name, - u.jwcode AS jwcode, + ugr.jwcode AS jwcode, u.market AS market, ugr.goods_name AS goodsName, ugr.pay_platform AS payPlatform, diff --git a/src/main/resources/mapper/GeneralMapper.xml b/src/main/resources/mapper/GeneralMapper.xml index 8fc1952..70795a1 100644 --- a/src/main/resources/mapper/GeneralMapper.xml +++ b/src/main/resources/mapper/GeneralMapper.xml @@ -26,4 +26,7 @@ select market from role where id = #{roleId} + \ No newline at end of file diff --git a/src/main/resources/mapper/MarketMapper.xml b/src/main/resources/mapper/MarketMapper.xml new file mode 100644 index 0000000..7a402b8 --- /dev/null +++ b/src/main/resources/mapper/MarketMapper.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/MenuMapper.xml b/src/main/resources/mapper/MenuMapper.xml index 847ac16..336cc3f 100644 --- a/src/main/resources/mapper/MenuMapper.xml +++ b/src/main/resources/mapper/MenuMapper.xml @@ -50,4 +50,10 @@ + \ No newline at end of file diff --git a/src/main/resources/mapper/PermissionMapper.xml b/src/main/resources/mapper/PermissionMapper.xml index 944e7fd..2b6285e 100644 --- a/src/main/resources/mapper/PermissionMapper.xml +++ b/src/main/resources/mapper/PermissionMapper.xml @@ -79,7 +79,7 @@ and admin.account=#{account} - and admin.market=#{market} + and admin.market LIKE CONCAT('%', #{market}, '%') and admin.postiton=#{postiton} @@ -92,7 +92,7 @@ ) - order by admin.admin_status desc + order by admin.admin_status desc ,admin.update_time desc SELECT u.name AS name, - u.jwcode AS jwcode, + ugr.jwcode AS jwcode, u.market AS market, ugr.activity AS activity, ugr.rate_id AS rateId, @@ -75,7 +75,7 @@ SELECT u.name AS name, - u.jwcode AS jwcode, + ugr.jwcode AS jwcode, u.market AS market, ugr.order_code AS orderCode, ugr.goods_name AS goodsName, @@ -75,7 +75,7 @@ + + + +