feat: 东区缴费分支初始化

This commit is contained in:
2025-05-15 15:08:15 +08:00
parent 39f3acc15f
commit bafd4aa3ab
261 changed files with 3751 additions and 9416 deletions
@@ -3,14 +3,12 @@ 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;
@@ -31,7 +29,6 @@ import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* @author MrBird
@@ -206,20 +203,4 @@ 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,7 +1,6 @@
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;
@@ -18,7 +17,6 @@ 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;
@@ -81,24 +79,11 @@ public class UserManager {
* @param username 用户名
* @return 权限
*/
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;
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));
}
/**
@@ -169,6 +154,6 @@ public class UserManager {
public String findMainRole(Long mainDeptId) {
// 查询主角色code
List<String> rolePerms = userMapper.findMainRole(mainDeptId);
return rolePerms.stream().filter(StringUtils::isNotBlank).distinct().collect(Collectors.joining(StringConstant.COMMA));
return rolePerms.stream().filter(StringUtils::isNotBlank).collect(Collectors.joining());
}
}
@@ -16,5 +16,5 @@ public interface MenuMapper extends BaseMapper<Menu> {
* @param username 用户名
* @return 权限集合
*/
List<String> findUserPermissions(String username);
List<Menu> findUserPermissions(String username);
}
@@ -22,5 +22,5 @@ public interface UserMenuMapper extends BaseMapper<SystemUserMenu> {
* @author ZYJ
* @date 2021/11/8 15:54
*/
List<SystemUserMenu> findUserPermissions(String username);
List<Menu> findUserPermissions(String username);
}
@@ -105,26 +105,4 @@ 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);
}
@@ -1,6 +1,5 @@
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;
@@ -45,7 +44,7 @@ public class FebsUserDetailServiceImpl implements UserDetailsService {
HttpServletRequest httpServletRequest = FebsUtil.getHttpServletRequest();
SystemUser systemUser = userManager.findByName(username);
if (systemUser != null) {
List<String> permissions = userManager.findUserPermissions(systemUser.getUsername());
String permissions = userManager.findUserPermissions(systemUser.getUsername());
boolean notLocked = false;
if (StringUtils.equals(SystemUser.STATUS_VALID, systemUser.getStatus())) {
notLocked = true;
@@ -60,31 +59,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)
.distinct()
.collect(Collectors.toList());
.map(s -> FebsConstant.SECURITY_ROLE_PREFIX + s)
.collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(collect)) {
grantedAuthorities = AuthorityUtils
.commaSeparatedStringToAuthorityList(String.join(StringConstant.COMMA, collect));
grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(String.join(StringConstant.COMMA, collect));
}
}
// 设置菜单权限
if (CollUtil.isNotEmpty(permissions)) {
grantedAuthorities.addAll(AuthorityUtils.createAuthorityList(permissions.toArray(new String[0])));
if (StringUtils.isNotBlank(permissions)) {
if (CollectionUtils.isNotEmpty(grantedAuthorities)) {
grantedAuthorities.addAll(AuthorityUtils.commaSeparatedStringToAuthorityList(permissions));
} else {
grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(permissions);
}
}
// 查询主角色信息
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;
@@ -13,8 +13,6 @@ 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;
@@ -24,12 +22,11 @@ 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.smart.RemoteSmartWelcomeService;
import com.yida.data.school.feign.transaction.RemoteStudentApplyService;
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;
@@ -64,6 +61,7 @@ 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";
@@ -75,16 +73,17 @@ public class SocialLoginServiceImpl implements SocialLoginService {
private final UserConnectionService userConnectionService;
private final ResourceOwnerPasswordTokenGranter granter;
private final RedisClientDetailsService redisClientDetailsService;
private final RemoteStaffService remoteStaffService;
private final RemoteStudentService remoteStudentService;
private final RemoteTeacherService remoteTeacherService;
private final RemoteSmartWelcomeService remoteSmartWelcomeService;
private final WxUtil wxUtil;
private final WxPublicUtil wxPublicUtil;
private final RedisService redisService;
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 RedisService redisService;
@Override
public AuthRequest renderAuth(String oauthType) throws FebsException {
@@ -580,43 +579,4 @@ 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="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 &lt;&gt; ''
</select>
<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 &lt;&gt; ''
</select>
</mapper>
@@ -18,7 +18,6 @@
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,
@@ -60,7 +59,6 @@
<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.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 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 &lt;&gt; ''
</select>
</mapper>