2 Commits

Author SHA1 Message Date
jihaipeng f0ee6915db Merge branch 'milestone-20250723-wwl' into jihaipeng/feature-20250714184358-抽奖众筹 3 weeks ago
jihaipeng 64f4240453 添加地址 3 weeks ago
  1. 3
      lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserDto.java
  2. 4
      lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserImportDto.java
  3. 3
      lottery-system/lottery-pojo/src/main/java/com/lottery/dto/WinUserExportDto.java
  4. 3
      lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingExport.java
  5. 3
      lottery-system/lottery-pojo/src/main/java/com/lottery/entity/WinnerRecord.java
  6. 1
      lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingUserVo.java
  7. 4
      lottery-system/lottery-pojo/src/main/java/com/lottery/vo/WinUserVo.java
  8. 1
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java
  9. 2
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminPrizeController.java
  10. 2
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminUserController.java
  11. 2
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminPrizeService.java
  12. 2
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserService.java
  13. 27
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java
  14. 30
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserServiceImpl.java
  15. 3
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminWinServiceImpl.java
  16. 1
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java
  17. 2
      lottery-system/lottery-service/src/main/java/com/lottery/api/controller/LotteryController.java
  18. 2
      lottery-system/lottery-service/src/main/java/com/lottery/api/mapper/ApiIFundingMapper.java
  19. 2
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/IUserDetailService.java
  20. 10
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java
  21. 35
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java
  22. 2
      lottery-system/lottery-service/src/main/resources/application.yml
  23. 4
      lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml
  24. 6
      lottery-system/lottery-service/src/main/resources/mapper/api/ApiIFundingService.xml

3
lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserDto.java

@ -28,7 +28,8 @@ public class UserDto {
private String username;
@Pattern(regexp = "^\\d{5,12}$", message = "精网号必须是5到12位的数字")
@Size(min = 8, max = 8, message = "jwcode必须是8位")
@Pattern(regexp = "^\\d{8}$", message = "jwcode必须全是数字")
@NotNull(message = "精网号不能为空")
private String jwcode;
}

4
lottery-system/lottery-pojo/src/main/java/com/lottery/dto/UserImportDto.java

@ -3,6 +3,10 @@ package com.lottery.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* @program: lottery
* @ClassName UserImportDto

3
lottery-system/lottery-pojo/src/main/java/com/lottery/dto/WinUserExportDto.java

@ -28,4 +28,7 @@ public class WinUserExportDto {
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private Date winTime;
@ExcelProperty("所在地区")
private String locMarket;
}

3
lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingExport.java

@ -39,4 +39,7 @@ public class FundingExport {
public LocalDateTime getJoinTime() {
return joinTime;
}
@ExcelProperty("所在地区")
private String locMarket;
}

3
lottery-system/lottery-pojo/src/main/java/com/lottery/entity/WinnerRecord.java

@ -42,4 +42,7 @@ public class WinnerRecord {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date winTime; // 中奖时间
@TableField("loc_market")
private String locMarket;
}

1
lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingUserVo.java

@ -22,4 +22,5 @@ public class FundingUserVo {
private String username; // 用户名
private String jwcode; // 用户唯一码
private LocalDateTime joinTime; // 参与时间
private String locMarket;
}

4
lottery-system/lottery-pojo/src/main/java/com/lottery/vo/WinUserVo.java

@ -27,9 +27,9 @@ public class WinUserVo {
private String prizeName;
private String LocMarket;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date winTime; // 中奖时间;
private String locMarket;
}

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

@ -52,6 +52,7 @@ public class AdminGradeController {
if (pageSimpleDto.getPageNum() == null) {
pageSimpleDto.setPageNum(1);
}
if (pageSimpleDto.getPageSize() == null) {
pageSimpleDto.setPageSize(10);
}

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

@ -80,7 +80,7 @@ public class AdminPrizeController {
//新增内定
@PostMapping("/addFixUser")
public Result addWinUser(@RequestBody @Valid FixUserDto fixUserDto) {
public Result addWinUser(@RequestBody @Valid FixUserDto fixUserDto) throws Exception {
return adminPrizeService.addWinUser(fixUserDto);

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

@ -52,7 +52,7 @@ public class AdminUserController {
private com.lottery.propertise.jwtPropertice jwtPropertice;
@PostMapping("/add")
public Result add(@RequestBody @Valid UserDto userDto) {
public Result add(@RequestBody @Valid UserDto userDto) throws Exception {
LOGGER.info("新增用户:{}",userDto);
if (!adminUserService.addUser(userDto)){

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

@ -25,7 +25,7 @@ public interface AdminPrizeService extends IService<Prize> {
PrizeVo getPrizeById(Long id);
Result addWinUser(FixUserDto fixUserDto);
Result addWinUser(FixUserDto fixUserDto) throws Exception;
boolean removePrizeById(Long id);
}

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

@ -32,7 +32,7 @@ public interface AdminUserService extends IService<User> {
Result<UserLoginVo> AdminUserlogin(AdminLogin adminLogin);
boolean addUser(UserDto userDto);
boolean addUser(UserDto userDto) throws Exception;
PageInfo<UserVo> listUser(int pageNum, int pageSize, UserQueryDto userQueryDto);

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

@ -5,13 +5,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.lottery.admin.mapper.*;
import com.lottery.admin.service.AdminPrizeService;
import com.lottery.config.ApiConfig;
import com.lottery.dto.PrizeDto;
import com.lottery.dto.FixUserDto;
import com.lottery.entity.*;
import com.lottery.exception.BusinessException;
import com.lottery.result.Result;
import com.lottery.utils.ConvertBeanUtil;
import com.lottery.utils.HttpUtils;
import com.lottery.vo.PageInfo;
import com.lottery.vo.PrizeVo;
import org.apache.ibatis.annotations.Lang;
@ -20,7 +25,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @program: lottery
@ -47,6 +54,11 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
@Autowired
private AdminWinMapper adminWinMapper;
@Autowired
private ApiConfig apiConfig;
@Autowired
private ObjectMapper objectMapper;
@Override
public PageInfo<PrizeVo> pageListPrize(int pageNum, int pageSize) {
Page<Prize> page = new Page<>(pageNum, pageSize);
@ -205,7 +217,7 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
}
@Override
public Result addWinUser(FixUserDto fixUserDto) {
public Result addWinUser(FixUserDto fixUserDto) throws Exception {
// //先判断新增的内定用户是否在总的抽奖用户中
// Long userId = adminUserMapper.selectByJwcode(fixUserDto.getJwcode());
@ -232,6 +244,18 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
// userDetail.setIsFixed(1);
// userDetail.setIsDel(0);
// adminUserDetailMapper.insert(userDetail);
String url = apiConfig.getHljwUrl() + "/api/v2/member/info";
String jwcode = fixUserDto.getJwcode();
// 准备请求参数
Map<String, String> params = new HashMap<>();
params.put("jwcode", jwcode);
// 调用接口
String response = HttpUtils.postUrlencoded(url, params);
JsonNode rootNode = objectMapper.readTree(response);
if(rootNode.path("code").asInt() == 401){
throw new BusinessException(400, "精网号错误");
}
try {
// 1. 检查用户是否存在不存在则创建
@ -245,6 +269,7 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
.isDel(0)
.createTime(new Date())
.updateTime(new Date())
.locMarket(rootNode.path("data").path("loc_market").asText())
.build();
adminUserMapper.insert(user);
userId = user.getId();

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

@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.lottery.LotteryApplication;
import com.lottery.admin.controller.AdminUserController;
import com.lottery.admin.mapper.AdminIsLoginMapper;
@ -13,6 +16,8 @@ import com.lottery.admin.mapper.AdminUserDetailMapper;
import com.lottery.admin.mapper.AdminUserMapper;
import com.lottery.admin.mapper.AdminWinMapper;
import com.lottery.admin.service.AdminUserService;
import com.lottery.config.ApiConfig;
import com.lottery.config.ApiConfig;
import com.lottery.dto.AdminLogin;
import com.lottery.dto.UserDto;
import com.lottery.dto.UserImportDto;
@ -20,8 +25,10 @@ import com.lottery.dto.UserQueryDto;
import com.lottery.entity.User;
import com.lottery.entity.UserDetail;
import com.lottery.entity.WinnerRecord;
import com.lottery.exception.BusinessException;
import com.lottery.result.Result;
import com.lottery.utils.ConvertBeanUtil;
import com.lottery.utils.HttpUtils;
import com.lottery.utils.JwtUtil;
import com.lottery.vo.PageInfo;
import com.lottery.vo.UserLoginVo;
@ -39,6 +46,7 @@ import org.json.JSONObject;
import javax.persistence.criteria.CriteriaBuilder;
import javax.transaction.Transactional;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@ -60,8 +68,12 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
private AdminUserMapper adminUserMapper;
private final static Logger LOGGER = LoggerFactory.getLogger(AdminUserController.class);
@Autowired
private ApiConfig apiConfig;
@Autowired
private ObjectMapper objectMapper;
@Autowired
private StringRedisTemplate redisTemplate;
@Autowired
@ -126,8 +138,23 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
}
@Override
public boolean addUser(@Valid UserDto userDto) {
public boolean addUser(@Valid UserDto userDto) throws Exception {
String jwcode = userDto.getJwcode();
//TODO 接入API
// 1. 定义请求 URL
String url = apiConfig.getHljwUrl() + "/api/v2/member/info";
// 准备请求参数
Map<String, String> params = new HashMap<>();
params.put("jwcode", jwcode);
// 调用接口
String response = HttpUtils.postUrlencoded(url, params);
JsonNode rootNode = objectMapper.readTree(response);
if(rootNode.path("code").asInt() == 401){
throw new BusinessException(400, "精网号错误");
}
String locMarket = rootNode.path("data").path("loc_market").asText();
User user1 = adminUserMapper.selectByName(userDto.getUsername());
if (user1 != null) {
@ -157,6 +184,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, User> imp
user.setIsDel(0);
user.setCreateTime(new Date());
user.setUpdateTime(new Date());
user.setLocMarket(locMarket);
user.setPassword("123456"); // 默认密码
return this.save(user);

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

@ -190,7 +190,7 @@ public class AdminWinServiceImpl extends ServiceImpl<AdminWinMapper, WinnerRecor
.excelType(ExcelTypeEnum.XLSX)
.sheet("中奖名单")
.doWrite(convertToExportDto(winUserVoPageInfo.getList()));
}
}
@Override
public PageInfo<WinUserVo> listWinUserWin(int pageNum, int pageSize) {
@ -215,6 +215,7 @@ public class AdminWinServiceImpl extends ServiceImpl<AdminWinMapper, WinnerRecor
dto.setPrizeName(vo.getPrizeName());
dto.setWinTime(vo.getWinTime());
dto.setGradeName(vo.getGradeName());
dto.setLocMarket(vo.getLocMarket());
result.add(dto);
}
return result;

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

@ -200,6 +200,7 @@ public class FundingServiceImpl implements IFundingService {
result.put("total", total);
result.put("page", fundingUserDto.getPage());
result.put("pageSize", fundingUserDto.getPagesize());
return Result.success(result);
}

2
lottery-system/lottery-service/src/main/java/com/lottery/api/controller/LotteryController.java

@ -29,7 +29,7 @@ public class LotteryController {
//TODO 一个用户内定多个等奖会出现bug
@PostMapping("/start")
public Result<LotteryVo> StartLottery(@RequestBody StartLotteryDto startLotteryDto){
public Result<LotteryVo> StartLottery(@RequestBody StartLotteryDto startLotteryDto) throws Exception {
LOGGER.info("开始抽奖: 等级是:{},奖品是:{},抽取人数:{}",startLotteryDto.getGradeId(),startLotteryDto.getPrizeId(),startLotteryDto.getPerWin());
LotteryVo userVos = userDetailService.StartLottery(startLotteryDto);

2
lottery-system/lottery-service/src/main/java/com/lottery/api/mapper/ApiIFundingMapper.java

@ -30,7 +30,7 @@ public interface ApiIFundingMapper {
Integer selectStatus();
void addRecord(Integer activityId, String username, String jwcode, Integer marketSign, LocalDateTime joinTime);
void addRecord(Integer activityId, String username, String jwcode, Integer marketSign, LocalDateTime joinTime,String locMarket);
LocalDate selectCount(String jwcode, Integer marketSign,Integer activityId);

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

@ -14,5 +14,5 @@ import com.lottery.vo.LotteryVo;
* @Version 1.0
**/
public interface IUserDetailService extends IService<UserDetail> {
LotteryVo StartLottery(StartLotteryDto startLotteryDto);
LotteryVo StartLottery(StartLotteryDto startLotteryDto) throws Exception;
}

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

@ -202,14 +202,20 @@ public class ApiFundingServiceImpl implements ApiIFundingService {
// 提取 username
String username = rootNode.path("data").path("username").asText();
String jwcode = rootNode.path("data").path("jwcode").asText();
String locMarket = rootNode.path("data").path("loc_market").asText();
LocalDateTime joinTime = LocalDateTime.now();
Integer marketSign = fundingRecordDto.getMarketSign();
Integer activityId = fundingRecordDto.getActivityId();
//获取最近的助力时间
LocalDate zhulishijian= fundingMapper.selectIsZhuli(activityId, jwcode, marketSign);
if(zhulishijian==null || !zhulishijian.isEqual(LocalDate.now())){
if(zhulishijian==null || !zhulishijian.isEqual(LocalDate.now())) {
//添加到数据库
fundingMapper.addRecord(activityId, username, jwcode, marketSign, joinTime);
fundingMapper.addRecord(activityId, username, jwcode, marketSign, joinTime, locMarket);
}if(zhulishijian.isEqual(LocalDate.now())){
return Result.failure("请勿重复助力");
}

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

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.lottery.admin.controller.AdminPrizeController;
import com.lottery.admin.mapper.AdminPrizeMapper;
import com.lottery.admin.mapper.AdminWinMapper;
@ -11,12 +13,16 @@ import com.lottery.api.mapper.IGradeMapper;
import com.lottery.api.mapper.IUserDetailMapper;
import com.lottery.api.mapper.IUserMapper;
import com.lottery.api.service.IUserDetailService;
import com.lottery.config.ApiConfig;
import com.lottery.dto.StartLotteryDto;
import com.lottery.entity.Grade;
import com.lottery.entity.User;
import com.lottery.entity.UserDetail;
import com.lottery.entity.WinnerRecord;
import com.lottery.exception.BaseException;
import com.lottery.exception.SomeException;
import com.lottery.result.Result;
import com.lottery.utils.HttpUtils;
import com.lottery.vo.UserVo;
import com.lottery.vo.LotteryVo;
import org.slf4j.Logger;
@ -53,6 +59,12 @@ public class UserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, UserDe
@Autowired
private AdminWinMapper adminWinMapper;
@Autowired
private ApiConfig apiConfig;
@Autowired
public ObjectMapper objectMapper;
// public List<UserVo> StartLottery(StartLotteryDto startLotteryDto) {
//
@ -138,7 +150,7 @@ public class UserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, UserDe
@Override
@Transactional(rollbackFor = Exception.class)
public LotteryVo StartLottery(StartLotteryDto startLotteryDto) {
public LotteryVo StartLottery(StartLotteryDto startLotteryDto) throws Exception {
// 校验
Grade grade = gradeMapper.selectById(startLotteryDto.getGradeId());
if (grade == null) {
@ -337,7 +349,7 @@ public class UserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, UserDe
private final static Logger LOGGER = LoggerFactory.getLogger(UserDetailServiceImpl.class);
// 标记用户为中奖状态
private void markUsersAsWinners(List<User> winners, StartLotteryDto startLotteryDto) {
private void markUsersAsWinners(List<User> winners, StartLotteryDto startLotteryDto) throws Exception {
for (User user : winners) {
// 1. 检查该用户是否已有有效中奖记录(is_del=0)
LambdaQueryWrapper<WinnerRecord> queryWrapper = new LambdaQueryWrapper<>();
@ -363,12 +375,31 @@ public class UserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, UserDe
existingRecord.setPrizeId(startLotteryDto.getPrizeId());
adminWinMapper.updateById(existingRecord);
} else {
//
// // 1. 定义请求 URL
// String url = apiConfig.getHljwUrl() + "/api/v2/member/info";
//
// // 准备请求参数
// Map<String, String> params = new HashMap<>();
//
// params.put("jwcode", user.getJwcode()); // 如果接口需要 token 作为参数
// // 调用接口
// String response = HttpUtils.postUrlencoded(url, params);
// JsonNode rootNode = objectMapper.readTree(response);
// String locMarket = "";
// if(rootNode.path("code").asInt() == 401){
// locMarket = "else";
// }else{
// locMarket = rootNode.path("data").path("loc_market").asText();
// }
// 4. 如果不存在任何记录则插入新记录
WinnerRecord winnerRecord = WinnerRecord.builder()
.userId(user.getId())
.winTime(new Date())
.prizeId(startLotteryDto.getPrizeId())
.isDel(0) // 明确设置为未删除
.locMarket(user.getLocMarket())
.build();
adminWinMapper.insert(winnerRecord);
}

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

@ -1,7 +1,7 @@
spring:
# 基础配置 (所有环境通用)
profiles:
active: prod
active: dev
# Jackson 基础配置
jackson:

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

@ -106,7 +106,7 @@
</select>
<select id="selectByCondition" resultType="com.lottery.vo.FundingUserVo">
SELECT
z_user.id, activity_id, username, jwcode, market.text, join_time
z_user.id, activity_id, username, jwcode, market.text, join_time, loc_market
FROM
z_user left join market on z_user.market_sign = market.id
WHERE
@ -175,7 +175,7 @@
</select>
<select id="selectByConditionExport" resultType="com.lottery.entity.FundingExport">
SELECT
username, jwcode, market.text, join_time
username, jwcode, market.text, join_time, loc_market
FROM
z_user left join market on z_user.market_sign = market.id
WHERE

6
lottery-system/lottery-service/src/main/resources/mapper/api/ApiIFundingService.xml

@ -6,12 +6,14 @@
username,
jwcode,
market_sign,
join_time)
join_time,
loc_market)
VALUES (#{activityId},
#{username},
#{jwcode},
#{marketSign},
#{joinTime})
#{joinTime},
#{locMarket})
</insert>
<select id="getTime" resultType="java.lang.Integer">

Loading…
Cancel
Save