|
|
@@ -19,6 +19,7 @@ import cn.iocoder.byzs.module.system.service.permission.RoleService;
|
|
|
import cn.iocoder.byzs.module.system.service.user.AdminUserServiceImpl;
|
|
|
import cn.iocoder.byzs.module.system.service.userwebexpiretime.UserWebExpireTimeService;
|
|
|
import cn.iocoder.byzs.module.web.controller.admin.login.vo.WebRegisterVO;
|
|
|
+import cn.iocoder.byzs.module.web.controller.admin.login.vo.WebRoleRouteVO;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -127,17 +128,22 @@ public class WebLoginServiceImpl {
|
|
|
return userId;
|
|
|
}
|
|
|
|
|
|
- public Set<String> getRoleRoute(Long userId) {
|
|
|
+ public WebRoleRouteVO getRoleRoute(Long userId) {
|
|
|
+ WebRoleRouteVO webRoleRouteVO = new WebRoleRouteVO();
|
|
|
Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(userId);
|
|
|
List<RoleDO> roles = roleService.getRoleList(roleIds);
|
|
|
roles.removeIf(role -> !CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())); // 移除禁用的角色
|
|
|
|
|
|
// 填充角色路由
|
|
|
Set<String> roleRouteSet = new HashSet<>();
|
|
|
+ Set<String> roleRouteMenuSet = new HashSet<>();
|
|
|
for (RoleDO role : roles) {
|
|
|
if(role.getDataScopeWebRoute() != null && !role.getDataScopeWebRoute().isEmpty()){
|
|
|
roleRouteSet.addAll(role.getDataScopeWebRoute());
|
|
|
}
|
|
|
+ if(role.getDataScopeWebCourseMenuRoute() != null && !role.getDataScopeWebCourseMenuRoute().isEmpty()){
|
|
|
+ roleRouteMenuSet.addAll(role.getDataScopeWebCourseMenuRoute());
|
|
|
+ }
|
|
|
}
|
|
|
// 如果roleRoutes为空,则从字典中获取默认路由
|
|
|
if (roleRouteSet.isEmpty()) {
|
|
|
@@ -148,24 +154,36 @@ public class WebLoginServiceImpl {
|
|
|
|
|
|
// 获得用户激活的邀请码
|
|
|
List<InviteCodeDO> inviteCodes = inviteCodeService.getInviteCodeByUserId(userId);
|
|
|
- if (inviteCodes.isEmpty()) {
|
|
|
- return roleRouteSet;
|
|
|
+ if (!inviteCodes.isEmpty()) {
|
|
|
+ //当前用户web过期时间
|
|
|
+ UserWebExpireTimeDO userWebExpireTime = userWebExpireTimeService.getUserWebExpireTime(userId);
|
|
|
+ if (userWebExpireTime != null) {
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ if(userWebExpireTime.getCourseExpireTime() == null || userWebExpireTime.getCourseExpireTime().isBefore(now)){
|
|
|
+ roleRouteSet.remove("course");
|
|
|
+ }
|
|
|
+ if(userWebExpireTime.getBlocklyExpireTime() == null || userWebExpireTime.getBlocklyExpireTime().isBefore(now)){
|
|
|
+ roleRouteSet.remove("blockly");
|
|
|
+ }
|
|
|
+ if(userWebExpireTime.getAiCourseExpireTime() == null || userWebExpireTime.getAiCourseExpireTime().isBefore(now)){
|
|
|
+ roleRouteSet.remove("aiCourse");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- //当前用户web过期时间
|
|
|
- UserWebExpireTimeDO userWebExpireTime = userWebExpireTimeService.getUserWebExpireTime(userId);
|
|
|
- if (userWebExpireTime != null) {
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
- if(userWebExpireTime.getCourseExpireTime() == null || userWebExpireTime.getCourseExpireTime().isBefore(now)){
|
|
|
- roleRouteSet.remove("course");
|
|
|
- }
|
|
|
- if(userWebExpireTime.getBlocklyExpireTime() == null || userWebExpireTime.getBlocklyExpireTime().isBefore(now)){
|
|
|
- roleRouteSet.remove("blockly");
|
|
|
- }
|
|
|
- if(userWebExpireTime.getAiCourseExpireTime() == null || userWebExpireTime.getAiCourseExpireTime().isBefore(now)){
|
|
|
- roleRouteSet.remove("aiCourse");
|
|
|
+ //封装路由配置
|
|
|
+ webRoleRouteVO.setRouteList(roleRouteSet);
|
|
|
+ //存在课程就填充通识课路由权限
|
|
|
+ if (roleRouteSet.stream().anyMatch(s -> s.equals("course"))) {
|
|
|
+ if (!roleRouteMenuSet.isEmpty()){
|
|
|
+ webRoleRouteVO.setCourseRouteMenuList(roleRouteMenuSet);
|
|
|
+ }else{
|
|
|
+ List<DictDataDO> webRoleRoute = dictDataService.getDictDataListByDictType("web_course_menu_route");
|
|
|
+ Set<String> roleRoute = webRoleRoute.stream().map(DictDataDO::getValue).collect(Collectors.toSet());
|
|
|
+ webRoleRouteVO.setCourseRouteMenuList(roleRoute);
|
|
|
}
|
|
|
}
|
|
|
- return roleRouteSet;
|
|
|
+
|
|
|
+ return webRoleRouteVO;
|
|
|
}
|
|
|
-}
|
|
|
+}
|