4 Commits

Author SHA1 Message Date
jihaipeng 246f3d0e87 测试环境 3 weeks ago
jihaipeng 144c296eb0 正式环境 3 weeks ago
jihaipeng 70b6497f86 修改 3 weeks ago
jihaipeng 2efab94a0d 修改地址逻辑 3 weeks ago
  1. 2
      lottery-system/lottery-pojo/src/main/java/com/lottery/dto/PageSimpleDto.java
  2. 5
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminPrizeController.java
  3. 3
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminUserController.java
  4. 1
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java
  5. 4
      lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java
  6. 22
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserDetailServiceImpl.java
  7. 148
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserServiceImpl.java
  8. 10
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java
  9. 2
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java
  10. 6
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java
  11. 4
      lottery-system/lottery-service/src/main/resources/application-prod.yml
  12. 8
      lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml

2
lottery-system/lottery-pojo/src/main/java/com/lottery/dto/PageSimpleDto.java

@ -15,5 +15,5 @@ public class PageSimpleDto {
private Integer pageNum;
private Integer pageSize;
private Integer pageSize;
}

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

@ -81,8 +81,9 @@ public class AdminPrizeController {
//新增内定
@PostMapping("/addFixUser")
public Result addWinUser(@RequestBody @Valid FixUserDto fixUserDto) throws Exception {
if(!fixUserDto.getJwcode().startsWith("9")){
return Result.failure("添加精网号失败");
}
return adminPrizeService.addWinUser(fixUserDto);
}
}

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

@ -54,6 +54,9 @@ public class AdminUserController {
@PostMapping("/add")
public Result add(@RequestBody @Valid UserDto userDto) throws Exception {
if(!userDto.getJwcode().startsWith("9")){
return Result.failure("添加精网号失败");
}
LOGGER.info("新增用户:{}",userDto);
if (!adminUserService.addUser(userDto)){
return Result.failure("用户名或精网号已存在,无法添加");

1
lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java

@ -86,6 +86,7 @@ public class FundingController {
//根据活动id查询助力详情
@PostMapping("/getActivityDetail")
public Result<Map<String, Object>> getActivityDetail(@RequestBody @Valid FundingUserDto fundingUserDto) {
//检查活动是否存在
LOGGER.info("接口getActivityDetail查询助力详情,查询条件{}", fundingUserDto);

4
lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java

@ -89,7 +89,7 @@ public interface IFundingMapper {
Integer selectActivityStatus(Integer id);
@Select("select jwcode from z_user")
@Select("select jwcode from z_user where loc_market in('usa','cn','sg','my','th','hk','vi','can')")
ArrayList<String> selectJwcode();
@Update("update z_user set loc_market = #{locMarket} where jwcode = #{jwcode}")
@ -97,4 +97,6 @@ public interface IFundingMapper {
@Select("select text from market where market = #{locMarket}")
String updateLocMarketToCn(String locMarket);
String selectm(String locM);
}

22
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserDetailServiceImpl.java

@ -387,6 +387,26 @@ public class AdminUserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, U
.distinct()
.collect(Collectors.toList());
int filteredCount = 0;
List<UserImportDto> filteredUserDtos = new ArrayList<>();
for (UserImportDto dto : userDtos) {
if (dto.getJwcode() != null && dto.getJwcode().startsWith("9")) {
filteredUserDtos.add(dto);
} else {
filteredCount++;
LOGGER.warn("剔除以9开头的精网号: {}", dto.getJwcode());
}
}
// 3. 提取所有精网号并去重且只保留以9开头的数字
jwcodes = userDtos.stream()
.map(UserImportDto::getJwcode)
.filter(jwcode -> jwcode != null && jwcode.startsWith("9")) // 添加过滤条件
.distinct()
.collect(Collectors.toList());
// 4. 批量检查member表中存在的精网号优化为单次查询
Set<String> existingMemberCodes = adminUserMapper.selectExistingJwCodes(jwcodes)
.stream()
@ -439,7 +459,7 @@ public class AdminUserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, U
}
// 6. 构建结果信息
String message = String.format("导入完成: 成功%d条,跳过%d条", successCount, skipCount);
String message = String.format("导入完成: 成功%d条,跳过%d条,失败%d条", successCount, skipCount, filteredCount);
if (!invalidJwCodes.isEmpty()) {
message += String.format(",其中%d个精网号无效(示例: %s)",
invalidJwCodes.size(),

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

@ -209,6 +209,130 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
return PageInfo.of(userPage, userVolist);
}
// @Override
// public Result importUsers(MultipartFile file) {
// try {
// // 1. 解析Excel
// List<UserImportDto> userDtos = EasyExcel.read(file.getInputStream())
// .head(UserImportDto.class)
// .sheet()
// .doReadSync();
//
// // 2. 过滤保留以"9"开头的精网号数据并记录被剔除的数据
// List<Map<String, Object>> filteredOutData = new ArrayList<>(); // 存储被剔除的数据行号 + jwcode
// List<UserImportDto> filteredUserDtos = new ArrayList<>();
//
// for (int i = 0; i < userDtos.size(); i++) {
// UserImportDto dto = userDtos.get(i);
// if (dto.getJwcode() != null && dto.getJwcode().startsWith("9")) {
// filteredUserDtos.add(dto); // 符合条件的数据
// } else {
// // 记录被剔除的数据行号和jwcode
// Map<String, Object> filteredRecord = new HashMap<>();
// filteredRecord.put("row", i + 2); // Excel行号从2开始1是表头
// filteredRecord.put("jwcode", dto.getJwcode());
// filteredOutData.add(filteredRecord);
// }
// }
//
// // 3. 检查数据量是否超过限制基于过滤后的数据
// if (filteredUserDtos.size() > 2000) {
// return Result.failure("单次导入最多支持2000条数据");
// }
//
// // 4. 获取所有精网号过滤后的
// List<String> jwcodes = filteredUserDtos.stream()
// .map(UserImportDto::getJwcode)
// .distinct()
// .collect(Collectors.toList());
//
// // 5. 检查member表中存在的精网号
// Set<String> existingMemberCodes = adminUserMapper.selectExistingJwCodes(jwcodes)
// .stream()
// .collect(Collectors.toSet());
//
// // 6. 获取已存在的精网号及其删除状态
// Map<String, Integer> existingUserMap = adminUserMapper.selectAllUserCodesWithDelStatus()
// .stream()
// .collect(Collectors.toMap(
// User::getJwcode,
// User::getIsDel,
// (existing, replacement) -> existing
// ));
//
// List<User> usersToAdd = new ArrayList<>();
// List<User> usersToUpdate = new ArrayList<>();
// Set<String> processedCodes = new HashSet<>();
// int skipCount = 0;
//
// // 7. 校验数据并分类新增/更新/跳过
// for (int i = 0; i < filteredUserDtos.size(); i++) {
// UserImportDto dto = filteredUserDtos.get(i);
// try {
// validateUser(dto, i + 2); // 行号校正基于过滤后的数据
//
// // 检查member表中是否存在
// if (!existingMemberCodes.contains(dto.getJwcode())) {
// throw new IllegalArgumentException(String.format("第%d行: 精网号%s不存在于member表中", i + 2, dto.getJwcode()));
// }
//
// // 文件内去重
// if (processedCodes.contains(dto.getJwcode())) {
// throw new IllegalArgumentException(String.format("第%d行: 精网号%s在当前文件中重复", i + 2, dto.getJwcode()));
// }
// processedCodes.add(dto.getJwcode());
//
// // 处理数据库中的重复情况
// if (existingUserMap.containsKey(dto.getJwcode())) {
// Integer isDel = existingUserMap.get(dto.getJwcode());
// if (isDel == 1) {
// User existingUser = adminUserMapper.selectByJwCode(dto.getJwcode());
// User userToUpdate = convertToEntity(dto);
// userToUpdate.setId(existingUser.getId());
// userToUpdate.setIsDel(0);
// usersToUpdate.add(userToUpdate);
// } else {
// throw new IllegalArgumentException(String.format("第%d行: 精网号%s已存在", i + 2, dto.getJwcode()));
// }
// } else {
// usersToAdd.add(convertToEntity(dto));
// }
// } catch (IllegalArgumentException e) {
// LOGGER.warn("导入数据校验失败: {}", e.getMessage());
// skipCount++;
// }
// }
//
// // 8. 执行数据库操作
// int successCount = 0;
// if (!usersToAdd.isEmpty()) {
// boolean addSuccess = this.saveBatch(usersToAdd);
// successCount += addSuccess ? usersToAdd.size() : 0;
// }
// if (!usersToUpdate.isEmpty()) {
// boolean updateSuccess = this.updateBatchById(usersToUpdate);
// successCount += updateSuccess ? usersToUpdate.size() : 0;
// }
//
// // 9. 返回结果包含被剔除的数据
// Map<String, Object> resultData = new HashMap<>();
// resultData.put("successCount", successCount);
// resultData.put("addedCount", usersToAdd.size());
// resultData.put("updatedCount", usersToUpdate.size());
// resultData.put("skippedCount", skipCount);
// resultData.put("filteredOutData", filteredOutData); // 被剔除的数据非9开头
//
// return successCount > 0 ?
// Result.success(String.format("导入成功%d条(新增%d条,更新%d条),跳过%d条",
// successCount, usersToAdd.size(), usersToUpdate.size(), skipCount)) :
// Result.failure("没有有效数据可导入");
//
// } catch (Exception e) {
// LOGGER.error("导入用户失败", e);
// return Result.failure("导入失败: " + e.getMessage());
// }
// }
@Override
public Result importUsers(MultipartFile file) {
try {
@ -218,6 +342,8 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
.sheet()
.doReadSync();
// 2. 检查数据量是否超过限制
if (userDtos.size() > 2000) {
return Result.failure("单次导入最多支持2000条数据");
@ -228,6 +354,23 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
.map(UserImportDto::getJwcode)
.distinct()
.collect(Collectors.toList());
// 3. 提取所有精网号并去重且只保留以9开头的数字
jwcodes = userDtos.stream()
.map(UserImportDto::getJwcode)
.filter(jwcode -> jwcode != null && jwcode.startsWith("9")) // 添加过滤条件
.distinct()
.collect(Collectors.toList());
int filteredCount = 0;
List<UserImportDto> filteredUserDtos = new ArrayList<>();
for (UserImportDto dto : userDtos) {
if (dto.getJwcode() != null && dto.getJwcode().startsWith("9")) {
filteredUserDtos.add(dto);
} else {
filteredCount++;
LOGGER.warn("剔除以9开头的精网号: {}", dto.getJwcode());
}
}
// 4. 检查member表中存在的精网号
Set<String> existingMemberCodes = adminUserMapper.selectExistingJwCodes(jwcodes)
@ -243,6 +386,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
(existing, replacement) -> existing
));
List<User> usersToAdd = new ArrayList<>();
List<User> usersToUpdate = new ArrayList<>();
Set<String> processedCodes = new HashSet<>();
@ -297,8 +441,8 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
}
return successCount > 0 ?
Result.success(String.format("导入成功%d条(新增%d条,更新%d条),跳过%d条",
successCount, usersToAdd.size(), usersToUpdate.size(), skipCount)) :
Result.success(String.format("导入成功%d条(新增%d条,更新%d条),跳过%d条,失败%d条",
successCount, usersToAdd.size(), usersToUpdate.size(), skipCount,filteredCount)) :
Result.failure("没有有效数据可导入");
} catch (Exception e) {
LOGGER.error("导入用户失败", e);

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

@ -87,6 +87,7 @@ public class FundingServiceImpl implements IFundingService {
//添加众筹活动
@Override
@Transactional(rollbackOn = SQLException.class)
public Result<String> addActivity(FundingActivityDto fundingActivityDto) {
if (fundingActivityDto.getActivityName() == null || fundingActivityDto.getActivityName().equals("")) {
return Result.failure("活动名称不能为空");
@ -328,8 +329,8 @@ public class FundingServiceImpl implements IFundingService {
}
//查询当前的虚拟
Integer virtual = fundingMapper.searchVirtual(activityId, stock);
if(total + addTotal+markerTwoVirtual > 1500){
return Result.failure("所在市场助力值最大1500");
if(total + addTotal+markerTwoVirtual > 4200){
return Result.failure("所在市场助力值最大4200");
}
if(total + addTotal + markerTwoVirtual< 0){
@ -484,6 +485,7 @@ public class FundingServiceImpl implements IFundingService {
*/
String apiUrl = "http://api.homilychart.com/hljwgo/api/v2/member/info";
@Override
@Transactional
public boolean flushData() throws Exception {
ArrayList<String> jwcodes = new ArrayList<>();
jwcodes = fundingMapper.selectJwcode();
@ -499,7 +501,9 @@ public class FundingServiceImpl implements IFundingService {
params.put("jwcode", jwcode);
// JSON库解析
String json = HttpUtils.postUrlencoded(apiUrl, params);
return JsonPath.read(json, "$.data.loc_market");
String locM = JsonPath.read(json, "$.data.loc_market");
return fundingMapper.selectm(locM);
}
}

2
lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java

@ -196,7 +196,7 @@ public class ApiFundingServiceImpl implements ApiIFundingService {
}
Integer Show = markerTwoTotal + markerTwoVirtual;
if((Show+1)>1500){
if((Show+1)>4200){
return Result.failure(200,"美股实时数据助力成功!");
}
// 提取 username

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

@ -194,7 +194,7 @@ public class UserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, UserDe
// List<User> supplementWinners = randomSelectUsers(allAvailableUsers, Math.min(remaining, allAvailableUsers.size()));
// winners.addAll(convertToUserVoList(supplementWinners));
// markUsersAsWinners(supplementWinners, startLotteryDto);
// }
// } requir
if (winners.size() < requiredWinners) {
int remaining = requiredWinners - winners.size();
List<User> allAvailableUsers = getAllAvailableUsers(startLotteryDto.getGradeId());
@ -398,13 +398,13 @@ public class UserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, UserDe
// 4. 如果不存在任何记录则插入新记录
String cnName = fundingMapper.updateLocMarketToCn(user.getLocMarket());
// String cnName = fundingMapper.updateLocMarketToCn(user.getLocMarket());
WinnerRecord winnerRecord = WinnerRecord.builder()
.userId(user.getId())
.winTime(new Date())
.prizeId(startLotteryDto.getPrizeId())
.isDel(0) // 明确设置为未删除
.locMarket(cnName)
.locMarket(user.getLocMarket())
.build();
adminWinMapper.insert(winnerRecord);
}

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

@ -15,11 +15,11 @@ spring:
connection-timeout: 30000 # 连接超时时间(毫秒),默认 30s
idle-timeout: 600000 # 空闲连接超时时间(默认 10 分钟)
max-lifetime: 1800000 # 连接最大生命周期(默认 30 分钟)
leak-detection-threshold: 5000 # 连接泄漏检测(毫秒,建议 5s)
leak-detection-threshold: 50000 # 连接泄漏检测(毫秒,建议 5s)
# ========== Redis 配置 ==========
redis:
host: 18.143.76.3
host: localhost
port: 10703
password: Ngc0FYUTA6h3wC5J
database: 8 # 默认DB索引

8
lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml

@ -258,5 +258,13 @@
WHERE
id = #{activityId}
</select>
<select id="selectm" resultType="java.lang.String" parameterType="java.lang.String">
SELECT
text
FROM
market
WHERE
market = #{locM}
</select>
</mapper>
Loading…
Cancel
Save