diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java index d3689a00..076bf404 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-learn/src/main/java/org/jeecg/modules/biz/controller/UserBizController.java @@ -18,6 +18,7 @@ import org.jeecg.modules.gen.userinfo.entity.UserInfo; import org.jeecg.modules.gen.userinfo.mapper.UserInfoMapper; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.*; +import org.jeecg.common.system.vo.DictModel; import java.util.LinkedHashMap; import java.util.List; @@ -33,6 +34,7 @@ import org.jeecg.common.util.PasswordUtil; import org.jeecg.common.util.RedisUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.BeanUtils; +import org.jeecg.common.system.api.ISysBaseAPI; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -52,6 +54,8 @@ public class UserBizController { private UserBizService userBizService; @Autowired private UserInfoMapper userInfoMapper; + @Autowired + private ISysBaseAPI sysBaseApi; @PostMapping("/login") @Operation(summary = "用户登录") @@ -65,36 +69,36 @@ public class UserBizController { } // step.2 校验用户是否存在且有效 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysUser::getUsername,username); - SysUser sysUser = sysUserService.getOne(queryWrapper); - Result checkResult = sysUserService.checkUserIsEffective(sysUser); - if(!checkResult.isSuccess()) { - return result.error500(checkResult.getMessage()); - } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getUsername, username); + SysUser sysUser = sysUserService.getOne(queryWrapper); + Result checkResult = sysUserService.checkUserIsEffective(sysUser); + if (!checkResult.isSuccess()) { + return result.error500(checkResult.getMessage()); + } - // step.3 校验用户名或密码是否正确 - String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); - String syspassword = sysUser.getPassword(); - if (!syspassword.equals(userpassword)) { - addLoginFailOvertimes(username); - result.error500("用户名或密码错误"); - return result; - } + // step.3 校验用户名或密码是否正确 + String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); + String syspassword = sysUser.getPassword(); + if (!syspassword.equals(userpassword)) { + addLoginFailOvertimes(username); + result.error500("用户名或密码错误"); + return result; + } - // step.4 登录成功获取用户信息 + // step.4 登录成功获取用户信息 JSONObject obj = new JSONObject(new LinkedHashMap<>()); - //1.生成token - String token = JwtUtil.sign(username, syspassword); - // 设置token缓存有效时间 - redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); - redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); - obj.put("token", token); + // 1.生成token + String token = JwtUtil.sign(username, syspassword); + // 设置token缓存有效时间 + redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); + redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); + obj.put("token", token); // TODO 查询用户信息 result.setResult(obj); - result.success("登录成功"); + result.success("登录成功"); return result; } @@ -117,19 +121,20 @@ public class UserBizController { } /** - * 记录登录失败次数 - * @param username - */ - private void addLoginFailOvertimes(String username){ - String key = CommonConstant.LOGIN_FAIL + username; - Object failTime = redisUtil.get(key); - Integer val = 0; - if(failTime!=null){ - val = Integer.parseInt(failTime.toString()); - } - // 10分钟,一分钟为60s - redisUtil.set(key, ++val, 600); - } + * 记录登录失败次数 + * + * @param username + */ + private void addLoginFailOvertimes(String username) { + String key = CommonConstant.LOGIN_FAIL + username; + Object failTime = redisUtil.get(key); + Integer val = 0; + if (failTime != null) { + val = Integer.parseInt(failTime.toString()); + } + // 10分钟,一分钟为60s + redisUtil.set(key, ++val, 600); + } @GetMapping("/all_teachers") @Operation(summary = "查询师资力量", description = "categoryId为all则查询全部") @@ -161,18 +166,17 @@ public class UserBizController { // 4. 根据用户ID查询user_info表信息 UserInfo userInfo = userInfoMapper.selectOne( - new QueryWrapper().eq("user_id", sysUser.getId()) - ); + new QueryWrapper().eq("user_id", sysUser.getId())); // 5. 构建返回结果 UserInfoResponse response = new UserInfoResponse(); - + // 基本用户信息 UserInfoResponse.BaseInfo baseInfo = new UserInfoResponse.BaseInfo(); BeanUtils.copyProperties(sysUser, baseInfo); response.setBaseInfo(baseInfo); response.setRoles(roles); - + // 扩展用户信息 if (userInfo != null) { UserInfoResponse.ExtendedInfo extendedInfo = new UserInfoResponse.ExtendedInfo(); @@ -186,4 +190,15 @@ public class UserBizController { return Result.error(500, "查询用户信息失败:" + e.getMessage()); } } + + @GetMapping("/schools") + @Operation(summary = "查询学校列表") + @IgnoreAuth + public Result> querySchools() { + List list = sysBaseApi.getDictItems("school_list"); + List schools = list.stream() + .map(d -> d.getLabel()) + .collect(Collectors.toList()); + return Result.OK(schools); + } }