【7.6.0】【sys】【首页用户详情接口】更新填充用户的应用信息

pull/57/head
fengshuonan 2023-06-19 22:37:10 +08:00
parent 71347cd90b
commit f2c547c066
3 changed files with 93 additions and 7 deletions

View File

@ -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.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.sys.modular.app.entity.SysApp; 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.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 cn.stylefeng.roses.kernel.sys.modular.menu.pojo.response.AppGroupDetail;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* *
@ -88,4 +90,14 @@ public interface SysAppService extends IService<SysApp> {
*/ */
List<AppGroupDetail> getAppList(); List<AppGroupDetail> getAppList();
/**
* id
* <p>
*
*
* @author fengshuonan
* @since 2023/6/19 22:30
*/
List<IndexUserAppInfo> getIndexUserAppList(Set<Long> appIds);
} }

View File

@ -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.mapper.SysAppMapper;
import cn.stylefeng.roses.kernel.sys.modular.app.pojo.request.SysAppRequest; 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.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.pojo.response.AppGroupDetail;
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService; import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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); 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); Page<SysApp> sysAppPage = this.page(PageFactory.defaultPage(), wrapper);
return PageResultFactory.createPageResult(sysAppPage); return PageResultFactory.createPageResult(sysAppPage);
@ -118,13 +120,41 @@ public class SysAppServiceImpl extends ServiceImpl<SysAppMapper, SysApp> impleme
// 结果转化为指定格式 // 结果转化为指定格式
ArrayList<AppGroupDetail> appGroupDetails = new ArrayList<>(); ArrayList<AppGroupDetail> appGroupDetails = new ArrayList<>();
for (SysApp sysApp : appList) { 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); appGroupDetails.add(appGroupDetail);
} }
return appGroupDetails; 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 @Override
public List<SysApp> findList(SysAppRequest sysAppRequest) { public List<SysApp> findList(SysAppRequest sysAppRequest) {
LambdaQueryWrapper<SysApp> wrapper = this.createWrapper(sysAppRequest); LambdaQueryWrapper<SysApp> wrapper = this.createWrapper(sysAppRequest);

View File

@ -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.SysUserServiceApi;
import cn.stylefeng.roses.kernel.sys.api.pojo.user.SimpleUserDTO; 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.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.IndexUserOrgInfo;
import cn.stylefeng.roses.kernel.sys.modular.login.pojo.UserIndexInfo; import cn.stylefeng.roses.kernel.sys.modular.login.pojo.UserIndexInfo;
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu; import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
@ -55,6 +57,9 @@ public class UserIndexInfoService {
@Resource @Resource
private SysMenuOptionsService sysMenuOptionsService; private SysMenuOptionsService sysMenuOptionsService;
@Resource
private SysAppService sysAppService;
/** /**
* *
* *
@ -76,9 +81,11 @@ public class UserIndexInfoService {
this.fillUserOrgInfo(loginUser, userIndexInfo); this.fillUserOrgInfo(loginUser, userIndexInfo);
// 3. 获取用户的权限编码集合 // 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映射关系 // 5. 获取菜单和路由的appId映射关系
@ -154,6 +161,10 @@ public class UserIndexInfoService {
if (currentOrgId == null) { if (currentOrgId == null) {
for (IndexUserOrgInfo indexUserOrgInfo : resultUserOrg) { for (IndexUserOrgInfo indexUserOrgInfo : resultUserOrg) {
indexUserOrgInfo.setCurrentSelectFlag(indexUserOrgInfo.getMainFlag()); indexUserOrgInfo.setCurrentSelectFlag(indexUserOrgInfo.getMainFlag());
if (indexUserOrgInfo.getMainFlag()) {
// todo 更新当前用户的缓存 updateSession
}
} }
} }
// 如果有激活的组织机构 // 如果有激活的组织机构
@ -173,7 +184,7 @@ public class UserIndexInfoService {
* @author fengshuonan * @author fengshuonan
* @since 2023/6/19 12:38 * @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(); Long userId = loginUser.getUserId();
@ -192,8 +203,8 @@ public class UserIndexInfoService {
HashSet<String> permissionCodeList = new HashSet<>(); HashSet<String> permissionCodeList = new HashSet<>();
// 获取菜单对应的菜单编码集合 // 获取菜单对应的菜单编码集合
List<SysMenu> menuInfoList = sysMenuService.getIndexMenuInfoList(menuIdList); userMenuList = sysMenuService.getIndexMenuInfoList(menuIdList);
Set<String> menuCodeList = menuInfoList.stream().map(SysMenu::getMenuCode).collect(Collectors.toSet()); Set<String> menuCodeList = userMenuList.stream().map(SysMenu::getMenuCode).collect(Collectors.toSet());
permissionCodeList.addAll(menuCodeList); permissionCodeList.addAll(menuCodeList);
// 获取功能对应的功能编码集合 // 获取功能对应的功能编码集合
@ -203,4 +214,37 @@ public class UserIndexInfoService {
userIndexInfo.setPermissionCodeList(permissionCodeList); 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);
}
} }