105 Commits
ecba540c58
...
0dbe418934
202 changed files with 5730 additions and 2850 deletions
-
58pom.xml
-
6src/main/java/com/example/demo/DemoApplication.java
-
16src/main/java/com/example/demo/Export/ExportService.java
-
396src/main/java/com/example/demo/Export/ExportServiceImpl.java
-
2src/main/java/com/example/demo/Mysql/MysqlController.java
-
14src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
-
2src/main/java/com/example/demo/Util/BaseDES2.java
-
4src/main/java/com/example/demo/Util/CacheRefreshTask.java
-
2src/main/java/com/example/demo/Util/ExecutionContextUtil.java
-
2src/main/java/com/example/demo/Util/ExecutionTimeAspect.java
-
2src/main/java/com/example/demo/Util/FeiShuAlertUtil.java
-
5src/main/java/com/example/demo/config/AppConfig.java
-
2src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java
-
49src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java
-
47src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java
-
54src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java
-
54src/main/java/com/example/demo/config/Mysql5DataSourceConfig.java
-
2src/main/java/com/example/demo/config/RedisConfig.java
-
104src/main/java/com/example/demo/controller/ExportController.java
-
97src/main/java/com/example/demo/controller/bean/BeanAuditController.java
-
130src/main/java/com/example/demo/controller/bean/BeanConsumeController.java
-
121src/main/java/com/example/demo/controller/bean/BeanRechargeController.java
-
79src/main/java/com/example/demo/controller/bean/BeanUserController.java
-
10src/main/java/com/example/demo/controller/coin/AdminController.java
-
8src/main/java/com/example/demo/controller/coin/AuditController.java
-
75src/main/java/com/example/demo/controller/coin/ConsumeController.java
-
198src/main/java/com/example/demo/controller/coin/ExportController.java
-
10src/main/java/com/example/demo/controller/coin/GeneralController.java
-
41src/main/java/com/example/demo/controller/coin/GoldDetailController.java
-
26src/main/java/com/example/demo/controller/coin/MarketController.java
-
11src/main/java/com/example/demo/controller/coin/MenuController.java
-
11src/main/java/com/example/demo/controller/coin/PermissionController.java
-
10src/main/java/com/example/demo/controller/coin/RateController.java
-
57src/main/java/com/example/demo/controller/coin/RechargeController.java
-
54src/main/java/com/example/demo/controller/coin/RefundController.java
-
12src/main/java/com/example/demo/controller/coin/RoleController.java
-
11src/main/java/com/example/demo/controller/coin/StatisticsController.java
-
10src/main/java/com/example/demo/controller/coin/UserController.java
-
19src/main/java/com/example/demo/controller/coin/WorkbenchController.java
-
37src/main/java/com/example/demo/domain/DTO/ArticleDTO.java
-
38src/main/java/com/example/demo/domain/DTO/BeanRechargeDTO.java
-
2src/main/java/com/example/demo/domain/DTO/ConsumeDTO.java
-
37src/main/java/com/example/demo/domain/DTO/FanDTO.java
-
2src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java
-
37src/main/java/com/example/demo/domain/DTO/LiveDTO.java
-
36src/main/java/com/example/demo/domain/DTO/OnlineDTO.java
-
2src/main/java/com/example/demo/domain/DTO/RechargeDTO.java
-
2src/main/java/com/example/demo/domain/DTO/RefundDTO.java
-
33src/main/java/com/example/demo/domain/entity/Market.java
-
32src/main/java/com/example/demo/domain/vo/Page.java
-
49src/main/java/com/example/demo/domain/vo/bean/BeanAuditInfo.java
-
27src/main/java/com/example/demo/domain/vo/bean/BeanConsume.java
-
63src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java
-
58src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java
-
24src/main/java/com/example/demo/domain/vo/bean/BeanConsumeGold.java
-
69src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java
-
58src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java
-
27src/main/java/com/example/demo/domain/vo/bean/BeanRecharge.java
-
62src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java
-
58src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java
-
29src/main/java/com/example/demo/domain/vo/bean/BeanUser.java
-
29src/main/java/com/example/demo/domain/vo/bean/BeanUserCard.java
-
25src/main/java/com/example/demo/domain/vo/bean/GoldBean.java
-
2src/main/java/com/example/demo/domain/vo/coin/AdminVo.java
-
2src/main/java/com/example/demo/domain/vo/coin/AiEmotionExportRecordVO.java
-
2src/main/java/com/example/demo/domain/vo/coin/AuditRequest.java
-
4src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java
-
2src/main/java/com/example/demo/domain/vo/coin/ExecutionContext.java
-
2src/main/java/com/example/demo/domain/vo/coin/ExportVo.java
-
2src/main/java/com/example/demo/domain/vo/coin/Gold.java
-
4src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java
-
2src/main/java/com/example/demo/domain/vo/coin/GoldUser.java
-
2src/main/java/com/example/demo/domain/vo/coin/MarketRechargeStat.java
-
2src/main/java/com/example/demo/domain/vo/coin/MenuVo.java
-
43src/main/java/com/example/demo/domain/vo/coin/Page.java
-
2src/main/java/com/example/demo/domain/vo/coin/Password.java
-
2src/main/java/com/example/demo/domain/vo/coin/Permission.java
-
2src/main/java/com/example/demo/domain/vo/coin/RateDetail.java
-
2src/main/java/com/example/demo/domain/vo/coin/RechargeAudit.java
-
44src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java
-
2src/main/java/com/example/demo/domain/vo/coin/RefundAudit.java
-
4src/main/java/com/example/demo/domain/vo/coin/RefundUser.java
-
2src/main/java/com/example/demo/domain/vo/coin/Result.java
-
2src/main/java/com/example/demo/domain/vo/coin/RoleMenu.java
-
2src/main/java/com/example/demo/domain/vo/coin/RoleVo.java
-
2src/main/java/com/example/demo/domain/vo/coin/TestRequest.java
-
2src/main/java/com/example/demo/domain/vo/coin/Total.java
-
2src/main/java/com/example/demo/domain/vo/coin/WorkbenchCard.java
-
2src/main/java/com/example/demo/domain/vo/coin/WorkbenchFullStatistics.java
-
2src/main/java/com/example/demo/domain/vo/coin/WorkbenchMarketCard.java
-
2src/main/java/com/example/demo/domain/vo/coin/WorkbenchMarketGraph.java
-
40src/main/java/com/example/demo/mapper/bean/BeanConsumeMapper.java
-
25src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java
-
31src/main/java/com/example/demo/mapper/bean/BeanUserMapper.java
-
2src/main/java/com/example/demo/mapper/coin/AdminMapper.java
-
4src/main/java/com/example/demo/mapper/coin/AiEmotionMapper.java
-
7src/main/java/com/example/demo/mapper/coin/AuditMapper.java
-
31src/main/java/com/example/demo/mapper/coin/BeanAuditMapper.java
-
20src/main/java/com/example/demo/mapper/coin/BeanRechargeMapper1.java
-
4src/main/java/com/example/demo/mapper/coin/ConsumeMapper.java
@ -0,0 +1,49 @@ |
|||||
|
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.mybatis.spring.annotation.MapperScan; |
||||
|
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(); |
||||
|
} |
||||
|
} |
@ -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 mysql3DataSource() { |
||||
|
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:paymapper/*.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(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,54 @@ |
|||||
|
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; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName Mysql4DataSourceConfig |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−08-01 17:12 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Slf4j |
||||
|
@Configuration |
||||
|
public class Mysql4DataSourceConfig { |
||||
|
@Bean(name = "mysql4DataSource") |
||||
|
@ConfigurationProperties(prefix = "spring.datasource.mysql4") |
||||
|
public DataSource mysql4DataSource() { |
||||
|
return DataSourceBuilder.create().type(HikariDataSource.class).build(); |
||||
|
} |
||||
|
@Bean(name = "mysql4SqlSessionFactory") |
||||
|
// @Primary |
||||
|
public SqlSessionFactory mysql4SqlSessionFactory(@Qualifier("mysql4DataSource") DataSource dataSource, |
||||
|
@Qualifier("globalConfiguration4") org.apache.ibatis.session.Configuration globalConfiguration4) throws Exception { |
||||
|
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); |
||||
|
sessionFactory.setDataSource(dataSource); |
||||
|
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:paymapper/*.xml")); |
||||
|
sessionFactory.setConfiguration(globalConfiguration4); |
||||
|
return sessionFactory.getObject(); |
||||
|
} |
||||
|
|
||||
|
@Bean(name = "mysql4SqlSessionTemplate") |
||||
|
// @Primary |
||||
|
public SqlSessionTemplate mysql4SqlSessionTemplate(@Qualifier("mysql4SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { |
||||
|
return new SqlSessionTemplate(sqlSessionFactory); |
||||
|
} |
||||
|
@Bean |
||||
|
@ConfigurationProperties(prefix = "mybatis.configuration.mysql4") |
||||
|
public org.apache.ibatis.session.Configuration globalConfiguration4() { |
||||
|
return new org.apache.ibatis.session.Configuration(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,54 @@ |
|||||
|
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; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName Mysql5DataSourceConfig |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−08-01 17:17 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Slf4j |
||||
|
@Configuration |
||||
|
public class Mysql5DataSourceConfig { |
||||
|
@Bean(name = "mysql5DataSource") |
||||
|
@ConfigurationProperties(prefix = "spring.datasource.mysql5") |
||||
|
public DataSource mysql5DataSource() { |
||||
|
return DataSourceBuilder.create().type(HikariDataSource.class).build(); |
||||
|
} |
||||
|
@Bean(name = "mysql5SqlSessionFactory") |
||||
|
// @Primary |
||||
|
public SqlSessionFactory mysql5SqlSessionFactory(@Qualifier("mysql5DataSource") DataSource dataSource, |
||||
|
@Qualifier("globalConfiguration5") org.apache.ibatis.session.Configuration globalConfiguration5) throws Exception { |
||||
|
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); |
||||
|
sessionFactory.setDataSource(dataSource); |
||||
|
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:liveMapper/*.xml")); |
||||
|
sessionFactory.setConfiguration(globalConfiguration5); |
||||
|
return sessionFactory.getObject(); |
||||
|
} |
||||
|
|
||||
|
@Bean(name = "mysql5SqlSessionTemplate") |
||||
|
// @Primary |
||||
|
public SqlSessionTemplate mysql5SqlSessionTemplate(@Qualifier("mysql5SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { |
||||
|
return new SqlSessionTemplate(sqlSessionFactory); |
||||
|
} |
||||
|
@Bean |
||||
|
@ConfigurationProperties(prefix = "mybatis.configuration.mysql5") |
||||
|
public org.apache.ibatis.session.Configuration globalConfiguration5() { |
||||
|
return new org.apache.ibatis.session.Configuration(); |
||||
|
} |
||||
|
} |
@ -1,104 +0,0 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
|
||||
import com.example.demo.Util.BusinessException; |
|
||||
import com.example.demo.Util.JWTUtil; |
|
||||
import com.example.demo.Util.RedisLockUtil; |
|
||||
import com.example.demo.domain.DTO.ConsumeDTO; |
|
||||
import com.example.demo.domain.DTO.RechargeDTO; |
|
||||
import com.example.demo.domain.DTO.RefundDTO; |
|
||||
import com.example.demo.domain.entity.Admin; |
|
||||
import com.example.demo.domain.entity.Export; |
|
||||
import com.example.demo.domain.vo.Result; |
|
||||
import com.example.demo.service.ExportExcelService; |
|
||||
import com.example.demo.service.GoldDetailService; |
|
||||
import com.example.demo.Export.ExportService; |
|
||||
import jakarta.validation.Valid; |
|
||||
import lombok.RequiredArgsConstructor; |
|
||||
import lombok.extern.slf4j.Slf4j; |
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
|
||||
import org.springframework.security.core.userdetails.UserDetails; |
|
||||
import org.springframework.web.bind.annotation.*; |
|
||||
|
|
||||
import java.util.List; |
|
||||
import java.util.UUID; |
|
||||
|
|
||||
/** |
|
||||
* @program: GOLD |
|
||||
* @ClassName ExportController |
|
||||
* @description: |
|
||||
* @author: huangqizhen |
|
||||
* @create: 2025−06-28 15:22 |
|
||||
* @Version 1.0 |
|
||||
**/ |
|
||||
@RestController |
|
||||
@RequestMapping("/export") |
|
||||
@RequiredArgsConstructor |
|
||||
@Slf4j |
|
||||
@CrossOrigin |
|
||||
public class ExportController { |
|
||||
@Autowired |
|
||||
private ExportExcelService exportExcelService; |
|
||||
@Autowired |
|
||||
private RedisLockUtil redisLockUtil; |
|
||||
@Autowired |
|
||||
private GoldDetailService goldDetailService; |
|
||||
@Autowired |
|
||||
private ExportService exportService; |
|
||||
@PostMapping("/export") |
|
||||
public Result export(@Valid @RequestBody Export export, @RequestHeader("token") String token) throws Exception { |
|
||||
try { |
|
||||
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); |
|
||||
export.setAccount(Integer.valueOf(token1.getUsername())); |
|
||||
return Result.success(exportExcelService.getExcel(export)); |
|
||||
} catch (Exception e) { |
|
||||
log.error("导出失败", e.getMessage()); |
|
||||
return Result.error("导出失败" + e.getMessage()); |
|
||||
} |
|
||||
} |
|
||||
@PostMapping("/exportRecharge") |
|
||||
public Result export(@Valid @RequestBody RechargeDTO dto) { |
|
||||
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key(可按用户/业务区分) |
|
||||
String requestId = UUID.randomUUID().toString(); // 请求 ID(防止误删锁) |
|
||||
long expireTime = 5000; // 锁过期时间(5秒)s |
|
||||
try { |
|
||||
// 尝试获取锁 |
|
||||
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
|
||||
throw new BusinessException("操作太频繁,请稍后重试"); |
|
||||
} |
|
||||
// 执行业务逻辑 |
|
||||
return exportService.addExportRecharge(dto); |
|
||||
} finally { |
|
||||
// 释放锁 |
|
||||
redisLockUtil.unlock(lockKey, requestId); |
|
||||
} |
|
||||
} |
|
||||
@PostMapping("/exportRefund") |
|
||||
public Result export(@Valid @RequestBody RefundDTO dto) { |
|
||||
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key(可按用户/业务区分) |
|
||||
String requestId = UUID.randomUUID().toString(); // 请求 ID(防止误删锁) |
|
||||
long expireTime = 5000; // 锁过期时间(5秒)s |
|
||||
try { |
|
||||
// 尝试获取锁 |
|
||||
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
|
||||
throw new BusinessException("操作太频繁,请稍后重试"); |
|
||||
} |
|
||||
// 执行业务逻辑 |
|
||||
return exportService.addExportRefund(dto); |
|
||||
} finally { |
|
||||
// 释放锁 |
|
||||
redisLockUtil.unlock(lockKey, requestId); |
|
||||
} |
|
||||
} |
|
||||
@PostMapping("/exportConsume") |
|
||||
public Result export(@Valid @RequestBody ConsumeDTO dto) { |
|
||||
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key(可按用户/业务区分) |
|
||||
String requestId = UUID.randomUUID().toString(); // 请求 ID(防止误删锁) |
|
||||
long expireTime = 5000; // 锁过期时间(5秒)s |
|
||||
try { |
|
||||
return exportService.addExportConsume(dto); |
|
||||
} finally { |
|
||||
// 释放锁 |
|
||||
redisLockUtil.unlock(lockKey, requestId); |
|
||||
} |
|
||||
} |
|
||||
} |
|
@ -0,0 +1,97 @@ |
|||||
|
package com.example.demo.controller.bean; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanAuditInfo; |
||||
|
import com.example.demo.domain.vo.bean.BeanRechargeInfo; |
||||
|
import com.example.demo.domain.vo.bean.GoldBean; |
||||
|
import com.example.demo.domain.vo.coin.Page; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.bean.BeanAuditService; |
||||
|
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 java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanAuditController |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−08-01 11:03 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@RestController |
||||
|
@RequestMapping("/beanAudit") |
||||
|
@RequiredArgsConstructor |
||||
|
@Slf4j |
||||
|
@CrossOrigin |
||||
|
public class BeanAuditController { |
||||
|
|
||||
|
@Autowired |
||||
|
private BeanAuditService beanAuditService; |
||||
|
|
||||
|
//审核查找 |
||||
|
@PostMapping("/selectBy") |
||||
|
public Result selectBy(@RequestBody Page page) { |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(page.getPageNum())) { |
||||
|
return Result.error("页码数为空!"); |
||||
|
} |
||||
|
if (ObjectUtils.isEmpty(page.getPageSize())) { |
||||
|
return Result.error("页大小为空!"); |
||||
|
} else { |
||||
|
if (page.getBeanAuditInfo().getStatus() == null) { |
||||
|
return Result.error("状态不能为空"); |
||||
|
} |
||||
|
return Result.success(beanAuditService.selectBy(page.getPageNum(), page.getPageSize(), page.getBeanAuditInfo())); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
return Result.error("请检查筛选数据的格式"); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@PostMapping("/status1") |
||||
|
public Result updateStatus1(@RequestBody BeanAuditInfo beanAuditInfo) { |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(beanAuditInfo.getId())) { |
||||
|
return Result.error("id不能为空"); |
||||
|
} |
||||
|
return beanAuditService.updateStatus1(beanAuditInfo); |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
return Result.error("更新失败,查看id"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@PostMapping("/status2") |
||||
|
public Result updateStatus2(@RequestBody BeanAuditInfo beanAuditInfo) { |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(beanAuditInfo.getId())) { |
||||
|
return Result.error("id不能为空"); |
||||
|
} |
||||
|
if (ObjectUtils.isEmpty(beanAuditInfo.getReason())) { |
||||
|
return Result.error("审核意见不能为空"); |
||||
|
} |
||||
|
beanAuditService.updateStatus2(beanAuditInfo); |
||||
|
return Result.success(); |
||||
|
} catch (Exception e) { |
||||
|
return Result.error("更新失败,查看id"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//金豆统计 |
||||
|
@PostMapping("/statsBean") |
||||
|
public Result statsBean(@RequestBody BeanAuditInfo beanAuditInfo) { |
||||
|
try { |
||||
|
GoldBean goldBean = beanAuditService.statsBean(beanAuditInfo); |
||||
|
return Result.success(goldBean); |
||||
|
} catch (Exception e) { |
||||
|
return Result.error("请检查数据的格式"); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,130 @@ |
|||||
|
package com.example.demo.controller.bean; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanConsume; |
||||
|
import com.example.demo.domain.vo.bean.BeanConsumeGold; |
||||
|
import com.example.demo.domain.vo.bean.BeanRecharge; |
||||
|
import com.example.demo.domain.vo.coin.Page; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.bean.BeanConsumeService; |
||||
|
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 java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanConsumeController |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−07-30 11:30 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@RestController |
||||
|
@RequestMapping("/beanConsume") |
||||
|
@RequiredArgsConstructor |
||||
|
@Slf4j |
||||
|
@CrossOrigin |
||||
|
public class BeanConsumeController { |
||||
|
@Autowired |
||||
|
private BeanConsumeService beanConsumeService; |
||||
|
|
||||
|
//获取消费用户分部信息 |
||||
|
@PostMapping("/getDept") |
||||
|
public Result getDept(){ |
||||
|
|
||||
|
List<String> deptList = beanConsumeService.getDept(); |
||||
|
return Result.success(deptList); |
||||
|
} |
||||
|
|
||||
|
//获取直播消费用户分部信息 |
||||
|
@PostMapping("/getLiveDept") |
||||
|
public Result getLiveDept(){ |
||||
|
|
||||
|
List<String> deptList = beanConsumeService.getLiveDept(); |
||||
|
return Result.success(deptList); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//减少金豆 |
||||
|
@PostMapping("/reduce") |
||||
|
public Result reduce(@RequestBody BeanConsume consume) { |
||||
|
try { |
||||
|
return beanConsumeService.reduce(consume); |
||||
|
} catch (Exception e) { |
||||
|
return Result.error("减少失败"); |
||||
|
} |
||||
|
} |
||||
|
//筛选查询直播消费记录 |
||||
|
@PostMapping("/selectLiveBy") |
||||
|
public Result selectLiveBy(@RequestBody Page page){ |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(page.getPageNum())) { |
||||
|
return Result.error("页码数为空!"); |
||||
|
} |
||||
|
if (ObjectUtils.isEmpty(page.getPageSize())) { |
||||
|
return Result.error("页大小为空!"); |
||||
|
} else { |
||||
|
|
||||
|
return Result.success(beanConsumeService.selectLiveBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeLive())); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
//返回堆栈信息 |
||||
|
return Result.error(e.toString()); |
||||
|
}} |
||||
|
//筛选查询铁粉消费记录 |
||||
|
@PostMapping("/selectFanBy") |
||||
|
public Result selectFanBy(@RequestBody Page page){ |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(page.getPageNum())) { |
||||
|
return Result.error("页码数为空!"); |
||||
|
} |
||||
|
if (ObjectUtils.isEmpty(page.getPageSize())) { |
||||
|
return Result.error("页大小为空!"); |
||||
|
} else { |
||||
|
|
||||
|
return Result.success(beanConsumeService.selectFanBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeFan())); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
return Result.error(e.toString()); |
||||
|
}} |
||||
|
|
||||
|
//筛选查询文章消费记录 |
||||
|
@PostMapping("/selectArticleBy") |
||||
|
public Result selectArticleBy(@RequestBody Page page){ |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(page.getPageNum())) { |
||||
|
return Result.error("页码数为空!"); |
||||
|
} |
||||
|
if (ObjectUtils.isEmpty(page.getPageSize())) { |
||||
|
return Result.error("页大小为空!"); |
||||
|
} else { |
||||
|
|
||||
|
return Result.success(beanConsumeService.selectArticleBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeArticle())); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
return Result.error(e.toString()); |
||||
|
}} |
||||
|
|
||||
|
//消费合计数 |
||||
|
@PostMapping("sumConsumeGold") |
||||
|
public BeanConsumeGold sumConsumeGold(@RequestBody Page page) { |
||||
|
|
||||
|
return beanConsumeService.sumConsumeGold( page); |
||||
|
} |
||||
|
//查询所有直播礼物 |
||||
|
@PostMapping("/getLiveGift") |
||||
|
public Result getLiveGift(){ |
||||
|
return Result.success(beanConsumeService.getLiveGift()); |
||||
|
} |
||||
|
//查询所有直播频道 |
||||
|
@PostMapping("/getLiveChannel") |
||||
|
public Result getLiveChannel(){ |
||||
|
return Result.success(beanConsumeService.getLiveChannel()); |
||||
|
} |
||||
|
} |
@ -0,0 +1,121 @@ |
|||||
|
package com.example.demo.controller.bean; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; |
||||
|
import com.example.demo.domain.vo.bean.BeanRecharge; |
||||
|
import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; |
||||
|
import com.example.demo.domain.vo.bean.GoldBean; |
||||
|
import com.example.demo.domain.vo.coin.Page; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.bean.BeanRechargeService; |
||||
|
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 java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanRechrageController |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-29 16:46 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@RestController |
||||
|
@RequestMapping("/beanRecharge") |
||||
|
@RequiredArgsConstructor |
||||
|
@Slf4j |
||||
|
@CrossOrigin |
||||
|
public class BeanRechargeController { |
||||
|
|
||||
|
@Autowired |
||||
|
private BeanRechargeService beanRechargeService; |
||||
|
|
||||
|
//添加金豆 |
||||
|
@PostMapping("/add") |
||||
|
public Result add(@RequestBody BeanRecharge recharge) { |
||||
|
try { |
||||
|
return beanRechargeService.add(recharge); |
||||
|
} catch (Exception e) { |
||||
|
return Result.error("添加失败"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//系统充值 |
||||
|
@PostMapping("/selectBySystem") |
||||
|
public Result selectBySystem(@RequestBody Page page) { |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(page.getPageNum())) { |
||||
|
return Result.error("页码数为空!"); |
||||
|
} |
||||
|
if (ObjectUtils.isEmpty(page.getPageSize())) { |
||||
|
return Result.error("页大小为空!"); |
||||
|
} else { |
||||
|
return Result.success(beanRechargeService.selectBySystem(page.getPageNum(), page.getPageSize(), page.getBeanSystemRechargeInfo())); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
return Result.error("请检查筛选数据的格式"); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//系统金豆统计 |
||||
|
@PostMapping("/statsSystemBean") |
||||
|
public Result statsSystemBean(@RequestBody BeanSystemRechargeInfo beanSystemRechargeInfo) { |
||||
|
try { |
||||
|
GoldBean goldBean = beanRechargeService.statsSystemBean(beanSystemRechargeInfo); |
||||
|
return Result.success(goldBean); |
||||
|
} catch (Exception e) { |
||||
|
return Result.error("请检查数据的格式"); |
||||
|
} |
||||
|
} |
||||
|
//获取系统充值地区 |
||||
|
@PostMapping("/systemMarket") |
||||
|
public Result systemMarket() |
||||
|
{ |
||||
|
List<String> list = beanRechargeService.systemMarket(); |
||||
|
return Result.success(list); |
||||
|
} |
||||
|
|
||||
|
//线上充值 |
||||
|
@PostMapping("/selectByOnline") |
||||
|
public Result selectByOnline(@RequestBody Page page) { |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(page.getPageNum())) { |
||||
|
return Result.error("页码数为空!"); |
||||
|
} |
||||
|
if (ObjectUtils.isEmpty(page.getPageSize())) { |
||||
|
return Result.error("页大小为空!"); |
||||
|
} else { |
||||
|
return Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanOnlineRechargeInfo())); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
return Result.error("请检查筛选数据的格式"); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//线上金豆统计 |
||||
|
@PostMapping("/statsOnlineBean") |
||||
|
public Result statsOnlineBean(@RequestBody BeanOnlineRechargeInfo beanOnlineRechargeInfo) { |
||||
|
try { |
||||
|
GoldBean goldBean = beanRechargeService.statsOnlineBean(beanOnlineRechargeInfo); |
||||
|
return Result.success(goldBean); |
||||
|
} catch (Exception e) { |
||||
|
return Result.error("请检查数据的格式"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//获取线上充值地区 |
||||
|
@PostMapping("/onlineMarket") |
||||
|
public Result onlineMarket() |
||||
|
{ |
||||
|
List<String> list = beanRechargeService.onlineMarket(); |
||||
|
return Result.success(list); |
||||
|
} |
||||
|
} |
@ -0,0 +1,79 @@ |
|||||
|
package com.example.demo.controller.bean; |
||||
|
|
||||
|
import com.example.demo.domain.entity.User; |
||||
|
import com.example.demo.domain.vo.bean.BeanUser; |
||||
|
import com.example.demo.domain.vo.bean.BeanUserCard; |
||||
|
import com.example.demo.domain.vo.coin.Page; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.bean.BeanUserService; |
||||
|
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 java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanUserController |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-29 17:03 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@RestController |
||||
|
@RequestMapping("/beanUser") |
||||
|
@RequiredArgsConstructor |
||||
|
@Slf4j |
||||
|
@CrossOrigin |
||||
|
public class BeanUserController { |
||||
|
|
||||
|
@Autowired |
||||
|
private BeanUserService beanUserService; |
||||
|
|
||||
|
//查询用户卡片 |
||||
|
@PostMapping("/userCard") |
||||
|
public Result userCard(@RequestBody BeanUserCard user) { |
||||
|
try { |
||||
|
return beanUserService.userCard(user.getJwcode().toString()); |
||||
|
} catch (Exception e) { |
||||
|
return Result.error("请检查输入精网号格式"); |
||||
|
} |
||||
|
} |
||||
|
//客户金豆余额 |
||||
|
@PostMapping("/userBean") |
||||
|
public Result userBean(@RequestBody Page page) { |
||||
|
try { |
||||
|
if (ObjectUtils.isEmpty(page.getPageNum())) { |
||||
|
return Result.error("页码数为空!"); |
||||
|
} |
||||
|
if (ObjectUtils.isEmpty(page.getPageSize())) { |
||||
|
return Result.error("页大小为空!"); |
||||
|
} else { |
||||
|
|
||||
|
return Result.success(beanUserService.selectUserBy(page.getPageNum(), page.getPageSize(), page.getBeanUser())); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
e.printStackTrace(); |
||||
|
return Result.error(e.toString()); |
||||
|
}} |
||||
|
//客户金币余额合计数 |
||||
|
@PostMapping("/userBeanSum") |
||||
|
public Result userBeanSum(@RequestBody Page page) { |
||||
|
|
||||
|
return Result.success(beanUserService.sumUserGold(page)); |
||||
|
} |
||||
|
//查询客户分部 |
||||
|
@PostMapping("/getDept") |
||||
|
public Result getDept() { |
||||
|
List<String> deptList = beanUserService.getDept(); |
||||
|
return Result.success(deptList); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -1,11 +1,11 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
import com.example.demo.Util.JWTUtil; |
import com.example.demo.Util.JWTUtil; |
||||
import com.example.demo.domain.entity.Admin; |
import com.example.demo.domain.entity.Admin; |
||||
import com.example.demo.domain.vo.Password; |
|
||||
import com.example.demo.domain.vo.Result; |
|
||||
import com.example.demo.mapper.AdminMapper; |
|
||||
import com.example.demo.service.AdminService; |
|
||||
|
import com.example.demo.domain.vo.coin.Password; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.mapper.coin.AdminMapper; |
||||
|
import com.example.demo.service.coin.AdminService; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
import org.springframework.beans.factory.annotation.Autowired; |
@ -1,20 +1,18 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
import com.example.demo.Util.JWTUtil; |
import com.example.demo.Util.JWTUtil; |
||||
import com.example.demo.domain.entity.Admin; |
import com.example.demo.domain.entity.Admin; |
||||
import com.example.demo.domain.vo.*; |
|
||||
import com.example.demo.service.AuditService; |
|
||||
|
import com.example.demo.service.coin.AuditService; |
||||
import com.github.pagehelper.PageInfo; |
import com.github.pagehelper.PageInfo; |
||||
import jakarta.servlet.http.HttpServletRequest; |
import jakarta.servlet.http.HttpServletRequest; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.http.ResponseEntity; |
import org.springframework.http.ResponseEntity; |
||||
import org.springframework.transaction.annotation.Transactional; |
|
||||
import org.springframework.web.bind.annotation.*; |
import org.springframework.web.bind.annotation.*; |
||||
import org.springframework.web.context.request.RequestContextHolder; |
import org.springframework.web.context.request.RequestContextHolder; |
||||
import org.springframework.web.context.request.ServletRequestAttributes; |
import org.springframework.web.context.request.ServletRequestAttributes; |
||||
|
|
||||
|
import com.example.demo.domain.vo.coin.*; |
||||
import java.util.Arrays; |
import java.util.Arrays; |
||||
import java.util.List; |
import java.util.List; |
||||
|
|
@ -0,0 +1,198 @@ |
|||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
|
import com.example.demo.Util.BusinessException; |
||||
|
import com.example.demo.Util.JWTUtil; |
||||
|
import com.example.demo.Util.RedisLockUtil; |
||||
|
import com.example.demo.domain.DTO.*; |
||||
|
import com.example.demo.domain.entity.Admin; |
||||
|
import com.example.demo.domain.entity.Export; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.coin.ExportExcelService; |
||||
|
import com.example.demo.service.coin.GoldDetailService; |
||||
|
import com.example.demo.Export.ExportService; |
||||
|
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.security.core.userdetails.UserDetails; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
import org.springframework.web.context.request.RequestContextHolder; |
||||
|
import org.springframework.web.context.request.ServletRequestAttributes; |
||||
|
|
||||
|
import java.util.UUID; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName ExportController |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−06-28 15:22 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@RestController |
||||
|
@RequestMapping("/export") |
||||
|
@RequiredArgsConstructor |
||||
|
@Slf4j |
||||
|
@CrossOrigin |
||||
|
public class ExportController { |
||||
|
@Autowired |
||||
|
private ExportExcelService exportExcelService; |
||||
|
@Autowired |
||||
|
private RedisLockUtil redisLockUtil; |
||||
|
@Autowired |
||||
|
private GoldDetailService goldDetailService; |
||||
|
@Autowired |
||||
|
private ExportService exportService; |
||||
|
@PostMapping("/export") |
||||
|
public Result export(@Valid @RequestBody Export export, @RequestHeader("token") String token) throws Exception { |
||||
|
try { |
||||
|
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); |
||||
|
export.setAccount(Integer.valueOf(token1.getUsername())); |
||||
|
return Result.success(exportExcelService.getExcel(export)); |
||||
|
} catch (Exception e) { |
||||
|
log.error("导出失败", e.getMessage()); |
||||
|
return Result.error("导出失败" + e.getMessage()); |
||||
|
} |
||||
|
} |
||||
|
@PostMapping("/exportRecharge") |
||||
|
public Result export(@Valid @RequestBody RechargeDTO dto) { |
||||
|
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key(可按用户/业务区分) |
||||
|
String requestId = UUID.randomUUID().toString(); // 请求 ID(防止误删锁) |
||||
|
long expireTime = 5000; // 锁过期时间(5秒)s |
||||
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
||||
|
String token = request.getHeader("token"); |
||||
|
dto.setToken(token); |
||||
|
try { |
||||
|
// 尝试获取锁 |
||||
|
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
||||
|
throw new BusinessException("操作太频繁,请稍后重试"); |
||||
|
} |
||||
|
// 执行业务逻辑 |
||||
|
return exportService.addExportRecharge(dto); |
||||
|
} finally { |
||||
|
// 释放锁 |
||||
|
redisLockUtil.unlock(lockKey, requestId); |
||||
|
} |
||||
|
} |
||||
|
@PostMapping("/exportRefund") |
||||
|
public Result export(@Valid @RequestBody RefundDTO dto) { |
||||
|
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key(可按用户/业务区分) |
||||
|
String requestId = UUID.randomUUID().toString(); // 请求 ID(防止误删锁) |
||||
|
long expireTime = 5000; // 锁过期时间(5秒)s |
||||
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
||||
|
String token = request.getHeader("token"); |
||||
|
dto.setToken(token); |
||||
|
try { |
||||
|
// 尝试获取锁 |
||||
|
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
||||
|
throw new BusinessException("操作太频繁,请稍后重试"); |
||||
|
} |
||||
|
// 执行业务逻辑 |
||||
|
return exportService.addExportRefund(dto); |
||||
|
} finally { |
||||
|
// 释放锁 |
||||
|
redisLockUtil.unlock(lockKey, requestId); |
||||
|
} |
||||
|
} |
||||
|
@PostMapping("/exportConsume") |
||||
|
public Result export(@Valid @RequestBody ConsumeDTO dto) { |
||||
|
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key(可按用户/业务区分) |
||||
|
String requestId = UUID.randomUUID().toString(); // 请求 ID(防止误删锁) |
||||
|
long expireTime = 5000; // 锁过期时间(5秒)s |
||||
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
||||
|
String token = request.getHeader("token"); |
||||
|
dto.setToken(token); |
||||
|
try { |
||||
|
return exportService.addExportConsume(dto); |
||||
|
} finally { |
||||
|
// 释放锁 |
||||
|
redisLockUtil.unlock(lockKey, requestId); |
||||
|
} |
||||
|
} |
||||
|
@PostMapping("/exportLive") |
||||
|
public Result export(@Valid @RequestBody LiveDTO dto) { |
||||
|
String lockKey = "export:lock:" + dto.getToken(); |
||||
|
String requestId = UUID.randomUUID().toString(); |
||||
|
long expireTime = 5000; |
||||
|
try { |
||||
|
// 尝试获取锁 |
||||
|
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
||||
|
throw new BusinessException("操作太频繁,请稍后重试"); |
||||
|
} |
||||
|
// 执行业务逻辑 |
||||
|
return exportService.addExportLive(dto); |
||||
|
} finally { |
||||
|
// 释放锁 |
||||
|
redisLockUtil.unlock(lockKey, requestId); |
||||
|
} |
||||
|
} |
||||
|
@PostMapping("/exportFan") |
||||
|
public Result export(@Valid @RequestBody FanDTO dto){ |
||||
|
String lockKey = "export:lock:" + dto.getToken(); |
||||
|
String requestId = UUID.randomUUID().toString(); |
||||
|
long expireTime = 5000; |
||||
|
try { |
||||
|
// 尝试获取锁 |
||||
|
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
||||
|
throw new BusinessException("操作太频繁,请稍后重试"); |
||||
|
} |
||||
|
// 执行业务逻辑 |
||||
|
return exportService.addExportFan(dto); |
||||
|
} finally { |
||||
|
// 释放锁 |
||||
|
redisLockUtil.unlock(lockKey, requestId); |
||||
|
} |
||||
|
} |
||||
|
@PostMapping("/exportArticle") |
||||
|
public Result export(@Valid @RequestBody ArticleDTO dto){ |
||||
|
String lockKey = "export:lock:" + dto.getToken(); |
||||
|
String requestId = UUID.randomUUID().toString(); |
||||
|
long expireTime = 5000; |
||||
|
try { |
||||
|
// 尝试获取锁 |
||||
|
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
||||
|
throw new BusinessException("操作太频繁,请稍后重试"); |
||||
|
} |
||||
|
// 执行业务逻辑 |
||||
|
return exportService.addExportArticle(dto); |
||||
|
} finally { |
||||
|
// 释放锁 |
||||
|
redisLockUtil.unlock(lockKey, requestId); |
||||
|
} |
||||
|
} |
||||
|
@PostMapping("/exportBean") |
||||
|
public Result export(@Valid @RequestBody BeanRechargeDTO dto){ |
||||
|
String lockKey = "export:lock:" + dto.getToken(); |
||||
|
String requestId = UUID.randomUUID().toString(); |
||||
|
long expireTime = 5000; |
||||
|
try { |
||||
|
// 尝试获取锁 |
||||
|
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
||||
|
throw new BusinessException("操作太频繁,请稍后重试"); |
||||
|
} |
||||
|
// 执行业务逻辑 |
||||
|
return exportService.addExportBean(dto); |
||||
|
} finally { |
||||
|
// 释放锁 |
||||
|
redisLockUtil.unlock(lockKey, requestId); |
||||
|
} |
||||
|
} |
||||
|
@PostMapping("/exportol") |
||||
|
public Result exportol(@Valid @RequestBody OnlineDTO dto) throws Exception { |
||||
|
String lockKey = "export:lock:" + dto.getToken(); |
||||
|
String requestId = UUID.randomUUID().toString(); |
||||
|
long expireTime = 5000; |
||||
|
try { |
||||
|
// 尝试获取锁 |
||||
|
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { |
||||
|
throw new BusinessException("操作太频繁,请稍后重试"); |
||||
|
} |
||||
|
// 执行业务逻辑 |
||||
|
return exportService.addExportOnline(dto); |
||||
|
} finally { |
||||
|
// 释放锁 |
||||
|
redisLockUtil.unlock(lockKey, requestId); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -1,9 +1,9 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
import com.example.demo.domain.vo.AdminVo; |
|
||||
import com.example.demo.domain.vo.Result; |
|
||||
import com.example.demo.domain.vo.RoleVo; |
|
||||
import com.example.demo.service.GeneralService; |
|
||||
|
import com.example.demo.domain.vo.coin.AdminVo; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.domain.vo.coin.RoleVo; |
||||
|
import com.example.demo.service.coin.GeneralService; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
import org.springframework.beans.factory.annotation.Autowired; |
@ -0,0 +1,26 @@ |
|||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.coin.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()); |
||||
|
} |
||||
|
} |
@ -1,13 +1,12 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
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.service.MenuService; |
|
||||
|
import com.example.demo.domain.vo.coin.MenuVo; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.domain.vo.coin.RoleVo; |
||||
|
import com.example.demo.service.coin.MenuService; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.stereotype.Controller; |
|
||||
import org.springframework.web.bind.annotation.*; |
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
import java.util.List; |
import java.util.List; |
@ -1,13 +1,12 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
import com.example.demo.Util.JWTUtil; |
import com.example.demo.Util.JWTUtil; |
||||
import com.example.demo.domain.entity.Admin; |
import com.example.demo.domain.entity.Admin; |
||||
import com.example.demo.domain.entity.AdminRole; |
import com.example.demo.domain.entity.AdminRole; |
||||
import com.example.demo.domain.vo.AdminVo; |
|
||||
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 com.example.demo.domain.vo.coin.AdminVo; |
||||
|
import com.example.demo.domain.vo.coin.Page; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.coin.PermissionService; |
||||
import jakarta.servlet.http.HttpServletRequest; |
import jakarta.servlet.http.HttpServletRequest; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
@ -1,16 +1,14 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
|
|
||||
import com.example.demo.domain.entity.Rate; |
import com.example.demo.domain.entity.Rate; |
||||
import com.example.demo.domain.vo.Page; |
|
||||
import com.example.demo.domain.vo.Result; |
|
||||
import com.example.demo.mapper.RateMapper; |
|
||||
import com.example.demo.service.RateService; |
|
||||
|
import com.example.demo.domain.vo.coin.Page; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.coin.RateService; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.util.ObjectUtils; |
import org.springframework.util.ObjectUtils; |
||||
import org.springframework.validation.BindingResult; |
|
||||
import org.springframework.web.bind.annotation.*; |
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
import java.math.BigDecimal; |
import java.math.BigDecimal; |
@ -1,13 +1,11 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
import com.example.demo.Util.JWTUtil; |
import com.example.demo.Util.JWTUtil; |
||||
import com.example.demo.domain.entity.Admin; |
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 com.example.demo.domain.vo.coin.Page; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.domain.vo.coin.RoleVo; |
||||
|
import com.example.demo.service.coin.RoleService; |
||||
import jakarta.servlet.http.HttpServletRequest; |
import jakarta.servlet.http.HttpServletRequest; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
@ -1,11 +1,9 @@ |
|||||
package com.example.demo.controller; |
|
||||
|
package com.example.demo.controller.coin; |
||||
|
|
||||
import com.example.demo.domain.entity.User; |
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.service.ConsumeService; |
|
||||
import com.example.demo.service.UserService; |
|
||||
|
import com.example.demo.domain.vo.coin.GoldUser; |
||||
|
import com.example.demo.domain.vo.coin.Result; |
||||
|
import com.example.demo.service.coin.UserService; |
||||
import lombok.RequiredArgsConstructor; |
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
import org.springframework.beans.factory.annotation.Autowired; |
@ -0,0 +1,37 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanConsumeArticle; |
||||
|
import com.example.demo.domain.vo.bean.BeanConsumeFan; |
||||
|
import jakarta.validation.constraints.NotNull; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName ArticleDTO |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−08-01 17:33 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class ArticleDTO { |
||||
|
private String token; |
||||
|
private String url = ""; |
||||
|
private String fileName = ""; |
||||
|
private Integer sort = 0; |
||||
|
private String field = ""; |
||||
|
private Integer account; |
||||
|
private Integer type = 8; //类型 |
||||
|
private Integer state = 0; //状态 |
||||
|
private String text = ""; //关键词搜索 |
||||
|
private Integer dataNum = 0; |
||||
|
private String deptid = ""; |
||||
|
|
||||
|
@NotNull(message = "page不能为空") |
||||
|
private Integer page = 1; |
||||
|
@NotNull(message = "pageSize不能为空") |
||||
|
private Integer pageSize = 20; |
||||
|
private BeanConsumeArticle beanConsumeArticle; |
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanConsumeArticle; |
||||
|
import com.example.demo.domain.vo.bean.BeanRechargeInfo; |
||||
|
import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; |
||||
|
import jakarta.validation.constraints.NotNull; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName BeanRechargeDTO |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−08-03 09:26 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class BeanRechargeDTO { |
||||
|
private String token; |
||||
|
private String url = ""; |
||||
|
private String fileName = ""; |
||||
|
private Integer sort = 0; |
||||
|
private String field = ""; |
||||
|
private Integer account; |
||||
|
private Integer type = 9; //类型 |
||||
|
private Integer state = 0; //状态 |
||||
|
private String text = ""; //关键词搜索 |
||||
|
private Integer dataNum = 0; |
||||
|
private String deptid = ""; |
||||
|
|
||||
|
@NotNull(message = "page不能为空") |
||||
|
private Integer page = 1; |
||||
|
@NotNull(message = "pageSize不能为空") |
||||
|
private Integer pageSize = 20; |
||||
|
private BeanSystemRechargeInfo beanSystemRechargeInfo; |
||||
|
} |
@ -0,0 +1,37 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanConsumeFan; |
||||
|
import com.example.demo.domain.vo.bean.BeanConsumeLive; |
||||
|
import jakarta.validation.constraints.NotNull; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName FanDTO |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−08-01 15:45 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class FanDTO { |
||||
|
private String token; |
||||
|
private String url = ""; |
||||
|
private String fileName = ""; |
||||
|
private Integer sort = 0; |
||||
|
private String field = ""; |
||||
|
private Integer account; |
||||
|
private Integer type = 7; //类型 |
||||
|
private Integer state = 0; //状态 |
||||
|
private String text = ""; //关键词搜索 |
||||
|
private Integer dataNum = 0; |
||||
|
private String deptid = ""; |
||||
|
|
||||
|
@NotNull(message = "page不能为空") |
||||
|
private Integer page = 1; |
||||
|
@NotNull(message = "pageSize不能为空") |
||||
|
private Integer pageSize = 20; |
||||
|
private BeanConsumeFan beanConsumeFan; |
||||
|
} |
@ -0,0 +1,37 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanConsumeLive; |
||||
|
import com.example.demo.domain.vo.coin.ConsumeUser; |
||||
|
import jakarta.validation.constraints.NotNull; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName LiveDTO |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−07-31 17:28 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class LiveDTO { |
||||
|
private String token; |
||||
|
private String url = ""; |
||||
|
private String fileName = ""; |
||||
|
private Integer sort = 0; |
||||
|
private String field = ""; |
||||
|
private Integer account; |
||||
|
private Integer type = 6; //类型 |
||||
|
private Integer state = 0; //状态 |
||||
|
private String text = ""; //关键词搜索 |
||||
|
private Integer dataNum = 0; |
||||
|
private String deptid = ""; |
||||
|
|
||||
|
@NotNull(message = "page不能为空") |
||||
|
private Integer page = 1; |
||||
|
@NotNull(message = "pageSize不能为空") |
||||
|
private Integer pageSize = 20; |
||||
|
private BeanConsumeLive beanConsumeLive; |
||||
|
} |
@ -0,0 +1,36 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; |
||||
|
import jakarta.validation.constraints.NotNull; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName OnlineDTO |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−08-03 11:51 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class OnlineDTO { |
||||
|
private String token; |
||||
|
private String url = ""; |
||||
|
private String fileName = ""; |
||||
|
private Integer sort = 0; |
||||
|
private String field = ""; |
||||
|
private Integer account; |
||||
|
private Integer type = 10; //类型 |
||||
|
private Integer state = 0; //状态 |
||||
|
private String text = ""; //关键词搜索 |
||||
|
private Integer dataNum = 0; |
||||
|
private String deptid = ""; |
||||
|
|
||||
|
@NotNull(message = "page不能为空") |
||||
|
private Integer page = 1; |
||||
|
@NotNull(message = "pageSize不能为空") |
||||
|
private Integer pageSize = 20; |
||||
|
private BeanOnlineRechargeInfo beanOnlineRechargeInfo; |
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
package com.example.demo.domain.entity; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName Export |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−07-26 16:17 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class Market { |
||||
|
private Integer id; |
||||
|
private String name; |
||||
|
private Integer parentId; |
||||
|
private Date createTime; |
||||
|
private String treelist; |
||||
|
private Integer type; |
||||
|
|
||||
|
private List<Market> children; |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -1,32 +0,0 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
|
||||
import com.example.demo.domain.entity.User; |
|
||||
import lombok.Data; |
|
||||
import lombok.NoArgsConstructor; |
|
||||
|
|
||||
/** |
|
||||
* @program: GOLD |
|
||||
* @ClassName Page |
|
||||
* @description: |
|
||||
* @author: huangqizhen |
|
||||
* @create: 2025−06-23 16:23 |
|
||||
* @Version 1.0 |
|
||||
**/ |
|
||||
@Data |
|
||||
@NoArgsConstructor |
|
||||
public class Page { |
|
||||
private static final long serialVersionUID = 1L; |
|
||||
|
|
||||
private String token; |
|
||||
private Integer pageNum; |
|
||||
private Integer pageSize; |
|
||||
private GoldDetail goldDetail; |
|
||||
private ConsumeUser consumeUser; |
|
||||
private User user; |
|
||||
private RefundUser refundUser; |
|
||||
private Permission permission; |
|
||||
private RechargeAudit rechargeAudit; |
|
||||
private RefundAudit refundAudit; |
|
||||
private RechargeUser rechargeUser; |
|
||||
private RoleVo roleVo; |
|
||||
} |
|
@ -0,0 +1,49 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanAuditInfo |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−08-01 11:33 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class BeanAuditInfo { |
||||
|
private Long id; // id |
||||
|
private Integer jwcode; // 精网号 |
||||
|
private String name; // 姓名 |
||||
|
private String market; // 所属地区 |
||||
|
private Integer freeBean; // 免费豆 |
||||
|
private Integer permanentBean; // 永久豆 |
||||
|
private String remark; // 备注 |
||||
|
private String submitName; // 提交人名称 |
||||
|
private String auditName; // 审核人名称 |
||||
|
private String reason; // 审核意见 |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date createTime; //创建时间 |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date auditTime; //审核时间 |
||||
|
private String status; // 状态 |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date createStartTime; // 开始时间 |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date createEndTime; // 结束时间 |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date auditStartTime; // 开始时间 |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date auditEndTime; // 结束时间 |
||||
|
private String sortField; // 排序字段 |
||||
|
private String sortOrder; // 排序顺序 |
||||
|
} |
@ -0,0 +1,27 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanConsume |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−08-02 11:32 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class BeanConsume { |
||||
|
private Integer id;//id |
||||
|
private String jwcode; // 精网号 |
||||
|
private Integer total; //总金豆 |
||||
|
private Integer freeBean; // 免费豆 |
||||
|
private Integer permanentBean; // 永久豆 |
||||
|
private String remark; //备注 |
||||
|
private Integer money; // 金额 |
||||
|
private String adminName; // 管理员名称 |
||||
|
} |
@ -0,0 +1,63 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelIgnore; |
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanConsumeArticle |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−07-31 17:05 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@JsonIgnoreProperties(ignoreUnknown = true) |
||||
|
public class BeanConsumeArticle { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
@ExcelProperty("ID") |
||||
|
private Integer id; |
||||
|
@ExcelProperty("姓名") |
||||
|
private String name; //姓名 |
||||
|
@ExcelProperty("精网号") |
||||
|
private Integer jwcode; //精网号 |
||||
|
@ExcelProperty("地区/分部") |
||||
|
private String dept; //地区/分部 |
||||
|
@ExcelProperty("类型") |
||||
|
private String type; //类型source_type 9、10打赏,11付费 |
||||
|
@ExcelIgnore |
||||
|
private Integer payMode; // 0 打赏 1 付费 2 其他 |
||||
|
@ExcelProperty("金豆数量") |
||||
|
private String beanNum; //金豆数量 |
||||
|
@ExcelProperty("付费金豆数量") |
||||
|
private Integer buyBean; //付费金豆 |
||||
|
@ExcelProperty("免费金豆数量") |
||||
|
private Integer freeBean; //免费金豆 |
||||
|
private Integer articleId; //文章/视频ID |
||||
|
@ExcelProperty("文章/视频标题") |
||||
|
private String articleName; //文章/视频标题(source_name) |
||||
|
@ExcelProperty("作者") |
||||
|
private String author; //作者 |
||||
|
@ExcelProperty("支付类型") |
||||
|
private String payType; //支付类型 1-5:直播 7铁粉 8文章 |
||||
|
@ExcelIgnore |
||||
|
private String sortField; //排序字段 |
||||
|
@ExcelIgnore |
||||
|
private String sortOrder; //排序顺序 |
||||
|
@ExcelProperty("付费时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date consumeTime; // 付费时间 (时间戳转化) |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date startTime; // 开始时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date endTime; // 结束时间 |
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelIgnore; |
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanConsumeFan |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−07-31 11:30 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@JsonIgnoreProperties(ignoreUnknown = true) |
||||
|
public class BeanConsumeFan { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
@ExcelProperty("ID") |
||||
|
private Integer id; |
||||
|
@ExcelProperty("姓名") |
||||
|
private String name; //姓名 |
||||
|
@ExcelProperty("精网号") |
||||
|
private Integer jwcode; //精网号 |
||||
|
@ExcelProperty("地区/分部") |
||||
|
private String dept; //地区/分部 |
||||
|
@ExcelProperty("金豆数量") |
||||
|
private String beanNum; //金豆数量 |
||||
|
@ExcelProperty("免费金豆") |
||||
|
private String freeBean; //免费金豆 |
||||
|
@ExcelProperty("付费金豆") |
||||
|
private String buyBean; //付费金豆 |
||||
|
@ExcelProperty("频道名称") |
||||
|
private String channel; //频道名称(source_name) |
||||
|
@ExcelProperty("消费方式") |
||||
|
private String type; //类型source_type 单月,连续包月 |
||||
|
@ExcelProperty("支付方式") |
||||
|
private Integer payType; //支付方式(直播:12345,铁粉:7,文章:8) |
||||
|
@ExcelIgnore |
||||
|
private String sortField; //排序字段 |
||||
|
@ExcelIgnore |
||||
|
private String sortOrder; //排序顺序 |
||||
|
@ExcelProperty("消费时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date consumeTime; // 消费时间 (时间戳转化) |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
@ExcelIgnore |
||||
|
private Date startTime; // 开始时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date endTime; // 结束时间 |
||||
|
} |
@ -0,0 +1,24 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanConsumeGold |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−07-30 16:12 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@JsonIgnoreProperties(ignoreUnknown = true) |
||||
|
public class BeanConsumeGold { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
private Integer sumBean ; //总金豆 |
||||
|
private Integer permanentBean ; //付费金豆 |
||||
|
private Integer freeBean ; //免费金豆 |
||||
|
private Integer totalNum; //总条数 |
||||
|
} |
@ -0,0 +1,69 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelIgnore; |
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanConsume |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−07-30 10:41 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@JsonIgnoreProperties(ignoreUnknown = true) |
||||
|
public class BeanConsumeLive { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
@ExcelProperty("ID") |
||||
|
private Integer id; |
||||
|
@ExcelProperty("姓名") |
||||
|
private String name; //姓名 |
||||
|
@ExcelProperty("精网号") |
||||
|
private Integer jwcode; //精网号 |
||||
|
@ExcelProperty("地区/分部") |
||||
|
private String dept; //地区/分部 |
||||
|
//类型 直播: 1. 发礼物2. 发红包3. 发福袋4. 付费直播5. 加入粉丝团6. 发弹幕 |
||||
|
//文章: 1. 打赏2. 付费 |
||||
|
@ExcelProperty("类型") |
||||
|
|
||||
|
private String type; //类型 |
||||
|
@ExcelProperty("礼物名称") |
||||
|
private String gift; //礼物名称 |
||||
|
@ExcelProperty("是否为背包礼物") |
||||
|
private String isBackpack; |
||||
|
@ExcelProperty("金豆数量") |
||||
|
private String beanNum; //金豆数量 |
||||
|
@ExcelProperty("频道名称") |
||||
|
private String liveChannel; //频道名称(截取content) |
||||
|
@ExcelProperty("免费金豆") |
||||
|
private String freeBean; //免费金豆 |
||||
|
@ExcelProperty("付费金豆") |
||||
|
private String buyBean; //付费金豆 |
||||
|
@ExcelProperty("直播名称") |
||||
|
private String liveName; //直播间名称 |
||||
|
@ExcelProperty("消费时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date consumeTime; // 消费时间 (时间戳转化) |
||||
|
@ExcelProperty("支付方式") |
||||
|
private Integer payType; //支付方式(直播:12345,铁粉:7,文章:8) |
||||
|
@ExcelIgnore |
||||
|
private String sortField; //排序字段 |
||||
|
@ExcelIgnore |
||||
|
private String sortOrder; //排序顺序 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date startTime; // 开始时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date endTime; // 结束时间 |
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelIgnore; |
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanRecharge |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-30 15:11 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class BeanOnlineRechargeInfo { |
||||
|
|
||||
|
|
||||
|
private Long id;//id |
||||
|
@ExcelProperty("精网号") |
||||
|
private Integer jwcode; // 精网号 |
||||
|
@ExcelProperty("客户姓名") |
||||
|
private String name; // 姓名 |
||||
|
@ExcelProperty("所属地区") |
||||
|
private String market; // 所属地区 |
||||
|
@ExcelProperty("金额") |
||||
|
private Double money; // 金额 |
||||
|
@ExcelProperty("数量") |
||||
|
private Integer num; // 数量 |
||||
|
@ExcelProperty("订单号") |
||||
|
private String orderNo; // 订单号 |
||||
|
@ExcelProperty("充值平台 PC:1 手机:2") |
||||
|
private String platform; // 充值平台 |
||||
|
@ExcelProperty("充值时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date rechargeTime; // 充值时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date startTime; // 开始时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date endTime; // 结束时间 |
||||
|
@ExcelIgnore |
||||
|
private List<String> markets; // 地区列表 |
||||
|
@ExcelIgnore |
||||
|
private String sortField; //排序字段 |
||||
|
@ExcelIgnore |
||||
|
private String sortOrder; //排序顺序 |
||||
|
} |
@ -0,0 +1,27 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanRecharge |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-29 16:50 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class BeanRecharge { |
||||
|
private Integer id;//id |
||||
|
private Integer jwcode; // 精网号 |
||||
|
private Integer freeBean; // 免费豆 |
||||
|
private Integer permanentBean; // 永久豆 |
||||
|
private String remark; //备注 |
||||
|
private Integer money; // 金额 |
||||
|
private String adminName; // 管理员名称 |
||||
|
} |
@ -0,0 +1,62 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelIgnore; |
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanRecharge |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-30 15:11 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class BeanRechargeInfo { |
||||
|
|
||||
|
|
||||
|
private Long id;//id |
||||
|
@ExcelProperty("精网号") |
||||
|
private Integer jwcode; // 精网号 |
||||
|
@ExcelProperty("客户姓名") |
||||
|
private String name; // 姓名 |
||||
|
@ExcelProperty("所属地区") |
||||
|
private String market; // 所属地区 |
||||
|
@ExcelProperty("免费金豆") |
||||
|
private Integer freeBean; // 免费豆 |
||||
|
@ExcelProperty("付费金豆") |
||||
|
private Integer permanentBean; // 永久豆 |
||||
|
@ExcelProperty("金额") |
||||
|
private Double money; // 金额 |
||||
|
@ExcelProperty("数量") |
||||
|
private Integer num; // 数量 |
||||
|
@ExcelProperty("订单号") |
||||
|
private String orderNo; // 订单号 |
||||
|
@ExcelProperty("充值平台 PC:1 手机:2") |
||||
|
private String platform; // 充值平台 |
||||
|
@ExcelProperty("充值时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date rechargeTime; // 充值时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date startTime; // 开始时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date endTime; // 结束时间 |
||||
|
@ExcelIgnore |
||||
|
private List<String> markets; // 地区列表 |
||||
|
@ExcelIgnore |
||||
|
private String sortField; //排序字段 |
||||
|
@ExcelIgnore |
||||
|
private String sortOrder; //排序顺序 |
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelIgnore; |
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanRecharge |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-30 15:11 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class BeanSystemRechargeInfo { |
||||
|
|
||||
|
|
||||
|
private Long id;//id |
||||
|
@ExcelProperty("精网号") |
||||
|
private Integer jwcode; // 精网号 |
||||
|
@ExcelProperty("客户姓名") |
||||
|
private String name; // 姓名 |
||||
|
@ExcelProperty("所属地区") |
||||
|
private String market; // 所属地区 |
||||
|
@ExcelProperty("免费金豆") |
||||
|
private Integer freeBean; // 免费豆 |
||||
|
@ExcelProperty("付费金豆") |
||||
|
private Integer permanentBean; // 永久豆 |
||||
|
@ExcelProperty("金额") |
||||
|
private Double money; // 金额 |
||||
|
@ExcelProperty("备注") |
||||
|
private String remark; //备注 |
||||
|
@ExcelProperty("充值时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date rechargeTime; // 充值时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date startTime; // 开始时间 |
||||
|
@ExcelIgnore |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
||||
|
private Date endTime; // 结束时间 |
||||
|
@ExcelIgnore |
||||
|
private List<String> markets; // 地区列表 |
||||
|
@ExcelIgnore |
||||
|
private String sortField; //排序字段 |
||||
|
@ExcelIgnore |
||||
|
private String sortOrder; //排序顺序 |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanUser |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−08-01 10:40 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class BeanUser { |
||||
|
private Integer id; |
||||
|
private String name; //姓名 |
||||
|
private Integer jwcode; //精网号 |
||||
|
private String dept; //分部 |
||||
|
private Integer beanNum; //金豆数量 |
||||
|
private Integer buyBean; //付费金豆 |
||||
|
private Integer freeBean; //免费金豆 |
||||
|
private Integer totalCostBean; //历史消费 |
||||
|
private String sortField; //排序字段 |
||||
|
private String sortOrder; //排序顺序 |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import com.alibaba.excel.annotation.ExcelProperty; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanUser |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-29 17:06 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class BeanUserCard { |
||||
|
|
||||
|
private String name; // 客户姓名 |
||||
|
private Integer jwcode; // 精网号 |
||||
|
private String market; // 所属地区 |
||||
|
private Integer sumBean; // 所有金豆 |
||||
|
private Integer freeBean; // 免费豆 |
||||
|
private Integer permanentBean; // 永久豆 |
||||
|
private Integer consumeSum; // 消费金额 |
||||
|
} |
@ -0,0 +1,25 @@ |
|||||
|
package com.example.demo.domain.vo.bean; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName GoldBean |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-31 13:10 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class GoldBean { |
||||
|
private Integer freeBean; // 免费豆 |
||||
|
private Integer permanentBean; // 永久豆 |
||||
|
private Double money; // 金额 |
||||
|
private Integer beanNum; // 豆数量 |
||||
|
private Integer num; // 订单数 |
||||
|
} |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import com.fasterxml.jackson.annotation.JsonIgnore; |
import com.fasterxml.jackson.annotation.JsonIgnore; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.Data; |
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
import lombok.NoArgsConstructor; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
import lombok.Data; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
import lombok.Data; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.Data; |
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
import lombok.NoArgsConstructor; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
import lombok.Data; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.alibaba.excel.annotation.ExcelProperty; |
import com.alibaba.excel.annotation.ExcelProperty; |
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
import lombok.Data; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
import lombok.Data; |
@ -0,0 +1,43 @@ |
|||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
|
import com.example.demo.domain.entity.User; |
||||
|
import com.example.demo.domain.vo.bean.*; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName Page |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−06-23 16:23 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class Page { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
private String token; |
||||
|
private Integer pageNum; |
||||
|
private Integer pageSize; |
||||
|
private GoldDetail goldDetail; |
||||
|
private ConsumeUser consumeUser; |
||||
|
private User user; |
||||
|
private RefundUser refundUser; |
||||
|
private Permission permission; |
||||
|
private RechargeAudit rechargeAudit; |
||||
|
private RefundAudit refundAudit; |
||||
|
private RechargeUser rechargeUser; |
||||
|
private RoleVo roleVo; |
||||
|
private Integer payType; //支付方式(直播:12345,铁粉:7,文章:8) |
||||
|
private BeanConsumeLive beanConsumeLive; //直播金豆消费 |
||||
|
private BeanConsumeFan beanConsumeFan; //铁粉金豆消费 |
||||
|
private BeanConsumeArticle beanConsumeArticle; //文章金豆消费 |
||||
|
private BeanSystemRechargeInfo beanSystemRechargeInfo; //金豆充值信息 |
||||
|
private BeanOnlineRechargeInfo beanOnlineRechargeInfo; //金豆充值信息 |
||||
|
private BeanConsumeGold beanConsumeGold; //金豆消费合计数 |
||||
|
private BeanUser beanUser; //客户金豆余额明细 |
||||
|
private BeanUserCard beanUserCard; //客户金豆卡片 |
||||
|
private BeanAuditInfo beanAuditInfo; //金豆审核信息 |
||||
|
} |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
import lombok.Data; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.Data; |
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
import lombok.NoArgsConstructor; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import lombok.Data; |
import lombok.Data; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.example.demo.Util.BusinessException; |
import com.example.demo.Util.BusinessException; |
||||
import com.fasterxml.jackson.core.JsonProcessingException; |
import com.fasterxml.jackson.core.JsonProcessingException; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.Data; |
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
import lombok.NoArgsConstructor; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import lombok.Data; |
import lombok.Data; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.Data; |
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
import lombok.NoArgsConstructor; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
import lombok.Data; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.domain.vo; |
|
||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
import lombok.AllArgsConstructor; |
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
import lombok.Data; |
@ -0,0 +1,40 @@ |
|||||
|
package com.example.demo.mapper.bean; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.*; |
||||
|
import com.example.demo.domain.vo.coin.RechargeAudit; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanConsumeMapper.xml |
||||
|
* @description: |
||||
|
* @author: Ethan |
||||
|
* @create: 2025−07-30 11:56 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Mapper |
||||
|
public interface BeanConsumeMapper { |
||||
|
//获取消费用户分部 |
||||
|
List<String> getDept(); |
||||
|
//筛选查询直播消费 |
||||
|
List<BeanConsumeLive> selectLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive); |
||||
|
//筛选查询铁粉消费 |
||||
|
List<BeanConsumeFan> selectFanBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan); |
||||
|
//筛选查询文章消费 |
||||
|
List<BeanConsumeArticle> selectArticleBy(@Param("beanConsumeArticle") BeanConsumeArticle beanConsumeArticle); |
||||
|
//查询金豆直播消费金额 |
||||
|
BeanConsumeGold selectSumLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive); |
||||
|
//查询金豆铁粉消费金额 |
||||
|
BeanConsumeGold selectSumFansBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan); |
||||
|
//查询金豆文章消费金额 |
||||
|
BeanConsumeGold selectSumArticleBy(@Param("beanConsumeArticle") BeanConsumeArticle beanConsumeArticle); |
||||
|
//查询直播礼物 |
||||
|
List<String> getLiveGift(); |
||||
|
//查询直播全部频道 |
||||
|
List<String> getLiveChannel(); |
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,25 @@ |
|||||
|
package com.example.demo.mapper.bean; |
||||
|
|
||||
|
|
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanRechargeMapper |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-30 15:43 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Mapper |
||||
|
public interface BeanRechargeMapper2 { |
||||
|
|
||||
|
List<BeanSystemRechargeInfo> selectBySystem(BeanSystemRechargeInfo beanSystemRechargeInfo); |
||||
|
|
||||
|
List<String> systemMarket(); |
||||
|
} |
@ -0,0 +1,31 @@ |
|||||
|
package com.example.demo.mapper.bean; |
||||
|
|
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanUser; |
||||
|
import com.example.demo.domain.vo.bean.BeanUserCard; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanUserMapper |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-29 17:31 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Mapper |
||||
|
public interface BeanUserMapper { |
||||
|
//查询客户金豆余额 |
||||
|
List<BeanUser> selectUserBy(@Param("beanUser") BeanUser beanUser); |
||||
|
|
||||
|
//查询用户卡片 |
||||
|
BeanUserCard userCard(@Param("jwcode")String jwcode); |
||||
|
//查询客户金豆余额合计 |
||||
|
BeanUserCard SumUserBy(@Param("beanUser")BeanUser beanUser); |
||||
|
//查询客户分部 |
||||
|
List<String> getDept(); |
||||
|
} |
@ -1,4 +1,4 @@ |
|||||
package com.example.demo.mapper; |
|
||||
|
package com.example.demo.mapper.coin; |
||||
|
|
||||
import com.example.demo.domain.entity.Admin; |
import com.example.demo.domain.entity.Admin; |
||||
import org.apache.ibatis.annotations.Mapper; |
import org.apache.ibatis.annotations.Mapper; |
@ -1,6 +1,6 @@ |
|||||
package com.example.demo.mapper; |
|
||||
|
package com.example.demo.mapper.coin; |
||||
|
|
||||
import com.example.demo.domain.vo.AiEmotionExportRecordVO; |
|
||||
|
import com.example.demo.domain.vo.coin.AiEmotionExportRecordVO; |
||||
import org.apache.ibatis.annotations.Mapper; |
import org.apache.ibatis.annotations.Mapper; |
||||
import org.apache.ibatis.annotations.Param; |
import org.apache.ibatis.annotations.Param; |
||||
|
|
@ -1,10 +1,9 @@ |
|||||
package com.example.demo.mapper; |
|
||||
|
package com.example.demo.mapper.coin; |
||||
|
|
||||
import com.example.demo.domain.entity.User; |
import com.example.demo.domain.entity.User; |
||||
import com.example.demo.domain.entity.UserGoldRecord; |
import com.example.demo.domain.entity.UserGoldRecord; |
||||
import com.example.demo.domain.vo.RechargeAudit; |
|
||||
import com.example.demo.domain.vo.RefundAudit; |
|
||||
import com.github.pagehelper.PageInfo; |
|
||||
|
import com.example.demo.domain.vo.coin.RechargeAudit; |
||||
|
import com.example.demo.domain.vo.coin.RefundAudit; |
||||
import org.apache.ibatis.annotations.Mapper; |
import org.apache.ibatis.annotations.Mapper; |
||||
import org.apache.ibatis.annotations.Param; |
import org.apache.ibatis.annotations.Param; |
||||
|
|
@ -0,0 +1,31 @@ |
|||||
|
package com.example.demo.mapper.coin; |
||||
|
|
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanAuditInfo; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanAuditMapper |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−08-01 11:44 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Mapper |
||||
|
public interface BeanAuditMapper { |
||||
|
//查找审核信息 |
||||
|
List<BeanAuditInfo> selectBy(BeanAuditInfo beanAuditInfo); |
||||
|
|
||||
|
//根据id查询审核信息 |
||||
|
BeanAuditInfo selectById(Long id); |
||||
|
|
||||
|
//根据id更新状态为1 |
||||
|
void updateStatus1(BeanAuditInfo beanAuditInfo); |
||||
|
|
||||
|
//根据id更新状态为2 |
||||
|
void updateStatus2(BeanAuditInfo beanAuditInfo); |
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
package com.example.demo.mapper.coin; |
||||
|
|
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanRecharge; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
/** |
||||
|
* @program: gold-java |
||||
|
* @ClassName BeanRechargeMapper |
||||
|
* @description: |
||||
|
* @author: Double |
||||
|
* @create: 2025−07-30 15:43 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
|
||||
|
@Mapper |
||||
|
public interface BeanRechargeMapper1 { |
||||
|
|
||||
|
int add(BeanRecharge recharge); |
||||
|
} |
@ -1,7 +1,7 @@ |
|||||
package com.example.demo.mapper; |
|
||||
|
package com.example.demo.mapper.coin; |
||||
|
|
||||
import com.example.demo.domain.entity.UserGoldRecord; |
import com.example.demo.domain.entity.UserGoldRecord; |
||||
import com.example.demo.domain.vo.ConsumeUser; |
|
||||
|
import com.example.demo.domain.vo.coin.ConsumeUser; |
||||
import org.apache.ibatis.annotations.Mapper; |
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
import java.util.List; |
import java.util.List; |
Some files were not shown because too many files changed in this diff
Write
Preview
Loading…
Cancel
Save
Reference in new issue