Explorar o código

租户管理-权限配置相关接口开发1

jichaobo %!s(int64=3) %!d(string=hai) anos
pai
achega
9e58885fbb
Modificáronse 27 ficheiros con 1116 adicións e 18 borrados
  1. 54 0
      fiveep-controller/src/main/java/com/bizmatics/controller/web/AuthorityConfigController.java
  2. 1 1
      fiveep-controller/src/main/java/com/bizmatics/controller/web/MybatisGeneratorUtils.java
  3. 21 0
      fiveep-controller/src/main/java/com/bizmatics/controller/web/SysPlatformMenuController.java
  4. 11 0
      fiveep-controller/src/main/java/com/bizmatics/controller/web/SysTenantConfigController.java
  5. 21 0
      fiveep-controller/src/main/java/com/bizmatics/controller/web/SysTenantMenuController.java
  6. 15 14
      fiveep-controller/src/main/java/com/bizmatics/controller/web/UserConfigController.java
  7. 34 0
      fiveep-model/src/main/java/com/bizmatics/model/SysPlatformMenu.java
  8. 36 0
      fiveep-model/src/main/java/com/bizmatics/model/SysTenantMenu.java
  9. 0 1
      fiveep-model/src/main/java/com/bizmatics/model/system/SysUser.java
  10. 404 0
      fiveep-model/src/main/java/com/bizmatics/model/system/SysUserOneVo.java
  11. 5 0
      fiveep-model/src/main/java/com/bizmatics/model/vo/SysMenuOneVo.java
  12. 1 1
      fiveep-model/src/main/java/com/bizmatics/model/vo/SysMenuTwoVo.java
  13. 5 0
      fiveep-model/src/main/java/com/bizmatics/model/vo/SysMenuVo.java
  14. 34 0
      fiveep-model/src/main/java/com/bizmatics/model/vo/TenantMenuVo.java
  15. 26 0
      fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SysPlatformMenuMapper.java
  16. 4 0
      fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SysTenantConfigMapper.java
  17. 16 0
      fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SysTenantMenuMapper.java
  18. 46 0
      fiveep-persistence/src/main/resources/mapper/mysql/SysPlatformMenuMapper.xml
  19. 13 0
      fiveep-persistence/src/main/resources/mapper/mysql/SysTenantConfigMapper.xml
  20. 12 0
      fiveep-persistence/src/main/resources/mapper/mysql/SysTenantMenuMapper.xml
  21. 0 1
      fiveep-persistence/src/main/resources/mapper/mysql/system/SysUserMapper.xml
  22. 23 0
      fiveep-service/src/main/java/com/bizmatics/service/SysPlatformMenuService.java
  23. 3 0
      fiveep-service/src/main/java/com/bizmatics/service/SysTenantConfigService.java
  24. 16 0
      fiveep-service/src/main/java/com/bizmatics/service/SysTenantMenuService.java
  25. 287 0
      fiveep-service/src/main/java/com/bizmatics/service/impl/SysPlatformMenuServiceImpl.java
  26. 8 0
      fiveep-service/src/main/java/com/bizmatics/service/impl/SysTenantConfigServiceImpl.java
  27. 20 0
      fiveep-service/src/main/java/com/bizmatics/service/impl/SysTenantMenuServiceImpl.java

+ 54 - 0
fiveep-controller/src/main/java/com/bizmatics/controller/web/AuthorityConfigController.java

@@ -0,0 +1,54 @@
+package com.bizmatics.controller.web;
+
+
+import com.bizmatics.common.core.bean.ApiResult;
+import com.bizmatics.model.SysTenantConfig;
+import com.bizmatics.model.vo.TenantMenuVo;
+import com.bizmatics.service.SysPlatformMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 租户管理-权限配置
+ *
+ * @author ya
+ * @since 2022-05-05
+ */
+@RestController
+@RequestMapping("/authorityConfig")
+public class AuthorityConfigController {
+
+    @Autowired
+    private SysPlatformMenuService sysPlatformMenuService;
+
+
+    /**
+     * 租户管理-权限配置-目录查询
+     *
+     * @param platformId 平台ID
+     * @param tenantId   租户ID
+     * @return
+     */
+    @GetMapping("getMenuList")
+    public ApiResult<List<Object>> getMenuList(@RequestParam(value = "platformId") Integer platformId,
+                                               @RequestParam(value = "tenantId") Integer tenantId) {
+        return ApiResult.success(sysPlatformMenuService.getMenuList(platformId, tenantId));
+    }
+
+    /**
+     * 租户管理-权限配置-目录保存
+     *
+     * @param tenantMenuVo
+     * @return
+     */
+    @PostMapping("updateMenu")
+    public ApiResult<Void> updateMenu(@RequestBody TenantMenuVo tenantMenuVo) {
+        sysPlatformMenuService.updateMenu(tenantMenuVo);
+        return ApiResult.success();
+    }
+
+
+}
+

+ 1 - 1
fiveep-controller/src/main/java/com/bizmatics/controller/web/MybatisGeneratorUtils.java

@@ -70,7 +70,7 @@ public class MybatisGeneratorUtils {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude(new String[]{"sys_platform"});  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude(new String[]{"sys_tenant_menu"});  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 21 - 0
fiveep-controller/src/main/java/com/bizmatics/controller/web/SysPlatformMenuController.java

@@ -0,0 +1,21 @@
+package com.bizmatics.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 平台和菜单关联表 前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+@Controller
+@RequestMapping("/sysPlatformMenu")
+public class SysPlatformMenuController {
+
+}
+

+ 11 - 0
fiveep-controller/src/main/java/com/bizmatics/controller/web/SysTenantConfigController.java

@@ -5,6 +5,7 @@ import com.bizmatics.common.core.bean.ApiResult;
 import com.bizmatics.common.core.bean.CommonPage;
 import com.bizmatics.model.SysTenant;
 import com.bizmatics.model.SysTenantConfig;
+import com.bizmatics.model.system.SysMenu;
 import com.bizmatics.model.vo.SysTenantConfigVo;
 import com.bizmatics.model.vo.SysTenantOneVo;
 import com.bizmatics.model.vo.SysTenantTwoVo;
@@ -113,5 +114,15 @@ public class SysTenantConfigController {
     }
 
 
+    /**
+     * 租户管理-系统配置-首页请求地址下拉框查询
+     * @param tenantId 租户ID
+     * @return
+     */
+    @GetMapping("/getMenuBoxList")
+    public ApiResult<List<SysMenu>> getMenuBoxList(@RequestParam Integer tenantId) {
+        return ApiResult.success(sysTenantConfigService.getMenuBoxList(tenantId));
+    }
+
 }
 

+ 21 - 0
fiveep-controller/src/main/java/com/bizmatics/controller/web/SysTenantMenuController.java

@@ -0,0 +1,21 @@
+package com.bizmatics.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 租户和菜单关联表 前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+@Controller
+@RequestMapping("/sysTenantMenu")
+public class SysTenantMenuController {
+
+}
+

+ 15 - 14
fiveep-controller/src/main/java/com/bizmatics/controller/web/UserConfigController.java

@@ -45,13 +45,14 @@ public class UserConfigController extends BaseController {
     public ApiResult<Void> addUserData(@Validated @RequestBody SysUser user) {
         if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName()))) {
             return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增用户'" + user.getUserName() + "'失败,登录账号已存在");
-        } else if (StringUtils.isNotBlank(user.getPhonenumber())
-                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
-            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增用户'" + user.getUserName() + "'失败,手机号码已存在");
-        } else if (StringUtils.isNotBlank(user.getEmail())
-                && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
-            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
         }
+//        else if (StringUtils.isNotBlank(user.getPhonenumber())
+//                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
+//            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增用户'" + user.getUserName() + "'失败,手机号码已存在");
+//        } else if (StringUtils.isNotBlank(user.getEmail())
+//                && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
+//            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
+//        }
         user.setCreateBy(SecurityUtils.getUsername());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         user.setCreateTime(new Date());
@@ -73,14 +74,14 @@ public class UserConfigController extends BaseController {
     @Transactional
     @PostMapping("/updateserData")
     public ApiResult<Void> updateserData(@Validated @RequestBody SysUser user) {
-        userService.checkUserAllowed(user);
-        if (StringUtils.isNotEmpty(user.getPhonenumber())
-                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
-            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改用户'" + user.getUserName() + "'失败,手机号码已存在");
-        } else if (StringUtils.isNotEmpty(user.getEmail())
-                && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
-            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
-        }
+//        userService.checkUserAllowed(user);
+//        if (StringUtils.isNotEmpty(user.getPhonenumber())
+//                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
+//            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改用户'" + user.getUserName() + "'失败,手机号码已存在");
+//        } else if (StringUtils.isNotEmpty(user.getEmail())
+//                && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
+//            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
+//        }
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         user.setUpdateBy(SecurityUtils.getUsername());
         user.setUpdateTime(new Date());

+ 34 - 0
fiveep-model/src/main/java/com/bizmatics/model/SysPlatformMenu.java

@@ -0,0 +1,34 @@
+package com.bizmatics.model;
+
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 平台和菜单关联表
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysPlatformMenu implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 平台ID
+     */
+    private Long platformId;
+
+    /**
+     * 菜单ID
+     */
+    private Long menuId;
+
+
+}

+ 36 - 0
fiveep-model/src/main/java/com/bizmatics/model/SysTenantMenu.java

@@ -0,0 +1,36 @@
+package com.bizmatics.model;
+
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 租户和菜单关联表
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SysTenantMenu implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 租户ID
+     */
+    private Long tenantId;
+
+    /**
+     * 菜单ID
+     */
+    private Long menuId;
+
+    private String menuAliasName;
+
+
+}

+ 0 - 1
fiveep-model/src/main/java/com/bizmatics/model/system/SysUser.java

@@ -227,7 +227,6 @@ public class SysUser extends BaseEntity
         this.avatar = avatar;
     }
 
-    @JsonIgnore
     @JsonProperty
     public String getPassword()
     {

+ 404 - 0
fiveep-model/src/main/java/com/bizmatics/model/system/SysUserOneVo.java

@@ -0,0 +1,404 @@
+package com.bizmatics.model.system;
+
+import com.bizmatics.model.base.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 用户对象 sys_user
+ * 
+ * @author yq
+ */
+public class SysUserOneVo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 用户ID */
+    private Long userId;
+
+    /** 部门ID */
+    private Long deptId;
+
+    /** 用户账号 */
+    private String userName;
+
+    /** 用户昵称 */
+    private String nickName;
+
+    /** 用户类型 */
+    private String userType;
+
+    /** 用户邮箱 */
+    private String email;
+
+    /** 手机号码 */
+    private String phonenumber;
+
+    /** 用户性别 */
+    private String sex;
+
+    /** 姓名 */
+    private String fullName;
+
+    /** 用户头像 */
+    private String avatar;
+
+    /** 密码 */
+    private String password;
+
+    /** 盐加密 */
+    private String salt;
+
+    /** 帐号状态(0正常 1停用) */
+    private String status;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 最后登录IP */
+    private String loginIp;
+
+    /** 最后登录时间 */
+    private Date loginDate;
+
+    /** 部门对象 */
+    private SysDept dept;
+
+    /** 角色对象 */
+    private List<SysRole> roles;
+
+    /** 角色组 */
+    private Long[] roleIds;
+
+    /** 岗位组 */
+    private Long[] postIds;
+
+    /** 角色ID */
+    private Long roleId;
+
+    /** 站点组组 */
+    private int[] siteId;
+
+    /** 创建用户 */
+    private String createByOne;
+
+    /** 地址 */
+    private String address;
+
+    /** 租户ID */
+    private Integer tenantId;
+
+
+
+    public SysUserOneVo()
+    {
+
+    }
+
+    public SysUserOneVo(Long userId)
+    {
+        this.userId = userId;
+    }
+
+    public Long getUserId()
+    {
+        return userId;
+    }
+
+    public void setUserId(Long userId)
+    {
+        this.userId = userId;
+    }
+
+    public boolean isAdmin()
+    {
+        return isAdmin(this.userId);
+    }
+
+    public static boolean isAdmin(Long userId)
+    {
+        return userId != null && 1L == userId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
+    public String getNickName()
+    {
+        return nickName;
+    }
+
+    public void setNickName(String nickName)
+    {
+        this.nickName = nickName;
+    }
+
+    public String getUserType()
+    {
+        return userType;
+    }
+
+    public void setUserType(String userType)
+    {
+        this.userType = userType;
+    }
+
+
+    @NotBlank(message = "用户账号不能为空")
+    @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
+    public String getUserName()
+    {
+        return userName;
+    }
+
+    public void setUserName(String userName)
+    {
+        this.userName = userName;
+    }
+
+    @Email(message = "邮箱格式不正确")
+    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
+    public String getEmail()
+    {
+        return email;
+    }
+
+    public void setEmail(String email)
+    {
+        this.email = email;
+    }
+
+    @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
+    public String getPhonenumber()
+    {
+        return phonenumber;
+    }
+
+    public void setPhonenumber(String phonenumber)
+    {
+        this.phonenumber = phonenumber;
+    }
+
+    public String getSex()
+    {
+        return sex;
+    }
+
+    public void setSex(String sex)
+    {
+        this.sex = sex;
+    }
+
+    public String getFullName()
+    {
+        return fullName;
+    }
+
+    public void setFullName(String fullName)
+    {
+        this.fullName = fullName;
+    }
+
+
+    public String getAvatar()
+    {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar)
+    {
+        this.avatar = avatar;
+    }
+
+    @JsonIgnore
+    @JsonProperty
+    public String getPassword()
+    {
+        return password;
+    }
+
+    public void setPassword(String password)
+    {
+        this.password = password;
+    }
+
+    public String getSalt()
+    {
+        return salt;
+    }
+
+    public void setSalt(String salt)
+    {
+        this.salt = salt;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getDelFlag()
+    {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getLoginIp()
+    {
+        return loginIp;
+    }
+
+    public void setLoginIp(String loginIp)
+    {
+        this.loginIp = loginIp;
+    }
+
+    public Date getLoginDate()
+    {
+        return loginDate;
+    }
+
+    public void setLoginDate(Date loginDate)
+    {
+        this.loginDate = loginDate;
+    }
+
+    public SysDept getDept()
+    {
+        return dept;
+    }
+
+    public void setDept(SysDept dept)
+    {
+        this.dept = dept;
+    }
+
+    public List<SysRole> getRoles()
+    {
+        return roles;
+    }
+
+    public void setRoles(List<SysRole> roles)
+    {
+        this.roles = roles;
+    }
+
+    public Long[] getRoleIds()
+    {
+        return roleIds;
+    }
+
+    public void setRoleIds(Long[] roleIds)
+    {
+        this.roleIds = roleIds;
+    }
+
+    public Long[] getPostIds()
+    {
+        return postIds;
+    }
+
+    public void setPostIds(Long[] postIds)
+    {
+        this.postIds = postIds;
+    }
+
+    public Long getRoleId()
+    {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    public int[] getSiteId()
+    {
+        return siteId;
+    }
+
+    public void setSiteId(int[] siteId)
+    {
+        this.siteId = siteId;
+    }
+
+    public void setCreateByOne(String createByOne)
+    {
+        this.createByOne = createByOne;
+    }
+
+    public String getCreateByOne()
+    {
+        return createByOne;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public Integer getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(Integer tenantId) {
+        this.tenantId = tenantId;
+    }
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("userId", getUserId())
+            .append("deptId", getDeptId())
+            .append("userName", getUserName())
+            .append("nickName", getNickName())
+            .append("email", getEmail())
+            .append("phonenumber", getPhonenumber())
+            .append("sex", getSex())
+            .append("avatar", getAvatar())
+            .append("password", getPassword())
+            .append("salt", getSalt())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("loginIp", getLoginIp())
+            .append("loginDate", getLoginDate())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .append("dept", getDept())
+            .toString();
+    }
+}

+ 5 - 0
fiveep-model/src/main/java/com/bizmatics/model/vo/SysMenuOneVo.java

@@ -36,4 +36,9 @@ public class SysMenuOneVo  implements Serializable
     private Object authority;
 
     private Long fid;
+
+    /**
+     * 菜单状态
+     */
+    private Boolean checked;
 }

+ 1 - 1
fiveep-model/src/main/java/com/bizmatics/model/vo/SysMenuTwoVo.java

@@ -26,7 +26,7 @@ public class SysMenuTwoVo implements Serializable {
     private String name;
 
     /**
-     * 父菜单名称
+     * 菜单状态
      */
     private Boolean checked;
 

+ 5 - 0
fiveep-model/src/main/java/com/bizmatics/model/vo/SysMenuVo.java

@@ -38,4 +38,9 @@ public class SysMenuVo implements Serializable
 
     private Long fid;
 
+    /**
+     * 菜单状态
+     */
+    private Boolean checked;
+
 }

+ 34 - 0
fiveep-model/src/main/java/com/bizmatics/model/vo/TenantMenuVo.java

@@ -0,0 +1,34 @@
+package com.bizmatics.model.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 租户和菜单关联表
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TenantMenuVo implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 租户ID
+     */
+    private Long tenantId;
+
+    /**
+     * 菜单ID
+     */
+    private Long[] menuIds;
+
+}

+ 26 - 0
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SysPlatformMenuMapper.java

@@ -0,0 +1,26 @@
+package com.bizmatics.persistence.mapper;
+
+import com.bizmatics.model.SysPlatformMenu;
+import com.bizmatics.common.mvc.base.CrudMapper;
+import com.bizmatics.model.system.SysMenu;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 平台和菜单关联表 Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+public interface SysPlatformMenuMapper extends CrudMapper<SysPlatformMenu> {
+
+    List<SysMenu> getMenuList(@Param("platformId") Integer platformId,
+                              @Param("menuType") String menuType);
+
+    List<SysMenu> getMenuIdList(Long[] menuIds, String menuType);
+
+    int deleteTenantMenuBy(Long tenantId);
+}

+ 4 - 0
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SysTenantConfigMapper.java

@@ -2,6 +2,7 @@ package com.bizmatics.persistence.mapper;
 
 import com.bizmatics.model.SysTenantConfig;
 import com.bizmatics.common.mvc.base.CrudMapper;
+import com.bizmatics.model.system.SysMenu;
 import com.bizmatics.model.vo.SysTenantConfigVo;
 import com.bizmatics.model.vo.SysTenantVo;
 import org.apache.ibatis.annotations.Param;
@@ -18,4 +19,7 @@ import java.util.List;
  */
 public interface SysTenantConfigMapper extends CrudMapper<SysTenantConfig> {
     List<SysTenantConfigVo> getTenantConfig(@Param("url") String url);
+
+    List<SysMenu> getMenuBoxList(@Param("tenantId") Integer tenantId,
+                                 @Param("menuType") String menuType);
 }

+ 16 - 0
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/SysTenantMenuMapper.java

@@ -0,0 +1,16 @@
+package com.bizmatics.persistence.mapper;
+
+import com.bizmatics.model.SysTenantMenu;
+import com.bizmatics.common.mvc.base.CrudMapper;
+
+/**
+ * <p>
+ * 租户和菜单关联表 Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+public interface SysTenantMenuMapper extends CrudMapper<SysTenantMenu> {
+
+}

+ 46 - 0
fiveep-persistence/src/main/resources/mapper/mysql/SysPlatformMenuMapper.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.bizmatics.persistence.mapper.SysPlatformMenuMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.bizmatics.model.SysPlatformMenu">
+        <id column="platform_id" property="platformId" />
+        <result column="menu_id" property="menuId" />
+    </resultMap>
+
+    <select id="getMenuList"  resultType="com.bizmatics.model.system.SysMenu" >
+        SELECT
+        a.*
+        FROM
+        sys_menu AS a
+        JOIN sys_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.bizmatics.model.system.SysMenu">
+        SELECT
+        a.*
+        FROM
+        sys_menu AS a
+        JOIN sys_platform_menu AS b ON a.menu_id = b.menu_id
+        WHERE
+        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>
+        group by parent_id
+    </select>
+
+    <delete id="deleteTenantMenuBy" parameterType="Long">
+        delete from sys_tenant_menu where tenant_id=#{tenantId}
+    </delete>
+
+
+</mapper>

+ 13 - 0
fiveep-persistence/src/main/resources/mapper/mysql/SysTenantConfigMapper.xml

@@ -37,4 +37,17 @@
             AND a.domain = #{url}
         </where>
     </select>
+
+    <select id="getMenuBoxList" resultType="com.bizmatics.model.system.SysMenu">
+        SELECT
+        a.*
+        FROM
+        sys_menu AS a
+        JOIN sys_tenant_menu AS b ON a.menu_id = b.menu_id
+        WHERE
+        a.status = 0
+        AND a.visible = 0
+        AND a.menu_type = #{menuType}
+        and b.tenant_id = #{tenantId}
+    </select>
 </mapper>

+ 12 - 0
fiveep-persistence/src/main/resources/mapper/mysql/SysTenantMenuMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.bizmatics.persistence.mapper.SysTenantMenuMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.bizmatics.model.SysTenantMenu">
+        <id column="tenant_id" property="tenantId" />
+        <result column="menu_id" property="menuId" />
+        <result column="menu_alias_name" property="menuAliasName" />
+    </resultMap>
+
+</mapper>

+ 0 - 1
fiveep-persistence/src/main/resources/mapper/mysql/system/SysUserMapper.xml

@@ -99,7 +99,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			resultType="com.bizmatics.model.system.SysUser">
 		SELECT * FROM sys_user
 		where
-
 		 del_flag=0 and user_type='01'
 		<if test="tenantId != null and tenantId != 0">
 		 and 	tenant_id = #{tenantId}

+ 23 - 0
fiveep-service/src/main/java/com/bizmatics/service/SysPlatformMenuService.java

@@ -0,0 +1,23 @@
+package com.bizmatics.service;
+
+import com.bizmatics.model.SysPlatformMenu;
+import com.bizmatics.common.mvc.base.CrudService;
+import com.bizmatics.model.vo.SysMenuOneVo;
+import com.bizmatics.model.vo.TenantMenuVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 平台和菜单关联表 服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+public interface SysPlatformMenuService extends CrudService<SysPlatformMenu> {
+
+    List<Object> getMenuList(Integer platformId, Integer tenantId);
+
+    void updateMenu(TenantMenuVo tenantMenuVo);
+}

+ 3 - 0
fiveep-service/src/main/java/com/bizmatics/service/SysTenantConfigService.java

@@ -2,6 +2,7 @@ package com.bizmatics.service;
 
 import com.bizmatics.model.SysTenantConfig;
 import com.bizmatics.common.mvc.base.CrudService;
+import com.bizmatics.model.system.SysMenu;
 import com.bizmatics.model.vo.SysTenantConfigVo;
 
 import java.util.List;
@@ -24,4 +25,6 @@ public interface SysTenantConfigService extends CrudService<SysTenantConfig> {
     void addMiddleConfig(SysTenantConfig sysTenantConfig);
 
     void updaMiddleConfig(SysTenantConfig sysTenantConfig);
+
+    List<SysMenu> getMenuBoxList(Integer tenantId);
 }

+ 16 - 0
fiveep-service/src/main/java/com/bizmatics/service/SysTenantMenuService.java

@@ -0,0 +1,16 @@
+package com.bizmatics.service;
+
+import com.bizmatics.model.SysTenantMenu;
+import com.bizmatics.common.mvc.base.CrudService;
+
+/**
+ * <p>
+ * 租户和菜单关联表 服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+public interface SysTenantMenuService extends CrudService<SysTenantMenu> {
+
+}

+ 287 - 0
fiveep-service/src/main/java/com/bizmatics/service/impl/SysPlatformMenuServiceImpl.java

@@ -0,0 +1,287 @@
+package com.bizmatics.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.bizmatics.common.mvc.base.AbstractCrudService;
+import com.bizmatics.model.SysPlatformMenu;
+import com.bizmatics.model.SysTenantMenu;
+import com.bizmatics.model.system.SysMenu;
+import com.bizmatics.model.system.SysRole;
+import com.bizmatics.model.system.SysRoleMenu;
+import com.bizmatics.model.vo.SysMenuOneVo;
+import com.bizmatics.model.vo.SysMenuTwoVo;
+import com.bizmatics.model.vo.SysMenuVo;
+import com.bizmatics.model.vo.TenantMenuVo;
+import com.bizmatics.persistence.mapper.SysPlatformMenuMapper;
+import com.bizmatics.service.SysPlatformMenuService;
+import com.bizmatics.service.SysTenantMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 平台和菜单关联表 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+@Service
+public class SysPlatformMenuServiceImpl extends AbstractCrudService<SysPlatformMenuMapper, SysPlatformMenu> implements SysPlatformMenuService {
+
+    @Autowired
+    private SysTenantMenuService sysTenantMenuService;
+
+//    public List<SysMenuOneVo> getMenuList(Integer platformId, Integer tenantId){
+//        List<SysMenuTwoVo> MenuListOne = new ArrayList<>();
+//        List<SysMenuOneVo> MenuListTwo = new ArrayList<>();
+//        //平台全部一级目录
+//        List<SysMenu> sysMenuListOne=baseMapper.getMenuList(platformId,"M");
+//        //平台全部二级目录
+//        List<SysMenu> sysMenuListTwo=baseMapper.getMenuList(platformId,"C");
+//        if (sysMenuListTwo.size()<0||sysMenuListOne.size()<0) {
+//            throw new BusinessException("平台目录配置错误或尚未配置");
+//        }
+//        //租户所选中的目录
+//        LambdaQueryWrapper<SysTenantMenu> queryWrapper = Wrappers.lambdaQuery();
+//        queryWrapper.eq(SysTenantMenu::getTenantId, tenantId);
+//        List<SysTenantMenu> sysTenantMenuList = sysTenantMenuService.list(queryWrapper);
+//        for (int i = 0; i < sysMenuListTwo.size(); i++) {
+//            SysMenuTwoVo sysMenuTwoVo = new SysMenuTwoVo();
+//            sysMenuTwoVo.setId(sysMenuListTwo.get(i).getMenuId());
+//            sysMenuTwoVo.setName(sysMenuListTwo.get(i).getMenuName());
+//            sysMenuTwoVo.setFid(sysMenuListTwo.get(i).getParentId());
+//            long Id = sysMenuListTwo.get(i).getMenuId();
+//            sysMenuTwoVo.setChecked(false);
+//            if (sysTenantMenuList.size() > 0) {
+//                for (int j = 0; j < sysTenantMenuList.size(); j++) {
+//                    long MenuId = sysTenantMenuList.get(j).getMenuId();
+//                    if (Id == MenuId) {
+//                        sysMenuTwoVo.setChecked(true);
+//                    }
+//                }
+//            } else {
+//                sysMenuTwoVo.setChecked(false);
+//            }
+//            MenuListOne.add(sysMenuTwoVo);
+//        }
+//
+//        for (int i = 0; i < sysMenuListOne.size(); i++) {
+//            SysMenuOneVo sysMenuOneVo = new SysMenuOneVo();
+//            sysMenuOneVo.setId(sysMenuListOne.get(i).getMenuId());
+//            sysMenuOneVo.setMenu(sysMenuListOne.get(i).getMenuName());
+//            sysMenuOneVo.setFid(sysMenuListOne.get(i).getParentId());
+//            long id = sysMenuListOne.get(i).getMenuId();
+//            List<SysMenuTwoVo> sysMenuVoListTwo = new ArrayList<>();
+//            for (int j = 0; j < MenuListOne.size(); j++) {
+//                long FId = MenuListOne.get(j).getFid();
+//                if (id == FId) {
+//                    sysMenuVoListTwo.add(MenuListOne.get(j));
+//                }
+//            }
+//            sysMenuOneVo.setAuthority(sysMenuVoListTwo);
+//            if (sysMenuVoListTwo.size()>0){
+//                sysMenuOneVo.setChecked(true);
+//            }else {
+//                sysMenuOneVo.setChecked(false);
+//            }
+//            MenuListTwo.add(sysMenuOneVo);
+//        }
+//        return MenuListTwo;
+//    }
+
+    public List<Object> getMenuList(Integer platformId, Integer tenantId) {
+
+        List<SysMenu> menuList = null;
+        List<SysMenu> sysMenuListTwo = new ArrayList<>();
+        List<SysMenu> sysMenuListOne = new ArrayList<>();
+        List<SysMenu> sysMenuListThree = new ArrayList<>();
+        //全部目录查询
+        sysMenuListTwo = baseMapper.getMenuList(platformId, "M");
+        //全部菜单查询
+        sysMenuListOne = baseMapper.getMenuList(platformId, "C");
+        //全部按钮列表
+        sysMenuListThree = baseMapper.getMenuList(platformId, "F");
+        //已选中按钮列表
+
+        LambdaQueryWrapper<SysTenantMenu> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(SysTenantMenu::getTenantId, tenantId);
+        List<SysTenantMenu> sysMenuListFour = sysTenantMenuService.list(queryWrapper);
+
+
+        List<SysMenuTwoVo> sysMenuVoListOne = new ArrayList<>();
+        List<SysMenuOneVo> SysMenuVoList = new ArrayList<>();
+        List<SysMenuVo> SysMenuVoListOne = new ArrayList<>();
+        List<Object> list = new ArrayList<>();
+//        if (sysMenuListFour.size()>0){
+        for (int i = 0; i < sysMenuListThree.size(); i++) {
+            SysMenuTwoVo sysMenuTwoVo = new SysMenuTwoVo();
+            sysMenuTwoVo.setId(sysMenuListThree.get(i).getMenuId());
+            sysMenuTwoVo.setName(sysMenuListThree.get(i).getMenuName());
+            sysMenuTwoVo.setFid(sysMenuListThree.get(i).getParentId());
+            long Id = sysMenuListThree.get(i).getMenuId();
+            sysMenuTwoVo.setChecked(false);
+            if (sysMenuListFour.size() > 0) {
+                for (int j = 0; j < sysMenuListFour.size(); j++) {
+                    long MenuId = sysMenuListFour.get(j).getMenuId();
+                    if (Id == MenuId) {
+                        sysMenuTwoVo.setChecked(true);
+                    }
+                }
+            } else {
+                sysMenuTwoVo.setChecked(false);
+            }
+
+            sysMenuVoListOne.add(sysMenuTwoVo);
+        }
+
+        for (int i = 0; i < sysMenuListOne.size(); i++) {
+            SysMenuOneVo sysMenuOneVo = new SysMenuOneVo();
+            sysMenuOneVo.setId(sysMenuListOne.get(i).getMenuId());
+            sysMenuOneVo.setMenu(sysMenuListOne.get(i).getMenuName());
+            sysMenuOneVo.setFid(sysMenuListOne.get(i).getParentId());
+            long id = sysMenuListOne.get(i).getMenuId();
+            List<SysMenuTwoVo> sysMenuVoListTwo = new ArrayList<>();
+            for (int j = 0; j < sysMenuVoListOne.size(); j++) {
+                long FId = sysMenuVoListOne.get(j).getFid();
+                if (id == FId) {
+                    sysMenuVoListTwo.add(sysMenuVoListOne.get(j));
+                }
+            }
+            sysMenuOneVo.setAuthority(sysMenuVoListTwo);
+            if (sysMenuVoListTwo.size()>0){
+                sysMenuOneVo.setChecked(true);
+            }else {
+                sysMenuOneVo.setChecked(false);
+            }
+            SysMenuVoList.add(sysMenuOneVo);
+        }
+
+        for (int i = 0; i < sysMenuListTwo.size(); i++) {
+            SysMenuVo sysMenuVo = new SysMenuVo();
+            sysMenuVo.setId(sysMenuListTwo.get(i).getMenuId());
+            sysMenuVo.setMenu(sysMenuListTwo.get(i).getMenuName());
+            sysMenuVo.setFid(sysMenuListTwo.get(i).getParentId());
+            long id = sysMenuListTwo.get(i).getMenuId();
+            List<SysMenuOneVo> SysMenuVoListThree = new ArrayList<>();
+            for (int j = 0; j < SysMenuVoList.size(); j++) {
+                long FId = SysMenuVoList.get(j).getFid();
+                if (id == FId) {
+                    SysMenuVoListThree.add(SysMenuVoList.get(j));
+                }
+            }
+            sysMenuVo.setChildren(SysMenuVoListThree);
+            if (SysMenuVoListThree.size()>0){
+                sysMenuVo.setChecked(true);
+            }else {
+                sysMenuVo.setChecked(false);
+            }
+
+            SysMenuVoListOne.add(sysMenuVo);
+        }
+
+        for (int i = 0; i < SysMenuVoListOne.size(); i++) {
+            String name = SysMenuVoListOne.get(i).getMenu();
+            if (name.equals("数据管理") || name.equals("电能质量") || name.equals("系统管理")|| name.equals("租户管理")) {
+                list.add(SysMenuVoListOne.get(i));
+            } else {
+                for (int j = 0; j < SysMenuVoList.size(); j++) {
+                    String name2 = SysMenuVoList.get(j).getMenu();
+                    if (name.equals(name2)) {
+                        list.add(SysMenuVoList.get(j));
+                    }
+                }
+            }
+        }
+//        }
+        return list;
+    }
+
+
+    @Override
+    @Transactional
+    public void updateMenu(TenantMenuVo tenantMenuVo)
+    {
+        Long[] arr = tenantMenuVo.getMenuIds();
+        //菜单ID
+        List<SysMenu> menuIdList = baseMapper.getMenuIdList(arr, "F");
+        Long arr1[] = new Long[menuIdList.size()];
+        for (int i=0;i<menuIdList.size();i++){
+            arr1[i] = menuIdList.get(i).getParentId();
+        }
+        //目录ID
+        List<SysMenu> menuIdListOne = baseMapper.getMenuIdList(arr1, "C");
+        Long arr2[] = new Long[menuIdListOne.size()];
+        for (int i=0;i<menuIdListOne.size();i++){
+            arr2[i] = menuIdListOne.get(i).getParentId();
+        }
+        List<SysMenu> menuIdListTwo = baseMapper.getMenuIdList(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);
+        List arr3 = new ArrayList();
+        for (int i=0;i<arr6.length;i++){
+            if(!arr3.contains(arr6[i])){
+                arr3.add(arr6[i]);
+            }
+        }
+//        Long[] arr3 =ifRepeat2(arr6);
+//        Long arr3[] = new Long[arr1.length+arr2.length+arr.length];
+//        for (int i=0;i<arr1.length;i++){
+//            arr3[i] = arr1[i];
+//        }
+//        for (int i=0;i<arr2.length;i++){
+//            arr3[i+arr1.length] = arr2[i];
+//        }
+//        for (int i=0;i<arr.length;i++){
+//            arr3[i+arr1.length+arr2.length] = arr[i];
+//        }
+
+        // 删除角色与菜单关联
+        baseMapper.deleteTenantMenuBy(tenantMenuVo.getTenantId());
+        //新增菜单
+        if (arr3.size()>0){
+            for (int i=0;i<arr3.size();i++){
+                SysTenantMenu sysTenantMenu = new SysTenantMenu();
+                sysTenantMenu.setMenuId((Long) arr3.get(i));
+                sysTenantMenu.setTenantId(tenantMenuVo.getTenantId());
+                sysTenantMenuService.save(sysTenantMenu);
+            }
+        }
+    }
+
+    public Long[] arrayMerge(Long[] arr1,Long[] arr2){
+        Long arr3[] = new Long[arr1.length+arr2.length];
+        for (int i=0;i<arr1.length;i++){
+            arr3[i] = arr1[i];
+        }
+        for (int i=0;i<arr2.length;i++){
+            arr3[i+arr1.length] = arr2[i];
+        }
+        return arr3;
+    }
+
+    public Object[]  ifRepeat2(Object[] arr){
+        //创建一个集合
+        List list = new ArrayList();
+        //遍历数组往集合里存元素
+        for(int i=0;i<arr.length;i++){
+            //如果集合里面没有相同的元素才往里存
+            if(!list.contains(arr[i])){
+                list.add(arr[i]);
+            }
+        }
+
+        //toArray()方法会返回一个包含集合所有元素的Object类型数组
+        Object[] newArr = list.toArray();
+        return newArr;
+
+    }
+}

+ 8 - 0
fiveep-service/src/main/java/com/bizmatics/service/impl/SysTenantConfigServiceImpl.java

@@ -7,6 +7,7 @@ import com.bizmatics.common.mvc.base.AbstractCrudService;
 import com.bizmatics.common.mvc.utils.ServletUtils;
 import com.bizmatics.model.DeviceAttribute;
 import com.bizmatics.model.SysTenantConfig;
+import com.bizmatics.model.system.SysMenu;
 import com.bizmatics.model.system.SysUser;
 import com.bizmatics.model.vo.SysTenantConfigVo;
 import com.bizmatics.persistence.mapper.SysTenantConfigMapper;
@@ -73,4 +74,11 @@ public class SysTenantConfigServiceImpl extends AbstractCrudService<SysTenantCon
         sysTenantConfig.setUpdateTime(LocalDateTime.now());
         this.updateById(sysTenantConfig);
     }
+
+
+    @Override
+    public List<SysMenu> getMenuBoxList(Integer tenantId) {
+        List<SysMenu> list = baseMapper.getMenuBoxList(tenantId,"C");
+        return list;
+    }
 }

+ 20 - 0
fiveep-service/src/main/java/com/bizmatics/service/impl/SysTenantMenuServiceImpl.java

@@ -0,0 +1,20 @@
+package com.bizmatics.service.impl;
+
+import com.bizmatics.model.SysTenantMenu;
+import com.bizmatics.persistence.mapper.SysTenantMenuMapper;
+import com.bizmatics.service.SysTenantMenuService;
+import com.bizmatics.common.mvc.base.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 租户和菜单关联表 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-05-18
+ */
+@Service
+public class SysTenantMenuServiceImpl extends AbstractCrudService<SysTenantMenuMapper, SysTenantMenu> implements SysTenantMenuService {
+
+}