新增了自动登录功能

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,7 +244,100 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
return R.error("未知错误"); return R.error("未知错误");
} }
public boolean checkAcc(H5User h5User) {
@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){
LambdaQueryWrapper<H5User> openIDListWreaper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<H5User> openIDListWreaper = new LambdaQueryWrapper<>();
openIDListWreaper.eq(H5User::getOpenId, h5User.getOpenId()); openIDListWreaper.eq(H5User::getOpenId, h5User.getOpenId());
List<H5User> Users = h5UserMapper.selectList(openIDListWreaper); List<H5User> Users = h5UserMapper.selectList(openIDListWreaper);
@ -258,7 +351,7 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
} }
// 判空openid // 判空openid
public boolean checker(String openid) { public boolean checker (String openid){
// userId已经存在所以更新openid即可 // userId已经存在所以更新openid即可
if ("".equals(openid) || null == openid) { if ("".equals(openid) || null == openid) {
return true; return true;
@ -268,7 +361,7 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
@Override @Override
public PageUtils queryPage(Map<String, Object> params) { public PageUtils queryPage (Map < String, Object > params){
String userId = (String) params.get("userId"); String userId = (String) params.get("userId");
Long createUserId = (Long) params.get("createUserId"); Long createUserId = (Long) params.get("createUserId");
@ -287,12 +380,12 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
// 删除 // 删除
@Override @Override
public void deleteBatch(Long[] userId) { public void deleteBatch (Long[]userId){
this.removeByIds(Arrays.asList(userId)); this.removeByIds(Arrays.asList(userId));
} }
@Override @Override
public void createAccount(Integer groupType, Integer num, Integer majorId) { public void createAccount (Integer groupType, Integer num, Integer majorId){
Set<String> set = new HashSet<>(); Set<String> set = new HashSet<>();
List<String> userMIDList = new ArrayList<>(); List<String> userMIDList = new ArrayList<>();
List<H5User> h5Users = new ArrayList<>(); List<H5User> h5Users = new ArrayList<>();
@ -325,33 +418,33 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
String geography = ""; String geography = "";
if (userMIDList.isEmpty()) { if (userMIDList.isEmpty()) {
geography = "D241000"; geography = "D241000";
}else { } else {
geography = userMIDList.get(userMIDList.size() - 1); geography = userMIDList.get(userMIDList.size() - 1);
} }
saveAccount(num, set, groupType, h5Users, majorId, geography,"D"); saveAccount(num, set, groupType, h5Users, majorId, geography, "D");
break; break;
// 历史 // 历史
case 7: case 7:
String history = ""; String history = "";
if (userMIDList.isEmpty()) { if (userMIDList.isEmpty()) {
history = "L242000"; history = "L242000";
}else { } else {
history = userMIDList.get(userMIDList.size() - 1); history = userMIDList.get(userMIDList.size() - 1);
} }
saveAccount(num, set, groupType, h5Users, majorId, history,"L"); saveAccount(num, set, groupType, h5Users, majorId, history, "L");
break; break;
// 马克思 // 马克思
case 8: case 8:
String marx = ""; String marx = "";
if (userMIDList.isEmpty()) { if (userMIDList.isEmpty()) {
marx = "M243000"; marx = "M243000";
}else { } else {
marx = userMIDList.get(userMIDList.size() - 1); marx = userMIDList.get(userMIDList.size() - 1);
} }
saveAccount(num, set, groupType, h5Users, majorId, marx,"M"); saveAccount(num, set, groupType, h5Users, majorId, marx, "M");
break; break;
} }
this.saveBatch(h5Users); this.saveBatch(h5Users);
@ -360,8 +453,9 @@ 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
int newCode= Integer.parseInt(code.substring(1)); majorId, @NotNull String code, String label){
int newCode = Integer.parseInt(code.substring(1));
while (num != 0) { while (num != 0) {
String randomNum = getRandomNum(8); String randomNum = getRandomNum(8);
String substring = randomNum.substring(0, 3); String substring = randomNum.substring(0, 3);
@ -383,8 +477,8 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
h5User.setIdentity(groupType); h5User.setIdentity(groupType);
h5User.setUserName(""); h5User.setUserName("");
h5User.setMajorId(majorId); h5User.setMajorId(majorId);
newCode+=1; newCode += 1;
h5User.setUserMajorId(label+newCode); h5User.setUserMajorId(label + newCode);
h5User.setStatus(1); h5User.setStatus(1);
h5User.setCreateTime(LocalDateTime.now()); h5User.setCreateTime(LocalDateTime.now());
h5User.setUpdateTime(LocalDateTime.now()); h5User.setUpdateTime(LocalDateTime.now());
@ -395,7 +489,7 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
} }
// 编写一个辅助函数功能随机自动生成八位数字 // 编写一个辅助函数功能随机自动生成八位数字
public static String getRandomNum(int length) { public static String getRandomNum ( int length){
//功能随机自动生成八位数字 //功能随机自动生成八位数字
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
@ -405,7 +499,7 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
} }
} }