无关风月
2025-01-01 ca070436770f715572405880cfe548c02f639c73
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java
@@ -38,6 +38,7 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -134,8 +135,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());
@@ -191,7 +192,7 @@
    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(newPhone);
@@ -199,9 +200,9 @@
            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("验证码错误");
@@ -214,15 +215,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("验证码错误");
        }
@@ -259,21 +260,21 @@
        }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()));
@@ -309,11 +310,11 @@
            }
            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);
@@ -323,9 +324,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();
    }
@@ -333,24 +334,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();
    }
@@ -392,35 +393,43 @@
        }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())
        List<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));
        for (TAppUser record : page.getRecords()) {
                .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime, startTime)
                .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime, endTime)
                .in(finalIds.size() > 0, TAppUser::getId, finalIds).list()
                ;
        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());
                }
            }
@@ -431,20 +440,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 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()));
@@ -462,7 +471,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");
@@ -494,24 +503,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());
                TLevel byId4 = levelService.getById(tUserChangeDetail.getLevelId());
                tUserChangeDetail.setLevelName(byId4.getName());
        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) ;
    }