4 Commits

  1. 5
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java
  2. 3
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java
  3. 66
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java
  4. 2
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java
  5. 8
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserServiceImpl.java
  6. 19
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java
  7. 9
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java
  8. 35
      lottery-system/lottery-service/src/main/resources/application-dev.yml
  9. 36
      lottery-system/lottery-service/src/main/resources/application-prod.yml
  10. 73
      lottery-system/lottery-service/src/main/resources/application.yml

5
lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java

@ -86,7 +86,7 @@ public class AdminGradeController {
return Result.failure("等级已存在,新增失败");
}
if (!adminGradeService.saveGrade(gradeDto)) return Result.failure("新增失败");
if (!adminGradeService.saveGrade(gradeDto)) return Result.failure("每轮抽取的人数不能大于总数,");
return Result.success();
}
@ -109,8 +109,9 @@ public class AdminGradeController {
Grade grade = ConvertBeanUtil.convert(gradeDto, Grade.class);
grade.setUpdateTime(new Date());
grade.setRemainNum(gradeDto.getAmount());
if (!adminGradeService.updateById(grade)) return Result.failure("修改失败");
if (!adminGradeService.updateGradeById(gradeDto)) return Result.failure("每轮抽取人数不能大于总数");
return Result.success();
}

3
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java

@ -35,6 +35,9 @@ public interface AdminGradeService extends IService<Grade> {
boolean removeGradeById(Long id);
boolean updateGradeById(GradeDto gradeDto);
// boolean updateGradeById(GradeDto GradeDto);

66
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java

@ -92,6 +92,9 @@ public class AdminGradeServiceImpl extends ServiceImpl<AdminGradeMapper, Grade>
@Override
public boolean saveGrade(GradeDto gradeDto) {
if(gradeDto.getPerWin() > gradeDto.getAmount()){
return false;
}
Grade grade = ConvertBeanUtil.convert(gradeDto, Grade.class);
grade.setRemainNum(gradeDto.getAmount());
@ -107,8 +110,9 @@ public class AdminGradeServiceImpl extends ServiceImpl<AdminGradeMapper, Grade>
@Override
@Transactional
public boolean removeGradeById(Long id) {
//把关联的win_record表删了
// 1. 查询所有关联的 prizeId可能多个
// 把关联的win_record表删了
// 1. 查询所有关联的 prizeId可能多个
List<Prize> prizes = adminPrizeMapper.selectList(
new LambdaQueryWrapper<Prize>()
.eq(Prize::getGradeId, id)
@ -144,18 +148,52 @@ public class AdminGradeServiceImpl extends ServiceImpl<AdminGradeMapper, Grade>
return true;
}
// @Autowired
// private AdminGradeMapper adminGradeMapper;
@Override
public boolean updateGradeById(GradeDto gradeDto) {
// 先查询出原始数据
Grade originalGrade = this.getById(gradeDto.getId());
if (originalGrade == null) {
throw new RuntimeException("等级不存在: " + gradeDto.getId());
}
LambdaUpdateWrapper<Grade> gradeLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
gradeLambdaUpdateWrapper.eq(Grade::getId, gradeDto.getId());
// 处理普通字段
if (gradeDto.getGradeName() != null) {
gradeLambdaUpdateWrapper.set(Grade::getGradeName, gradeDto.getGradeName());
}
if (gradeDto.getSort() != null) {
gradeLambdaUpdateWrapper.set(Grade::getSort, gradeDto.getSort());
}
if (gradeDto.getPerWin() != null) {
if(gradeDto.getPerWin() > gradeDto.getAmount()){
return false;
}
gradeLambdaUpdateWrapper.set(Grade::getPerWin, gradeDto.getPerWin());
}
// 特殊处理amount字段
if (gradeDto.getAmount() != null) {
if(gradeDto.getPerWin() > gradeDto.getAmount()){
return false;
}
Integer newTotalAmount = gradeDto.getAmount();
Integer originalTotalAmount = originalGrade.getAmount();
Integer originalRemaining = originalGrade.getRemainNum();
// 计算新的剩余量新总量 - (原总量 - 原剩余量)
// newRemaining = newTotal - (originalTotal - originalRemaining)
Integer newRemaining = newTotalAmount - (originalTotalAmount - originalRemaining);
// 确保剩余量不会超过总量也不会小于0
newRemaining = Math.max(0, Math.min(newRemaining, newTotalAmount));
gradeLambdaUpdateWrapper
.set(Grade::getAmount, newTotalAmount)
.set(Grade::getRemainNum, newRemaining);
}
return this.update(gradeLambdaUpdateWrapper);
}
// @Override
// public boolean updateGrade(GradeDto gradeDto) {
//
// Grade grade = ConvertBeanUtil.convert(gradeDto,Grade.class);
// grade.setUpdateTime(new Date());
// if (!(adminGradeMapper.updateById(grade) > 0)) {
// return false;
// }
// return true;
// }
}

2
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java

@ -295,7 +295,7 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
@Override
public boolean removePrizeById(Long id) {
//把关联的win_record表删了
//把关联的win_record表删了
LambdaUpdateWrapper<WinnerRecord> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(WinnerRecord::getPrizeId, id).set(WinnerRecord::getIsDel, 1);
adminWinMapper.update(null, updateWrapper);

8
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserServiceImpl.java

@ -179,9 +179,9 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
try {
// 1. 解析Excel
List<UserImportDto> userDtos = EasyExcel.read(file.getInputStream())
.head(UserImportDto.class)
.head(UserImportDto.class) // 映射到 DTO 对象
.sheet()
.doReadSync();
.doReadSync(); // 同步读取所有数据适用于读取量小的场景
// 2. 获取已存在的精网号及其删除状态
Map<String, Integer> existingUserMap = adminUserMapper.selectAllUserCodesWithDelStatus()
@ -192,8 +192,8 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
(existing, replacement) -> existing
));
List<User> usersToAdd = new ArrayList<>();
List<User> usersToUpdate = new ArrayList<>();
List<User> usersToAdd = new ArrayList<>(); //新增用户列表
List<User> usersToUpdate = new ArrayList<>(); //待更新的用户列表
Set<String> processedCodes = new HashSet<>(); // 用于当前文件内的去重
for (int i = 0; i < userDtos.size(); i++) {

19
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java

@ -135,11 +135,12 @@ public class FundingServiceImpl implements IFundingService {
Integer two = fundingActivityDto.getMarketTwo();
Integer activityId = activity.getId();
Integer time = 0;
Integer time = 15;
Integer addTotal = 0;
fundingMapper.addDate(time,one, addTotal, activityId);
fundingMapper.addDate(time,two, addTotal, activityId);
return Result.success("添加活动成功");
}
@ -299,12 +300,24 @@ public class FundingServiceImpl implements IFundingService {
if(marketCount ==null || marketCount == 0){
return Result.failure("所要设置市场不存在");
}
//查询当前总的助力数
Integer total = fundingMapper.searchMarketTotal(activityId,stock);
if(total + addTotal > 1500){
if(total == null ){
total = 0;
}
//市场二的虚拟次数
Integer markerTwoVirtual = fundingMapper.searchVirtual(activityId, stock);
if(markerTwoVirtual == null ){
markerTwoVirtual = 0;
}
//查询当前的虚拟
Integer virtual = fundingMapper.searchVirtual(activityId, stock);
if(total + addTotal+markerTwoVirtual > 1500){
return Result.failure("所在市场助力值最大1500");
}
if(total + addTotal < 0){
if(total + addTotal + markerTwoVirtual< 0){
return Result.failure("所设置市场助力值不能小于0");
}

9
lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java

@ -201,6 +201,15 @@ public class UserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, UserDe
markUsersAsWinners(supplementWinners, startLotteryDto);
}
//如果抽奖人数没了
if (winners.isEmpty()) {
boolean hasNextRound = false;
LotteryVo lotteryVo = new LotteryVo();
lotteryVo.setData(winners);
lotteryVo.setRound(hasNextRound);
return lotteryVo;
}
//剩余人数
int lastNum = startLotteryDto.getRemainNum() - winners.size();
updateRemainNum(grade, lastNum);

35
lottery-system/lottery-service/src/main/resources/application-dev.yml

@ -0,0 +1,35 @@
spring:
config:
activate:
on-profile: dev
# ========== 数据源配置 (MySQL) ==========
datasource:
url: jdbc:mysql://39.101.133.168:3306/link?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: link
password: tEhdERkaGprEA7nT
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 20 # 默认一般是 10,根据并发量调整
connection-timeout: 30000 # 连接超时时间(毫秒),默认 30s
idle-timeout: 600000 # 空闲连接超时时间(默认 10 分钟)
max-lifetime: 1800000 # 连接最大生命周期(默认 30 分钟)
leak-detection-threshold: 5000 # 连接泄漏检测(毫秒,建议 5s)
# ========== Redis 配置 ==========
redis:
host: 39.98.127.73
port: 7001
password: 2TOVfFeJ0pyi9Wtj
database: 1 # 默认DB索引
jedis:
pool:
max-active: 100 # 最大连接数
max-wait: 300 # 最大等待时间
max-idle: 20 # 最大空闲连接
min-idle: 10 # 最小空闲连接

36
lottery-system/lottery-service/src/main/resources/application-prod.yml

@ -0,0 +1,36 @@
spring:
config:
activate:
on-profile: prod
# ========== 数据源配置 (MySQL) ==========
datasource:
url: jdbc:mysql://18.143.76.3:3306/activty?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: activty
password: LnAcwpp5ayps5xnc
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 20 # 默认一般是 10,根据并发量调整
connection-timeout: 30000 # 连接超时时间(毫秒),默认 30s
idle-timeout: 600000 # 空闲连接超时时间(默认 10 分钟)
max-lifetime: 1800000 # 连接最大生命周期(默认 30 分钟)
leak-detection-threshold: 5000 # 连接泄漏检测(毫秒,建议 5s)
# ========== Redis 配置 ==========
redis:
host: 18.143.76.3
port: 10703
password: Ngc0FYUTA6h3wC5J
database: 8 # 默认DB索引
jedis:
pool:
max-active: 100 # 最大连接数
max-wait: 300 # 最大等待时间
max-idle: 20 # 最大空闲连接
min-idle: 10 # 最小空闲连接

73
lottery-system/lottery-service/src/main/resources/application.yml

@ -1,43 +1,14 @@
server:
port: 12699 # 服务端口
forward-headers-strategy: native # 全局生效
spring:
# ========== 数据源配置 (MySQL) ==========
datasource:
url: jdbc:mysql://39.101.133.168:3306/link?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: link
password: tEhdERkaGprEA7nT
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 20 # 默认一般是 10,根据并发量调整
connection-timeout: 30000 # 连接超时时间(毫秒),默认 30s
idle-timeout: 600000 # 空闲连接超时时间(默认 10 分钟)
max-lifetime: 1800000 # 连接最大生命周期(默认 30 分钟)
leak-detection-threshold: 5000 # 连接泄漏检测(毫秒,建议 5s)
# ========== Redis 配置 ==========
redis:
host: 39.98.127.73
port: 7001
password: 2TOVfFeJ0pyi9Wtj
database: 1 # 默认DB索引
jedis:
pool:
max-active: 100 # 最大连接数
max-wait: 300 # 最大等待时间
max-idle: 20 # 最大空闲连接
min-idle: 10 # 最小空闲连接
# ========== MyBatis 配置(如果使用MyBatis代替JPA) ==========
mybatis:
mapper-locations: classpath:mapper/*.xml # XML映射文件路径
type-aliases-package: com.lottery.entity # 实体类包路径
configuration:
map-underscore-to-camel-case: true # 开启驼峰命名转换
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL日志
# 基础配置 (所有环境通用)
profiles:
active: dev
# Jackson 基础配置
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
# 日志基础配置
logging:
config: classpath:logback-spring.xml
level:
@ -45,18 +16,26 @@ logging:
org.springframework: WARN
com.link: INFO
# ========== 自定义配置(示例) ==========
# MyBatis 基础配置
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.lottery.entity
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 基础配置 (所有环境通用)
server:
port: 12699
forward-headers-strategy: native
# 自定义基础配置
lottery:
jwt:
#用户端JWT
user-secret-key: willier_need_at_least_32_chars_secure_key_12345
user-secret-key: willier_need_at_least_32_chars_secure_key_12345 # 基础密钥,生产环境应覆盖
user-ttl: 7200000
user-token-name: token
max-draw-times: 3
max-draw-times: 3 # 用户每日最大抽奖次数
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
Loading…
Cancel
Save