新增了自动登录功能

This commit is contained in:
abu 2024-05-09 13:11:53 +08:00
parent 74cb8f195f
commit 389f27d378
3 changed files with 239 additions and 120 deletions

View File

@ -98,6 +98,8 @@ public class wxLoginController {
String accessToken = wxOAuth2AccessToken.getAccessToken(); String accessToken = wxOAuth2AccessToken.getAccessToken();
redisTemplate.opsForValue().set("token" + from.getCode(), accessToken, 7000, TimeUnit.SECONDS); redisTemplate.opsForValue().set("token" + from.getCode(), accessToken, 7000, TimeUnit.SECONDS);
redisTemplate.opsForValue().set("openid" + from.getCode(), openId, 7000, TimeUnit.SECONDS); redisTemplate.opsForValue().set("openid" + from.getCode(), openId, 7000, TimeUnit.SECONDS);
return openId; return openId;
} }
@ -128,6 +130,28 @@ public class wxLoginController {
return h5UserService.checkUser(h5User); return h5UserService.checkUser(h5User);
} }
@GetMapping("/autologin")
public R getUserByOpenId(String openId) {
return h5UserService.AutocheckUser(openId);
}
/**
* 获取专业
* @param userId
* @return
*/
@GetMapping("/major")
public R getMajor(String userId){
LambdaQueryWrapper<H5User> h5UserLambdaQueryWrapper = new LambdaQueryWrapper<>();
h5UserLambdaQueryWrapper.eq(H5User::getUserId,userId);
H5User one = h5UserService.getOne(h5UserLambdaQueryWrapper);
if (one != null) {
return R.ok().put("major", one.getMajorId());
}
return R.error(500,"账号不存在");
}
@GetMapping("/getUser") @GetMapping("/getUser")

View File

@ -16,6 +16,7 @@ import java.util.Map;
public interface H5UserService extends IService<H5User> { public interface H5UserService extends IService<H5User> {
R checkUser(H5User h5User); R checkUser(H5User h5User);
public R AutocheckUser(String openid);
public PageUtils queryPage(Map<String, Object> params); public PageUtils queryPage(Map<String, Object> params);
public void deleteBatch(Long[] userId); public void deleteBatch(Long[] userId);

View File

@ -244,6 +244,99 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
return R.error("未知错误"); return R.error("未知错误");
} }
@Override
public R AutocheckUser(String openid) {
/**
* 1.按照openid来查询当前用户的账号和身份
* 2.如果账号存在则直接进入到主页面如果不存在让用户输入信息
*/
LambdaQueryWrapper<H5User> h5UserQuery = new LambdaQueryWrapper<>();
h5UserQuery.eq(H5User::getOpenId, openid);
H5User user = h5UserMapper.selectOne(h5UserQuery);
if (user==null){
// 说明还没注册过-把他引导去填写身份识别码
return R.ok().put("router", "myIndex");
}
String userId = user.getUserId();
Integer identity = user.getIdentity();
// 检查四个身份
switch (identity) {
// 管理员1 学生2老师 3 外校老师4
// 管理员2 学生3老师 6 外校老师9
case 2:
LambdaQueryWrapper<H5AdminInfo> H5AdminInfoWreapper = new LambdaQueryWrapper<>();
H5AdminInfoWreapper.eq(H5AdminInfo::getUserId, userId);
H5AdminInfo h5AdminInfo = h5AdminInfoMapper.selectOne(H5AdminInfoWreapper);
if (h5AdminInfo != null) {
// 返回整个user
HashMap<String, Object> map = new HashMap<>();
map.put("user", h5AdminInfo);
map.put("status", "2"); //填写过信息
map.put("router", "/leaderShip");
return R.ok(map);
} else {
return R.error("管理员账号还未申请通过!");
}
//学生2
case 3:
// 如果openid空
LambdaQueryWrapper<H5Student> stuWrapper = new LambdaQueryWrapper<>();
stuWrapper.eq(H5Student::getOpenId, openid);
stuWrapper.eq(H5Student::getUserId, userId);
H5Student h5Student = h5StudentMapper.selectOne(stuWrapper);
if (h5Student != null && h5Student.getOpenId().equals(openid)) {
// 说明已经填写过个人信息了直接放行到主页面
// 返回整个user
HashMap<String, Object> map = new HashMap<>();
map.put("user", h5Student);
map.put("status", "2"); //填写过信息
map.put("router", "/mainPage");
return R.ok(map);
}else {
return R.ok().put("router", "myIndex");
}
// 直接跳到信息填写的页面
//老师3
case 6:
LambdaQueryWrapper<H5LocalTeacher> teachWrapper = new LambdaQueryWrapper<>();
teachWrapper.eq(H5LocalTeacher::getOpenId, openid);
teachWrapper.eq(H5LocalTeacher::getUserId, userId);
H5LocalTeacher h5LocalTeacher = h5LocalTeacherMapper.selectOne(teachWrapper);
if (h5LocalTeacher != null && h5LocalTeacher.getOpenId().equals(openid)) {
// 说明已经填写过个人信息了直接放行到主页面
// 返回整个user
HashMap<String, Object> map = new HashMap<>();
map.put("user", h5LocalTeacher);
map.put("status", "2"); //填写过信息
map.put("router", "/mainPage");
return R.ok(map);
}
//外校老师4
case 9:
LambdaQueryWrapper<H5WaiTeacher> h5WaiTeacherWrapper = new LambdaQueryWrapper<>();
h5WaiTeacherWrapper.eq(H5WaiTeacher::getOpenId, openid);
h5WaiTeacherWrapper.eq(H5WaiTeacher::getUserId, userId);
H5WaiTeacher h5WaiTeacher = h5WaiTeacherMapper.selectOne(h5WaiTeacherWrapper);
if (h5WaiTeacher != null && h5WaiTeacher.getOpenId().equals(openid)) {
// 说明已经填写过个人信息了直接放行到主页面
// 返回整个user
HashMap<String, Object> map = new HashMap<>();
map.put("user", h5WaiTeacher);
map.put("status", "2"); //填写过信息
map.put("router", "/mainPage");
return R.ok(map);
}
}
return R.error("未知错误");
}
public boolean checkAcc (H5User h5User){ public boolean checkAcc (H5User h5User){
LambdaQueryWrapper<H5User> openIDListWreaper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<H5User> openIDListWreaper = new LambdaQueryWrapper<>();
openIDListWreaper.eq(H5User::getOpenId, h5User.getOpenId()); openIDListWreaper.eq(H5User::getOpenId, h5User.getOpenId());
@ -360,7 +453,8 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
userMIDList.clear(); userMIDList.clear();
} }
public void saveAccount(Integer num, Set<String> set, Integer groupType, List<H5User> h5Users, Integer majorId, @NotNull String code, String label) { public void saveAccount (Integer num, Set < String > set, Integer groupType, List < H5User > h5Users, Integer
majorId, @NotNull String code, String label){
int newCode = Integer.parseInt(code.substring(1)); int newCode = Integer.parseInt(code.substring(1));
while (num != 0) { while (num != 0) {
String randomNum = getRandomNum(8); String randomNum = getRandomNum(8);