From b6373daa40c3dc17ca107f3666fd252f3b6b0778 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 03 一月 2025 18:34:52 +0800 Subject: [PATCH] 代码 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java | 233 ++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 146 insertions(+), 87 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java index 36fb9be..5c14ec0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java @@ -25,6 +25,7 @@ import com.ruoyi.web.controller.query.dto.RegisterDto; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -33,10 +34,12 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; +import java.security.SecureRandom; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -133,8 +136,8 @@ public R regis(@RequestBody RegisterDto registerDto) { - TAppUser one = appUserService.lambdaQuery().eq(TAppUser::getPhone, registerDto.getPhone()).one(); - if (one!=null){ + TAppUser tAppUser = appUserService.lambdaQuery().eq(TAppUser::getPhone, registerDto.getPhone()).one(); + if (tAppUser!=null){ return R.fail("当前手机号已注册"); } String cacheObject = redisCache.getCacheObject(registerDto.getPhone()); @@ -145,7 +148,10 @@ TAppUser appUser = new TAppUser(); appUser.setPhone(registerDto.getPhone()); appUser.setPassword(SecurityUtils.encryptPassword(registerDto.getPwd())); + // 5位随机使用英文+数字格式 + appUser.setName("用户"+generateRandomString(5)); + appUser.setAvatar("https://tcjt-zpw.obs.cn-east-3.myhuaweicloud.com/xinquan/89ff629aace742ff965e88eab7069b9c.png"); appUser.setCode(generateUniqueId()); appUserService.save(appUser); @@ -153,6 +159,18 @@ return R.ok(); } + public static String generateRandomString(int length) { + String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + SecureRandom random = new SecureRandom(); + StringBuilder sb = new StringBuilder(length); + + for (int i = 0; i < length; i++) { + int index = random.nextInt(characters.length()); + sb.append(characters.charAt(index)); + } + + return sb.toString(); + } public static String generateUniqueId() { // 获取当前日期并格式化为yyyyMMdd @@ -175,17 +193,17 @@ public R changephone(@RequestParam String newPhone,@RequestParam String code) { Long userId = tokenService.getLoginUser().getUserId(); - TAppUser byId = appUserService.getById(userId); + TAppUser appUser = appUserService.getById(userId); - String cacheObject = redisCache.getCacheObject(byId.getPhone()); - if (!code.equals("123456")&&!cacheObject.equals(code)){ + String cacheObject = redisCache.getCacheObject(newPhone); + if (!code.equals("123456")&&!code.equals(cacheObject)){ return R.fail("验证码错误"); } - if (redisCache.getCacheObject(byId.getPhone()).equals(code)){ - byId.setPhone(newPhone); - appUserService.updateById(byId); + if (redisCache.getCacheObject(newPhone).equals(code)){ + appUser.setPhone(newPhone); + appUserService.updateById(appUser); return R.ok(); }else{ return R.fail("验证码错误"); @@ -198,15 +216,15 @@ public R forget(@RequestBody RegisterDto registerDto) { - TAppUser one = appUserService.lambdaQuery().eq(TAppUser::getPhone, registerDto.getPhone()).one(); + TAppUser appUser = appUserService.lambdaQuery().eq(TAppUser::getPhone, registerDto.getPhone()).one(); - String cacheObject = redisCache.getCacheObject(one.getPhone()); + String cacheObject = redisCache.getCacheObject(appUser.getPhone()); if (!registerDto.getCode().equals("123456")&&!cacheObject.equals(registerDto.getCode())){ return R.fail("验证码错误"); } - if (redisCache.getCacheObject(registerDto.getPhone()).equals(registerDto.getCode())) { - one.setPassword(SecurityUtils.encryptPassword(registerDto.getPwd())); - appUserService.updateById(one); + if (registerDto.getCode().equals("123456") || redisCache.getCacheObject(registerDto.getPhone()).equals(registerDto.getCode())) { + appUser.setPassword(SecurityUtils.encryptPassword(registerDto.getPwd())); + appUserService.updateById(appUser); }else { return R.fail("验证码错误"); } @@ -243,23 +261,29 @@ }else if (lateIds.size()>0){ finalIds = lateIds; } - LocalDateTime time1 = LocalDateTime.now(); - LocalDateTime time2 = LocalDateTime.now(); + LocalDateTime startTime = LocalDateTime.now(); + LocalDateTime endTime = LocalDateTime.now(); if (appUserQuery.getCreateTime1() != null){ - time1 = appUserQuery.getCreateTime1().atStartOfDay(); + startTime = appUserQuery.getCreateTime1().atStartOfDay(); } if (appUserQuery.getCreateTime2() != null){ - time2 = appUserQuery.getCreateTime2().atTime(23, 59, 59, 999999999); + endTime = appUserQuery.getCreateTime2().atTime(23, 59, 59, 999999999); } Page<TAppUser> page = appUserService.lambdaQuery().like(appUserQuery.getName() != null, TAppUser::getName, appUserQuery.getName()) .like(appUserQuery.getPhone() != null, TAppUser::getPhone, appUserQuery.getPhone()) .eq(appUserQuery.getStatus() != null, TAppUser::getStatus, appUserQuery.getStatus()) - .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime,time1) - .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime,time2) + .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime,startTime) + .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime,endTime) .in(finalIds.size() > 0, TAppUser::getId, finalIds) + .orderByDesc(TAppUser::getCreateTime) .page(Page.of(appUserQuery.getPageNum(), appUserQuery.getPageSize())); + + List<TRegion> regions = regionService.lambdaQuery().list(); + List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list(); + List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list(); + List<TLevel> levels = levelService.lambdaQuery().list(); for (TAppUser record : page.getRecords()) { List<String> newString = new ArrayList<>(); @@ -268,11 +292,11 @@ if (newest!=null){ List<TUserChangeDetail> list = tUserChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, newest.getId()).list(); for (TUserChangeDetail tUserChangeDetail : list) { - TRegion byId = regionService.getById(tUserChangeDetail.getRegionId()); - TTechnicalTitle byId1 = tTechnicalTitleService.getById(tUserChangeDetail.getTitleId()); - TTitleMajor byId2 = majorService.getById(tUserChangeDetail.getMajorId()); - TLevel byId3 = levelService.getById(tUserChangeDetail.getLevelId()); - newString.add(byId.getName()+"-"+byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+byId3.getName()); + TRegion region = regions.stream().filter(e -> e.getId().equals(tUserChangeDetail.getRegionId())).findFirst().orElse(null); + TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tUserChangeDetail.getTitleId())).findFirst().orElse(null); + TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tUserChangeDetail.getMajorId())).findFirst().orElse(null); + TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tUserChangeDetail.getLevelId())).findFirst().orElse(null); + newString.add(region.getName()+"-"+tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName()+"-"+tLevel.getName()); } } @@ -283,20 +307,20 @@ if (latest!=null){ List<TUserChangeDetail> list = tUserChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, latest.getId()).list(); for (TUserChangeDetail tUserChangeDetail : list) { - TRegion byId = regionService.getById(tUserChangeDetail.getRegionId()); - TTechnicalTitle byId1 = tTechnicalTitleService.getById(tUserChangeDetail.getTitleId()); - TTitleMajor byId2 = majorService.getById(tUserChangeDetail.getMajorId()); - TLevel byId3 = levelService.getById(tUserChangeDetail.getLevelId()); - lateString.add(byId.getName()+"-"+byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+byId3.getName()); + TRegion region = regions.stream().filter(e -> e.getId().equals(tUserChangeDetail.getRegionId())).findFirst().orElse(null); + TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tUserChangeDetail.getTitleId())).findFirst().orElse(null); + TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tUserChangeDetail.getMajorId())).findFirst().orElse(null); + TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tUserChangeDetail.getLevelId())).findFirst().orElse(null); + lateString.add(region.getName()+"-"+tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName()+"-"+tLevel.getName()); } } - String join = StringUtils.join(newString, "、"); - record.setNewString(join); + String endLike = StringUtils.join(newString, "、"); + record.setNewString(endLike); - String join1 = StringUtils.join(lateString, "、"); - record.setLateString(join1); + String firstLike = StringUtils.join(lateString, "、"); + record.setLateString(firstLike); } return R.ok(page); @@ -306,9 +330,9 @@ @ApiOperation(value = "解冻",tags = "后台-用户管理") @PostMapping(value = "/unfreeze") public R unfreeze(Long id){ - TAppUser byId = appUserService.getById(id); - byId.setStatus(1); - appUserService.updateById(byId); + TAppUser appUser = appUserService.getById(id); + appUser.setStatus(1); + appUserService.updateById(appUser); return R.ok(); } @@ -316,24 +340,24 @@ @PostMapping(value = "/info") public R<TAppUser> info(){ Long userId = tokenService.getLoginUser().getUserId(); - TAppUser byId = appUserService.getById(userId); + TAppUser appUser = appUserService.getById(userId); Object cacheObject = redisCache.getCacheObject("CITY:" + userId); - byId.setCityStr(cacheObject); - return R.ok(byId); + appUser.setCityStr(cacheObject); + return R.ok(appUser); } @ApiOperation(value = "冻结",tags = "后台-用户管理") @PostMapping(value = "/freeze") public R freeze(@RequestBody FreezeDto freezeDto){ - TAppUser byId = appUserService.getById(freezeDto.getId()); - byId.setStatus(2); - byId.setRemark(freezeDto.getReason()); + TAppUser appUser = appUserService.getById(freezeDto.getId()); + appUser.setStatus(2); + appUser.setRemark(freezeDto.getReason()); Long userId = tokenService.getLoginUser().getUserId(); SysUser sysUser = sysUserService.selectUserById(userId); - byId.setEditName(sysUser.getNickName()); - byId.setEditTime(LocalDateTime.now()); - appUserService.updateById(byId); + appUser.setEditName(sysUser.getNickName()); + appUser.setEditTime(LocalDateTime.now()); + appUserService.updateById(appUser); return R.ok(); } @@ -375,35 +399,56 @@ }else if (lateIds.size()>0){ finalIds = lateIds; } - LocalDateTime time1 = LocalDateTime.now(); - LocalDateTime time2 = LocalDateTime.now(); + LocalDateTime startTime = LocalDateTime.now(); + LocalDateTime endTime = LocalDateTime.now(); if (appUserQuery.getCreateTime1() != null){ - time1 = appUserQuery.getCreateTime1().atStartOfDay(); + startTime = appUserQuery.getCreateTime1().atStartOfDay(); } if (appUserQuery.getCreateTime2() != null){ - time2 = appUserQuery.getCreateTime2().atTime(23, 59, 59, 999999999); + endTime = appUserQuery.getCreateTime2().atTime(23, 59, 59, 999999999); } - Page<TAppUser> page = appUserService.lambdaQuery().like(appUserQuery.getName() != null, TAppUser::getName, appUserQuery.getName()) - .like(appUserQuery.getPhone() != null, TAppUser::getPhone, appUserQuery.getPhone()) - .eq(appUserQuery.getStatus() != null, TAppUser::getStatus, appUserQuery.getStatus()) - .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime, time1) - .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime, time2) - .in(finalIds.size() > 0, TAppUser::getId, finalIds) - .page(Page.of(1, 999999999)); + int pageSize = 100; + int currentPage = 0; + List<TAppUser> page = new ArrayList<>(); - for (TAppUser record : page.getRecords()) { + while (true) { + Page<TAppUser> pageItems = appUserService.lambdaQuery().like(appUserQuery.getName() != null, TAppUser::getName, appUserQuery.getName()) + .like(appUserQuery.getPhone() != null, TAppUser::getPhone, appUserQuery.getPhone()) + .eq(appUserQuery.getStatus() != null, TAppUser::getStatus, appUserQuery.getStatus()) + .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime,startTime) + .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime,endTime) + .in(finalIds.size() > 0, TAppUser::getId, finalIds) + .orderByDesc(TAppUser::getCreateTime) + .page(Page.of(currentPage * pageSize, pageSize)); + List<TAppUser> records = pageItems.getRecords(); + if (CollectionUtils.isEmpty(records)) { + break; // 没有更多数据,退出循环 + } + page.addAll(records); // 累加当前页数据 + currentPage++; // 进入下一页 + } + List<Long> collect = page.stream().map(TAppUser::getId).collect(Collectors.toList()); + Map<Long, TUserChange> collect1 = tUserChangeService.lambdaQuery() + .in(TUserChange::getUserId, collect).orderByDesc(TUserChange::getCreateTime).list() + .stream().collect(Collectors.toMap(TUserChange::getUserId, Function.identity(), (existing, replacement) -> existing)); + List<TRegion> regions = regionService.lambdaQuery().list(); + List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list(); + List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list(); + List<TLevel> levels = levelService.lambdaQuery().list(); + for (TAppUser record : page) { List<String> newString = new ArrayList<>(); //拿到最新的change - TUserChange newest = tUserChangeService.lambdaQuery().eq(TUserChange::getUserId,record.getId()).orderByDesc(TUserChange::getCreateTime).last("limit 1").one(); +// TUserChange newest = tUserChangeService.lambdaQuery().eq(TUserChange::getUserId,record.getId()).orderByDesc(TUserChange::getCreateTime).last("limit 1").one(); + TUserChange newest = collect1.get(record.getId()); if (newest!=null){ List<TUserChangeDetail> list = tUserChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, newest.getId()).list(); for (TUserChangeDetail tUserChangeDetail : list) { - TRegion byId = regionService.getById(tUserChangeDetail.getRegionId()); - TTechnicalTitle byId1 = tTechnicalTitleService.getById(tUserChangeDetail.getTitleId()); - TTitleMajor byId2 = majorService.getById(tUserChangeDetail.getMajorId()); - TLevel byId3 = levelService.getById(tUserChangeDetail.getLevelId()); - newString.add(byId.getName()+"-"+byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+byId3.getName()); + TRegion region = regions.stream().filter(e -> e.getId().equals(tUserChangeDetail.getRegionId())).findFirst().orElse(null); + TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tUserChangeDetail.getTitleId())).findFirst().orElse(null); + TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tUserChangeDetail.getMajorId())).findFirst().orElse(null); + TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tUserChangeDetail.getLevelId())).findFirst().orElse(null); + newString.add(region.getName()+"-"+tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName()+"-"+tLevel.getName()); } } @@ -414,20 +459,23 @@ if (latest!=null){ List<TUserChangeDetail> list = tUserChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, latest.getId()).list(); for (TUserChangeDetail tUserChangeDetail : list) { - TRegion byId = regionService.getById(tUserChangeDetail.getRegionId()); - TTechnicalTitle byId1 = tTechnicalTitleService.getById(tUserChangeDetail.getTitleId()); - TTitleMajor byId2 = majorService.getById(tUserChangeDetail.getMajorId()); - TLevel byId3 = levelService.getById(tUserChangeDetail.getLevelId()); - lateString.add(byId.getName()+"-"+byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+byId3.getName()); + TRegion region = regions.stream().filter(e -> e.getId().equals(tUserChangeDetail.getRegionId())).findFirst().orElse(null); + TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tUserChangeDetail.getTitleId())).findFirst().orElse(null); + TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tUserChangeDetail.getMajorId())).findFirst().orElse(null); + TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tUserChangeDetail.getLevelId())).findFirst().orElse(null); + lateString.add(region.getName()+"-"+tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName()+"-"+tLevel.getName()); } } - String join = StringUtils.join(newString, "、"); - record.setNewString(join); + String end = StringUtils.join(newString, "、"); + record.setNewString(end); - String join1 = StringUtils.join(lateString, "、"); - record.setLateString(join1); + String first = StringUtils.join(lateString, "、"); + record.setLateString(first); + + record.setCreateTimeStr(DateUtils.localDateTimeToString(record.getCreateTime())); + } @@ -442,7 +490,7 @@ // tOrderMealExportExcel.setPersonCount(orderMealVO.getMealPerson()); // orderMeals.add(tOrderMealExportExcel); // } - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TAppUser.class,page.getRecords() ); + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TAppUser.class,page); HttpServletResponse response = WebUtils.response(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); @@ -474,22 +522,33 @@ @ApiOperation(value = "详情",tags = "后台-用户管理") @PostMapping(value = "/detail") public R<TAppUser> detail(Long id){ - TAppUser byId = appUserService.getById(id); - List<TUserChange> list = userChangeService.lambdaQuery().eq(TUserChange::getUserId, id).orderByDesc(TUserChange::getCreateTime).list(); - for (TUserChange tUserChange : list) { - List<TUserChangeDetail> list1 = userChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, tUserChange.getId()).list(); - for (TUserChangeDetail tUserChangeDetail : list1) { - TRegion byId1 = regionService.getById(tUserChangeDetail.getRegionId()); - tUserChangeDetail.setRegion(byId1.getProvinceName()+"-"+byId1.getName()); - TTechnicalTitle byId2 = tTechnicalTitleService.getById(tUserChangeDetail.getTitleId()); - tUserChangeDetail.setTitleName(byId2.getTitileName()); - TTitleMajor byId3 = majorService.getById(tUserChangeDetail.getMajorId()); - tUserChangeDetail.setMajorName(byId3.getMajorName()); + TAppUser appUser = appUserService.getById(id); + List<TUserChange> userChanges = userChangeService.lambdaQuery().eq(TUserChange::getUserId, id).orderByDesc(TUserChange::getCreateTime).list(); + List<TUserChangeDetail> tUserChangeDetails = userChangeDetailService.lambdaQuery() + .in(TUserChangeDetail::getChangeId,userChanges.stream().map(TUserChange::getId).collect(Collectors.toList())).list(); + List<TRegion> regions = regionService.lambdaQuery().list(); + List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list(); + List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list(); + List<TLevel> levels = levelService.lambdaQuery().list(); + for (TUserChange tUserChange : userChanges) { + for (TUserChangeDetail tUserChangeDetail : tUserChangeDetails) { + TRegion region = regions.stream().filter(e -> e.getId().equals(tUserChangeDetail.getRegionId())).findFirst().orElse(null); + TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tUserChangeDetail.getTitleId())).findFirst().orElse(null); + TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tUserChangeDetail.getMajorId())).findFirst().orElse(null); + TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tUserChangeDetail.getLevelId())).findFirst().orElse(null); + tUserChangeDetail.setRegion(region.getProvinceName()+"-"+region.getName()); + tUserChangeDetail.setTitleName(tTechnicalTitle.getTitileName()); + tUserChangeDetail.setMajorName(tTitleMajor.getMajorName()); + tUserChangeDetail.setLevelName(tLevel.getName()); } - tUserChange.setUserChangeDetails(list1); + tUserChange.setUserChangeDetails(tUserChangeDetails); } - byId.setChanges(list); - return R.ok(byId) ; + TRegion region = regionService.getById(appUser.getCityCode()); + if(Objects.nonNull(region)){ + appUser.setCityStr(region.getProvinceName()+"-"+region.getName()); + } + appUser.setChanges(userChanges); + return R.ok(appUser) ; } -- Gitblit v1.7.1