Browse Source

单位管理菜单中增加移动端-权限列表展示和更新两个接口

james 2 năm trước cách đây
mục cha
commit
2b840e66d4

+ 33 - 1
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/AuthorityConfigController.java

@@ -3,9 +3,11 @@ package com.usky.system.controller.web;
 
 import com.usky.common.core.bean.ApiResult;
 import com.usky.system.domain.SysMenu;
+import com.usky.system.domain.SysMobileMenu;
 import com.usky.system.service.ISysMenuService;
 import com.usky.system.service.SysPlatformMenuService;
 import com.usky.system.service.vo.TenantMenuVo;
+import com.usky.system.service.vo.MobileTenantMenuVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -45,7 +47,7 @@ public class AuthorityConfigController {
 
 
     /**
-     * 租户管理-权限配置-目录查询
+     * PC租户管理-权限配置-目录查询
      *
      * @param platformId 平台ID
      * @param tenantId   租户ID
@@ -61,6 +63,23 @@ public class AuthorityConfigController {
         return ApiResult.success(ajax);
     }
 
+    /**
+     * 移动端租户管理-权限配置-目录查询
+     *
+     * @param platformId 平台ID
+     * @param tenantId   租户ID
+     * @return
+     */
+    @GetMapping("getMobileConfigMenuList")
+    public ApiResult<Map<String, Object>> getMobileConfigMenuList(@RequestParam(value = "platformId") Integer platformId,
+                                                                     @RequestParam(value = "tenantId") Integer tenantId) {
+        List<SysMobileMenu> menus =sysPlatformMenuService.getMobilePlatformMenuList(platformId);
+        Map<String, Object> ajax = new HashMap<>();
+        ajax.put("checkedKeys", sysPlatformMenuService.selectMobilePlatformMenu(tenantId));
+        ajax.put("menus", menuService.buildMobileMenuTreeSelect(menus));
+        return ApiResult.success(ajax);
+    }
+
     /**
      * 租户管理-权限配置-目录保存
      *
@@ -74,6 +93,19 @@ public class AuthorityConfigController {
         return ApiResult.success();
     }
 
+    /**
+     * 移动端租户管理-权限配置-目录保存
+     *
+     * @param mobileTenantMenuVO
+     * @return
+     */
+//    @Log(title = "权限配置", businessType = BusinessType.UPDATE)
+    @PostMapping("updateMobileMenu")
+    public ApiResult<Void> updateMobileMenu(@RequestBody MobileTenantMenuVO mobileTenantMenuVO) {
+        sysPlatformMenuService.updateMobileMenu(mobileTenantMenuVO);
+        return ApiResult.success();
+    }
+
 
 }
 

+ 9 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysPlatformMenuMapper.java

@@ -2,6 +2,7 @@ package com.usky.system.mapper;
 
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.system.domain.SysMenu;
+import com.usky.system.domain.SysMobileMenu;
 import com.usky.system.domain.SysPlatformMenu;
 import com.usky.system.domain.SysTenantMenu;
 import org.apache.ibatis.annotations.Param;
@@ -21,11 +22,19 @@ public interface SysPlatformMenuMapper extends CrudMapper<SysPlatformMenu> {
     List<SysMenu> getMenuList(@Param("platformId") Integer platformId,
                               @Param("menuType") String menuType);
 
+    List<SysMobileMenu> getMobileMenuList(@Param("platformId") Integer platformId,
+                              @Param("menuType") String menuType);
+
     List<SysMenu> getMenuIdList(@Param("menuIds") Long[] menuIds,
                                 @Param("menuType") String menuType);
 
+    List<SysMobileMenu> getMobileMenuIdList(@Param("menuIds") Long[] menuIds,
+                                @Param("menuType") String menuType);
+
     int deleteTenantMenuBy(@Param("tenantId") Long tenantId);
 
+    int deleteMobileTenantMenuBy(@Param("tenantId") Long tenantId);
+
     List<SysTenantMenu> getMenuListOne(@Param("tenantId") Integer tenantId,
                                        @Param("menuType") String menuType);
 }

+ 19 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/ISysMenuService.java

@@ -3,7 +3,9 @@ package com.usky.system.service;
 
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.system.domain.SysMenu;
+import com.usky.system.domain.SysMobileMenu;
 import com.usky.system.service.vo.RouterVo;
+import com.usky.system.service.vo.TreeMobileSelect;
 import com.usky.system.service.vo.TreeSelect;
 
 import java.util.List;
@@ -87,6 +89,15 @@ public interface ISysMenuService extends CrudService<SysMenu>
      */
     public List<SysMenu> buildMenuTree(List<SysMenu> menus);
 
+
+    /**
+     * 构建移动端前端所需要树结构
+     *
+     * @param menus 菜单列表
+     * @return 树结构列表
+     */
+    public List<SysMobileMenu> buildMobileMenuTree(List<SysMobileMenu> menus);
+
     /**
      * 构建前端所需要下拉树结构
      * 
@@ -95,6 +106,14 @@ public interface ISysMenuService extends CrudService<SysMenu>
      */
     public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
 
+    /**
+     * 构建移动端前端所需要下拉树结构
+     *
+     * @param menus 菜单列表
+     * @return 下拉树结构列表
+     */
+    public List<TreeMobileSelect> buildMobileMenuTreeSelect(List<SysMobileMenu> menus);
+
     /**
      * 根据菜单ID查询信息
      * 

+ 2 - 2
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysLoginService.java

@@ -95,8 +95,8 @@ public class SysLoginService {
             String status = list.get(0).getStatus();
             String domain = list.get(0).getDomain();
             if(status.equals("1")){
-                recordLogininfor(username, Constants.LOGIN_FAIL, "租户已停用,请联系管理员");
-                throw new BusinessException("对不起,租户已停用,请联系管理员");
+                recordLogininfor(username, Constants.LOGIN_FAIL, "系统已停用,请联系管理员");
+                throw new BusinessException("对不起,系统已停用,请联系管理员");
             }
         }
 

+ 8 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysPlatformMenuService.java

@@ -2,8 +2,10 @@ package com.usky.system.service;
 
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.system.domain.SysMenu;
+import com.usky.system.domain.SysMobileMenu;
 import com.usky.system.domain.SysPlatformMenu;
 import com.usky.system.service.vo.TenantMenuVo;
+import com.usky.system.service.vo.MobileTenantMenuVO;
 
 import java.util.List;
 import java.util.Map;
@@ -20,9 +22,15 @@ public interface SysPlatformMenuService extends CrudService<SysPlatformMenu> {
 
     List<SysMenu> getPlatformMenuList(Integer platformId);
 
+    List<SysMobileMenu> getMobilePlatformMenuList(Integer platformId);
+
     Long[] selectPlatformMenu(Integer tenantId);
 
+    Long[] selectMobilePlatformMenu(Integer tenantId);
+
     Map<String, Object> getMenuList(Integer platformId, Integer tenantId);
 
     void updateMenu(TenantMenuVo tenantMenuVo);
+
+    void updateMobileMenu(MobileTenantMenuVO mobileTenantMenuVO);
 }

+ 93 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysMenuServiceImpl.java

@@ -5,6 +5,7 @@ import com.usky.common.core.util.StringUtils;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.system.domain.SysMenu;
+import com.usky.system.domain.SysMobileMenu;
 import com.usky.system.domain.SysRole;
 import com.usky.system.domain.SysUserVO;
 import com.usky.system.domain.constants.UserConstants;
@@ -15,6 +16,7 @@ import com.usky.system.service.ISysMenuService;
 import com.usky.system.service.vo.MetaVo;
 import com.usky.system.service.vo.RouterVo;
 import com.usky.system.service.vo.TreeSelect;
+import com.usky.system.service.vo.TreeMobileSelect;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -262,6 +264,38 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
         return returnList;
     }
 
+    /**
+     * 构建移动端前端所需要树结构
+     *
+     * @param menus 菜单列表
+     * @return 树结构列表
+     */
+    @Override
+    public List<SysMobileMenu> buildMobileMenuTree(List<SysMobileMenu> menus)
+    {
+        List<SysMobileMenu> returnList = new ArrayList<SysMobileMenu>();
+        List<Long> tempList = new ArrayList<Long>();
+        for (SysMobileMenu dept : menus)
+        {
+            tempList.add(dept.getMenuId().longValue());
+        }
+        for (Iterator<SysMobileMenu> iterator = menus.iterator(); iterator.hasNext();)
+        {
+            SysMobileMenu menu = (SysMobileMenu) iterator.next();
+            // 如果是顶级节点, 遍历该父节点的所有子节点
+            if (!tempList.contains(menu.getParentId()))
+            {
+                recursionMobileFn(menus, menu);
+                returnList.add(menu);
+            }
+        }
+        if (returnList.isEmpty())
+        {
+            returnList = menus;
+        }
+        return returnList;
+    }
+
     /**
      * 构建前端所需要下拉树结构
      *
@@ -275,6 +309,19 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
         return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
     }
 
+    /**
+     * 构建移动端前端所需要下拉树结构
+     *
+     * @param menus 菜单列表
+     * @return 下拉树结构列表
+     */
+    @Override
+    public List<TreeMobileSelect> buildMobileMenuTreeSelect(List<SysMobileMenu> menus)
+    {
+        List<SysMobileMenu> menuTrees = buildMobileMenuTree(menus);
+        return menuTrees.stream().map(TreeMobileSelect::new).collect(Collectors.toList());
+    }
+
     /**
      * 根据菜单ID查询信息
      *
@@ -513,6 +560,26 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
         }
     }
 
+    /**
+     * 移动端递归列表
+     *
+     * @param list
+     * @param t
+     */
+    private void recursionMobileFn(List<SysMobileMenu> list, SysMobileMenu t)
+    {
+        // 得到子节点列表
+        List<SysMobileMenu> childList = getChildMobileList(list, t);
+        t.setChildren(childList);
+        for (SysMobileMenu tChild : childList)
+        {
+            if (hasMobileChild(list, tChild))
+            {
+                recursionMobileFn(list, tChild);
+            }
+        }
+    }
+
     /**
      * 得到子节点列表
      */
@@ -531,6 +598,24 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
         return tlist;
     }
 
+    /**
+     * 得到移动端子节点列表
+     */
+    private List<SysMobileMenu> getChildMobileList(List<SysMobileMenu> list, SysMobileMenu t)
+    {
+        List<SysMobileMenu> tlist = new ArrayList<SysMobileMenu>();
+        Iterator<SysMobileMenu> it = list.iterator();
+        while (it.hasNext())
+        {
+            SysMobileMenu n = (SysMobileMenu) it.next();
+            if (n.getParentId().longValue() == t.getMenuId().longValue())
+            {
+                tlist.add(n);
+            }
+        }
+        return tlist;
+    }
+
     /**
      * 判断是否有子节点
      */
@@ -538,4 +623,12 @@ public class SysMenuServiceImpl extends AbstractCrudService<SysMenuMapper, SysMe
     {
         return getChildList(list, t).size() > 0 ? true : false;
     }
+
+    /**
+     * 判断移动端是否有子节点
+     */
+    private boolean hasMobileChild(List<SysMobileMenu> list, SysMobileMenu t)
+    {
+        return getChildMobileList(list, t).size() > 0 ? true : false;
+    }
 }

+ 64 - 4
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysPlatformMenuServiceImpl.java

@@ -4,15 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.system.domain.SysMenu;
+import com.usky.system.domain.SysMobileMenu;
 import com.usky.system.domain.SysPlatformMenu;
 import com.usky.system.domain.SysTenantMenu;
+import com.usky.system.domain.SysMobileTenantMenu;
 import com.usky.system.mapper.SysPlatformMenuMapper;
+import com.usky.system.service.SysMobileTenantMenuService;
 import com.usky.system.service.SysPlatformMenuService;
 import com.usky.system.service.SysTenantMenuService;
-import com.usky.system.service.vo.SysMenuOneVo;
-import com.usky.system.service.vo.SysMenuTwoVo;
-import com.usky.system.service.vo.SysMenuVo;
-import com.usky.system.service.vo.TenantMenuVo;
+import com.usky.system.service.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -36,11 +36,17 @@ public class SysPlatformMenuServiceImpl extends AbstractCrudService<SysPlatformM
     @Autowired
     private SysTenantMenuService sysTenantMenuService;
 
+    @Autowired
+    private SysMobileTenantMenuService sysMobileTenantMenuService;
 
     public List<SysMenu> getPlatformMenuList(Integer platformId){
         return baseMapper.getMenuList(platformId, null);
     }
 
+    public List<SysMobileMenu> getMobilePlatformMenuList(Integer platformId){
+        return baseMapper.getMobileMenuList(platformId, null);
+    }
+
     public Long[] selectPlatformMenu(Integer tenantId){
         LambdaQueryWrapper<SysTenantMenu> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(SysTenantMenu::getTenantId, tenantId);
@@ -52,6 +58,17 @@ public class SysPlatformMenuServiceImpl extends AbstractCrudService<SysPlatformM
         return arr;
     }
 
+    public Long[] selectMobilePlatformMenu(Integer tenantId){
+        LambdaQueryWrapper<SysMobileTenantMenu> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(SysMobileTenantMenu::getTenantId, tenantId);
+        List<SysMobileTenantMenu> menuList = sysMobileTenantMenuService.list(queryWrapper);
+        Long[] arr = new Long[menuList.size()];
+        for (int i = 0; i < menuList.size(); i++) {
+            arr[i] = menuList.get(i).getMenuId();
+        }
+        return arr;
+    }
+
 
     public Map<String, Object> getMenuList(Integer platformId, Integer tenantId) {
         //全部目录查询
@@ -230,6 +247,49 @@ public class SysPlatformMenuServiceImpl extends AbstractCrudService<SysPlatformM
         }
     }
 
+    @Transactional
+    public void updateMobileMenu(MobileTenantMenuVO mobileTenantMenuVO) {
+        Long[] arr = mobileTenantMenuVO.getMenuIds();
+        //菜单ID
+        List<SysMobileMenu> menuIdList = baseMapper.getMobileMenuIdList(arr, "F");
+        Long arr1[] = new Long[menuIdList.size()];
+        for (int i = 0; i < menuIdList.size(); i++) {
+            arr1[i] = menuIdList.get(i).getParentId();
+        }
+        //目录ID
+        List<SysMobileMenu> menuIdListOne = baseMapper.getMobileMenuIdList(arr1, "C");
+        Long arr2[] = new Long[menuIdListOne.size()];
+        for (int i = 0; i < menuIdListOne.size(); i++) {
+            arr2[i] = menuIdListOne.get(i).getParentId();
+        }
+        List<SysMobileMenu> menuIdListTwo = baseMapper.getMobileMenuIdList(arr, "C");
+        Long arr4[] = new Long[menuIdListTwo.size()];
+        for (int i = 0; i < menuIdListTwo.size(); i++) {
+            arr4[i] = menuIdListTwo.get(i).getParentId();
+        }
+        Long[] arr5 = arrayMerge(arr1, arr2);
+        Long[] arr6 = arrayMerge(arr5, arr4);
+        Long[] arr7 = arrayMerge(arr6, arr);
+        List arr3 = new ArrayList();
+        for (int i = 0; i < arr7.length; i++) {
+            if (!arr3.contains(arr7[i])) {
+                arr3.add(arr7[i]);
+            }
+        }
+
+        // 删除租户菜单关联
+        baseMapper.deleteMobileTenantMenuBy(mobileTenantMenuVO.getTenantId());
+        //新增菜单
+        if (arr3.size() > 0) {
+            for (int i = 0; i < arr3.size(); i++) {
+                SysMobileTenantMenu sysMobileTenantMenu = new SysMobileTenantMenu();
+                sysMobileTenantMenu.setMenuId((Long) arr3.get(i));
+                sysMobileTenantMenu.setTenantId(mobileTenantMenuVO.getTenantId());
+                sysMobileTenantMenuService.save(sysMobileTenantMenu);
+            }
+        }
+    }
+
     public Long[] arrayMerge(Long[] arr1, Long[] arr2) {
         Long arr3[] = new Long[arr1.length + arr2.length];
         for (int i = 0; i < arr1.length; i++) {

+ 33 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/vo/MobileTenantMenuVO.java

@@ -0,0 +1,33 @@
+package com.usky.system.service.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 租户和菜单关联表
+ * </p>
+ *
+ * @author zyj
+ * @since 2023-02-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class MobileTenantMenuVO {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 租户ID
+     */
+    private Long tenantId;
+
+    /**
+     * 菜单ID
+     */
+    private Long[] menuIds;
+}

+ 78 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/vo/TreeMobileSelect.java

@@ -0,0 +1,78 @@
+package com.usky.system.service.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.usky.system.domain.SysDept;
+import com.usky.system.domain.SysMobileMenu;
+
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Treeselect树结构实体类
+ *
+ * @author yq
+ */
+public class TreeMobileSelect {
+    private static final long serialVersionUID = 1L;
+
+    /** 节点ID */
+    private Long id;
+
+    /** 节点名称 */
+    private String label;
+
+    /** 子节点 */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<TreeMobileSelect> children;
+
+    public TreeMobileSelect()
+    {
+
+    }
+
+    public TreeMobileSelect(SysDept dept)
+    {
+        this.id = dept.getDeptId();
+        this.label = dept.getDeptName();
+        this.children = dept.getChildren().stream().map(TreeMobileSelect::new).collect(Collectors.toList());
+    }
+
+    public TreeMobileSelect(SysMobileMenu menu)
+    {
+        this.id = menu.getMenuId().longValue();
+        this.label = menu.getMenuName();
+        this.children = menu.getChildren().stream().map(TreeMobileSelect::new).collect(Collectors.toList());
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public String getLabel()
+    {
+        return label;
+    }
+
+    public void setLabel(String label)
+    {
+        this.label = label;
+    }
+
+    public List<TreeMobileSelect> getChildren()
+    {
+        return children;
+    }
+
+    public void setChildren(List<TreeMobileSelect> children)
+    {
+        this.children = children;
+    }
+}

+ 2 - 2
base-modules/service-system/service-system-biz/src/main/resources/bootstrap.yml

@@ -13,10 +13,10 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
       config:
         # 配置中心地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置

+ 42 - 4
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysPlatformMenuMapper.xml

@@ -21,6 +21,19 @@
         </if>
     </select>
 
+    <select id="getMobileMenuList"  resultType="com.usky.system.domain.SysMobileMenu" >
+        SELECT
+        a.*
+        FROM
+        sys_mobile_menu AS a
+        JOIN sys_mobile_platform_menu AS b ON a.menu_id = b.menu_id
+        WHERE
+        b.platform_id = #{platformId}
+        <if test="menuType != null and menuType != ''">
+            AND a.menu_type = #{menuType}
+        </if>
+    </select>
+
     <select id="getMenuIdList" resultType="com.usky.system.domain.SysMenu">
         SELECT
         a.*
@@ -31,10 +44,31 @@
         a.status = 0
         AND a.visible = 0
         AND a.menu_type = #{menuType}
-        AND a.menu_id IN
-        <foreach collection="menuIds" item="item" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+        <if test="menuIds != null and menuIds.length > 0">
+            AND a.menu_id IN
+            <foreach collection="menuIds" item="item" open="(" separator="," close=")">
+                ${item}
+            </foreach>
+        </if>
+        group by a.menu_id
+    </select>
+
+    <select id="getMobileMenuIdList" resultType="com.usky.system.domain.SysMobileMenu">
+        SELECT
+        a.*
+        FROM
+        sys_mobile_menu AS a
+        JOIN sys_mobile_platform_menu AS b ON a.menu_id = b.menu_id
+        WHERE
+        a.status = 0
+        AND a.visible = 0
+        AND a.menu_type = #{menuType}
+        <if test="menuIds != null and menuIds.length > 0">
+            AND a.menu_id IN
+            <foreach collection="menuIds" item="item" open="(" separator="," close=")">
+                ${item}
+            </foreach>
+        </if>
         group by a.menu_id
     </select>
 
@@ -42,6 +76,10 @@
         delete from sys_tenant_menu where tenant_id=#{tenantId}
     </delete>
 
+    <delete id="deleteMobileTenantMenuBy" parameterType="Long">
+        delete from sys_mobile_tenant_menu where tenant_id=#{tenantId}
+    </delete>
+
 
     <select id="getMenuListOne"  resultType="com.usky.system.domain.SysTenantMenu" >
         SELECT