+19
@@ -3,12 +3,14 @@ package com.yida.data.auth.controller;
|
||||
import com.yida.data.auth.entity.BindUser;
|
||||
import com.yida.data.auth.service.SocialLoginService;
|
||||
import com.yida.data.common.core.common.ModuleName;
|
||||
import com.yida.data.common.core.common.ResultBean;
|
||||
import com.yida.data.common.core.entity.FebsResponse;
|
||||
import com.yida.data.common.core.entity.constant.StringConstant;
|
||||
import com.yida.data.common.core.entity.system.UserConnection;
|
||||
import com.yida.data.common.core.exception.FebsException;
|
||||
import com.yida.data.common.core.utils.FebsUtil;
|
||||
import com.yida.data.log.annotation.OperationLog;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -29,6 +31,7 @@ import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author MrBird
|
||||
@@ -203,4 +206,20 @@ public class SocialLoginController {
|
||||
@ApiParam("0-教师,1-家长") Integer type) {
|
||||
return new FebsResponse().data(socialLoginService.h5Login(schoolId, mobile, type));
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@ApiOperation("检查openId状态")
|
||||
@GetMapping("smart/checkOpenId")
|
||||
public ResultBean<Map<String, Object>> checkOpenId(@RequestParam @ApiParam(value = "微信公众号授权code", required = true) String code,
|
||||
@RequestParam @ApiParam(value = "学校id(链接上附带)", required = true) Long deptId) {
|
||||
return ResultBean.buildSuccess(socialLoginService.checkOpenId(code, deptId));
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@ApiOperation("智慧迎新学生端登录接口")
|
||||
@GetMapping("wxPublic/welcome/login")
|
||||
public FebsResponse wxPublicLogin(@RequestParam @ApiParam(value = "微信openId", required = true) String openId,
|
||||
@RequestParam @ApiParam(value = "学校id(链接上附带)", required = true) Long deptId) {
|
||||
return new FebsResponse().data(socialLoginService.wxPublicLogin(openId, deptId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.yida.data.auth.manager;
|
||||
|
||||
import cc.mrbird.febs.common.redis.service.RedisService;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.yida.data.auth.mapper.EduUserLogoMapper;
|
||||
@@ -17,6 +18,7 @@ import com.yida.data.common.core.entity.system.EduUserLogo;
|
||||
import com.yida.data.common.core.entity.system.Menu;
|
||||
import com.yida.data.common.core.entity.system.Role;
|
||||
import com.yida.data.common.core.entity.system.SystemUser;
|
||||
import com.yida.data.common.core.entity.system.SystemUserMenu;
|
||||
import com.yida.data.common.core.entity.system.UserRole;
|
||||
import com.yida.data.common.service.CommonService;
|
||||
import com.yida.data.user.feign.RemoteTeacherService;
|
||||
@@ -79,11 +81,24 @@ public class UserManager {
|
||||
* @param username 用户名
|
||||
* @return 权限
|
||||
*/
|
||||
public String findUserPermissions(String username) {
|
||||
// List<Menu> userPermissions = menuMapper.findUserPermissions(username);
|
||||
// 从用户对应权限表查询权限数据
|
||||
List<Menu> userPermissions = userMenuMapper.findUserPermissions(username);
|
||||
return userPermissions.stream().map(Menu::getPerms).collect(Collectors.joining(StringConstant.COMMA));
|
||||
public List<String> findUserPermissions(String username) {
|
||||
// 获取角色权限
|
||||
List<String> menus = menuMapper.findUserPermissions(username);
|
||||
// 获取用户权限
|
||||
List<SystemUserMenu> userPermissions = userMenuMapper.findUserPermissions(username);
|
||||
// 过滤
|
||||
if (CollUtil.isNotEmpty(userPermissions)) {
|
||||
menus.addAll(
|
||||
userPermissions.stream().filter(x -> x.getType() == 0).map(SystemUserMenu::getPerms).filter(StrUtil::isNotBlank)
|
||||
.collect(Collectors.toList()));
|
||||
List<String> excludePerms = userPermissions.stream().filter(x -> x.getType() == 1).map(SystemUserMenu::getPerms)
|
||||
.filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(excludePerms)) {
|
||||
menus = menus.stream().filter(x -> !excludePerms.contains(x)).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
// 只返回串
|
||||
return menus;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,6 +169,6 @@ public class UserManager {
|
||||
public String findMainRole(Long mainDeptId) {
|
||||
// 查询主角色code
|
||||
List<String> rolePerms = userMapper.findMainRole(mainDeptId);
|
||||
return rolePerms.stream().filter(StringUtils::isNotBlank).collect(Collectors.joining());
|
||||
return rolePerms.stream().filter(StringUtils::isNotBlank).distinct().collect(Collectors.joining(StringConstant.COMMA));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,5 +16,5 @@ public interface MenuMapper extends BaseMapper<Menu> {
|
||||
* @param username 用户名
|
||||
* @return 权限集合
|
||||
*/
|
||||
List<Menu> findUserPermissions(String username);
|
||||
List<String> findUserPermissions(String username);
|
||||
}
|
||||
@@ -22,5 +22,5 @@ public interface UserMenuMapper extends BaseMapper<SystemUserMenu> {
|
||||
* @author ZYJ
|
||||
* @date 2021/11/8 15:54
|
||||
*/
|
||||
List<Menu> findUserPermissions(String username);
|
||||
List<SystemUserMenu> findUserPermissions(String username);
|
||||
}
|
||||
|
||||
+22
@@ -105,4 +105,26 @@ public interface SocialLoginService {
|
||||
Map<String, Object> wxpublicLogin(String code, String appId, Integer type, Long schoolId, String mobile);
|
||||
|
||||
Map<String, Object> h5Login(Long schoolId, String mobile, Integer type);
|
||||
|
||||
/**
|
||||
* 检查openId状态
|
||||
*
|
||||
* @param code 微信公众号授权code
|
||||
* @param deptId 学校id
|
||||
* @return java.util.Map<java.lang.String, java.lang.Object>
|
||||
* @author ZYJ
|
||||
* @date 2023/6/2 10:31
|
||||
*/
|
||||
Map<String, Object> checkOpenId(String code, Long deptId);
|
||||
|
||||
/**
|
||||
* 迎新功能微信公众号登录
|
||||
*
|
||||
* @param openId 微信openId
|
||||
* @param deptId 学校id
|
||||
* @return java.util.Map<java.lang.String, java.lang.Object>
|
||||
* @author ZYJ
|
||||
* @date 2023/5/18 11:09
|
||||
*/
|
||||
Map<String, Object> wxPublicLogin(String openId, Long deptId);
|
||||
}
|
||||
|
||||
+12
-11
@@ -1,5 +1,6 @@
|
||||
package com.yida.data.auth.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.yida.data.auth.manager.UserManager;
|
||||
import cc.mrbird.febs.common.redis.service.RedisService;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
@@ -44,7 +45,7 @@ public class FebsUserDetailServiceImpl implements UserDetailsService {
|
||||
HttpServletRequest httpServletRequest = FebsUtil.getHttpServletRequest();
|
||||
SystemUser systemUser = userManager.findByName(username);
|
||||
if (systemUser != null) {
|
||||
String permissions = userManager.findUserPermissions(systemUser.getUsername());
|
||||
List<String> permissions = userManager.findUserPermissions(systemUser.getUsername());
|
||||
boolean notLocked = false;
|
||||
if (StringUtils.equals(SystemUser.STATUS_VALID, systemUser.getStatus())) {
|
||||
notLocked = true;
|
||||
@@ -59,31 +60,31 @@ public class FebsUserDetailServiceImpl implements UserDetailsService {
|
||||
// 设置角色权限
|
||||
if (StringUtils.isNotBlank(systemUser.getRolePerms())) {
|
||||
List<String> collect = Arrays.stream(systemUser.getRolePerms().split(StringConstant.COMMA))
|
||||
.map(s -> FebsConstant.SECURITY_ROLE_PREFIX + s)
|
||||
.collect(Collectors.toList());
|
||||
.map(s -> FebsConstant.SECURITY_ROLE_PREFIX + s)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(collect)) {
|
||||
grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(String.join(StringConstant.COMMA, collect));
|
||||
grantedAuthorities = AuthorityUtils
|
||||
.commaSeparatedStringToAuthorityList(String.join(StringConstant.COMMA, collect));
|
||||
}
|
||||
}
|
||||
// 设置菜单权限
|
||||
if (StringUtils.isNotBlank(permissions)) {
|
||||
if (CollectionUtils.isNotEmpty(grantedAuthorities)) {
|
||||
grantedAuthorities.addAll(AuthorityUtils.commaSeparatedStringToAuthorityList(permissions));
|
||||
} else {
|
||||
grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(permissions);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(permissions)) {
|
||||
grantedAuthorities.addAll(AuthorityUtils.createAuthorityList(permissions.toArray(new String[0])));
|
||||
}
|
||||
// 查询主角色信息
|
||||
if (Objects.nonNull(systemUser.getMainDeptId())) {
|
||||
String role = this.userManager.findMainRole(systemUser.getMainDeptId());
|
||||
systemUser.setMainRolePerms(role);
|
||||
}
|
||||
|
||||
//查询登录所属部门:学校对应的
|
||||
log.info("登陆用户信息sysUser: {}", systemUser);
|
||||
log.info("登陆权限数据permission: {}", grantedAuthorities);
|
||||
log.info("登陆主角色数据mainRole: {}", systemUser.getMainRolePerms());
|
||||
|
||||
FebsAuthUser authUser = new FebsAuthUser(systemUser.getUsername(), password, true, true, true, notLocked,
|
||||
grantedAuthorities);
|
||||
grantedAuthorities);
|
||||
|
||||
BeanUtils.copyProperties(systemUser, authUser);
|
||||
return authUser;
|
||||
|
||||
+50
-10
@@ -13,6 +13,8 @@ import com.yida.data.auth.service.SocialLoginService;
|
||||
import com.yida.data.auth.service.UserConnectionService;
|
||||
import com.yida.data.common.core.entity.FebsResponse;
|
||||
import com.yida.data.common.core.entity.constant.*;
|
||||
import com.yida.data.common.core.entity.smart.EduSmartWelcomeGuideRosterRelation;
|
||||
import com.yida.data.common.core.entity.smart.EduSmartWelcomeGuideStep;
|
||||
import com.yida.data.common.core.entity.system.*;
|
||||
import com.yida.data.common.core.entity.user.EduStaff;
|
||||
import com.yida.data.common.core.enums.RoleName;
|
||||
@@ -22,11 +24,12 @@ import com.yida.data.common.core.utils.FebsUtil;
|
||||
import com.yida.data.common.core.utils.WxPublicUtil;
|
||||
import com.yida.data.common.core.utils.WxUtil;
|
||||
import com.yida.data.common.service.CommonService;
|
||||
import com.yida.data.school.feign.transaction.RemoteStudentApplyService;
|
||||
import com.yida.data.school.feign.smart.RemoteSmartWelcomeService;
|
||||
import com.yida.data.system.feign.RemoteDeptService;
|
||||
import com.yida.data.system.feign.RemoteRoleService;
|
||||
import com.yida.data.system.feign.RemoteUserService;
|
||||
import com.yida.data.user.feign.RemoteStaffService;
|
||||
import com.yida.data.user.feign.RemoteStudentApplyService;
|
||||
import com.yida.data.user.feign.RemoteStudentService;
|
||||
import com.yida.data.user.feign.RemoteTeacherService;
|
||||
import com.yida.data.user.vo.ParentInfoVO;
|
||||
@@ -61,7 +64,6 @@ public class SocialLoginServiceImpl implements SocialLoginService {
|
||||
|
||||
private static final String USERNAME = "username";
|
||||
private static final String PASSWORD = "password";
|
||||
|
||||
private static final String NOT_BIND = "not_bind";
|
||||
private static final String SOCIAL_LOGIN_SUCCESS = "social_login_success";
|
||||
|
||||
@@ -73,17 +75,16 @@ public class SocialLoginServiceImpl implements SocialLoginService {
|
||||
private final UserConnectionService userConnectionService;
|
||||
private final ResourceOwnerPasswordTokenGranter granter;
|
||||
private final RedisClientDetailsService redisClientDetailsService;
|
||||
private final WxUtil wxUtil;
|
||||
private final WxPublicUtil wxPublicUtil;
|
||||
|
||||
private final RemoteStaffService remoteStaffService;
|
||||
private final RemoteStudentService remoteStudentService;
|
||||
private final RemoteTeacherService remoteTeacherService;
|
||||
private final RemoteStaffService remoteStaffService;
|
||||
private final RemoteDeptService remoteDeptService;
|
||||
private final CommonService commonService;
|
||||
private final RemoteRoleService remoteRoleService;
|
||||
private final RemoteUserService remoteUserService;
|
||||
private final RemoteStudentApplyService remoteStudentApplyService;
|
||||
private final RemoteSmartWelcomeService remoteSmartWelcomeService;
|
||||
|
||||
private final WxUtil wxUtil;
|
||||
private final WxPublicUtil wxPublicUtil;
|
||||
private final RedisService redisService;
|
||||
private final CommonService commonService;
|
||||
|
||||
@Override
|
||||
public AuthRequest renderAuth(String oauthType) throws FebsException {
|
||||
@@ -579,4 +580,43 @@ public class SocialLoginServiceImpl implements SocialLoginService {
|
||||
res.put("identity", type == 0 ? teacher : parent);
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> checkOpenId(String code, Long deptId) {
|
||||
Dept school = commonService.getDept(deptId);
|
||||
if (Objects.isNull(school)) {
|
||||
throw new FebsException("学校信息错误");
|
||||
}
|
||||
// 查询用户信息
|
||||
String openId = wxPublicUtil.getOpenId(school.getWxPublicAppId(), school.getWxPublicSecret(), code);
|
||||
// 查询openId是否绑定了对应的信息
|
||||
EduSmartWelcomeGuideRosterRelation relation = remoteSmartWelcomeService.getOpenIdRelation(openId, deptId).getData();
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
// true代表已经绑定,false代表未绑定
|
||||
map.put("status", Objects.nonNull(relation));
|
||||
// 微信openId
|
||||
map.put("openId", openId);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> wxPublicLogin(String openId, Long deptId) {
|
||||
// 查询关联关系
|
||||
EduSmartWelcomeGuideRosterRelation relation = remoteSmartWelcomeService.getOpenIdRelation(openId, deptId).getData();
|
||||
if (Objects.isNull(relation) || Objects.isNull(relation.getGuideRoster())) {
|
||||
throw new FebsException("信息错误");
|
||||
}
|
||||
// 用户信息
|
||||
SystemUser systemUser = userManager.findByName(relation.getGuideRoster().getMobile());
|
||||
// 登录返回token和用户信息
|
||||
Map<String, Object> res = new HashMap<>();
|
||||
res.put("token", getOauth2AccessToken(systemUser));
|
||||
systemUser.setPassword(null);
|
||||
res.put("user", systemUser);
|
||||
// // 查询人员步骤信息
|
||||
// List<EduSmartWelcomeGuideStep> stepList = remoteSmartWelcomeService.listStepInfo(relation.getId(), relation.getGuideId()).getData();
|
||||
// relation.setStepList(stepList);
|
||||
res.put("info", relation);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.yida.data.auth.mapper.MenuMapper">
|
||||
|
||||
<select id="findUserPermissions" resultType="com.yida.data.common.core.entity.system.Menu">
|
||||
select distinct m.perms
|
||||
from t_role r
|
||||
left join t_user_role ur on (r.role_id = ur.role_id)
|
||||
left join t_user u on (u.user_id = ur.user_id)
|
||||
left join t_role_menu rm on (rm.role_id = r.role_id)
|
||||
left join t_menu m on (m.menu_id = rm.menu_id)
|
||||
where u.username = #{userName}
|
||||
and m.perms is not null
|
||||
and m.perms <> ''
|
||||
</select>
|
||||
<select id="findUserPermissions" resultType="java.lang.String">
|
||||
select distinct m.perms
|
||||
from t_role r
|
||||
left join t_user_role ur on (r.role_id = ur.role_id)
|
||||
left join t_user u on (u.user_id = ur.user_id)
|
||||
left join t_role_menu rm on (rm.role_id = r.role_id)
|
||||
left join t_menu m on (m.menu_id = rm.menu_id)
|
||||
where u.username = #{userName}
|
||||
and m.perms is not null
|
||||
and m.perms <> ''
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -18,6 +18,7 @@
|
||||
u.description,
|
||||
u.avatar,
|
||||
d.dept_type deptType,
|
||||
d.school_nature schoolNature,
|
||||
d.dept_name deptName,
|
||||
u.agent_id agentId,
|
||||
GROUP_CONCAT(r.role_id) roleId,
|
||||
@@ -59,6 +60,7 @@
|
||||
<select id="findMainRole"
|
||||
resultType="java.lang.String">
|
||||
SELECT
|
||||
distinct
|
||||
r.ROLE_PERMS
|
||||
FROM
|
||||
t_user u
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.yida.data.auth.mapper.UserMenuMapper">
|
||||
|
||||
<select id="findUserPermissions" resultType="com.yida.data.common.core.entity.system.Menu">
|
||||
select distinct m.perms
|
||||
from t_user_menu um
|
||||
left join t_user u on (u.user_id = um.user_id)
|
||||
left join t_menu m on (m.menu_id = um.menu_id)
|
||||
where u.username = #{userName}
|
||||
and m.perms is not null
|
||||
and m.perms <> ''
|
||||
<select id="findUserPermissions" resultType="com.yida.data.common.core.entity.system.SystemUserMenu">
|
||||
select um.*, m.perms
|
||||
from t_user_menu um
|
||||
left join t_user u on (u.user_id = um.user_id)
|
||||
left join t_menu m on (m.menu_id = um.menu_id)
|
||||
where u.username = #{userName}
|
||||
and m.perms is not null
|
||||
and m.perms <![CDATA[!=]]> ''
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user