mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【首页用户详情接口】更新填充用户的应用信息
parent
71347cd90b
commit
f2c547c066
|
@ -3,10 +3,12 @@ package cn.stylefeng.roses.kernel.sys.modular.app.service;
|
|||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.app.pojo.request.SysAppRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.login.pojo.IndexUserAppInfo;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.response.AppGroupDetail;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 系统应用 服务类
|
||||
|
@ -88,4 +90,14 @@ public interface SysAppService extends IService<SysApp> {
|
|||
*/
|
||||
List<AppGroupDetail> getAppList();
|
||||
|
||||
/**
|
||||
* 根据应用id获取应用的名称信息,并且按应用的排序字段进行排序
|
||||
* <p>
|
||||
* 一般用在用户登录后,获取首页应用信息
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2023/6/19 22:30
|
||||
*/
|
||||
List<IndexUserAppInfo> getIndexUserAppList(Set<Long> appIds);
|
||||
|
||||
}
|
|
@ -14,6 +14,7 @@ import cn.stylefeng.roses.kernel.sys.modular.app.enums.SysAppExceptionEnum;
|
|||
import cn.stylefeng.roses.kernel.sys.modular.app.mapper.SysAppMapper;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.app.pojo.request.SysAppRequest;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.login.pojo.IndexUserAppInfo;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.pojo.response.AppGroupDetail;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
|
@ -96,7 +97,8 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
|
|||
LambdaQueryWrapper<SysApp> wrapper = createWrapper(sysAppRequest);
|
||||
|
||||
// 只查询有用的列
|
||||
wrapper.select(SysApp::getAppId, SysApp::getAppName, SysApp::getAppCode, SysApp::getAppIcon, SysApp::getStatusFlag, SysApp::getAppSort, BaseEntity::getCreateTime);
|
||||
wrapper.select(SysApp::getAppId, SysApp::getAppName, SysApp::getAppCode, SysApp::getAppIcon, SysApp::getStatusFlag,
|
||||
SysApp::getAppSort, BaseEntity::getCreateTime);
|
||||
|
||||
Page<SysApp> sysAppPage = this.page(PageFactory.defaultPage(), wrapper);
|
||||
return PageResultFactory.createPageResult(sysAppPage);
|
||||
|
@ -118,13 +120,41 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
|
|||
// 结果转化为指定格式
|
||||
ArrayList<AppGroupDetail> appGroupDetails = new ArrayList<>();
|
||||
for (SysApp sysApp : appList) {
|
||||
AppGroupDetail appGroupDetail = new AppGroupDetail(sysApp.getAppId(), sysApp.getAppName(), sysApp.getAppIcon(), sysApp.getRemark());
|
||||
AppGroupDetail appGroupDetail = new AppGroupDetail(sysApp.getAppId(), sysApp.getAppName(), sysApp.getAppIcon(),
|
||||
sysApp.getRemark());
|
||||
appGroupDetails.add(appGroupDetail);
|
||||
}
|
||||
|
||||
return appGroupDetails;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IndexUserAppInfo> getIndexUserAppList(Set<Long> appIds) {
|
||||
|
||||
if (ObjectUtil.isEmpty(appIds)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<SysApp> sysAppLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
sysAppLambdaQueryWrapper.in(SysApp::getAppId, appIds);
|
||||
sysAppLambdaQueryWrapper.select(SysApp::getAppId, SysApp::getAppName);
|
||||
sysAppLambdaQueryWrapper.orderByAsc(SysApp::getAppSort);
|
||||
|
||||
List<SysApp> sysAppList = this.list(sysAppLambdaQueryWrapper);
|
||||
|
||||
// 获取应用详情
|
||||
ArrayList<IndexUserAppInfo> indexUserAppInfos = new ArrayList<>();
|
||||
for (SysApp sysApp : sysAppList) {
|
||||
IndexUserAppInfo indexUserAppInfo = new IndexUserAppInfo();
|
||||
indexUserAppInfo.setAppId(sysApp.getAppId());
|
||||
indexUserAppInfo.setAppName(sysApp.getAppName());
|
||||
indexUserAppInfo.setCurrentSelectFlag(false);
|
||||
indexUserAppInfos.add(indexUserAppInfo);
|
||||
}
|
||||
|
||||
return indexUserAppInfos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysApp> findList(SysAppRequest sysAppRequest) {
|
||||
LambdaQueryWrapper<SysApp> wrapper = this.createWrapper(sysAppRequest);
|
||||
|
|
|
@ -9,6 +9,8 @@ import cn.stylefeng.roses.kernel.sys.api.SysUserRoleServiceApi;
|
|||
import cn.stylefeng.roses.kernel.sys.api.SysUserServiceApi;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.SimpleUserDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.api.pojo.user.UserOrgDTO;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.app.service.SysAppService;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.login.pojo.IndexUserAppInfo;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.login.pojo.IndexUserOrgInfo;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.login.pojo.UserIndexInfo;
|
||||
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
||||
|
@ -55,6 +57,9 @@ public class UserIndexInfoService {
|
|||
@Resource
|
||||
private SysMenuOptionsService sysMenuOptionsService;
|
||||
|
||||
@Resource
|
||||
private SysAppService sysAppService;
|
||||
|
||||
/**
|
||||
* 获取用户首页信息
|
||||
*
|
||||
|
@ -76,9 +81,11 @@ public class UserIndexInfoService {
|
|||
this.fillUserOrgInfo(loginUser, userIndexInfo);
|
||||
|
||||
// 3. 获取用户的权限编码集合
|
||||
this.fillUserPermissionCodeList(loginUser, userIndexInfo);
|
||||
ArrayList<SysMenu> userMenuList = new ArrayList<>();
|
||||
this.fillUserPermissionCodeList(loginUser, userIndexInfo, userMenuList);
|
||||
|
||||
// 4. 获取用户的当前登录App和菜单
|
||||
// 4. 获取用户的当前登录App
|
||||
this.fillUserAppList(loginUser, userIndexInfo, userMenuList);
|
||||
|
||||
|
||||
// 5. 获取菜单和路由的appId映射关系
|
||||
|
@ -154,6 +161,10 @@ public class UserIndexInfoService {
|
|||
if (currentOrgId == null) {
|
||||
for (IndexUserOrgInfo indexUserOrgInfo : resultUserOrg) {
|
||||
indexUserOrgInfo.setCurrentSelectFlag(indexUserOrgInfo.getMainFlag());
|
||||
|
||||
if (indexUserOrgInfo.getMainFlag()) {
|
||||
// todo 更新当前用户的缓存 updateSession
|
||||
}
|
||||
}
|
||||
}
|
||||
// 如果有激活的组织机构
|
||||
|
@ -173,7 +184,7 @@ public class UserIndexInfoService {
|
|||
* @author fengshuonan
|
||||
* @since 2023/6/19 12:38
|
||||
*/
|
||||
private void fillUserPermissionCodeList(LoginUser loginUser, UserIndexInfo userIndexInfo) {
|
||||
private void fillUserPermissionCodeList(LoginUser loginUser, UserIndexInfo userIndexInfo, List<SysMenu> userMenuList) {
|
||||
|
||||
Long userId = loginUser.getUserId();
|
||||
|
||||
|
@ -192,8 +203,8 @@ public class UserIndexInfoService {
|
|||
HashSet<String> permissionCodeList = new HashSet<>();
|
||||
|
||||
// 获取菜单对应的菜单编码集合
|
||||
List<SysMenu> menuInfoList = sysMenuService.getIndexMenuInfoList(menuIdList);
|
||||
Set<String> menuCodeList = menuInfoList.stream().map(SysMenu::getMenuCode).collect(Collectors.toSet());
|
||||
userMenuList = sysMenuService.getIndexMenuInfoList(menuIdList);
|
||||
Set<String> menuCodeList = userMenuList.stream().map(SysMenu::getMenuCode).collect(Collectors.toSet());
|
||||
permissionCodeList.addAll(menuCodeList);
|
||||
|
||||
// 获取功能对应的功能编码集合
|
||||
|
@ -203,4 +214,37 @@ public class UserIndexInfoService {
|
|||
userIndexInfo.setPermissionCodeList(permissionCodeList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充当前用户的应用列表和菜单信息
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2023/6/19 22:25
|
||||
*/
|
||||
private void fillUserAppList(LoginUser loginUser, UserIndexInfo userIndexInfo, List<SysMenu> userMenuList) {
|
||||
|
||||
if (ObjectUtil.isEmpty(userMenuList)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 先统计用户有多少个应用
|
||||
Set<Long> userAppIds = userMenuList.stream().map(SysMenu::getAppId).collect(Collectors.toSet());
|
||||
|
||||
// 查询这些应用的应用名称,并且按应用的顺序进行排序
|
||||
List<IndexUserAppInfo> indexUserAppList = sysAppService.getIndexUserAppList(userAppIds);
|
||||
|
||||
// 判断当前用户是否有绑定的应用id
|
||||
// 如果没绑定的,则默认选中第一个
|
||||
if (ObjectUtil.isEmpty(loginUser.getCurrentAppId())) {
|
||||
indexUserAppList.get(0).setCurrentSelectFlag(true);
|
||||
} else {
|
||||
for (IndexUserAppInfo indexUserAppInfo : indexUserAppList) {
|
||||
if (indexUserAppInfo.getAppId().equals(loginUser.getCurrentAppId())) {
|
||||
indexUserAppInfo.setCurrentSelectFlag(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
userIndexInfo.setUserAppInfoList(indexUserAppList);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue