|
|
@@ -173,4 +173,69 @@ public class AdminUserServiceImpl extends MPJBaseServiceImpl<AdminUserMapper, Ad
|
|
|
.list();
|
|
|
return new PageBean<>(list);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object wxLogin(AdminUser user) {
|
|
|
+ CommUtil.asserts(CommUtil.isNotEmptyAndNull(user.getUnionId()), "微信账户信息错误");
|
|
|
+
|
|
|
+ var adminUser = lambdaQuery()
|
|
|
+ .eq(AdminUser::getUnionId, user.getUnionId())
|
|
|
+ .eq(AdminUser::getMobilePhone, user.getMobilePhone())
|
|
|
+ .eq(AdminUser::getStatus, AdminUser.STATUS_启用).one();
|
|
|
+ if (null == adminUser) {
|
|
|
+ //判断是否已有手机账号存在,有则自动绑定union id,无则创建账号
|
|
|
+ adminUser = lambdaQuery()
|
|
|
+ .eq(AdminUser::getMobilePhone, user.getMobilePhone())
|
|
|
+ .eq(AdminUser::getStatus, AdminUser.STATUS_启用).one();
|
|
|
+ if (null != adminUser) {
|
|
|
+ adminUser.setUnionId(user.getUnionId());
|
|
|
+ } else {
|
|
|
+ //自动注册
|
|
|
+ CommUtil.asserts(CommUtil.isNotEmptyAndNull(user.getMobilePhone()), "手机号不能为空");
|
|
|
+ adminUser = new AdminUser();
|
|
|
+ adminUser.setId(IDGenerator.INS().nextId());
|
|
|
+ adminUser.setUnionId(user.getUnionId());
|
|
|
+ adminUser.setStatus(AdminUser.STATUS_启用);
|
|
|
+ adminUser.setMobilePhone(user.getMobilePhone());
|
|
|
+ adminUser.setUsername(user.getMobilePhone());
|
|
|
+ adminUser.setLastLoginTime(LocalDateTime.now());
|
|
|
+ adminUser.setUpdateTime(LocalDateTime.now());
|
|
|
+ this.save(adminUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ StpUtil.login(adminUser.getId());
|
|
|
+ // 用户名存入session,统一日志读取使用
|
|
|
+ StpUtil.getSession().set("mobilePhone", adminUser.getMobilePhone());
|
|
|
+ StpUtil.getSession().set("username", adminUser.getUsername());
|
|
|
+ user.setLastLoginTime(LocalDateTime.now());
|
|
|
+ user.setMobilePhone(user.getMobilePhone());
|
|
|
+ this.updateById(adminUser);
|
|
|
+ LOGGER.info("微信用户union:{},name:{},phone:{},id:{}登录", adminUser.getUnionId(), adminUser.getUsername(), adminUser.getMobilePhone(), adminUser.getId());
|
|
|
+ // token在cookie中有隐式返回,这里多做显式返回
|
|
|
+ user.setPassword(null);
|
|
|
+ user.setUnionId(null);
|
|
|
+ return Map.of("user", user, "satoken", StpUtil.getTokenValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object loginByUnion(AdminUser user) {
|
|
|
+ CommUtil.asserts(CommUtil.isNotEmptyAndNull(user.getUnionId()), "微信账户信息错误");
|
|
|
+ var adminUser = lambdaQuery()
|
|
|
+ .eq(AdminUser::getUnionId, user.getUnionId())
|
|
|
+ .eq(AdminUser::getStatus, AdminUser.STATUS_启用).one();
|
|
|
+ if(null==adminUser){
|
|
|
+ return Map.of("user", adminUser);
|
|
|
+ }else{
|
|
|
+ StpUtil.login(adminUser.getId());
|
|
|
+ // 用户名存入session,统一日志读取使用
|
|
|
+ StpUtil.getSession().set("mobilePhone", adminUser.getMobilePhone());
|
|
|
+ StpUtil.getSession().set("username", adminUser.getUsername());
|
|
|
+ user.setLastLoginTime(LocalDateTime.now());
|
|
|
+ user.setMobilePhone(user.getMobilePhone());
|
|
|
+ this.updateById(adminUser);
|
|
|
+ user.setPassword(null);
|
|
|
+ user.setUnionId(null);
|
|
|
+ return Map.of("user", user, "satoken", StpUtil.getTokenValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|