Selaa lähdekoodia

08 05 01 user_role_menu codes

hr 4 vuotta sitten
vanhempi
commit
5d76b14ad9

+ 5 - 1
src/main/java/com/imed/costaccount/mapper/MenuMapper.java

@@ -3,6 +3,9 @@ package com.imed.costaccount.mapper;
 import com.imed.costaccount.model.Menu;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 菜单管理
@@ -12,5 +15,6 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface MenuMapper extends BaseMapper<Menu> {
-	
+
+    List<Menu> getNav(@Param("id") Long id, @Param("hospId") Long hospId);
 }

+ 21 - 0
src/main/java/com/imed/costaccount/model/dto/tets.json

@@ -0,0 +1,21 @@
+{
+  "status": 200,
+  "msg": "success",
+  "data": {
+    "code": "a001",
+    "name": "hhhh",
+    "relation": 1,
+    "isSelect": true
+  }
+}
+
+{
+  "roleId": 1,
+  "userIds": [1,2,3]
+}
+
+[{
+  "id": 1,
+  "name": "zhangsan",
+  "isSelect": true
+}]

+ 6 - 0
src/main/java/com/imed/costaccount/model/vo/LoginVO.java

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 
+import java.util.List;
+
 @Getter
 @Setter
 @AllArgsConstructor
@@ -19,4 +21,8 @@ public class LoginVO {
     private Long userid;
     @ApiModelProperty(name = "name",value = "登录返回用户名称")
     private String name;
+
+//    @ApiModelProperty(name = "menuVOs", value = "菜单对象")
+//    private List<NavVO> menuVOs;
+
 }

+ 26 - 0
src/main/java/com/imed/costaccount/model/vo/NavVO.java

@@ -0,0 +1,26 @@
+package com.imed.costaccount.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("导航栏菜单对象")
+public class NavVO {
+    @JsonIgnore
+    private Long menuId;
+    private String path;
+
+    private String name;
+
+    private String icon;
+
+    @JsonIgnore
+    private Long parentId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private List<NavVO> children;
+}

+ 9 - 0
src/main/java/com/imed/costaccount/service/MenuService.java

@@ -6,7 +6,9 @@ import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.MenuEditDTO;
 import com.imed.costaccount.model.dto.MenuSaveDTO;
 import com.imed.costaccount.model.Menu;
+import com.imed.costaccount.model.vo.NavVO;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -40,5 +42,12 @@ public interface MenuService extends IService<Menu> {
      * @param user
      */
     void updateMenu(MenuEditDTO menuDTO, User user);
+
+    /**
+     * 获取当前登录人的菜单列表
+     * @param user {@link User}
+     * @return
+     */
+    List<NavVO> getNav(User user);
 }
 

+ 45 - 3
src/main/java/com/imed/costaccount/service/impl/MenuServiceImpl.java

@@ -8,11 +8,13 @@ import com.imed.costaccount.common.constants.Constant;
 import com.imed.costaccount.common.exception.CostException;
 import com.imed.costaccount.common.util.PageUtils;
 import com.imed.costaccount.mapper.MenuMapper;
+import com.imed.costaccount.mapper.RoleMapper;
 import com.imed.costaccount.model.Menu;
 import com.imed.costaccount.model.User;
 import com.imed.costaccount.model.dto.MenuEditDTO;
 import com.imed.costaccount.model.dto.MenuSaveDTO;
 import com.imed.costaccount.model.vo.MenuVO;
+import com.imed.costaccount.model.vo.NavVO;
 import com.imed.costaccount.service.MenuService;
 import com.imed.costaccount.service.UserService;
 import com.imed.costaccount.utils.BeanUtil;
@@ -21,9 +23,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -163,4 +163,46 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
             }
         }
     }
+
+    /**
+     * 获取当前登录人的菜单列表
+     *
+     * @param user {@link User}
+     * @return
+     */
+    @Override
+    public List<NavVO> getNav(User user) {
+        Long id = user.getId();
+        Long hospId = user.getHospId();
+        // TODO: 2021/8/5 超级管理员(切换人员操作)
+        List<Menu> list = baseMapper.getNav(id, hospId);
+        List<NavVO> navVOS = BeanUtil.convertList(list, NavVO.class);
+        log.info("拷贝后的list:{}", navVOS);
+        List<NavVO> parentNavVOs = navVOS.stream().filter(i -> i.getParentId() == 0L).collect(Collectors.toList());
+        List<NavVO> navVOList = new ArrayList<>();
+        for (NavVO parentNavVO : parentNavVOs) {
+            List<NavVO> navs = this.getSon(parentNavVO, navVOS);
+            navVOList.addAll(navs);
+        }
+
+        return navVOList;
+    }
+
+    private List<NavVO> getSon(NavVO parentNavVO, List<NavVO> list) {
+        List<NavVO> navVOs = new ArrayList<>();
+        navVOs.add(parentNavVO);
+        for (NavVO nav : list) {
+            if (parentNavVO.getMenuId().equals(nav.getParentId())) {
+                List<NavVO> children = parentNavVO.getChildren();
+                if (CollUtil.isEmpty(children)) {
+                    children = new ArrayList<>();
+                }
+                children.add(nav);
+                parentNavVO.setChildren(children);
+                this.getSon(nav, list);
+            }
+        }
+        return navVOs;
+    }
+
 }

+ 0 - 1
src/main/java/com/imed/costaccount/service/impl/ReportRelationServiceImpl.java

@@ -15,7 +15,6 @@ import com.imed.costaccount.model.dto.ReportRelationDTO;
 import com.imed.costaccount.model.vo.RelationVO;
 import com.imed.costaccount.service.AccountingService;
 import com.imed.costaccount.service.CostShareParamService;
-import com.imed.costaccount.service.ReportFormService;
 import com.imed.costaccount.service.ReportRelationService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;

+ 10 - 1
src/main/java/com/imed/costaccount/web/MenuController.java

@@ -5,6 +5,7 @@ import com.imed.costaccount.common.util.Result;
 import com.imed.costaccount.model.Menu;
 import com.imed.costaccount.model.dto.MenuEditDTO;
 import com.imed.costaccount.model.dto.MenuSaveDTO;
+import com.imed.costaccount.model.vo.NavVO;
 import com.imed.costaccount.service.MenuService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.Arrays;
+import java.util.List;
 
 
 /**
@@ -54,7 +56,7 @@ public class MenuController extends AbstractController {
     @ApiOperation("编辑某个菜单")
     @PostMapping("/edit")
     public Result update(@RequestBody @Valid MenuEditDTO menuDTO) {
-        menuService.updateMenu(menuDTO,getUser());
+        menuService.updateMenu(menuDTO, getUser());
         return Result.ok();
     }
 
@@ -68,4 +70,11 @@ public class MenuController extends AbstractController {
         return Result.ok();
     }
 
+    @ApiOperation("获取当前登录人拥有的菜单")
+    @GetMapping("/nav")
+    public Result nav() {
+        List<NavVO> list = menuService.getNav(getUser());
+        return Result.ok(list);
+    }
+
 }

+ 1 - 1
src/main/resources/application.yml

@@ -27,4 +27,4 @@ logging:
 cost:
   jwt:
     secret: 12321312asdsdsfdfsd
-    expire: 100000
+    expire: 100000

+ 14 - 1
src/main/resources/mapper/MenuMapper.xml

@@ -3,7 +3,7 @@
 
 <mapper namespace="com.imed.costaccount.mapper.MenuMapper">
 
-	<!-- 可根据自己的需求,是否要使用 -->
+    <!-- 可根据自己的需求,是否要使用 -->
     <resultMap type="com.imed.costaccount.model.Menu" id="menuMap">
         <result property="menuId" column="menu_id"/>
         <result property="parentId" column="parent_id"/>
@@ -18,6 +18,19 @@
         <result property="modifyUserId" column="modify_user_id"/>
         <result property="modifyTime" column="modify_time"/>
     </resultMap>
+    <select id="getNav" resultType="com.imed.costaccount.model.Menu">
+        select *
+        from sys_menu sm
+        where sm.menu_id in (select distinct rm.menu_id
+                       from sys_user_role ur
+                                LEFT JOIN sys_role_menu rm on ur.role_id = rm.role_id
+                                LEFT JOIN sys_user su on ur.user_id = su.id
+                       where su.id = #{id}
+                         and su.hosp_id = #{hospId}
+                         and ur.hosp_id = #{hospId}
+                         and rm.hosp_id = #{hospId})
+          and sm.type != 3 order by order_num asc
+    </select>
 
 
 </mapper>