Browse Source

Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期

lihuilin/hotfix-20250810160509-余额地区传参
lihuilin 3 weeks ago
parent
commit
0443cef530
  1. 8
      README.md
  2. 2
      src/main/java/com/example/demo/Export/ExportServiceImpl.java
  3. 5
      src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
  4. 6
      src/main/java/com/example/demo/Util/JWTUtil.java
  5. 2
      src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java
  6. 47
      src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java
  7. 47
      src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java
  8. 6
      src/main/java/com/example/demo/controller/AdminController.java
  9. 51
      src/main/java/com/example/demo/controller/AuditController.java
  10. 45
      src/main/java/com/example/demo/controller/ConsumeController.java
  11. 8
      src/main/java/com/example/demo/controller/GeneralController.java
  12. 4
      src/main/java/com/example/demo/controller/GoldDetailController.java
  13. 26
      src/main/java/com/example/demo/controller/MarketController.java
  14. 25
      src/main/java/com/example/demo/controller/PermissionController.java
  15. 41
      src/main/java/com/example/demo/controller/RechargeController.java
  16. 44
      src/main/java/com/example/demo/controller/RefundController.java
  17. 26
      src/main/java/com/example/demo/controller/RoleController.java
  18. 3
      src/main/java/com/example/demo/controller/UserController.java
  19. 28
      src/main/java/com/example/demo/controller/WorkbenchController.java
  20. 33
      src/main/java/com/example/demo/domain/entity/Market.java
  21. 2
      src/main/java/com/example/demo/mapper/AuditMapper.java
  22. 4
      src/main/java/com/example/demo/mapper/GeneralMapper.java
  23. 9
      src/main/java/com/example/demo/mapper/MarketMapper.java
  24. 2
      src/main/java/com/example/demo/mapper/MenuMapper.java
  25. 4
      src/main/java/com/example/demo/mapper/WorkBenchMapper.java
  26. 4
      src/main/java/com/example/demo/service/GeneralService.java
  27. 17
      src/main/java/com/example/demo/service/MarketService.java
  28. 5
      src/main/java/com/example/demo/service/RoleService.java
  29. 15
      src/main/java/com/example/demo/service/StatisticsService.java
  30. 3
      src/main/java/com/example/demo/service/UserService.java
  31. 5
      src/main/java/com/example/demo/service/WorkbenchService.java
  32. 8
      src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java
  33. 30
      src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
  34. 13
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  35. 4
      src/main/java/com/example/demo/serviceImpl/ExportExcelServiceImpl.java
  36. 30
      src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java
  37. 2
      src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java
  38. 42
      src/main/java/com/example/demo/serviceImpl/MarketServiceImpl.java
  39. 46
      src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java
  40. 7
      src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java
  41. 14
      src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java
  42. 14
      src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
  43. 123
      src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java
  44. 311
      src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
  45. 37
      src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java
  46. 94
      src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
  47. 11
      src/main/resources/application-dev.yml
  48. 20
      src/main/resources/application-prod.yml
  49. 10
      src/main/resources/application-test.yml
  50. 63
      src/main/resources/application.yml
  51. 5
      src/main/resources/mapper/AuditMapper.xml
  52. 4
      src/main/resources/mapper/ConsumeMapper.xml
  53. 3
      src/main/resources/mapper/GeneralMapper.xml
  54. 7
      src/main/resources/mapper/MarketMapper.xml
  55. 6
      src/main/resources/mapper/MenuMapper.xml
  56. 4
      src/main/resources/mapper/PermissionMapper.xml
  57. 4
      src/main/resources/mapper/RechargeMapper.xml
  58. 4
      src/main/resources/mapper/RefundMapper.xml
  59. 5
      src/main/resources/mapper/RoleMapper.xml
  60. 18
      src/main/resources/mapper/StatisticsMapper.xml
  61. 4
      src/main/resources/mapper/UserMapper.xml
  62. 9
      src/main/resources/mapper/WorkBenchMapper.xml

8
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

2
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);

5
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<String, String> requestBody = new HashMap<>();

6
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)

2
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")

47
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();
}
}

47
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();
}
}

6
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) {

51
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<RechargeAudit> searchRechargeAudit(
@RequestBody Page page) {
public PageInfo<RechargeAudit> 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<String> list = Arrays.asList(admin.getMarkets().split(","));
rechargeAudit.setMarkets(list);
}
return auditService.selectRechargeBy(pageNum, pageSize, rechargeAudit);
} //多条件查询退款审核订单列表
@PostMapping("selectRefund")
public PageInfo<RefundAudit> searchRefundAudit(
@RequestBody Page page) {
public PageInfo<RefundAudit> 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<String> 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<String> 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<String> list = Arrays.asList(admin.getMarkets().split(","));
refundAudit.setMarkets(list);
}
return auditService.sumRefundGold(pageNum, pageSize, refundAudit);
}
}

45
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<String> 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<String> 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<String> 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) {

8
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<String> market = generalService.getRoleMarket(roleVo.getId());
return Result.success(market);
}
//获取全部的角色地区
@PostMapping("/allRoleMarket")
public Result getAllRoleMarket(){
List<String> list = generalService.getAllRoleMarket();
return Result.success(list);
}
@PostMapping("/platform")
public Result getPlatform()
{

4
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("页码数为空!");
}

26
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());
}
}

25
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<String> 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));
}

41
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<String> 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<String> 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<String> 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) {

44
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<String> 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<String> 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<String> 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<String> list = refundService.getRefundType();
return Result.success(list);
}
//筛选产品
@PostMapping("/selectGoods")
public Result getSelectGoods(@RequestBody RefundUser refundUser)
{
public Result getSelectGoods(@RequestBody RefundUser refundUser) {
List<RefundUser> list = refundService.selectGoods(refundUser.getJwcode());
return Result.success(list);
}

26
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<RoleVo> 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<String> 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) {

3
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("请检查输入精网号");
}

28
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<WorkbenchCard> card1(@RequestBody WorkbenchCard workbench,
@AuthenticationPrincipal Admin admin) {
if (admin == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
}
String account = admin.getAccount();
public ResponseEntity<WorkbenchCard> 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<String> markets = generalService.getAdminMarket(account);
List<String> 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<WorkbenchCard> updateCard(@RequestBody WorkbenchCard workbench){
statisticsService.runHourlyTaskPart1(); //更新余量数据
statisticsService.runHourlyTaskPart2(); //更新余量外数据
WorkbenchCard result =workbenchService.getCard(workbench.getMarkets()); //获取卡片数据
return ResponseEntity.ok(result);
}*/
}

33
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: 202507-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<Market> children;
}

2
src/main/java/com/example/demo/mapper/AuditMapper.java

@ -21,6 +21,8 @@ import java.util.List;
@Mapper
public interface AuditMapper {
//获取用户的地区权限列表
List<String> getAdminMarket(String account) ;
//根据订单号查未审核订单
UserGoldRecord selectOrderByOrderCode(String orderCode);
//根据订单号查订单

4
src/main/java/com/example/demo/mapper/GeneralMapper.java

@ -22,8 +22,10 @@ public interface GeneralMapper {
//获取活动
List<String> getActivity();
//获取用户的地区权限列表
//获取管理员的地区权限列表
String getAdminMarket(String account);
//获取角色地区列表
String getRoleMarket(Integer roleId);
List<String> getAllRoleMarket();
}

9
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<Market> getMarket();
}

2
src/main/java/com/example/demo/mapper/MenuMapper.java

@ -33,4 +33,6 @@ public interface MenuMapper {
void updateMenu(List<RoleMenu> roleMenuList);
//删除权限
void deleteMenu(Integer id);
Integer selectFatherId(Integer id);
}

4
src/main/java/com/example/demo/mapper/WorkBenchMapper.java

@ -19,6 +19,10 @@ import java.util.List;
@Mapper
public interface WorkBenchMapper {
//获取所有用户地区
List<String> getMarket();
//获取用户的地区权限列表
String getAdminMarket(String account);
//给定时间范围内的该地区充值金币数永久+免费
Integer sumRecharge(String market, Date startDate, Date endDate);
//给定时间范围内的该地区充值金额永久金币数

4
src/main/java/com/example/demo/service/GeneralService.java

@ -39,5 +39,7 @@ public interface GeneralService {
//获取用户的地区权限列表(工作台图表专用)
List<String> getAdminMarket1(String account) ;
//获取角色的地区
String getRoleMarket(Integer roleId);
List<String> getRoleMarket(Integer roleId);
//获取所有市场地区
List<String> getAllRoleMarket();
}

17
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: 202507-26 15:20
* @Version 1.0
**/
public interface MarketService {
List<Market> selectMarket();
}

5
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<RoleVo> selectAllRole();
Result selectAllRole();
//根据父级id查找下属角色
List<RoleVo> selectSubRole(Integer id);

15
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);
}

3
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);

5
src/main/java/com/example/demo/service/WorkbenchService.java

@ -19,6 +19,8 @@ import java.util.Map;
public interface WorkbenchService {
//获取用户的地区权限列表
List<String> getAdminMarket(String account) ;
//获取不同地区的工作台统计卡片
WorkbenchCard getCard(List<String> 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<String> markets);
//根据类型获取年初至今的统计数据
Map<String, Integer> calculateAllSum(String market, Date startDate, Date endDate);
//获取该日期该市场的日环比
Integer calculateDayOverDay(String market,Date date);
//获取总体日环比

8
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) {

30
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<RechargeAudit> selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) {
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
rechargeAudit.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(pageNum, pageSize, rechargeAudit);
// rechargeAudit.setFreeGold(rechargeAudit.getFreeJune()+rechargeAudit.getFreeDecember());
@ -149,9 +150,9 @@ public class AuditServiceImpl implements AuditService {
*/
@Override
public PageInfo<RefundAudit> selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit) {
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
refundAudit.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<RefundAudit> 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<String> markets = generalService.getAdminMarket(account);
rechargeAudit.setMarkets(markets);
Gold gold = new Gold();
//获取充值审核订单列表
List<RechargeAudit> 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<String> markets = generalService.getAdminMarket(account);
refundAudit.setMarkets(markets);
Gold gold = new Gold();
//获取充值审核订单列表
List<RefundAudit> refundAudits = auditMapper.selectRefundBy(1, 500000, refundAudit);

13
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<ConsumeUser> selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser){
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
consumeUser.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<ConsumeUser> 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<String> markets = generalService.getAdminMarket(account);
consumeUser.setMarkets(markets);
Gold gold = new Gold();
List<ConsumeUser> consumeUsers = consumeMapper.selectBy(consumeUser);
@ -102,9 +92,6 @@ public class ConsumeServiceImpl implements ConsumeService {
//消耗明细筛选
@Override
public PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) {
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
consumeUser.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<ConsumeUser> consumeUsers = consumeMapper.selectBy(consumeUser);
return new PageInfo<>(consumeUsers);

4
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();

30
src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java

@ -131,13 +131,15 @@ public class GeneralServiceImpl implements GeneralService {
List<String> list = Arrays.asList(market.split(","));
//判断是否是总部
if (list != null && list.contains("总部")) {
list=getMarket();//总部有所有地区的权限
list.add("总部"); //添加总部
List<String> 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<String> getRoleMarket(Integer roleId) {
try {
String market = generalMapper.getRoleMarket(roleId);
if (market == null) {
throw new Exception("没有地区权限");
}
return market;
List<String> 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<String> getAllRoleMarket() {
List<String> list = generalMapper.getAllRoleMarket();
return list;
}
}

2
src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java

@ -49,7 +49,7 @@ public class GoldDetailServiceImpl implements GoldDetailService {
@Override
public PageInfo<GoldDetail> getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) {
PageHelper.startPage(pageNum, pageSize);
System.out.println(goldDetail.getMarkets());
// System.out.println(goldDetail.getMarkets());
List<GoldDetail> list = goldDetailMapper.getGoldDetail(goldDetail);
return new PageInfo<>(list);
}

42
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<Market> selectMarket() {
List<Market> markets = marketMapper.getMarket();
// 2. 构建树形结构根节点parentId=1
return buildTree(markets, 1);
}
private List<Market> buildTree(List<Market> markets, Integer parentId) {
// 过滤出当前父节点的子菜单
List<Market> children = markets.stream()
.filter(menu -> Objects.equals(menu.getParentId(), parentId))
.collect(Collectors.toList());
// 过滤出当前父节点的子菜单同时过滤掉id为9的权限
// List<MenuVo> 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;
}
}

46
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<MenuVo> children = allMenus.stream()
.filter(menu -> Objects.equals(menu.getParentId(), parentId))
.collect(Collectors.toList());
// 过滤出当前父节点的子菜单同时过滤掉id为9的权限
// List<MenuVo> 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<Integer> menuIds = new ArrayList<>(roleVo.getMenuIds()); // 创建副本避免修改原始列表
Set<Integer> 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("角色不存在");

7
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<String> getposition(String token) {
@ -56,9 +52,6 @@ public class PermissionServiceImpl implements PermissionService {
@Override
public PageInfo<Permission> getpermission(Integer pageNum, Integer pageSize, Permission permission) {
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
permission.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<Permission> list = permissionMapper.getPermission(permission);
for (Permission item : list) {

14
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<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
rechargeUser.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<RechargeUser> rechargeUsers = rechargeMapper.selectAll(rechargeUser);
return new PageInfo<>(rechargeUsers);
@ -61,9 +53,6 @@ public class RechargeServiceImpl implements RechargeService {
//查询筛选充值
@Override
public PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
rechargeUser.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<RechargeUser> 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<String> markets = generalService.getAdminMarket(account);
rechargeUser.setMarkets(markets);
Gold gold = new Gold();
List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);

14
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<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception{
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
refundUser.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<RefundUser> 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<String> markets = generalService.getAdminMarket(account);
refundUser.setMarkets(markets);
Gold gold = new Gold();
List<RefundUser> refundUsers = refundMapper.selectBy(refundUser);
@ -104,9 +93,6 @@ public class RefundServiceImpl implements RefundService {
//查找筛选退款
@Override
public PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser)throws Exception {
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
refundUser.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<RefundUser> refundUsers = refundMapper.selectBy(refundUser);
return new PageInfo<>(refundUsers);

123
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<Integer> menuIds = new ArrayList<>(roleVo.getMenuIds()); // 创建副本避免修改原始列表
Set<Integer> 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<RoleVo> selectAllRole() {
String account = adminService.getCurrentAdminAccount();
List<String> 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<String> list = Arrays.asList(admin.getMarkets().split(","));
List<RoleVo> 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<RoleVo> selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo) {
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getAdminMarket(account);
roleVo.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize);
List<RoleVo> roleVos = roleMapper.selectBy(roleVo);
// 遍历 roleVos 列表

311
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() {
//设定起止时间 当天000000至235959
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<Statistics> 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<Statistics> 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<Integer> auditStatusList = new ArrayList<>();
auditStatusList.add(1); // 审核通过
auditStatusList.add(3); // 外部传入默认通过
//查询当天该地区审核通过的所有数据
List<UserGoldRecord> 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<String, Integer> 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()) ;}
}

37
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<String> 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<String> 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<Integer> jwcodeList = userMapper.getAllJwcode();
for(Integer jwcode : jwcodeList){

94
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<String, WorkbenchCard> redisTemplate;
// private final StatisticsMapper statisticsMapper;
@Autowired
private WorkBenchMapper workBenchMapper;
@Autowired
private GeneralService generalService;
@Autowired
private StatisticsMapper statisticsMapper;
@Autowired
public WorkbenchServiceImpl(RedisTemplate<String, WorkbenchCard> 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<String> getAdminMarket(String account) {
try {
String market = workBenchMapper.getAdminMarket(account);
if (market == null) {
throw new Exception("没有地区权限");
}
List<String> list = Arrays.asList(market.split(","));
//判断是否是总部
if (list != null && list.contains("总部")) {
List<String> 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<String> 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<Statistics> currentStatsList = statisticsMapper.selectByMarketsAndDate(markets,
Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()));
//昨天的统计数据
List<Statistics> ydayStatsList = statisticsMapper.selectByMarketsAndDate(markets,
Date.from(startOfYday.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(endOfYday.atZone(ZoneId.systemDefault()).toInstant()));
// List<Statistics> 转换为 Map<String, Statistics>
// List<Statistics> 转换为 Map<String, Statistics>以market为键保留第一个出现的数据
Map<String, Statistics> currentStatsMap = currentStatsList.stream()
.collect(Collectors.toMap(Statistics::getMarket, Function.identity(), (existing, replacement) -> existing));
//转换昨日统计数据为Map<>
Map<String, Statistics> 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<String> 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<String, Integer> 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<String, Integer> calculateAllSum(String market, Date startDate, Date endDate) {
WorkbenchFullStatistics stats = workBenchMapper.getFullStatisticsByMarketAndDate(market, startDate, endDate);
Map<String, Integer> 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<String> markets) {
// List<String> markets = generalService.getMarket();
int thisWeekTotal = 0; //本周至当天充值人数
int lastWeekTotal = 0; //上周至当天充值人数
//获取本周周一

11
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

20
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:

10
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:

63
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

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

@ -152,8 +152,11 @@
<!--根据订单号查订单-->
<select id="selectAllOrderByOrderCode" resultType="com.example.demo.domain.entity.UserGoldRecord">
select * from user_gold_record where order_code = #{orderCode} and ugr.flag=1
select * from user_gold_record where order_code = #{orderCode} and flag=1
ORDER BY create_time DESC
limit 1
</select>
<select id="getAdminMarket" resultType="java.lang.String">
</select>
</mapper>

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

@ -5,7 +5,7 @@
<!-- 查询所有消费记录 -->
<select id="selectAll" resultType="com.example.demo.domain.vo.ConsumeUser">
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,
@ -74,7 +74,7 @@
<!-- 查询筛选后消费记录 -->
<select id="selectBy" resultType="com.example.demo.domain.vo.ConsumeUser">
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,

3
src/main/resources/mapper/GeneralMapper.xml

@ -26,4 +26,7 @@
select market from role
where id = #{roleId}
</select>
<select id="getAllRoleMarket" resultType="java.lang.String">
select DISTINCT market from role
</select>
</mapper>

7
src/main/resources/mapper/MarketMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.MarketMapper">
<select id="getMarket" resultType="com.example.demo.domain.entity.Market">
select * from market
</select>
</mapper>

6
src/main/resources/mapper/MenuMapper.xml

@ -50,4 +50,10 @@
</where>
</select>
<select id="selectFatherId" resultType="int">
SELECT parent_id FROM menu
<where>
id = #{id}
</where>
</select>
</mapper>

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

@ -79,7 +79,7 @@
and admin.account=#{account}
</if>
<if test="market!=null and market.length>0">
and admin.market=#{market}
and admin.market LIKE CONCAT('%', #{market}, '%')
</if>
<if test="postiton!=null and postiton.length>0">
and admin.postiton=#{postiton}
@ -92,7 +92,7 @@
)
</if>
</where>
order by admin.admin_status desc
order by admin.admin_status desc ,admin.update_time desc
</select>
<select id="getRole" resultType="com.example.demo.domain.entity.Role">
select *

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

@ -6,7 +6,7 @@
<select id="selectAll" resultType="com.example.demo.domain.vo.RechargeUser">
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 id="selectBy" resultType="com.example.demo.domain.vo.RechargeUser">
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,

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

@ -5,7 +5,7 @@
<!-- 查询所有退款记录 -->
<select id="selectAll" resultType="com.example.demo.domain.vo.RefundUser">
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 @@
<!-- 查询筛选后消费记录 -->
<select id="selectBy" resultType="com.example.demo.domain.vo.RefundUser">
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,

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

@ -23,6 +23,7 @@
<where>
role_name = #{roleName}
</where>
limit 1
</select>
<select id="selectByRoleId" resultType="com.example.demo.domain.entity.Role">
@ -75,6 +76,8 @@
r.priority AS priority,
r.father_id AS fatherId,
r.market AS market,
r.create_time AS createTime,
r.update_time AS updateTime,
-- 通过自连接查询父角色名称
father.role_name AS fatherName
FROM role r
@ -95,7 +98,7 @@
</foreach>
</if>
</where>
ORDER BY r.priority DESC
ORDER BY r.update_time DESC,r.priority DESC
</select>
<!--获取当前角色的上级角色-->
<select id="selectFather" resultType="com.example.demo.domain.vo.RoleVo">

18
src/main/resources/mapper/StatisticsMapper.xml

@ -303,10 +303,10 @@
#{today} AS current_datetime,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold+ugr.free_june+ugr.free_december+ugr.task_gold END),0) AS recharge,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold END),0) AS money,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN ugr.permanent_gold END),0) AS consume_permanent,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN ugr.free_june END),0) AS consume_free_june,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN ugr.free_december END),0) AS consume_free_december,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN ugr.task_gold END),0) AS consume_task,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.permanent_gold END),0) AS consume_permanent,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.free_june END),0) AS consume_free_june,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.free_december END),0) AS consume_free_december,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.task_gold END),0) AS consume_task,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.permanent_gold END),0) AS refund_permanent,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.free_june END),0) AS refund_free_june,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.free_december END),0) AS refund_free_december,
@ -339,10 +339,10 @@
DATE(ugr.create_time) AS current_datetime, -- 只保留日期
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold+ugr.free_june+ugr.free_december+ugr.task_gold END),0) AS recharge,
COALESCE(SUM(CASE WHEN ugr.type=0 THEN ugr.permanent_gold END),0) AS money,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN ugr.permanent_gold END),0) AS consume_permanent,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN ugr.free_june END),0) AS consume_free_june,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN ugr.free_december END),0) AS consume_free_december,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN ugr.task_gold END),0) AS consume_task,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.permanent_gold END),0) AS consume_permanent,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.free_june END),0) AS consume_free_june,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.free_december END),0) AS consume_free_december,
COALESCE(SUM(CASE WHEN ugr.type=1 THEN -ugr.task_gold END),0) AS consume_task,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.permanent_gold END),0) AS refund_permanent,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.free_june END),0) AS refund_free_june,
COALESCE(SUM(CASE WHEN ugr.type=2 THEN ugr.free_december END),0) AS refund_free_december,
@ -355,7 +355,7 @@
(
SELECT DATE_SUB(CURDATE(), INTERVAL seq DAY) AS create_date,
DATE_SUB(CURDATE(), INTERVAL seq DAY) AS date_start,
DATE_ADD(DATE_SUB(CURDATE(), INTERVAL seq DAY), INTERVAL 1 DAY) AS date_end
TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL seq DAY), '23:59:59') AS date_end
FROM (
SELECT 0 AS seq UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6

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

@ -127,10 +127,10 @@
<if test="currentFreeDecember != null">current_free_december = #{currentFreeDecember},</if>
<if test="currentTaskGold != null">current_task_gold = #{currentTaskGold},</if>
<if test="consumeNum != null">consume_num = #{consumeNum},</if>
<if test="rechargeNum != null">recharge_num = #{rechargeNum}</if>
<if test="rechargeNum != null">recharge_num = #{rechargeNum},</if>
<if test="sumConsumePermanent != null">sum_consume_permanent = #{sumConsumePermanent},</if>
<if test="sumConsumeTask != null">sum_consume_task = #{sumConsumeTask},</if>
<if test="sumConsumeFree != null">sum_consume_free = #{sumConsumeFree},</if>
<if test="sumConsumeFree != null">sum_consume_free = #{sumConsumeFree}</if>
where jwcode = #{jwcode}
</update>
<!--更新用户首充时间-->

9
src/main/resources/mapper/WorkBenchMapper.xml

@ -125,4 +125,13 @@
AND s.current_datetime BETWEEN #{startDate} AND #{endDate}
GROUP BY s.market;
</select>
<!--获取用户的地区权限列表-->
<select id="getAdminMarket" resultType="java.lang.String">
select market from admin
where account = #{account}
</select>
<!--获取全部用户角色-->
<select id="getMarket" resultType="java.lang.String">
select DISTINCT market from user
</select>
</mapper>
Loading…
Cancel
Save