Pārlūkot izejas kodu

Merge branch 'huangyuan-user' of lift-manager/lift-server into develop

huangyuan 5 gadi atpakaļ
vecāks
revīzija
c97f484f2b

+ 16 - 3
lift-system-service/src/main/java/cn/com/ty/lift/system/user/controller/MenuController.java

@@ -45,14 +45,27 @@ public class MenuController {
     }
 
     /**
-     * @description 给企业分配菜单
-     * @date 2019/11/27 10:03 AM
      * @param menuRequest 菜单请求数据:
      * @return
+     * @description 给企业分配菜单
+     * @date 2019/11/27 10:03 AM
      */
     @PostMapping("/companyMenu")
-    public RestResponse companyMenu(@RequestBody MenuRequest menuRequest){
+    public RestResponse companyMenu(@RequestBody MenuRequest menuRequest) {
         return menuService.companyMenu(menuRequest);
     }
 
+    /**
+     * @param menuRequest 请求参数
+     * @return 按钮数据
+     * @methodName getButton
+     * @Desc 获取所有菜单的按钮数据
+     * @Author huangyuan
+     * @Date 2020/7/2 9:31 上午
+     */
+    @RequestMapping("/getButton")
+    public RestResponse getButton(@RequestBody MenuRequest menuRequest) {
+        return menuService.getButton(menuRequest);
+    }
+
 }

+ 2 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/dao/entity/model/MenuRequest.java

@@ -10,9 +10,11 @@ import lombok.Data;
 @Data
 public class MenuRequest {
     private Long id;
+    private Long menuId;
     private Long companyId;//公司id
     private String menuIds;//菜单id通过","连接
     private Long roleId;//角色id
+    private Long currentRoleId;//当前角色id
     public MenuRequest(){}
     public MenuRequest(Long companyId, String menuIds){
         this.companyId = companyId;

+ 20 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/dao/entity/model/MenuResponse.java

@@ -1,9 +1,29 @@
 package cn.com.ty.lift.system.user.dao.entity.model;
 
+import lombok.Data;
+
 /**
  * @author huangyuan
  * @date 2019-12-01
  * @description 菜单响应类
  */
+@Data
 public class MenuResponse {
+    /**
+     * 菜单id
+     */
+    private Long id;
+    /**
+     * 菜单名称
+     */
+    private String name;
+    /**
+     * 是否显示 false 不显示 true 显示
+     */
+    private boolean checked;
+    /**
+     * 菜单编码
+     */
+    private String code;
+
 }

+ 9 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/IMenuService.java

@@ -70,4 +70,13 @@ public interface IMenuService extends IService<Menu> {
      */
     List<Menu> getCompanyMenuList(Long companyId);
 
+    /**
+     * @param menuRequest 请求参数
+     * @return 按钮数据
+     * @methodName getButton
+     * @Desc 获取所有菜单的按钮数据
+     * @Author huangyuan
+     * @Date 2020/7/2 9:31 上午
+     */
+    RestResponse getButton(MenuRequest menuRequest);
 }

+ 56 - 9
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/MenuService.java

@@ -5,14 +5,17 @@ import cn.com.ty.lift.common.utils.ProjectUtils;
 import cn.com.ty.lift.common.utils.TreeUtil;
 import cn.com.ty.lift.system.user.dao.entity.CompanyMenu;
 import cn.com.ty.lift.system.user.dao.entity.Menu;
+import cn.com.ty.lift.system.user.dao.entity.Role;
 import cn.com.ty.lift.system.user.dao.entity.RoleMenu;
 import cn.com.ty.lift.system.user.dao.entity.model.MenuRequest;
+import cn.com.ty.lift.system.user.dao.entity.model.MenuResponse;
 import cn.com.ty.lift.system.user.dao.mapper.MenuMapper;
 import cn.com.ty.lift.system.user.service.ICompanyMenuService;
 import cn.com.ty.lift.system.user.service.IMenuService;
 import cn.com.ty.lift.system.user.service.IRoleMenuService;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
@@ -21,7 +24,10 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author huangyuan
@@ -44,7 +50,7 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> implements IMenuS
                 .eq("role_id", roleId)
         );
         List<Long> menuIdList = ProjectUtils.getAttrList(roleMenuList, "menuId", null);
-        if(menuIdList != null && menuIdList.size() > 0){
+        if (menuIdList != null && menuIdList.size() > 0) {
             return (List<Menu>) this.listByIds(menuIdList);
         }
         return null;
@@ -56,8 +62,8 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> implements IMenuS
         List<Menu> menuTree = TreeUtil.listToTree(menuList, ApiConstants.MENU_PARENT_ATTR, ApiConstants.ROOT_MENU_PARENT_ID, "id");
         //递归组合菜单路径
         StringBuilder sb = new StringBuilder();
-        menuTreeToUrl(menuTree,  sb);
-        return sb.toString().replace("\n","");
+        menuTreeToUrl(menuTree, sb);
+        return sb.toString().replace("\n", "");
     }
 
     @Override
@@ -90,13 +96,54 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> implements IMenuS
         List<CompanyMenu> companyMenuList = companyMenuService.list(new QueryWrapper<CompanyMenu>()
                 .eq("company_id", companyId)
         );
-        List<Long> menuIdList = ProjectUtils.getAttrList(companyMenuList, "menuId", null);
-        if(menuIdList !=  null && menuIdList.size() > 0){
-            return (List<Menu>) this.listByIds(menuIdList);
+        if (companyMenuList != null && companyMenuList.size() > 0) {
+            List<Long> menuIdList = companyMenuList.stream().map(CompanyMenu::getMenuId).collect(Collectors.toList());
+            if (menuIdList.size() > 0) {
+                return (List<Menu>) this.listByIds(menuIdList);
+            }
         }
         return null;
     }
 
+    @Override
+    public RestResponse getButton(MenuRequest menuRequest) {
+        List<MenuResponse> menuResponseList = new ArrayList<>();
+        List<Menu> buttonList = list(Wrappers.<Menu>query().
+                eq("parent_id", menuRequest.getMenuId()).
+                eq("type", "button")
+        );
+        if (buttonList != null && buttonList.size() > 0) {
+            List<Long> buttonIdList = buttonList.stream().map(menu -> Long.parseLong(menu.getId().toString())).
+                    collect(Collectors.toList());
+            //获取当前角色关联的菜单信息
+            List<RoleMenu> roleMenuList = roleMenuService.list(Wrappers.<RoleMenu>query().
+                    eq("role_id", menuRequest.getCurrentRoleId()).
+                    in(buttonIdList.size() > 0, "menu_id", buttonIdList)
+            );
+            //设置菜单id -> 菜单角色关联关系
+            Map<Long, List<RoleMenu>> menuIdToRoleMenu = new HashMap<>();
+            if (roleMenuList != null && roleMenuList.size() > 0) {
+                menuIdToRoleMenu.putAll(roleMenuList.stream().collect(Collectors.groupingBy(RoleMenu::getMenuId)));
+            }
+            //封装菜单信息
+            buttonList.forEach(button -> {
+                MenuResponse menuResponse = new MenuResponse();
+                menuResponse.setId(Long.parseLong(button.getId().toString()));
+                menuResponse.setName(button.getName());
+                menuResponse.setCode(button.getCode());
+                //设置菜单是否显示
+                if (menuIdToRoleMenu.size() > 0) {
+                    List<RoleMenu> roleMenus = menuIdToRoleMenu.get(Long.parseLong(button.getId().toString()));
+                    if (roleMenus != null && roleMenus.size() > 0) {
+                        menuResponse.setChecked(true);
+                    }
+                }
+                menuResponseList.add(menuResponse);
+            });
+        }
+        return RestResponse.success(menuResponseList);
+    }
+
     @Override
     @Transactional
     public RestResponse companyMenu(MenuRequest menuRequest) {
@@ -107,8 +154,8 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> implements IMenuS
         );
         List<Long> companyMenuIds = ProjectUtils.getAttrList(needDeleteCompanyMenuList, "id", null);
         if (companyMenuIds.size() > 0) {
-            if(!companyMenuService.removeByIds(companyMenuIds)){
-               return RestResponse.fail(ApiConstants.RESULT_ERROR, "删除公司菜单关联关系失败");
+            if (!companyMenuService.removeByIds(companyMenuIds)) {
+                return RestResponse.fail(ApiConstants.RESULT_ERROR, "删除公司菜单关联关系失败");
             }
         }
         //获取菜单id列表
@@ -124,7 +171,7 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> implements IMenuS
         }
         //保存公司菜单关联关系
         if (needSaveCompanyMenuList.size() > 0) {
-            if(!companyMenuService.saveBatch(needSaveCompanyMenuList)){
+            if (!companyMenuService.saveBatch(needSaveCompanyMenuList)) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return RestResponse.fail(ApiConstants.RESULT_ERROR, "保存公司菜单关系失败");
             }

+ 19 - 9
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/UserApplicationService.java

@@ -267,6 +267,16 @@ public class UserApplicationService extends ServiceImpl<UserApplicationMapper, U
             if (mtCompanyUser != null) {
                 return RestResponse.fail(ApiConstants.RESULT_ERROR, "用户已经在团队中了");
             }
+            //校验两次申请的时间
+            if (userApplication != null) {
+                LocalDateTime oldApplyTime = userApplication.getApplyDate();
+                //当前申请时间
+                LocalDateTime nowApplyTime = LocalDateTime.now();
+                //差值判断
+                if (CommonUtil.durationJudge(oldApplyTime, nowApplyTime, 1L)) {
+                    return RestResponse.success(null, ApiConstants.RESULT_ERROR, "今天已经申请过了");
+                }
+            }
         } else {
             //获取项目用户信息
             ProjectUser projectUser = projectService.getProjectUserByUserIdAndProjectId(new ProjectUser(
@@ -274,15 +284,15 @@ public class UserApplicationService extends ServiceImpl<UserApplicationMapper, U
             if (projectUser != null) {
                 return RestResponse.fail(ApiConstants.RESULT_ERROR, "用户已经在项目中了");
             }
-        }
-        //校验两次申请的时间
-        if (userApplication != null) {
-            LocalDateTime oldApplyTime = userApplication.getApplyDate();
-            //当前申请时间
-            LocalDateTime nowApplyTime = LocalDateTime.now();
-            //差值判断
-            if (CommonUtil.durationJudge(oldApplyTime, nowApplyTime, 1L)) {
-                return RestResponse.success(null, ApiConstants.RESULT_ERROR, "今天已经申请过了");
+            //校验两次申请的时间
+            if (userApplication != null) {
+                LocalDateTime oldApplyTime = userApplication.getApplyDate();
+                //当前申请时间
+                LocalDateTime nowApplyTime = LocalDateTime.now();
+                //差值判断
+                if (CommonUtil.durationJudgeHour(oldApplyTime, nowApplyTime, 1L)) {
+                    return RestResponse.success(null, ApiConstants.RESULT_ERROR, "请一个小时后再申请");
+                }
             }
         }
         return null;

+ 14 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/utils/CommonUtil.java

@@ -66,6 +66,20 @@ public class CommonUtil {
         return diffDay < dValue;
     }
 
+    /**
+     * @param timeA  时间A
+     * @param timeB  时间B
+     * @param hValue 差值
+     * @return true:差值在指定范围内 false:差值不在指定范围内
+     * @description 判断时间A和B差值的绝对值是否在指定的之间差值内
+     * @date 2019-12-18 14:10
+     */
+    public static boolean durationJudgeHour(LocalDateTime timeA, LocalDateTime timeB, Long hValue) {
+        Duration duration = Duration.between(timeA, timeB);
+        long diffHour = duration.toHours();
+        return diffHour < hValue;
+    }
+
     /**
      * @param transTimeStr 给定时间
      * @param monthFormat  转化为的月份时间格式