Browse Source

修改驾驶舱相关逻辑

车车 2 months ago
parent
commit
63a61938a5

+ 8 - 2
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java

@@ -9,12 +9,14 @@ import cn.iocoder.yudao.framework.security.config.SecurityProperties;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
 import cn.iocoder.yudao.module.system.convert.auth.AuthConvert;
+import cn.iocoder.yudao.module.system.dal.dataobject.homepage.PageUiComponentDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum;
 import cn.iocoder.yudao.module.system.service.auth.AdminAuthService;
+import cn.iocoder.yudao.module.system.service.homepage.PageUiComponentService;
 import cn.iocoder.yudao.module.system.service.permission.MenuService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.RoleService;
@@ -64,6 +66,8 @@ public class AuthController {
 
     @Resource
     private SecurityProperties securityProperties;
+    @Resource
+    private PageUiComponentService pageUiComponentService;
 
     @PostMapping("/login")
     @PermitAll
@@ -104,7 +108,7 @@ public class AuthController {
         // 1.2 获得角色列表
         Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(getLoginUserId());
         if (CollUtil.isEmpty(roleIds)) {
-            return success(AuthConvert.INSTANCE.convert(user, Collections.emptyList(), Collections.emptyList()));
+            return success(AuthConvert.INSTANCE.convert(user, Collections.emptyList(), Collections.emptyList(), Collections.emptyList()));
         }
         List<RoleDO> roles = roleService.getRoleList(roleIds);
         roles.removeIf(role -> !CommonStatusEnum.ENABLE.getStatus().equals(role.getStatus())); // 移除禁用的角色
@@ -114,8 +118,10 @@ public class AuthController {
         List<MenuDO> menuList = menuService.getMenuList(menuIds);
         menuList = menuService.filterDisableMenus(menuList);
 
+        // 1.4 获得驾驶舱列表sys_ui_component
+        List<PageUiComponentDO> uiComponentList = pageUiComponentService.getUiComponentList(convertSet(roles, RoleDO::getId).stream().toList());
         // 2. 拼接结果返回
-        return success(AuthConvert.INSTANCE.convert(user, roles, menuList));
+        return success(AuthConvert.INSTANCE.convert(user, roles, menuList, uiComponentList));
     }
 
     @PostMapping("/register")

+ 4 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthPermissionInfoRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.system.controller.admin.auth.vo;
 
+import cn.iocoder.yudao.module.system.dal.dataobject.homepage.PageUiComponentDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -28,6 +29,9 @@ public class AuthPermissionInfoRespVO {
     @Schema(description = "菜单树", requiredMode = Schema.RequiredMode.REQUIRED)
     private List<MenuVO> menus;
 
+    @Schema(description = "驾驶舱", requiredMode = Schema.RequiredMode.REQUIRED)
+    private List<PageUiComponentDO> uiComponentList;
+
     @Schema(description = "用户信息 VO")
     @Data
     @NoArgsConstructor

+ 0 - 7
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/homepage/PageUiComponentController.java

@@ -31,13 +31,6 @@ public class PageUiComponentController {
     @Resource
     private PageUiComponentService pageUiComponentService;
 
-    @PostMapping("/insertPageUiComponent")
-    @Operation(summary = "创建iscs驾驶舱页面和组件关联")
-    @PreAuthorize("@ss.hasPermission('sys:page-ui-component:create')")
-    public CommonResult<Long> insertPageUiComponent(@Valid @RequestBody PageUiComponentSaveReqVO createReqVO) {
-        return success(pageUiComponentService.createPageUiComponent(createReqVO));
-    }
-
     @PutMapping("/updatePageUiComponent")
     @Operation(summary = "更新iscs驾驶舱页面和组件关联")
     @PreAuthorize("@ss.hasPermission('sys:page-ui-component:update')")

+ 4 - 1
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/convert/auth/AuthConvert.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeSendReqDTO;
 import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodeUseReqDTO;
 import cn.iocoder.yudao.module.system.api.social.dto.SocialUserBindReqDTO;
 import cn.iocoder.yudao.module.system.controller.admin.auth.vo.*;
+import cn.iocoder.yudao.module.system.dal.dataobject.homepage.PageUiComponentDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
@@ -28,7 +29,7 @@ public interface AuthConvert {
 
     AuthLoginRespVO convert(OAuth2AccessTokenDO bean);
 
-    default AuthPermissionInfoRespVO convert(AdminUserDO user, List<RoleDO> roleList, List<MenuDO> menuList) {
+    default AuthPermissionInfoRespVO convert(AdminUserDO user, List<RoleDO> roleList, List<MenuDO> menuList, List<PageUiComponentDO> uiComponentList) {
         return AuthPermissionInfoRespVO.builder()
                 .user(BeanUtils.toBean(user, AuthPermissionInfoRespVO.UserVO.class))
                 .roles(convertSet(roleList, RoleDO::getCode))
@@ -36,6 +37,8 @@ public interface AuthConvert {
                 .permissions(convertSet(menuList, MenuDO::getPermission))
                 // 菜单树
                 .menus(buildMenuTree(menuList))
+                // 驾驶舱
+                .uiComponentList(uiComponentList)
                 .build();
     }
 

+ 21 - 0
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/homepage/PageUiComponentDO.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.dal.dataobject.homepage;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
@@ -43,5 +44,25 @@ public class PageUiComponentDO extends BaseDO {
      */
     private String componentColumn;
 
+    /**
+     * 组件名称
+     */
+    @TableField(exist = false)
+    private String componentName;
+    /**
+     * 组件类别-可选项:信息、表格、图表
+     */
+    @TableField(exist = false)
+    private String componentCategory;
+    /**
+     * 组件缩略图
+     */
+    @TableField(exist = false)
+    private String componentThumbnail;
+    /**
+     * 组件文件路径
+     */
+    @TableField(exist = false)
+    private String componentFilePath;
 
 }

+ 7 - 7
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/homepage/PageUiComponentService.java

@@ -31,13 +31,6 @@ public interface PageUiComponentService extends IService<PageUiComponentDO> {
      */
     void updatePageUiComponent(@Valid PageUiComponentSaveReqVO updateReqVO);
 
-    /**
-     * 删除iscs驾驶舱页面和组件关联
-     *
-     * @param id 编号
-     */
-    void deletePageUiComponent(Long id);
-
     /**
     * 批量删除iscs驾驶舱页面和组件关联
     *
@@ -61,4 +54,11 @@ public interface PageUiComponentService extends IService<PageUiComponentDO> {
      */
     PageResult<PageUiComponentDO> getPageUiComponentPage(PageUiComponentPageReqVO pageReqVO);
 
+    /**
+     * 根据角色获取用户的驾驶舱权限
+     * @param roleIds
+     * @return
+     */
+    List<PageUiComponentDO> getUiComponentList(List<Long> roleIds);
+
 }

+ 45 - 8
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/homepage/PageUiComponentServiceImpl.java

@@ -2,15 +2,21 @@ package cn.iocoder.yudao.module.system.service.homepage;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.module.system.controller.admin.homepage.vo.PageUiComponentPageReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.homepage.vo.PageUiComponentSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.homepage.PageUiComponentDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.homepage.RolePageDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.homepage.UiComponentDO;
 import cn.iocoder.yudao.module.system.dal.mysql.homepage.PageUiComponentMapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
 import org.springframework.validation.annotation.Validated;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -24,9 +30,16 @@ public class PageUiComponentServiceImpl extends ServiceImpl<PageUiComponentMappe
 
     @Resource
     private PageUiComponentMapper pageUiComponentMapper;
+    @Resource
+    private RolePageService rolePageService;
 
     @Override
     public Long createPageUiComponent(PageUiComponentSaveReqVO createReqVO) {
+        // 检查是否存在重复的
+        List<PageUiComponentDO> list = list(Wrappers.<PageUiComponentDO>lambdaQuery()
+                .eq(PageUiComponentDO::getPageId, createReqVO.getPageId())
+                .eq(PageUiComponentDO::getComponentId, createReqVO.getComponentId()));
+        Assert.isTrue(list.isEmpty(), "驾驶舱设置了相同的组件!");
         // 插入
         PageUiComponentDO pageUiComponent = BeanUtils.toBean(createReqVO, PageUiComponentDO.class);
         pageUiComponentMapper.insert(pageUiComponent);
@@ -37,22 +50,22 @@ public class PageUiComponentServiceImpl extends ServiceImpl<PageUiComponentMappe
 
     @Override
     public void updatePageUiComponent(PageUiComponentSaveReqVO updateReqVO) {
+        // 检查是否存在重复的
+        List<PageUiComponentDO> list = list(Wrappers.<PageUiComponentDO>lambdaQuery()
+                .ne(PageUiComponentDO::getId, updateReqVO.getId())
+                .eq(PageUiComponentDO::getPageId, updateReqVO.getPageId())
+                .eq(PageUiComponentDO::getComponentId, updateReqVO.getComponentId()));
+        Assert.isTrue(list.isEmpty(), "驾驶舱设置了相同的组件!");
         // 更新
         PageUiComponentDO updateObj = BeanUtils.toBean(updateReqVO, PageUiComponentDO.class);
         pageUiComponentMapper.updateById(updateObj);
     }
 
     @Override
-    public void deletePageUiComponent(Long id) {
-        // 删除
-        pageUiComponentMapper.deleteById(id);
-    }
-
-    @Override
-        public void deletePageUiComponentListByIds(List<Long> ids) {
+    public void deletePageUiComponentListByIds(List<Long> ids) {
         // 删除
         pageUiComponentMapper.deleteByIds(ids);
-        }
+    }
 
 
     @Override
@@ -65,4 +78,28 @@ public class PageUiComponentServiceImpl extends ServiceImpl<PageUiComponentMappe
         return pageUiComponentMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<PageUiComponentDO> getUiComponentList(List<Long> roleIds) {
+        List<PageUiComponentDO> pageUiComponentDOList = new ArrayList<>();
+        if (roleIds.isEmpty()) {
+            return pageUiComponentDOList;
+        }
+        // 开始查询sys_role_page
+        List<RolePageDO> rolePageDOList = rolePageService.list(Wrappers.<RolePageDO>lambdaQuery()
+                .in(RolePageDO::getRoleId, roleIds));
+        if (rolePageDOList.isEmpty()) {
+            return pageUiComponentDOList;
+        }
+        // 开始查询sys_page_ui_component
+        List<Long> pageIds = rolePageDOList.stream().map(RolePageDO::getId).toList();
+        return list(new MPJLambdaWrapperX<PageUiComponentDO>()
+                .leftJoin(UiComponentDO.class, UiComponentDO::getId, PageUiComponentDO::getComponentId)
+                .in(PageUiComponentDO::getPageId, pageIds)
+                .selectAll(PageUiComponentDO.class)
+                .selectAs(UiComponentDO::getComponentName, "componentName")
+                .selectAs(UiComponentDO::getComponentCategory, "componentCategory")
+                .selectAs(UiComponentDO::getComponentThumbnail, "componentThumbnail")
+                .selectAs(UiComponentDO::getComponentFilePath, "componentFilePath"));
+    }
+
 }

+ 1 - 7
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/homepage/UiComponentService.java

@@ -31,13 +31,6 @@ public interface UiComponentService extends IService<UiComponentDO> {
      */
     void updateUiComponent(@Valid UiComponentSaveReqVO updateReqVO);
 
-    /**
-     * 删除iscs驾驶舱组件
-     *
-     * @param id 编号
-     */
-    void deleteUiComponent(Long id);
-
     /**
     * 批量删除iscs驾驶舱组件
     *
@@ -61,4 +54,5 @@ public interface UiComponentService extends IService<UiComponentDO> {
      */
     PageResult<UiComponentDO> getUiComponentPage(UiComponentPageReqVO pageReqVO);
 
+
 }

+ 14 - 8
yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/homepage/UiComponentServiceImpl.java

@@ -1,11 +1,13 @@
 package cn.iocoder.yudao.module.system.service.homepage;
 
+import cn.hutool.core.lang.Assert;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.system.controller.admin.homepage.vo.UiComponentPageReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.homepage.vo.UiComponentSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.homepage.UiComponentDO;
 import cn.iocoder.yudao.module.system.dal.mysql.homepage.UiComponentMapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
@@ -27,6 +29,11 @@ public class UiComponentServiceImpl extends ServiceImpl<UiComponentMapper, UiCom
 
     @Override
     public Long createUiComponent(UiComponentSaveReqVO createReqVO) {
+        // 判断组件名称不能重复
+        List<UiComponentDO> list = list(Wrappers.<UiComponentDO>lambdaQuery()
+                .eq(UiComponentDO::getComponentName, createReqVO.getComponentName()));
+        Assert.isTrue(list.isEmpty(), "组件名称不可重复!");
+
         // 插入
         UiComponentDO uiComponent = BeanUtils.toBean(createReqVO, UiComponentDO.class);
         uiComponentMapper.insert(uiComponent);
@@ -37,22 +44,21 @@ public class UiComponentServiceImpl extends ServiceImpl<UiComponentMapper, UiCom
 
     @Override
     public void updateUiComponent(UiComponentSaveReqVO updateReqVO) {
+        // 判断组件名称不能重复
+        List<UiComponentDO> list = list(Wrappers.<UiComponentDO>lambdaQuery()
+                .ne(UiComponentDO::getId, updateReqVO.getId())
+                .eq(UiComponentDO::getComponentName, updateReqVO.getComponentName()));
+        Assert.isTrue(list.isEmpty(), "组件名称不可重复!");
         // 更新
         UiComponentDO updateObj = BeanUtils.toBean(updateReqVO, UiComponentDO.class);
         uiComponentMapper.updateById(updateObj);
     }
 
     @Override
-    public void deleteUiComponent(Long id) {
-        // 删除
-        uiComponentMapper.deleteById(id);
-    }
-
-    @Override
-        public void deleteUiComponentListByIds(List<Long> ids) {
+    public void deleteUiComponentListByIds(List<Long> ids) {
         // 删除
         uiComponentMapper.deleteByIds(ids);
-        }
+    }
 
 
     @Override