From 3817111ac93a865a119bd0fa28409682880ec23e Mon Sep 17 00:00:00 2001 From: willy <2462310981@qq.com> Date: Mon, 21 Jul 2025 15:36:38 +0800 Subject: [PATCH] tijiao --- .../src/main/java/com/lottery/entity/User.java | 2 + .../admin/controller/AdminUserController.java | 15 +++-- .../admin/mapper/AdminUserDetailMapper.java | 4 ++ .../com/lottery/admin/mapper/AdminUserMapper.java | 4 ++ .../admin/service/AdminUserDetailService.java | 6 ++ .../lottery/admin/service/AdminUserService.java | 2 + .../admin/service/Impl/AdminPrizeServiceImpl.java | 13 ++-- .../service/Impl/AdminUserDetailServiceImpl.java | 25 +++++++- .../admin/service/Impl/AdminUserServiceImpl.java | 74 ++++++++++++++++++---- 9 files changed, 118 insertions(+), 27 deletions(-) diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/User.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/User.java index 508b749..b77604f 100644 --- a/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/User.java +++ b/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/User.java @@ -38,6 +38,8 @@ public class User { private int isWin; //是否中奖 + private int isDel; + private Date createTime; // 创建时间 private Date updateTime; // 更新时间 diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminUserController.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminUserController.java index 8169c15..db4121d 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminUserController.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminUserController.java @@ -84,8 +84,10 @@ public class AdminUserController { if (ids == null || ids.size() == 0) { return Result.failure("ids is null"); } - adminUserService.removeBatchByIds(ids); - return Result.success(); + if (adminUserService.removeUserBatchByIds(ids)){ + return Result.success(); + }; + return Result.failure("删除失败"); } @PostMapping("/import") @@ -128,7 +130,7 @@ public class AdminUserController { @PostMapping("/delete/fix") public Result deleteFix(@RequestParam Long id) { LOGGER.info("根据id删除内定用户:{}",id); - adminUserDetailService.removeById(id); + adminUserDetailService.removeFixUserById(id); return Result.success(); } @@ -138,11 +140,12 @@ public class AdminUserController { if (ids == null || ids.size() == 0) { return Result.failure("ids is null"); } - adminUserDetailService.removeBatchByIds(ids); - return Result.success(); + if (adminUserDetailService.removeFixUserBatchByIds(ids)){ + return Result.success(); + }; + return Result.failure("删除失败"); } - //TODO 导入有点问题 @PostMapping("/import/fix") public Result importFixUsers(@RequestParam("file") MultipartFile file, @RequestParam Long gradeId) { LOGGER.info("开始导入内定用户Excel文件: {}", file.getOriginalFilename()); diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserDetailMapper.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserDetailMapper.java index dd21e17..317f6ca 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserDetailMapper.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserDetailMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lottery.entity.UserDetail; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.Set; @@ -20,4 +21,7 @@ import java.util.Set; public interface AdminUserDetailMapper extends BaseMapper { @Select("select jwcode from user_detail") Set selectAllUserCodes(); + + @Update("update user_detail set is_del = 0 where id = #{id}") + void removeFixUserById(Long id); } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserMapper.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserMapper.java index 96ac205..7fad76b 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserMapper.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/AdminUserMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lottery.entity.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.Set; @@ -22,4 +23,7 @@ public interface AdminUserMapper extends BaseMapper { Set selectAllUserCodes(); Long selectByJwcode(String jwcode); + + @Update("update user set is_del = 1 where id = #{id}") + void deleteUserById(Long id); } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserDetailService.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserDetailService.java index 17ff9e6..239e9ab 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserDetailService.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserDetailService.java @@ -9,6 +9,8 @@ import com.lottery.vo.UserVo; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.util.List; + /** * @program: lottery * @ClassName IUserDetail @@ -22,4 +24,8 @@ public interface AdminUserDetailService extends IService { PageInfo listFixUser(int pageNum, int pageSize, UserQueryDto userQueryDto); Result importFixUsers(MultipartFile file, Long gradeId); + + void removeFixUserById(Long id); + + boolean removeFixUserBatchByIds(List ids); } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserService.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserService.java index f4ae225..3801cde 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserService.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminUserService.java @@ -41,5 +41,7 @@ public interface AdminUserService extends IService { Result importUsers(MultipartFile file); void removeUserById(Long id); + + boolean removeUserBatchByIds(List ids); } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java index 88160ba..ff13a2c 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java @@ -85,7 +85,8 @@ public class AdminPrizeServiceImpl extends ServiceImpl // 2. 检查逻辑:仅当等级未删除(is_del=0)且已存在奖品时,才拒绝添加 if (grade.getIsDel() == 0) { // 等级未删除 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Prize::getGradeId, prizeDto.getGradeId()); + wrapper.eq(Prize::getGradeId, prizeDto.getGradeId()) + .eq(Prize::getIs_del, 0); // 只统计未删除的奖品; if (this.count(wrapper) > 0) { return false; // 等级未删除且已有奖品,拒绝添加 } @@ -190,6 +191,7 @@ public class AdminPrizeServiceImpl extends ServiceImpl .jwcode(fixUserDto.getJwcode()) .password("123456") .isWin(0) + .isDel(0) .createTime(new Date()) .updateTime(new Date()).build(); adminUserMapper.insert(user); //不存在,插入总表 @@ -204,6 +206,7 @@ public class AdminPrizeServiceImpl extends ServiceImpl userDetail.setUserId(userIdd); userDetail.setGradeId(gradeId); userDetail.setIsFixed(1); + userDetail.setIsDel(0); adminUserDetailMapper.insert(userDetail); } @@ -215,10 +218,10 @@ public class AdminPrizeServiceImpl extends ServiceImpl updateWrapper.eq(WinnerRecord::getPrizeId, id).set(WinnerRecord::getIsDel, 1); adminWinMapper.update(null, updateWrapper); -// //把关联的user_detail表删了 -// LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); -// wrapper.eq(UserDetail::getUserId, id); -// adminUserDetailMapper.update(null, wrapper); + //把关联的user_detail表删了 + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(UserDetail::getUserId, id).set(UserDetail::getIsDel, 1); + adminUserDetailMapper.update(null, wrapper); //最后逻辑删除奖品 return adminPrizeMapper.deletePrizeById(id); diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserDetailServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserDetailServiceImpl.java index efc13ee..c9871d5 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserDetailServiceImpl.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserDetailServiceImpl.java @@ -2,6 +2,7 @@ package com.lottery.admin.service.Impl; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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; @@ -11,11 +12,8 @@ import com.lottery.admin.mapper.AdminUserMapper; import com.lottery.admin.service.AdminUserDetailService; import com.lottery.admin.service.AdminUserService; import com.lottery.api.mapper.IUserDetailMapper; -import com.lottery.api.service.IUserDetailService; -import com.lottery.api.service.IUserService; import com.lottery.dto.UserImportDto; import com.lottery.dto.UserQueryDto; -import com.lottery.entity.Grade; import com.lottery.entity.User; import com.lottery.entity.UserDetail; import com.lottery.result.Result; @@ -67,6 +65,7 @@ public class AdminUserDetailServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(User::getIsDel, 0); queryWrapper.in(User::getId, UserIds); @@ -159,6 +158,26 @@ public class AdminUserDetailServiceImpl extends ServiceImpl ids) { + if (ids == null || ids.isEmpty()) { + return false; + } + + // 使用 UpdateWrapper 批量更新 is_del 字段 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(UserDetail::getId, ids) // WHERE id IN (ids) + .set(UserDetail::getIsDel, 1); // SET is_del = 1 + + // 执行更新(不更新其他字段) + return this.update(updateWrapper); + } + private void validateUser(UserImportDto dto, int rowNum, Set processedCodes) { if (StringUtils.isBlank(dto.getJwcode())) { throw new IllegalArgumentException("第" + rowNum + "行: 精网号不能为空"); diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserServiceImpl.java index 00917ce..492057f 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserServiceImpl.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminUserServiceImpl.java @@ -2,36 +2,36 @@ package com.lottery.admin.service.Impl; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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.lottery.admin.controller.AdminUserController; +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.api.service.Impl.UserServiceImpl; import com.lottery.dto.AdminLogin; import com.lottery.dto.UserDto; import com.lottery.dto.UserImportDto; import com.lottery.dto.UserQueryDto; -import com.lottery.entity.Grade; import com.lottery.entity.User; +import com.lottery.entity.UserDetail; +import com.lottery.entity.WinnerRecord; import com.lottery.result.Result; import com.lottery.utils.ConvertBeanUtil; -import com.lottery.utils.ExcelUtil; import com.lottery.vo.PageInfo; import com.lottery.vo.UserLoginVo; import com.lottery.vo.UserVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import org.json.JSONObject; import java.util.*; +import java.util.stream.Collectors; import static com.lottery.utils.HttpUtils.postUrlencoded; @@ -50,6 +50,12 @@ public class AdminUserServiceImpl extends ServiceImpl imp private AdminUserMapper adminUserMapper; private final static Logger LOGGER = LoggerFactory.getLogger(AdminUserController.class); + @Autowired + private AdminUserDetailMapper adminUserDetailMapper; + + @Autowired + private AdminWinMapper adminWinMapper; + @Override public Result AdminUserlogin(AdminLogin adminLogin) { String token = ""; @@ -95,18 +101,32 @@ public class AdminUserServiceImpl extends ServiceImpl imp @Override public boolean addUser(UserDto userDto) { String jwcode = userDto.getJwcode(); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(User::getJwcode, jwcode); - if(this.count(lambdaQueryWrapper) > 0) { - return false; + + // 1. 查询是否已存在相同精网号的用户 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(User::getJwcode, jwcode); + User existingUser = this.getOne(queryWrapper); + + // 2. 判断逻辑 + if (existingUser != null) { + if (existingUser.getIsDel() == 0) { + // 存在未删除的同精网号用户,不允许新增 + return false; + } + // 如果是已删除的用户(is_del=1),先物理删除旧记录 + this.removeById(existingUser.getId()); } - User user = new User(); // 改用构造函数或直接赋值,避免 Builder 潜在问题 + + // 3. 创建新用户 + User user = new User(); user.setUsername(userDto.getUsername()); user.setJwcode(jwcode); user.setIsWin(0); + user.setIsDel(0); user.setCreateTime(new Date()); user.setUpdateTime(new Date()); - user.setPassword("123456"); // 显式设置,避免被覆盖 + user.setPassword("123456"); // 默认密码 + return this.save(user); } @@ -115,6 +135,7 @@ public class AdminUserServiceImpl extends ServiceImpl imp Page page = new Page<>(pageNum, pageSize); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(User::getIsDel, 0); if (StringUtils.isNotBlank(userQueryDto.getUsername())) { queryWrapper.like(User::getUsername, userQueryDto.getUsername()); @@ -171,7 +192,33 @@ public class AdminUserServiceImpl extends ServiceImpl imp @Override public void removeUserById(Long id) { - this.removeById(id); + //关联删除user_detail + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(UserDetail::getUserId, id).set(UserDetail::getIsDel, 1); + adminUserDetailMapper.update(null, updateWrapper); + + + //关联删除winrecord + LambdaUpdateWrapper updateWrapper1 = new LambdaUpdateWrapper<>(); + updateWrapper1.eq(WinnerRecord::getUserId, id).set(WinnerRecord::getIsDel, 1); + adminWinMapper.update(null, updateWrapper1); + + adminUserMapper.deleteUserById(id); + } + + @Override + public boolean removeUserBatchByIds(List ids) { + if (ids == null || ids.isEmpty()) { + return false; + } + + // 使用 UpdateWrapper 批量更新 is_del 字段 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(User::getId, ids) // WHERE id IN (ids) + .set(User::getIsDel, 1); // SET is_del = 1 + + // 执行更新(不更新其他字段) + return this.update(updateWrapper); } private User convertToEntity(UserImportDto dto) { @@ -181,6 +228,7 @@ public class AdminUserServiceImpl extends ServiceImpl imp user.setIsWin(0); user.setCreateTime(new Date()); user.setUpdateTime(new Date()); + user.setIsDel(0); // 设置默认密码 user.setPassword("123456"); return user;