新增了自动登录功能

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,129 +244,223 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
return R.error("未知错误"); return R.error("未知错误");
} }
public boolean checkAcc(H5User h5User) {
LambdaQueryWrapper<H5User> openIDListWreaper = new LambdaQueryWrapper<>(); @Override
openIDListWreaper.eq(H5User::getOpenId, h5User.getOpenId()); public R AutocheckUser(String openid) {
List<H5User> Users = h5UserMapper.selectList(openIDListWreaper); /**
for (H5User user : Users) { * 1.按照openid来查询当前用户的账号和身份
if (user.getOpenId().equals(h5User.getOpenId())) { * 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<>();
openIDListWreaper.eq(H5User::getOpenId, h5User.getOpenId());
List<H5User> Users = h5UserMapper.selectList(openIDListWreaper);
for (H5User user : Users) {
if (user.getOpenId().equals(h5User.getOpenId())) {
// 账号存在 // 账号存在
return true;
}
}
return false;
}
// 判空openid
public boolean checker (String openid){
// userId已经存在所以更新openid即可
if ("".equals(openid) || null == openid) {
return true; return true;
} }
return false;
} }
return false;
}
// 判空openid
public boolean checker(String openid) {
// userId已经存在所以更新openid即可
if ("".equals(openid) || null == openid) {
return true;
}
return false;
}
@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");
IPage<H5User> page = this.page( IPage<H5User> page = this.page(
new Query<H5User>().getPage(params), new Query<H5User>().getPage(params),
new QueryWrapper<H5User>() new QueryWrapper<H5User>()
.like(StringUtils.isNotBlank(userId), "user_id", userId) .like(StringUtils.isNotBlank(userId), "user_id", userId)
// 按时间降序排序 // 按时间降序排序
.orderByDesc("update_time") .orderByDesc("update_time")
// .eq(createUserId != null, "create_user_id", createUserId) // .eq(createUserId != null, "create_user_id", createUserId)
); );
return new PageUtils(page); return new PageUtils(page);
} }
// 删除 // 删除
@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<>();
List<H5User> list = this.list(); List<H5User> list = this.list();
list.forEach((item) -> { list.forEach((item) -> {
set.add(item.getUserId()); set.add(item.getUserId());
String userMajorId = item.getUserMajorId(); String userMajorId = item.getUserMajorId();
if (Objects.equals(item.getMajorId(), majorId)) { if (Objects.equals(item.getMajorId(), majorId)) {
// userMIDList.add(Integer.parseInt(userMajorId.substring(1))); // userMIDList.add(Integer.parseInt(userMajorId.substring(1)));
userMIDList.add(userMajorId); userMIDList.add(userMajorId);
} }
// Integer userMID = Integer.parseInt(userMajorId.substring(1)); // Integer userMID = Integer.parseInt(userMajorId.substring(1));
// userMIDList.add(userMID); // userMIDList.add(userMID);
}); });
switch (majorId) { switch (majorId) {
// 中文 // 中文
case 1: case 1:
String chinese = ""; String chinese = "";
if (userMIDList.isEmpty()) { if (userMIDList.isEmpty()) {
chinese = "W240000"; chinese = "W240000";
} else { } else {
chinese = userMIDList.get(userMIDList.size() - 1); chinese = userMIDList.get(userMIDList.size() - 1);
// //
} }
saveAccount(num, set, groupType, h5Users, majorId, chinese, "W"); saveAccount(num, set, groupType, h5Users, majorId, chinese, "W");
break; break;
// 地理 // 地理
case 4: case 4:
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);
h5Users.clear();
set.clear();
userMIDList.clear();
} }
this.saveBatch(h5Users);
h5Users.clear();
set.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){
while (num != 0) { int newCode = Integer.parseInt(code.substring(1));
String randomNum = getRandomNum(8); while (num != 0) {
String substring = randomNum.substring(0, 3); String randomNum = getRandomNum(8);
String substrin1 = randomNum.substring(5, 8); String substring = randomNum.substring(0, 3);
String account = substring + groupType + majorId + substrin1; String substrin1 = randomNum.substring(5, 8);
String account = substring + groupType + majorId + substrin1;
// TypeEnum typeEnum = TypeEnum.getByMajorId(majorId); // TypeEnum typeEnum = TypeEnum.getByMajorId(majorId);
// String prefix = typeEnum.getCode(); // String prefix = typeEnum.getCode();
// Long code = redisTemplate.opsForValue().increment(typeEnum.getName()); // Long code = redisTemplate.opsForValue().increment(typeEnum.getName());
@ -376,37 +470,37 @@ public class H5UserServiceImpl extends ServiceImpl<H5UserMapper, H5User>
// String code2 = String.format("%s%03d", prefix, code); // String code2 = String.format("%s%03d", prefix, code);
// System.out.println(code2); // System.out.println(code2);
if (!set.contains(account)) { if (!set.contains(account)) {
num--; num--;
H5User h5User = new H5User(); H5User h5User = new H5User();
h5User.setUserId(account); h5User.setUserId(account);
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());
h5Users.add(h5User); h5Users.add(h5User);
// h5UserMapper.insert(h5User); // h5UserMapper.insert(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++) {
sb.append((int) (Math.random() * 10)); sb.append((int) (Math.random() * 10));
}
return sb.toString();
} }
return sb.toString();
} }
}