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