Ver código fonte

app菜单代码生成

home 2 anos atrás
pai
commit
b59fdee748

+ 6 - 1
bladex/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/AppMenu.java

@@ -51,7 +51,7 @@ public class AppMenu implements Serializable {
     /**
      * 父级ID
      */
-    private String parentId;
+    private Long parentId;
 
     /**
      * 状态   0隐藏  1显示
@@ -64,6 +64,11 @@ public class AppMenu implements Serializable {
     private String remark;
 
     /**
+     * 租户id
+     */
+    private String tenantId;
+
+    /**
      * 是否已删除
      */
     @TableLogic

+ 57 - 0
bladex/blade-service/blade-system/src/main/java/org/springblade/system/controller/AppMenuController.java

@@ -0,0 +1,57 @@
+package org.springblade.system.controller;
+
+import org.springblade.core.tool.api.R;
+import org.springblade.system.entity.AppMenu;
+import org.springblade.system.entity.AppRoleMenu;
+import org.springblade.system.service.AppMenuService;
+import org.springblade.system.service.AppRoleMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/appMenu")
+public class AppMenuController {
+
+    @Autowired
+    private AppMenuService appMenuService;
+
+    @Autowired
+    private AppRoleMenuService appRoleMenuService;
+
+    @PostMapping("/tree")
+    public R tree(@RequestBody Map<String, String> condition) {
+        List<Map<String, Object>> result = appMenuService.tree(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/bindRole")
+    public R bindRole(Map<String, Object> condition) {
+        appRoleMenuService.bindRole(condition);
+        return R.success();
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody AppMenu appMenu) {
+        appMenuService.save(appMenu);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody AppMenu appMenu) {
+        appMenuService.updateById(appMenu);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody AppMenu appMenu) {
+        appMenuService.removeById(appMenu.getId());
+        return R.success();
+    }
+
+}

+ 5 - 0
bladex/blade-service/blade-system/src/main/java/org/springblade/system/service/AppMenuService.java

@@ -3,6 +3,9 @@ package org.springblade.system.service;
 import com.fjhx.base.BaseService;
 import org.springblade.system.entity.AppMenu;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * app目录 服务类
@@ -13,4 +16,6 @@ import org.springblade.system.entity.AppMenu;
  */
 public interface AppMenuService extends BaseService<AppMenu> {
 
+    List<Map<String, Object>> tree(Map<String, String> condition);
+
 }

+ 5 - 0
bladex/blade-service/blade-system/src/main/java/org/springblade/system/service/AppRoleMenuService.java

@@ -3,6 +3,9 @@ package org.springblade.system.service;
 import com.fjhx.base.BaseService;
 import org.springblade.system.entity.AppRoleMenu;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 服务类
@@ -13,4 +16,6 @@ import org.springblade.system.entity.AppRoleMenu;
  */
 public interface AppRoleMenuService extends BaseService<AppRoleMenu> {
 
+    void bindRole(Map<String, Object> condition);
+
 }

+ 50 - 0
bladex/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/AppMenuServiceImpl.java

@@ -1,11 +1,24 @@
 package org.springblade.system.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.TreeUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.system.entity.AppMenu;
+import org.springblade.system.entity.AppRoleMenu;
 import org.springblade.system.mapper.AppMenuMapper;
 import org.springblade.system.service.AppMenuService;
+import org.springblade.system.service.AppRoleMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * app目录 服务实现类
@@ -17,4 +30,41 @@ import org.springframework.stereotype.Service;
 @Service
 public class AppMenuServiceImpl extends ServiceImpl<AppMenuMapper, AppMenu> implements AppMenuService {
 
+    @Autowired
+    private AppRoleMenuService appRoleMenuService;
+
+    @Override
+    public List<Map<String, Object>> tree(Map<String, String> condition) {
+
+        // 获取目录
+        String status = condition.get("status");
+        String own = condition.get("own");
+
+        LambdaQueryChainWrapper<AppMenu> appMenuLambdaQueryChainWrapper = lambdaQuery();
+
+        // 是否之查当前用户拥有权限的菜单
+        if (ObjectUtil.isNotEmpty(own) && own.equals("1")) {
+            // 获取用户角色
+            String userRole = AuthUtil.getUserRole();
+            String[] userRoleList = userRole.split(",");
+            if (userRoleList.length == 0) throw new ServiceException("没有角色权限");
+
+            // 获取角色访问目录权限
+            List<AppRoleMenu> list = appRoleMenuService.list(
+                    Wrappers.<AppRoleMenu>lambdaUpdate().in(AppRoleMenu::getRoleId, (Object[]) userRoleList));
+            if (list.size() == 0) throw new ServiceException("没有目录访问权限");
+            List<Long> appMenuId = list.stream().map(AppRoleMenu::getAppMenuId).collect(Collectors.toList());
+
+            appMenuLambdaQueryChainWrapper.in(AppMenu::getId, appMenuId);
+        } else {
+            appMenuLambdaQueryChainWrapper.eq(AppMenu::getTenantId, AuthUtil.getTenantId());
+        }
+
+        List<AppMenu> appMenuList = appMenuLambdaQueryChainWrapper
+                .eq(ObjectUtil.isNotEmpty(status), AppMenu::getStatus, status)
+                .orderByAsc(AppMenu::getSort)
+                .list();
+
+        return TreeUtil.buildTreeObj(appMenuList);
+    }
 }

+ 22 - 0
bladex/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/AppRoleMenuServiceImpl.java

@@ -5,6 +5,11 @@ import org.springblade.system.entity.AppRoleMenu;
 import org.springblade.system.mapper.AppRoleMenuMapper;
 import org.springblade.system.service.AppRoleMenuService;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +22,21 @@ import org.springframework.stereotype.Service;
 @Service
 public class AppRoleMenuServiceImpl extends ServiceImpl<AppRoleMenuMapper, AppRoleMenu> implements AppRoleMenuService {
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void bindRole(Map<String, Object> condition) {
+        Long roleId = (Long) condition.get("roleId");
+        List<Long> appMenuIdList = (List<Long>) condition.get("appMenuIdList");
+
+        List<AppRoleMenu> appRoleMenuList = appMenuIdList.stream().map(item -> {
+            AppRoleMenu appRoleMenu = new AppRoleMenu();
+            appRoleMenu.setRoleId(roleId);
+            appRoleMenu.setAppMenuId(item);
+            return appRoleMenu;
+        }).collect(Collectors.toList());
+
+        remove(AppRoleMenu::getRoleId, roleId);
+        saveBatch(appRoleMenuList);
+    }
+
 }