mirror of
https://gitee.com/orangeform/orange-admin.git
synced 2026-01-17 18:46:36 +08:00
commit:同步1.3版本
This commit is contained in:
@@ -9,7 +9,6 @@ import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 菜单Dto。
|
||||
@@ -67,10 +66,4 @@ public class SysMenuDto {
|
||||
*/
|
||||
@ApiModelProperty(value = "菜单显示顺序")
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 权限字Dto。
|
||||
@@ -62,10 +61,4 @@ public class SysPermCodeDto {
|
||||
@ApiModelProperty(value = "显示顺序", required = true)
|
||||
@NotNull(message = "权限字显示顺序不能为空!")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
}
|
||||
@@ -7,7 +7,6 @@ import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 权限资源Dto。
|
||||
@@ -59,10 +58,4 @@ public class SysPermDto {
|
||||
@ApiModelProperty(value = "显示顺序", required = true)
|
||||
@NotNull(message = "权限显示顺序不能为空!")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
}
|
||||
@@ -9,7 +9,6 @@ import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 权限资源模块Dto。
|
||||
@@ -55,10 +54,4 @@ public class SysPermModuleDto {
|
||||
@ApiModelProperty(value = "显示顺序", required = true)
|
||||
@NotNull(message = "权限模块显示顺序不能为空!")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 角色Dto。
|
||||
@@ -31,28 +30,4 @@ public class SysRoleDto {
|
||||
@ApiModelProperty(value = "角色名称", required = true)
|
||||
@NotBlank(message = "角色名称不能为空!")
|
||||
private String roleName;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建者Id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建者显示名称。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建者显示名称")
|
||||
private String createUsername;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
}
|
||||
|
||||
@@ -12,15 +12,13 @@ import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* SysUserDto对象。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@ApiModel("SysUserDto实体对象")
|
||||
@ApiModel("SysUserDto对象")
|
||||
@Data
|
||||
public class SysUserDto {
|
||||
|
||||
@@ -74,30 +72,6 @@ public class SysUserDto {
|
||||
@ConstDictRef(constDictClass = SysUserStatus.class, message = "数据验证失败,用户状态(0: 正常 1: 锁定)为无效值!")
|
||||
private Integer userStatus;
|
||||
|
||||
/**
|
||||
* 创建用户Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建用户Id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建用户名。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建用户名")
|
||||
private String createUsername;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* createTime 范围过滤起始值(>=)。
|
||||
*/
|
||||
|
||||
@@ -58,12 +58,30 @@ public class SysMenuVo {
|
||||
@ApiModelProperty(value = "菜单显示顺序")
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建者Id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新者Id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 菜单与权限字关联对象列表。
|
||||
*/
|
||||
|
||||
@@ -52,12 +52,30 @@ public class SysPermCodeVo {
|
||||
@ApiModelProperty(value = "显示顺序")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建者Id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新者Id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 权限字与权限资源关联对象列表。
|
||||
*/
|
||||
|
||||
@@ -46,12 +46,30 @@ public class SysPermModuleVo {
|
||||
@ApiModelProperty(value = "显示顺序")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建者Id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新者Id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 权限资源对象列表。
|
||||
*/
|
||||
|
||||
@@ -52,12 +52,30 @@ public class SysPermVo {
|
||||
@ApiModelProperty(value = "显示顺序")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建者Id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新者Id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 模块Id的字典关联数据。
|
||||
*/
|
||||
|
||||
@@ -34,18 +34,18 @@ public class SysRoleVo {
|
||||
@ApiModelProperty(value = "创建者Id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建者显示名称。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建者显示名称")
|
||||
private String createUsername;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "更新者Id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
|
||||
@@ -67,10 +67,10 @@ public class SysUserVo {
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建用户名。
|
||||
* 更新者Id。
|
||||
*/
|
||||
@ApiModelProperty(value = "创建用户名")
|
||||
private String createUsername;
|
||||
@ApiModelProperty(value = "更新者Id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
@@ -87,18 +87,18 @@ public class SysUserVo {
|
||||
/**
|
||||
* 多对多用户角色数据集合。
|
||||
*/
|
||||
@ApiModelProperty(hidden = true)
|
||||
@ApiModelProperty(value = "多对多用户角色数据集合")
|
||||
private List<Map<String, Object>> sysUserRoleList;
|
||||
|
||||
/**
|
||||
* userType 常量字典关联数据。
|
||||
*/
|
||||
@ApiModelProperty(hidden = true)
|
||||
@ApiModelProperty(value = "userType 常量字典关联数据")
|
||||
private Map<String, Object> userTypeDictMap;
|
||||
|
||||
/**
|
||||
* userStatus 常量字典关联数据。
|
||||
*/
|
||||
@ApiModelProperty(hidden = true)
|
||||
@ApiModelProperty(value = "userStatus 常量字典关联数据")
|
||||
private Map<String, Object> userStatusDictMap;
|
||||
}
|
||||
|
||||
@@ -84,12 +84,12 @@
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-extra:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-autoconfigure:2.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.1.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" />
|
||||
<orderEntry type="module" module-name="application-common" />
|
||||
<orderEntry type="module" module-name="common-swagger" />
|
||||
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.5" level="project" />
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.orange.demo.upmsinterface.constant.SysUserStatus;
|
||||
import com.orange.demo.upmsinterface.constant.SysUserType;
|
||||
import com.orange.demo.upmsservice.config.ApplicationConfig;
|
||||
import com.orange.demo.upmsservice.model.SysMenu;
|
||||
import com.orange.demo.upmsservice.model.SysPermWhitelist;
|
||||
import com.orange.demo.upmsservice.model.SysUser;
|
||||
import com.orange.demo.upmsservice.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -130,7 +129,7 @@ public class LoginController {
|
||||
jsonData.put("permCodeList", permCodeList);
|
||||
// 将白名单url列表合并到当前用户的权限资源列表中,便于网关一并处理。
|
||||
Set<String> permSet = sysUserService.getSysPermSetByUserId(tokenData.getUserId());
|
||||
permSet.addAll(sysPermWhitelistService.getAllListWithField(SysPermWhitelist::getPermUrl));
|
||||
permSet.addAll(sysPermWhitelistService.getWhitelistPermList());
|
||||
jsonData.put("permSet", permSet);
|
||||
}
|
||||
jsonData.put("menuList", menuList);
|
||||
@@ -187,7 +186,7 @@ public class LoginController {
|
||||
jsonData.put("permCodeList", permCodeList);
|
||||
// 将白名单url列表合并到当前用户的权限资源列表中,便于网关一并处理。
|
||||
Set<String> permSet = sysUserService.getSysPermSetByUserId(user.getUserId());
|
||||
permSet.addAll(sysPermWhitelistService.getAllListWithField(SysPermWhitelist::getPermUrl));
|
||||
permSet.addAll(sysPermWhitelistService.getWhitelistPermList());
|
||||
jsonData.put("permSet", permSet);
|
||||
}
|
||||
jsonData.put("menuList", menuList);
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.github.pagehelper.page.PageMethod;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.common.core.constant.ErrorCodeEnum;
|
||||
import com.orange.demo.common.core.object.*;
|
||||
import com.orange.demo.common.core.util.MyModelUtil;
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.github.pagehelper.page.PageMethod;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.common.core.validator.UpdateGroup;
|
||||
import com.orange.demo.common.core.constant.ErrorCodeEnum;
|
||||
import com.orange.demo.common.core.object.*;
|
||||
|
||||
@@ -9,14 +9,13 @@ import com.orange.demo.common.core.object.*;
|
||||
import com.orange.demo.common.core.util.*;
|
||||
import com.orange.demo.common.core.constant.*;
|
||||
import com.orange.demo.common.core.base.controller.BaseController;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.core.base.service.IBaseService;
|
||||
import com.orange.demo.common.core.annotation.MyRequestBody;
|
||||
import com.orange.demo.common.core.validator.AddGroup;
|
||||
import com.orange.demo.common.core.validator.UpdateGroup;
|
||||
import com.orange.demo.upmsservice.config.ApplicationConfig;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -42,7 +41,7 @@ public class SysUserController extends BaseController<SysUser, SysUserVo, Long>
|
||||
private ApplicationConfig appConfig;
|
||||
|
||||
@Override
|
||||
protected BaseService<SysUser, Long> service() {
|
||||
protected IBaseService<SysUser, Long> service() {
|
||||
return sysUserService;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,10 @@
|
||||
<result column="form_router_name" jdbcType="VARCHAR" property="formRouterName"/>
|
||||
<result column="show_order" jdbcType="INTEGER" property="showOrder"/>
|
||||
<result column="icon" jdbcType="VARCHAR" property="icon"/>
|
||||
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
||||
<result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||||
<result column="deleted_flag" jdbcType="INTEGER" property="deletedFlag"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
@@ -8,7 +8,10 @@
|
||||
<result column="perm_code_type" jdbcType="INTEGER" property="permCodeType"/>
|
||||
<result column="show_name" jdbcType="VARCHAR" property="showName"/>
|
||||
<result column="show_order" jdbcType="INTEGER" property="showOrder"/>
|
||||
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
||||
<result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||||
<result column="deleted_flag" jdbcType="INTEGER" property="deletedFlag"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
@@ -7,7 +7,10 @@
|
||||
<result column="perm_name" jdbcType="VARCHAR" property="permName"/>
|
||||
<result column="url" jdbcType="VARCHAR" property="url"/>
|
||||
<result column="show_order" jdbcType="INTEGER" property="showOrder"/>
|
||||
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
||||
<result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||||
<result column="deleted_flag" jdbcType="INTEGER" property="deletedFlag"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
@@ -7,7 +7,10 @@
|
||||
<result column="module_name" jdbcType="VARCHAR" property="moduleName"/>
|
||||
<result column="module_type" jdbcType="INTEGER" property="moduleType"/>
|
||||
<result column="show_order" jdbcType="INTEGER" property="showOrder"/>
|
||||
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
||||
<result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||||
<result column="deleted_flag" jdbcType="INTEGER" property="deletedFlag"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<id column="role_id" jdbcType="BIGINT" property="roleId"/>
|
||||
<result column="role_name" jdbcType="VARCHAR" property="roleName"/>
|
||||
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
|
||||
<result column="create_username" jdbcType="VARCHAR" property="createUsername"/>
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
||||
<result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||||
<result column="deleted_flag" jdbcType="INTEGER" property="deletedFlag"/>
|
||||
</resultMap>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<result column="user_status" jdbcType="INTEGER" property="userStatus"/>
|
||||
<result column="deleted_flag" jdbcType="INTEGER" property="deletedFlag"/>
|
||||
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
|
||||
<result column="create_username" jdbcType="VARCHAR" property="createUsername"/>
|
||||
<result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
|
||||
</resultMap>
|
||||
|
||||
@@ -4,8 +4,6 @@ import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.orange.demo.common.core.annotation.DeletedFlagColumn;
|
||||
import com.orange.demo.common.core.annotation.RelationManyToMany;
|
||||
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
|
||||
import com.orange.demo.common.core.validator.ConstDictRef;
|
||||
import com.orange.demo.upmsinterface.constant.SysMenuType;
|
||||
import com.orange.demo.upmsinterface.vo.SysMenuVo;
|
||||
import lombok.Data;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -13,9 +11,7 @@ import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 菜单实体对象。
|
||||
@@ -30,7 +26,6 @@ public class SysMenu {
|
||||
/**
|
||||
* 主键Id。
|
||||
*/
|
||||
@NotNull(message = "菜单Id不能为空!")
|
||||
@Id
|
||||
@Column(name = "menu_id")
|
||||
private Long menuId;
|
||||
@@ -44,15 +39,12 @@ public class SysMenu {
|
||||
/**
|
||||
* 菜单显示名称。
|
||||
*/
|
||||
@NotBlank(message = "菜单显示名称不能为空!")
|
||||
@Column(name = "menu_name")
|
||||
private String menuName;
|
||||
|
||||
/**
|
||||
* 菜单类型(0: 目录 1: 菜单 2: 按钮 3: UI片段)。
|
||||
*/
|
||||
@NotNull(message = "菜单类型不能为空!")
|
||||
@ConstDictRef(constDictClass = SysMenuType.class, message = "数据验证失败,菜单类型为无效值!")
|
||||
@Column(name = "menu_type")
|
||||
private Integer menuType;
|
||||
|
||||
@@ -65,7 +57,6 @@ public class SysMenu {
|
||||
/**
|
||||
* 菜单显示顺序 (值越小,排序越靠前)。
|
||||
*/
|
||||
@NotNull(message = "菜单显示顺序不能为空!")
|
||||
@Column(name = "show_order")
|
||||
private Integer showOrder;
|
||||
|
||||
@@ -74,12 +65,30 @@ public class SysMenu {
|
||||
*/
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@Column(name = "create_user_id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@Column(name = "update_user_id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@Column(name = "update_time")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 逻辑删除标记字段(1: 正常 -1: 已删除)。
|
||||
*/
|
||||
|
||||
@@ -6,9 +6,7 @@ import com.orange.demo.common.core.annotation.RelationDict;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 权限资源实体对象。
|
||||
@@ -23,7 +21,6 @@ public class SysPerm {
|
||||
/**
|
||||
* 权限Id。
|
||||
*/
|
||||
@NotNull(message = "权限Id不能为空!")
|
||||
@Id
|
||||
@Column(name = "perm_id")
|
||||
private Long permId;
|
||||
@@ -31,36 +28,50 @@ public class SysPerm {
|
||||
/**
|
||||
* 权限所在的权限模块Id。
|
||||
*/
|
||||
@NotNull(message = "权限模块Id不能为空!")
|
||||
@Column(name = "module_id")
|
||||
private Long moduleId;
|
||||
|
||||
/**
|
||||
* 权限名称。
|
||||
*/
|
||||
@NotBlank(message = "权限名称不能为空!")
|
||||
@Column(name = "perm_name")
|
||||
private String permName;
|
||||
|
||||
/**
|
||||
* 关联的URL。
|
||||
*/
|
||||
@NotBlank(message = "权限关联的url不能为空!")
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* 权限在当前模块下的顺序,由小到大。
|
||||
*/
|
||||
@NotNull(message = "权限显示顺序不能为空!")
|
||||
@Column(name = "show_order")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@Column(name = "create_user_id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@Column(name = "update_user_id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@Column(name = "update_time")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 逻辑删除标记字段(1: 正常 -1: 已删除)。
|
||||
*/
|
||||
|
||||
@@ -4,8 +4,6 @@ import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.orange.demo.common.core.annotation.DeletedFlagColumn;
|
||||
import com.orange.demo.common.core.annotation.RelationManyToMany;
|
||||
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
|
||||
import com.orange.demo.common.core.validator.ConstDictRef;
|
||||
import com.orange.demo.upmsinterface.constant.SysPermCodeType;
|
||||
import com.orange.demo.upmsinterface.vo.SysPermCodeVo;
|
||||
import lombok.Data;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -13,9 +11,7 @@ import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 权限字实体对象。
|
||||
@@ -30,7 +26,6 @@ public class SysPermCode {
|
||||
/**
|
||||
* 主键Id。
|
||||
*/
|
||||
@NotNull(message = "权限字Id不能为空!")
|
||||
@Id
|
||||
@Column(name = "perm_code_id")
|
||||
private Long permCodeId;
|
||||
@@ -44,38 +39,51 @@ public class SysPermCode {
|
||||
/**
|
||||
* 权限字标识(一般为有含义的英文字符串)。
|
||||
*/
|
||||
@NotBlank(message = "权限字编码不能为空!")
|
||||
@Column(name = "perm_code")
|
||||
private String permCode;
|
||||
|
||||
/**
|
||||
* 权限类型(0: 表单 1: UI片段 2: 操作)。
|
||||
*/
|
||||
@NotNull(message = "权限字类型不能为空!")
|
||||
@ConstDictRef(constDictClass = SysPermCodeType.class, message = "数据验证失败,权限类型为无效值!")
|
||||
@Column(name = "perm_code_type")
|
||||
private Integer permCodeType;
|
||||
|
||||
/**
|
||||
* 显示名称。
|
||||
*/
|
||||
@NotBlank(message = "权限字显示名称不能为空!")
|
||||
@Column(name = "show_name")
|
||||
private String showName;
|
||||
|
||||
/**
|
||||
* 显示顺序(数值越小,越靠前)。
|
||||
*/
|
||||
@NotNull(message = "权限字显示顺序不能为空!")
|
||||
@Column(name = "show_order")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@Column(name = "create_user_id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@Column(name = "update_user_id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@Column(name = "update_time")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 逻辑删除标记字段(1: 正常 -1: 已删除)。
|
||||
*/
|
||||
|
||||
@@ -2,14 +2,10 @@ package com.orange.demo.upmsservice.model;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.orange.demo.common.core.annotation.DeletedFlagColumn;
|
||||
import com.orange.demo.common.core.validator.ConstDictRef;
|
||||
import com.orange.demo.upmsinterface.constant.SysPermModuleType;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 权限模块实体对象。
|
||||
@@ -24,7 +20,6 @@ public class SysPermModule {
|
||||
/**
|
||||
* 权限模块Id。
|
||||
*/
|
||||
@NotNull(message = "权限模块Id不能为空!")
|
||||
@Id
|
||||
@Column(name = "module_id")
|
||||
private Long moduleId;
|
||||
@@ -38,31 +33,45 @@ public class SysPermModule {
|
||||
/**
|
||||
* 权限模块名称。
|
||||
*/
|
||||
@NotBlank(message = "权限模块名称不能为空!")
|
||||
@Column(name = "module_name")
|
||||
private String moduleName;
|
||||
|
||||
/**
|
||||
* 权限模块类型(0: 普通模块 1: Controller模块)。
|
||||
*/
|
||||
@NotNull(message = "权限模块类型不能为空!")
|
||||
@ConstDictRef(constDictClass = SysPermModuleType.class, message = "数据验证失败,权限模块类型为无效值!")
|
||||
@Column(name = "module_type")
|
||||
private Integer moduleType;
|
||||
|
||||
/**
|
||||
* 权限模块在当前层级下的顺序,由小到大。
|
||||
*/
|
||||
@NotNull(message = "权限模块显示顺序不能为空!")
|
||||
@Column(name = "show_order")
|
||||
private Integer showOrder;
|
||||
|
||||
/**
|
||||
* 创建者Id。
|
||||
*/
|
||||
@Column(name = "create_user_id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@Column(name = "update_user_id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
@Column(name = "update_time")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 逻辑删除标记字段(1: 正常 -1: 已删除)。
|
||||
*/
|
||||
|
||||
@@ -11,9 +11,7 @@ import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 角色实体对象。
|
||||
@@ -28,7 +26,6 @@ public class SysRole {
|
||||
/**
|
||||
* 主键Id。
|
||||
*/
|
||||
@NotNull(message = "角色Id不能为空!")
|
||||
@Id
|
||||
@Column(name = "role_id")
|
||||
private Long roleId;
|
||||
@@ -36,28 +33,27 @@ public class SysRole {
|
||||
/**
|
||||
* 角色名称。
|
||||
*/
|
||||
@NotBlank(message = "角色名称不能为空!")
|
||||
@Column(name = "role_name")
|
||||
private String roleName;
|
||||
|
||||
/**
|
||||
* 创建者。
|
||||
* 创建者Id。
|
||||
*/
|
||||
@Column(name = "create_user_id")
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建者显示名称。
|
||||
*/
|
||||
@Column(name = "create_username")
|
||||
private String createUsername;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
*/
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者Id。
|
||||
*/
|
||||
@Column(name = "update_user_id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 更新时间。
|
||||
*/
|
||||
|
||||
@@ -7,13 +7,11 @@ import com.orange.demo.common.core.annotation.RelationConstDict;
|
||||
import com.orange.demo.common.core.annotation.RelationManyToMany;
|
||||
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
|
||||
import com.orange.demo.common.core.annotation.DeletedFlagColumn;
|
||||
import com.orange.demo.common.core.validator.ConstDictRef;
|
||||
import com.orange.demo.upmsinterface.vo.SysUserVo;
|
||||
import lombok.Data;
|
||||
import org.mapstruct.*;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
@@ -32,7 +30,6 @@ public class SysUser {
|
||||
/**
|
||||
* 用户Id。
|
||||
*/
|
||||
@NotNull(message = "数据验证失败,用户Id不能为空!")
|
||||
@Id
|
||||
@Column(name = "user_id")
|
||||
private Long userId;
|
||||
@@ -40,28 +37,23 @@ public class SysUser {
|
||||
/**
|
||||
* 登录用户名。
|
||||
*/
|
||||
@NotBlank(message = "数据验证失败,登录用户名不能为空!")
|
||||
@Column(name = "login_name")
|
||||
private String loginName;
|
||||
|
||||
/**
|
||||
* 用户密码。
|
||||
*/
|
||||
@NotBlank(message = "数据验证失败,用户密码不能为空!")
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* 用户显示名称。
|
||||
*/
|
||||
@NotBlank(message = "数据验证失败,用户显示名称不能为空!")
|
||||
@Column(name = "show_name")
|
||||
private String showName;
|
||||
|
||||
/**
|
||||
* 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。
|
||||
*/
|
||||
@NotNull(message = "数据验证失败,用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)不能为空!")
|
||||
@ConstDictRef(constDictClass = SysUserType.class, message = "数据验证失败,用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)为无效值!")
|
||||
@Column(name = "user_type")
|
||||
private Integer userType;
|
||||
|
||||
@@ -74,8 +66,6 @@ public class SysUser {
|
||||
/**
|
||||
* 用户状态(0: 正常 1: 锁定)。
|
||||
*/
|
||||
@NotNull(message = "数据验证失败,用户状态(0: 正常 1: 锁定)不能为空!")
|
||||
@ConstDictRef(constDictClass = SysUserStatus.class, message = "数据验证失败,用户状态(0: 正常 1: 锁定)为无效值!")
|
||||
@Column(name = "user_status")
|
||||
private Integer userStatus;
|
||||
|
||||
@@ -94,10 +84,10 @@ public class SysUser {
|
||||
private Long createUserId;
|
||||
|
||||
/**
|
||||
* 创建用户名。
|
||||
* 更新者Id。
|
||||
*/
|
||||
@Column(name = "create_username")
|
||||
private String createUsername;
|
||||
@Column(name = "update_user_id")
|
||||
private Long updateUserId;
|
||||
|
||||
/**
|
||||
* 创建时间。
|
||||
|
||||
@@ -1,56 +1,18 @@
|
||||
package com.orange.demo.upmsservice.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.base.service.IBaseService;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsinterface.constant.SysMenuType;
|
||||
import com.orange.demo.upmsservice.dao.SysMenuMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysMenuPermCodeMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysRoleMenuMapper;
|
||||
import com.orange.demo.upmsservice.model.SysMenu;
|
||||
import com.orange.demo.upmsservice.model.SysMenuPermCode;
|
||||
import com.orange.demo.upmsservice.model.SysRoleMenu;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 菜单数据服务类。
|
||||
* 菜单数据服务接口。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service
|
||||
public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
|
||||
@Autowired
|
||||
private SysMenuMapper sysMenuMapper;
|
||||
@Autowired
|
||||
private SysRoleMenuMapper sysRoleMenuMapper;
|
||||
@Autowired
|
||||
private SysMenuPermCodeMapper sysMenuPermCodeMapper;
|
||||
@Autowired
|
||||
private SysPermCodeService sysPermCodeService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysMenu> mapper() {
|
||||
return sysMenuMapper;
|
||||
}
|
||||
public interface SysMenuService extends IBaseService<SysMenu, Long> {
|
||||
|
||||
/**
|
||||
* 保存新增的菜单对象。
|
||||
@@ -59,24 +21,7 @@ public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
* @param permCodeIdSet 权限字Id列表。
|
||||
* @return 新增后的菜单对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public SysMenu saveNew(SysMenu sysMenu, Set<Long> permCodeIdSet) {
|
||||
sysMenu.setMenuId(idGenerator.nextLongId());
|
||||
sysMenu.setCreateTime(new Date());
|
||||
sysMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysMenuMapper.insert(sysMenu);
|
||||
if (permCodeIdSet != null) {
|
||||
List<SysMenuPermCode> sysMenuPermCodeList = new LinkedList<>();
|
||||
for (Long permCodeId : permCodeIdSet) {
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setMenuId(sysMenu.getMenuId());
|
||||
menuPermCode.setPermCodeId(permCodeId);
|
||||
sysMenuPermCodeList.add(menuPermCode);
|
||||
}
|
||||
sysMenuPermCodeMapper.insertList(sysMenuPermCodeList);
|
||||
}
|
||||
return sysMenu;
|
||||
}
|
||||
SysMenu saveNew(SysMenu sysMenu, Set<Long> permCodeIdSet);
|
||||
|
||||
/**
|
||||
* 更新菜单对象。
|
||||
@@ -86,29 +31,7 @@ public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
* @param permCodeIdSet 权限字Id列表。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean update(SysMenu sysMenu, SysMenu originalSysMenu, Set<Long> permCodeIdSet) {
|
||||
sysMenu.setCreateTime(originalSysMenu.getCreateTime());
|
||||
sysMenu.setMenuType(originalSysMenu.getMenuType());
|
||||
sysMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
if (sysMenuMapper.updateByPrimaryKey(sysMenu) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysMenuPermCode deletedMenuPermCode = new SysMenuPermCode();
|
||||
deletedMenuPermCode.setMenuId(sysMenu.getMenuId());
|
||||
sysMenuPermCodeMapper.delete(deletedMenuPermCode);
|
||||
if (permCodeIdSet != null) {
|
||||
List<SysMenuPermCode> sysMenuPermCodeList = new LinkedList<>();
|
||||
for (Long permCodeId : permCodeIdSet) {
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setMenuId(sysMenu.getMenuId());
|
||||
menuPermCode.setPermCodeId(permCodeId);
|
||||
sysMenuPermCodeList.add(menuPermCode);
|
||||
}
|
||||
sysMenuPermCodeMapper.insertList(sysMenuPermCodeList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
boolean update(SysMenu sysMenu, SysMenu originalSysMenu, Set<Long> permCodeIdSet);
|
||||
|
||||
/**
|
||||
* 删除指定的菜单。
|
||||
@@ -116,36 +39,14 @@ public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
* @param menuId 菜单主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean remove(Long menuId) {
|
||||
SysMenu menu = new SysMenu();
|
||||
menu.setMenuId(menuId);
|
||||
menu.setDeletedFlag(GlobalDeletedFlag.DELETED);
|
||||
if (sysMenuMapper.updateByPrimaryKeySelective(menu) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||
roleMenu.setMenuId(menuId);
|
||||
sysRoleMenuMapper.delete(roleMenu);
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setMenuId(menuId);
|
||||
sysMenuPermCodeMapper.delete(menuPermCode);
|
||||
return true;
|
||||
}
|
||||
boolean remove(Long menuId);
|
||||
|
||||
/**
|
||||
* 获取全部菜单列表。
|
||||
*
|
||||
* @return 全部菜单列表。
|
||||
*/
|
||||
public List<SysMenu> getAllMenuList() {
|
||||
Example e = new Example(SysMenu.class);
|
||||
e.orderBy("menuType").orderBy("showOrder");
|
||||
Example.Criteria c = e.createCriteria();
|
||||
c.andIn("menuType", Arrays.asList(SysMenuType.TYPE_MENU, SysMenuType.TYPE_DIRECTORY));
|
||||
c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL);
|
||||
return sysMenuMapper.selectByExample(e);
|
||||
}
|
||||
List<SysMenu> getAllMenuList();
|
||||
|
||||
/**
|
||||
* 获取指定用户Id的菜单列表。
|
||||
@@ -153,9 +54,7 @@ public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
* @param userId 用户主键Id。
|
||||
* @return 用户关联的菜单列表。
|
||||
*/
|
||||
public List<SysMenu> getMenuListByUserId(Long userId) {
|
||||
return sysMenuMapper.getMenuListByUserId(userId);
|
||||
}
|
||||
List<SysMenu> getMenuListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 判断当前菜单是否存在子菜单。
|
||||
@@ -163,11 +62,7 @@ public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
* @param menuId 菜单主键Id。
|
||||
* @return 存在返回true,否则false。
|
||||
*/
|
||||
public boolean hasChildren(Long menuId) {
|
||||
SysMenu menu = new SysMenu();
|
||||
menu.setParentId(menuId);
|
||||
return this.getCountByFilter(menu) > 0;
|
||||
}
|
||||
boolean hasChildren(Long menuId);
|
||||
|
||||
/**
|
||||
* 验证菜单对象关联的数据是否都合法。
|
||||
@@ -177,31 +72,7 @@ public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
* @param permCodeIdListString 逗号分隔的权限Id列表。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
public CallResult verifyRelatedData(SysMenu sysMenu, SysMenu originalSysMenu, String permCodeIdListString) {
|
||||
// menu、ui fragment和button类型的menu不能没有parentId
|
||||
if (sysMenu.getParentId() == null) {
|
||||
if (sysMenu.getMenuType() != SysMenuType.TYPE_DIRECTORY) {
|
||||
return CallResult.error("数据验证失败,当前类型菜单项的上级菜单不能为空!");
|
||||
}
|
||||
}
|
||||
if (this.needToVerify(sysMenu, originalSysMenu, SysMenu::getParentId)) {
|
||||
String errorMessage = checkErrorOfNonDirectoryMenu(sysMenu);
|
||||
if (errorMessage != null) {
|
||||
return CallResult.error(errorMessage);
|
||||
}
|
||||
}
|
||||
JSONObject jsonObject = null;
|
||||
if (StringUtils.isNotBlank(permCodeIdListString)) {
|
||||
Set<Long> permCodeIdSet = Arrays.stream(
|
||||
permCodeIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet());
|
||||
if (!sysPermCodeService.existAllPrimaryKeys(permCodeIdSet)) {
|
||||
return CallResult.error("数据验证失败,存在不合法的权限字,请刷新后重试!");
|
||||
}
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("permCodeIdSet", permCodeIdSet);
|
||||
}
|
||||
return CallResult.ok(jsonObject);
|
||||
}
|
||||
CallResult verifyRelatedData(SysMenu sysMenu, SysMenu originalSysMenu, String permCodeIdListString);
|
||||
|
||||
/**
|
||||
* 查询菜单的权限资源地址列表。同时返回详细的分配路径。
|
||||
@@ -210,9 +81,7 @@ public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
* @param url 权限资源地址过滤条件。
|
||||
* @return 包含从菜单到权限资源的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysPermListWithDetail(Long menuId, String url) {
|
||||
return sysMenuMapper.getSysPermListWithDetail(menuId, url);
|
||||
}
|
||||
List<Map<String, Object>> getSysPermListWithDetail(Long menuId, String url);
|
||||
|
||||
/**
|
||||
* 查询菜单的用户列表。同时返回详细的分配路径。
|
||||
@@ -221,35 +90,5 @@ public class SysMenuService extends BaseService<SysMenu, Long> {
|
||||
* @param loginName 登录名。
|
||||
* @return 包含从菜单到用户的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysUserListWithDetail(Long menuId, String loginName) {
|
||||
return sysMenuMapper.getSysUserListWithDetail(menuId, loginName);
|
||||
}
|
||||
|
||||
private String checkErrorOfNonDirectoryMenu(SysMenu sysMenu) {
|
||||
// 判断父节点是否存在
|
||||
SysMenu parentSysMenu = getById(sysMenu.getParentId());
|
||||
if (parentSysMenu == null) {
|
||||
return "数据验证失败,关联的上级菜单并不存在,请刷新后重试!";
|
||||
}
|
||||
// 逐个判断每种类型的菜单,他的父菜单的合法性,先从目录类型和菜单类型开始
|
||||
if (sysMenu.getMenuType() == SysMenuType.TYPE_DIRECTORY
|
||||
|| sysMenu.getMenuType() == SysMenuType.TYPE_MENU) {
|
||||
// 他们的上级只能是目录
|
||||
if (parentSysMenu.getMenuType() != SysMenuType.TYPE_DIRECTORY) {
|
||||
return "数据验证失败,当前类型菜单项的上级菜单只能是目录类型!";
|
||||
}
|
||||
} else if (sysMenu.getMenuType() == SysMenuType.TYPE_UI_FRAGMENT) {
|
||||
// ui fragment的上级只能是menu类型
|
||||
if (parentSysMenu.getMenuType() != SysMenuType.TYPE_MENU) {
|
||||
return "数据验证失败,当前类型菜单项的上级菜单只能是菜单类型和按钮类型!";
|
||||
}
|
||||
} else if (sysMenu.getMenuType() == SysMenuType.TYPE_BUTTON) {
|
||||
// button的上级只能是menu和ui fragment
|
||||
if (parentSysMenu.getMenuType() != SysMenuType.TYPE_MENU
|
||||
&& parentSysMenu.getMenuType() != SysMenuType.TYPE_UI_FRAGMENT) {
|
||||
return "数据验证失败,当前类型菜单项的上级菜单只能是菜单类型和UI片段类型!";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
List<Map<String, Object>> getSysUserListWithDetail(Long menuId, String loginName);
|
||||
}
|
||||
@@ -1,54 +1,18 @@
|
||||
package com.orange.demo.upmsservice.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.base.service.IBaseService;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsservice.dao.SysMenuPermCodeMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermCodeMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermCodePermMapper;
|
||||
import com.orange.demo.upmsservice.model.SysMenuPermCode;
|
||||
import com.orange.demo.upmsservice.model.SysPermCode;
|
||||
import com.orange.demo.upmsservice.model.SysPermCodePerm;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 权限字数据服务类。
|
||||
* 权限字数据服务接口。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service
|
||||
public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
|
||||
@Autowired
|
||||
private SysPermCodeMapper sysPermCodeMapper;
|
||||
@Autowired
|
||||
private SysPermCodePermMapper sysPermCodePermMapper;
|
||||
@Autowired
|
||||
private SysMenuPermCodeMapper sysMenuPermCodeMapper;
|
||||
@Autowired
|
||||
private SysPermService sysPermService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysPermCode> mapper() {
|
||||
return sysPermCodeMapper;
|
||||
}
|
||||
public interface SysPermCodeService extends IBaseService<SysPermCode, Long> {
|
||||
|
||||
/**
|
||||
* 获取指定用户的权限字列表。
|
||||
@@ -56,9 +20,7 @@ public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
* @param userId 用户主键Id。
|
||||
* @return 用户关联的权限字列表。
|
||||
*/
|
||||
public List<String> getPermCodeListByUserId(Long userId) {
|
||||
return sysPermCodeMapper.getPermCodeListByUserId(userId);
|
||||
}
|
||||
List<String> getPermCodeListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 保存新增的权限字对象。
|
||||
@@ -67,24 +29,7 @@ public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
* @param permIdSet 权限资源Id列表。
|
||||
* @return 新增后的权限字对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public SysPermCode saveNew(SysPermCode sysPermCode, Set<Long> permIdSet) {
|
||||
sysPermCode.setPermCodeId(idGenerator.nextLongId());
|
||||
sysPermCode.setCreateTime(new Date());
|
||||
sysPermCode.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysPermCodeMapper.insert(sysPermCode);
|
||||
if (permIdSet != null) {
|
||||
List<SysPermCodePerm> sysPermCodePermList = new LinkedList<>();
|
||||
for (Long permId : permIdSet) {
|
||||
SysPermCodePerm permCodePerm = new SysPermCodePerm();
|
||||
permCodePerm.setPermCodeId(sysPermCode.getPermCodeId());
|
||||
permCodePerm.setPermId(permId);
|
||||
sysPermCodePermList.add(permCodePerm);
|
||||
}
|
||||
sysPermCodePermMapper.insertList(sysPermCodePermList);
|
||||
}
|
||||
return sysPermCode;
|
||||
}
|
||||
SysPermCode saveNew(SysPermCode sysPermCode, Set<Long> permIdSet);
|
||||
|
||||
/**
|
||||
* 更新权限字对象。
|
||||
@@ -94,29 +39,7 @@ public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
* @param permIdSet 权限资源Id列表。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean update(SysPermCode sysPermCode, SysPermCode originalSysPermCode, Set<Long> permIdSet) {
|
||||
sysPermCode.setCreateTime(originalSysPermCode.getCreateTime());
|
||||
sysPermCode.setParentId(originalSysPermCode.getParentId());
|
||||
sysPermCode.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
if (sysPermCodeMapper.updateByPrimaryKey(sysPermCode) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysPermCodePerm deletedPermCodePerm = new SysPermCodePerm();
|
||||
deletedPermCodePerm.setPermCodeId(sysPermCode.getPermCodeId());
|
||||
sysPermCodePermMapper.delete(deletedPermCodePerm);
|
||||
if (permIdSet != null) {
|
||||
List<SysPermCodePerm> sysPermCodePermList = new LinkedList<>();
|
||||
for (Long permId : permIdSet) {
|
||||
SysPermCodePerm permCodePerm = new SysPermCodePerm();
|
||||
permCodePerm.setPermCodeId(sysPermCode.getPermCodeId());
|
||||
permCodePerm.setPermId(permId);
|
||||
sysPermCodePermList.add(permCodePerm);
|
||||
}
|
||||
sysPermCodePermMapper.insertList(sysPermCodePermList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
boolean update(SysPermCode sysPermCode, SysPermCode originalSysPermCode, Set<Long> permIdSet);
|
||||
|
||||
/**
|
||||
* 删除指定的权限字。
|
||||
@@ -124,22 +47,7 @@ public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
* @param permCodeId 权限字主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean remove(Long permCodeId) {
|
||||
SysPermCode permCode = new SysPermCode();
|
||||
permCode.setPermCodeId(permCodeId);
|
||||
permCode.setDeletedFlag(GlobalDeletedFlag.DELETED);
|
||||
if (sysPermCodeMapper.updateByPrimaryKeySelective(permCode) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setPermCodeId(permCodeId);
|
||||
sysMenuPermCodeMapper.delete(menuPermCode);
|
||||
SysPermCodePerm permCodePerm = new SysPermCodePerm();
|
||||
permCodePerm.setPermCodeId(permCodeId);
|
||||
sysPermCodePermMapper.delete(permCodePerm);
|
||||
return true;
|
||||
}
|
||||
boolean remove(Long permCodeId);
|
||||
|
||||
/**
|
||||
* 判断当前权限字是否存在下级权限字对象。
|
||||
@@ -147,11 +55,7 @@ public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
* @param permCodeId 权限字主键Id。
|
||||
* @return 存在返回true,否则false。
|
||||
*/
|
||||
public boolean hasChildren(Long permCodeId) {
|
||||
SysPermCode permCode = new SysPermCode();
|
||||
permCode.setParentId(permCodeId);
|
||||
return this.getCountByFilter(permCode) > 0;
|
||||
}
|
||||
boolean hasChildren(Long permCodeId);
|
||||
|
||||
/**
|
||||
* 验证权限字对象关联的数据是否都合法。
|
||||
@@ -161,25 +65,7 @@ public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
* @param permIdListString 逗号分隔的权限资源Id列表。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
public CallResult verifyRelatedData(
|
||||
SysPermCode sysPermCode, SysPermCode originalSysPermCode, String permIdListString) {
|
||||
if (this.needToVerify(sysPermCode, originalSysPermCode, SysPermCode::getParentId)) {
|
||||
if (getById(sysPermCode.getParentId()) == null) {
|
||||
return CallResult.error("数据验证失败,关联的上级权限字并不存在,请刷新后重试!");
|
||||
}
|
||||
}
|
||||
JSONObject jsonObject = null;
|
||||
if (StringUtils.isNotBlank(permIdListString)) {
|
||||
Set<Long> permIdSet = Arrays.stream(
|
||||
permIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet());
|
||||
if (!sysPermService.existAllPrimaryKeys(permIdSet)) {
|
||||
return CallResult.error("数据验证失败,存在不合法的权限资源,请刷新后重试!");
|
||||
}
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("permIdSet", permIdSet);
|
||||
}
|
||||
return CallResult.ok(jsonObject);
|
||||
}
|
||||
CallResult verifyRelatedData(SysPermCode sysPermCode, SysPermCode originalSysPermCode, String permIdListString);
|
||||
|
||||
/**
|
||||
* 查询权限字的用户列表。同时返回详细的分配路径。
|
||||
@@ -188,9 +74,7 @@ public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
* @param loginName 登录名。
|
||||
* @return 包含从权限字到用户的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysUserListWithDetail(Long permCodeId, String loginName) {
|
||||
return sysPermCodeMapper.getSysUserListWithDetail(permCodeId, loginName);
|
||||
}
|
||||
List<Map<String, Object>> getSysUserListWithDetail(Long permCodeId, String loginName);
|
||||
|
||||
/**
|
||||
* 查询权限字的角色列表。同时返回详细的分配路径。
|
||||
@@ -199,7 +83,5 @@ public class SysPermCodeService extends BaseService<SysPermCode, Long> {
|
||||
* @param roleName 角色名。
|
||||
* @return 包含从权限字到角色的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysRoleListWithDetail(Long permCodeId, String roleName) {
|
||||
return sysPermCodeMapper.getSysRoleListWithDetail(permCodeId, roleName);
|
||||
}
|
||||
List<Map<String, Object>> getSysRoleListWithDetail(Long permCodeId, String roleName);
|
||||
}
|
||||
|
||||
@@ -1,44 +1,17 @@
|
||||
package com.orange.demo.upmsservice.service;
|
||||
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.upmsservice.dao.SysPermModuleMapper;
|
||||
import com.orange.demo.upmsservice.model.SysPerm;
|
||||
import com.orange.demo.common.core.base.service.IBaseService;
|
||||
import com.orange.demo.upmsservice.model.SysPermModule;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 权限资源模块数据服务类。
|
||||
* 权限资源模块数据服务接口。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service
|
||||
public class SysPermModuleService extends BaseService<SysPermModule, Long> {
|
||||
|
||||
@Autowired
|
||||
private SysPermModuleMapper sysPermModuleMapper;
|
||||
@Autowired
|
||||
private SysPermService sysPermService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysPermModule> mapper() {
|
||||
return sysPermModuleMapper;
|
||||
}
|
||||
public interface SysPermModuleService extends IBaseService<SysPermModule, Long> {
|
||||
|
||||
/**
|
||||
* 保存新增的权限资源模块对象。
|
||||
@@ -46,14 +19,7 @@ public class SysPermModuleService extends BaseService<SysPermModule, Long> {
|
||||
* @param sysPermModule 新增的权限资源模块对象。
|
||||
* @return 新增后的权限资源模块对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public SysPermModule saveNew(SysPermModule sysPermModule) {
|
||||
sysPermModule.setModuleId(idGenerator.nextLongId());
|
||||
sysPermModule.setCreateTime(new Date());
|
||||
sysPermModule.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysPermModuleMapper.insert(sysPermModule);
|
||||
return sysPermModule;
|
||||
}
|
||||
SysPermModule saveNew(SysPermModule sysPermModule);
|
||||
|
||||
/**
|
||||
* 更新权限资源模块对象。
|
||||
@@ -62,12 +28,7 @@ public class SysPermModuleService extends BaseService<SysPermModule, Long> {
|
||||
* @param originalSysPermModule 原有的权限资源模块对象。
|
||||
* @return 更新成功返回true,否则false
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean update(SysPermModule sysPermModule, SysPermModule originalSysPermModule) {
|
||||
sysPermModule.setCreateTime(originalSysPermModule.getCreateTime());
|
||||
sysPermModule.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
return sysPermModuleMapper.updateByPrimaryKey(sysPermModule) != 0;
|
||||
}
|
||||
boolean update(SysPermModule sysPermModule, SysPermModule originalSysPermModule);
|
||||
|
||||
/**
|
||||
* 删除指定的权限资源模块。
|
||||
@@ -75,22 +36,14 @@ public class SysPermModuleService extends BaseService<SysPermModule, Long> {
|
||||
* @param moduleId 权限资源模块主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean remove(Long moduleId) {
|
||||
SysPermModule permModule = new SysPermModule();
|
||||
permModule.setModuleId(moduleId);
|
||||
permModule.setDeletedFlag(GlobalDeletedFlag.DELETED);
|
||||
return sysPermModuleMapper.updateByPrimaryKeySelective(permModule) != 0;
|
||||
}
|
||||
boolean remove(Long moduleId);
|
||||
|
||||
/**
|
||||
* 获取权限模块资源及其关联的权限资源列表。
|
||||
*
|
||||
* @return 权限资源模块及其关联的权限资源列表。
|
||||
*/
|
||||
public List<SysPermModule> getPermModuleAndPermList() {
|
||||
return sysPermModuleMapper.getPermModuleAndPermList();
|
||||
}
|
||||
List<SysPermModule> getPermModuleAndPermList();
|
||||
|
||||
/**
|
||||
* 判断是否存在下级权限资源模块。
|
||||
@@ -98,11 +51,7 @@ public class SysPermModuleService extends BaseService<SysPermModule, Long> {
|
||||
* @param moduleId 权限资源模块主键Id。
|
||||
* @return 存在返回true,否则false。
|
||||
*/
|
||||
public boolean hasChildren(Long moduleId) {
|
||||
SysPermModule permModule = new SysPermModule();
|
||||
permModule.setParentId(moduleId);
|
||||
return this.getCountByFilter(permModule) > 0;
|
||||
}
|
||||
boolean hasChildren(Long moduleId);
|
||||
|
||||
/**
|
||||
* 判断是否存在权限数据。
|
||||
@@ -110,9 +59,5 @@ public class SysPermModuleService extends BaseService<SysPermModule, Long> {
|
||||
* @param moduleId 权限资源模块主键Id。
|
||||
* @return 存在返回true,否则false。
|
||||
*/
|
||||
public boolean hasModulePerms(Long moduleId) {
|
||||
SysPerm filter = new SysPerm();
|
||||
filter.setModuleId(moduleId);
|
||||
return sysPermService.getCountByFilter(filter) > 0;
|
||||
}
|
||||
boolean hasModulePerms(Long moduleId);
|
||||
}
|
||||
|
||||
@@ -1,53 +1,18 @@
|
||||
package com.orange.demo.upmsservice.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.object.MyRelationParam;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.base.service.IBaseService;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsservice.dao.SysPermCodePermMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermMapper;
|
||||
import com.orange.demo.upmsservice.model.SysPerm;
|
||||
import com.orange.demo.upmsservice.model.SysPermCodePerm;
|
||||
import com.orange.demo.upmsservice.model.SysPermModule;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 权限资源数据服务类。
|
||||
* 权限资源数据服务接口。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service
|
||||
public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
|
||||
@Autowired
|
||||
private SysPermMapper sysPermMapper;
|
||||
@Autowired
|
||||
private SysPermCodePermMapper sysPermCodePermMapper;
|
||||
@Autowired
|
||||
private SysPermModuleService sysPermModuleService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysPerm> mapper() {
|
||||
return sysPermMapper;
|
||||
}
|
||||
public interface SysPermService extends IBaseService<SysPerm, Long> {
|
||||
|
||||
/**
|
||||
* 保存新增的权限资源对象。
|
||||
@@ -55,14 +20,7 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param perm 新增的权限资源对象。
|
||||
* @return 新增后的权限资源对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public SysPerm saveNew(SysPerm perm) {
|
||||
perm.setPermId(idGenerator.nextLongId());
|
||||
perm.setCreateTime(new Date());
|
||||
perm.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysPermMapper.insert(perm);
|
||||
return perm;
|
||||
}
|
||||
SysPerm saveNew(SysPerm perm);
|
||||
|
||||
/**
|
||||
* 更新权限资源对象。
|
||||
@@ -71,12 +29,7 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param originalPerm 原有的权限资源对象。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean update(SysPerm perm, SysPerm originalPerm) {
|
||||
perm.setCreateTime(originalPerm.getCreateTime());
|
||||
perm.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
return sysPermMapper.updateByPrimaryKeySelective(perm) != 0;
|
||||
}
|
||||
boolean update(SysPerm perm, SysPerm originalPerm);
|
||||
|
||||
/**
|
||||
* 删除权限资源。
|
||||
@@ -84,19 +37,7 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param permId 权限资源主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean remove(Long permId) {
|
||||
SysPerm perm = new SysPerm();
|
||||
perm.setPermId(permId);
|
||||
perm.setDeletedFlag(GlobalDeletedFlag.DELETED);
|
||||
if (sysPermMapper.updateByPrimaryKeySelective(perm) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysPermCodePerm permCodePerm = new SysPermCodePerm();
|
||||
permCodePerm.setPermId(permId);
|
||||
sysPermCodePermMapper.delete(permCodePerm);
|
||||
return true;
|
||||
}
|
||||
boolean remove(Long permId);
|
||||
|
||||
/**
|
||||
* 获取权限数据列表。
|
||||
@@ -104,22 +45,7 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param sysPermFilter 过滤对象。
|
||||
* @return 权限列表。
|
||||
*/
|
||||
public List<SysPerm> getPermListWithRelation(SysPerm sysPermFilter) {
|
||||
Example e = new Example(SysPerm.class);
|
||||
e.orderBy("showOrder");
|
||||
Example.Criteria c = e.createCriteria();
|
||||
if (ObjectUtil.isNotNull(sysPermFilter.getModuleId())) {
|
||||
c.andEqualTo("moduleId", sysPermFilter.getModuleId());
|
||||
}
|
||||
if (ObjectUtil.isNotNull(sysPermFilter.getUrl())) {
|
||||
c.andLike("url", "%" + sysPermFilter.getUrl() + "%");
|
||||
}
|
||||
c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL);
|
||||
List<SysPerm> permList = sysPermMapper.selectByExample(e);
|
||||
// 这里因为权限只有字典数据,所以仅仅做字典关联。
|
||||
this.buildRelationForDataList(permList, MyRelationParam.dictOnly(), null);
|
||||
return permList;
|
||||
}
|
||||
List<SysPerm> getPermListWithRelation(SysPerm sysPermFilter);
|
||||
|
||||
/**
|
||||
* 获取与指定用户关联的权限资源列表。
|
||||
@@ -127,9 +53,7 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param userId 关联的用户主键Id。
|
||||
* @return 与指定用户Id关联的权限资源列表。
|
||||
*/
|
||||
public List<SysPerm> getPermListByUserId(Long userId) {
|
||||
return sysPermMapper.getPermListByUserId(userId);
|
||||
}
|
||||
List<SysPerm> getPermListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 验证权限资源对象关联的数据是否都合法。
|
||||
@@ -138,15 +62,7 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param originalSysPerm 原有对象。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
public CallResult verifyRelatedData(SysPerm sysPerm, SysPerm originalSysPerm) {
|
||||
if (this.needToVerify(sysPerm, originalSysPerm, SysPerm::getModuleId)) {
|
||||
SysPermModule permModule = sysPermModuleService.getById(sysPerm.getModuleId());
|
||||
if (permModule == null) {
|
||||
return CallResult.error("数据验证失败,关联的权限模块Id并不存在,请刷新后重试!");
|
||||
}
|
||||
}
|
||||
return CallResult.ok();
|
||||
}
|
||||
CallResult verifyRelatedData(SysPerm sysPerm, SysPerm originalSysPerm);
|
||||
|
||||
/**
|
||||
* 查询权限资源地址的用户列表。同时返回详细的分配路径。
|
||||
@@ -155,9 +71,7 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param loginName 登录名。
|
||||
* @return 包含从权限资源到用户的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysUserListWithDetail(Long permId, String loginName) {
|
||||
return sysPermMapper.getSysUserListWithDetail(permId, loginName);
|
||||
}
|
||||
List<Map<String, Object>> getSysUserListWithDetail(Long permId, String loginName);
|
||||
|
||||
/**
|
||||
* 查询权限资源地址的角色列表。同时返回详细的分配路径。
|
||||
@@ -166,9 +80,7 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param roleName 角色名。
|
||||
* @return 包含从权限资源到角色的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysRoleListWithDetail(Long permId, String roleName) {
|
||||
return sysPermMapper.getSysRoleListWithDetail(permId, roleName);
|
||||
}
|
||||
List<Map<String, Object>> getSysRoleListWithDetail(Long permId, String roleName);
|
||||
|
||||
/**
|
||||
* 查询权限资源地址的菜单列表。同时返回详细的分配路径。
|
||||
@@ -177,7 +89,5 @@ public class SysPermService extends BaseService<SysPerm, Long> {
|
||||
* @param menuName 菜单名。
|
||||
* @return 包含从权限资源到菜单的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysMenuListWithDetail(Long permId, String menuName) {
|
||||
return sysPermMapper.getSysMenuListWithDetail(permId, menuName);
|
||||
}
|
||||
List<Map<String, Object>> getSysMenuListWithDetail(Long permId, String menuName);
|
||||
}
|
||||
|
||||
@@ -1,32 +1,22 @@
|
||||
package com.orange.demo.upmsservice.service;
|
||||
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermWhitelistMapper;
|
||||
import com.orange.demo.common.core.base.service.IBaseService;
|
||||
import com.orange.demo.upmsservice.model.SysPermWhitelist;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 白名单数据服务类。
|
||||
* 白名单数据服务接口。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service
|
||||
public class SysPermWhitelistService extends BaseService<SysPermWhitelist, String> {
|
||||
|
||||
@Autowired
|
||||
private SysPermWhitelistMapper sysPermWhitelistMapper;
|
||||
public interface SysPermWhitelistService extends IBaseService<SysPermWhitelist, String> {
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
* 获取白名单权限资源的列表。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
* @return 白名单权限资源地址列表。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysPermWhitelist> mapper() {
|
||||
return sysPermWhitelistMapper;
|
||||
}
|
||||
|
||||
List<String> getWhitelistPermList();
|
||||
}
|
||||
|
||||
@@ -1,55 +1,19 @@
|
||||
package com.orange.demo.upmsservice.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.object.TokenData;
|
||||
import com.orange.demo.common.core.base.service.IBaseService;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsservice.dao.SysRoleMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysRoleMenuMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysUserRoleMapper;
|
||||
import com.orange.demo.upmsservice.model.SysRole;
|
||||
import com.orange.demo.upmsservice.model.SysRoleMenu;
|
||||
import com.orange.demo.upmsservice.model.SysUserRole;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 角色数据服务类。
|
||||
* 角色数据服务接口。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service
|
||||
public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
|
||||
@Autowired
|
||||
private SysRoleMapper sysRoleMapper;
|
||||
@Autowired
|
||||
private SysRoleMenuMapper sysRoleMenuMapper;
|
||||
@Autowired
|
||||
private SysUserRoleMapper sysUserRoleMapper;
|
||||
@Autowired
|
||||
private SysMenuService sysMenuService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysRole> mapper() {
|
||||
return sysRoleMapper;
|
||||
}
|
||||
public interface SysRoleService extends IBaseService<SysRole, Long> {
|
||||
|
||||
/**
|
||||
* 保存新增的角色对象。
|
||||
@@ -58,29 +22,7 @@ public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
* @param menuIdSet 菜单Id列表。
|
||||
* @return 新增后的角色对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public SysRole saveNew(SysRole role, Set<Long> menuIdSet) {
|
||||
role.setRoleId(idGenerator.nextLongId());
|
||||
TokenData tokenData = TokenData.takeFromRequest();
|
||||
role.setCreateUserId(tokenData.getUserId());
|
||||
role.setCreateUsername(tokenData.getShowName());
|
||||
Date now = new Date();
|
||||
role.setCreateTime(now);
|
||||
role.setUpdateTime(now);
|
||||
role.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysRoleMapper.insert(role);
|
||||
if (menuIdSet != null) {
|
||||
List<SysRoleMenu> roleMenuList = new LinkedList<>();
|
||||
for (Long menuId : menuIdSet) {
|
||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||
roleMenu.setRoleId(role.getRoleId());
|
||||
roleMenu.setMenuId(menuId);
|
||||
roleMenuList.add(roleMenu);
|
||||
}
|
||||
sysRoleMenuMapper.insertList(roleMenuList);
|
||||
}
|
||||
return role;
|
||||
}
|
||||
SysRole saveNew(SysRole role, Set<Long> menuIdSet);
|
||||
|
||||
/**
|
||||
* 更新角色对象。
|
||||
@@ -90,30 +32,7 @@ public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
* @param menuIdSet 菜单Id列表。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean update(SysRole role, SysRole originalRole, Set<Long> menuIdSet) {
|
||||
role.setCreateUserId(originalRole.getCreateUserId());
|
||||
role.setCreateTime(originalRole.getCreateTime());
|
||||
role.setUpdateTime(new Date());
|
||||
role.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
if (sysRoleMapper.updateByPrimaryKey(role) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysRoleMenu deletedRoleMenu = new SysRoleMenu();
|
||||
deletedRoleMenu.setRoleId(role.getRoleId());
|
||||
sysRoleMenuMapper.delete(deletedRoleMenu);
|
||||
if (menuIdSet != null) {
|
||||
List<SysRoleMenu> roleMenuList = new LinkedList<>();
|
||||
for (Long menuId : menuIdSet) {
|
||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||
roleMenu.setRoleId(role.getRoleId());
|
||||
roleMenu.setMenuId(menuId);
|
||||
roleMenuList.add(roleMenu);
|
||||
}
|
||||
sysRoleMenuMapper.insertList(roleMenuList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
boolean update(SysRole role, SysRole originalRole, Set<Long> menuIdSet);
|
||||
|
||||
/**
|
||||
* 删除指定角色。
|
||||
@@ -121,22 +40,7 @@ public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
* @param roleId 角色主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean remove(Long roleId) {
|
||||
SysRole role = new SysRole();
|
||||
role.setRoleId(roleId);
|
||||
role.setDeletedFlag(GlobalDeletedFlag.DELETED);
|
||||
if (sysRoleMapper.updateByPrimaryKeySelective(role) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||
roleMenu.setRoleId(roleId);
|
||||
sysRoleMenuMapper.delete(roleMenu);
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setRoleId(roleId);
|
||||
sysUserRoleMapper.delete(userRole);
|
||||
return true;
|
||||
}
|
||||
boolean remove(Long roleId);
|
||||
|
||||
/**
|
||||
* 获取角色列表。
|
||||
@@ -145,19 +49,14 @@ public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
* @param orderBy 排序参数。
|
||||
* @return 角色列表。
|
||||
*/
|
||||
public List<SysRole> getSysRoleList(SysRole filter, String orderBy) {
|
||||
return sysRoleMapper.getSysRoleList(filter, orderBy);
|
||||
}
|
||||
List<SysRole> getSysRoleList(SysRole filter, String orderBy);
|
||||
|
||||
/**
|
||||
* 批量新增用户角色关联。
|
||||
*
|
||||
* @param userRoleList 用户角色关系数据列表。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void addUserRoleList(List<SysUserRole> userRoleList) {
|
||||
sysUserRoleMapper.insertList(userRoleList);
|
||||
}
|
||||
void addUserRoleList(List<SysUserRole> userRoleList);
|
||||
|
||||
/**
|
||||
* 移除指定用户和指定角色的关联关系。
|
||||
@@ -166,13 +65,7 @@ public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
* @param userId 用户主键Id。
|
||||
* @return 移除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean removeUserRole(Long roleId, Long userId) {
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setRoleId(roleId);
|
||||
userRole.setUserId(userId);
|
||||
return sysUserRoleMapper.delete(userRole) == 1;
|
||||
}
|
||||
boolean removeUserRole(Long roleId, Long userId);
|
||||
|
||||
/**
|
||||
* 验证角色对象关联的数据是否都合法。
|
||||
@@ -182,19 +75,7 @@ public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
* @param menuIdListString 逗号分隔的menuId列表。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
public CallResult verifyRelatedData(SysRole sysRole, SysRole originalSysRole, String menuIdListString) {
|
||||
JSONObject jsonObject = null;
|
||||
if (StringUtils.isNotBlank(menuIdListString)) {
|
||||
Set<Long> menuIdSet = Arrays.stream(
|
||||
menuIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet());
|
||||
if (!sysMenuService.existAllPrimaryKeys(menuIdSet)) {
|
||||
return CallResult.error("数据验证失败,存在不合法的菜单权限,请刷新后重试!");
|
||||
}
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("menuIdSet", menuIdSet);
|
||||
}
|
||||
return CallResult.ok(jsonObject);
|
||||
}
|
||||
CallResult verifyRelatedData(SysRole sysRole, SysRole originalSysRole, String menuIdListString);
|
||||
|
||||
/**
|
||||
* 查询角色的权限资源地址列表。同时返回详细的分配路径。
|
||||
@@ -203,9 +84,7 @@ public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
* @param url url过滤条件。
|
||||
* @return 包含从角色到权限资源的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysPermListWithDetail(Long roleId, String url) {
|
||||
return sysRoleMapper.getSysPermListWithDetail(roleId, url);
|
||||
}
|
||||
List<Map<String, Object>> getSysPermListWithDetail(Long roleId, String url);
|
||||
|
||||
/**
|
||||
* 查询角色的权限字列表。同时返回详细的分配路径。
|
||||
@@ -214,7 +93,5 @@ public class SysRoleService extends BaseService<SysRole, Long> {
|
||||
* @param permCode 权限字名称过滤条件。
|
||||
* @return 包含从角色到权限字的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysPermCodeListWithDetail(Long roleId, String permCode) {
|
||||
return sysRoleMapper.getSysPermCodeListWithDetail(roleId, permCode);
|
||||
}
|
||||
List<Map<String, Object>> getSysPermCodeListWithDetail(Long roleId, String permCode);
|
||||
}
|
||||
|
||||
@@ -1,57 +1,18 @@
|
||||
package com.orange.demo.upmsservice.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.upmsservice.dao.*;
|
||||
import com.orange.demo.upmsservice.model.*;
|
||||
import com.orange.demo.common.core.util.*;
|
||||
import com.orange.demo.common.core.object.*;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.upmsinterface.constant.SysUserStatus;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.common.core.base.service.IBaseService;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 用户管理数据操作服务类。
|
||||
* 用户管理数据操作服务接口。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service
|
||||
public class SysUserService extends BaseService<SysUser, Long> {
|
||||
|
||||
@Autowired
|
||||
private SysUserMapper sysUserMapper;
|
||||
@Autowired
|
||||
private SysUserRoleMapper sysUserRoleMapper;
|
||||
@Autowired
|
||||
private SysPermService sysPermService;
|
||||
@Autowired
|
||||
private SysRoleService sysRoleService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
@Autowired
|
||||
private PasswordEncoder passwordEncoder;
|
||||
|
||||
/**
|
||||
* 返回当前Service的主表Mapper对象。
|
||||
*
|
||||
* @return 主表Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysUser> mapper() {
|
||||
return sysUserMapper;
|
||||
}
|
||||
public interface SysUserService extends IBaseService<SysUser, Long> {
|
||||
|
||||
/**
|
||||
* 获取指定登录名的用户对象。
|
||||
@@ -59,13 +20,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param loginName 指定登录用户名。
|
||||
* @return 用户对象。
|
||||
*/
|
||||
public SysUser getSysUserByLoginName(String loginName) {
|
||||
Example e = new Example(SysUser.class);
|
||||
Example.Criteria c = e.createCriteria();
|
||||
c.andEqualTo("loginName", loginName);
|
||||
c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL);
|
||||
return sysUserMapper.selectOneByExample(e);
|
||||
}
|
||||
SysUser getSysUserByLoginName(String loginName);
|
||||
|
||||
/**
|
||||
* 保存新增的用户对象。
|
||||
@@ -74,31 +29,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param roleIdSet 用户角色Id集合。
|
||||
* @return 新增后的用户对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public SysUser saveNew(SysUser user, Set<Long> roleIdSet) {
|
||||
user.setUserId(idGenerator.nextLongId());
|
||||
user.setPassword(passwordEncoder.encode(user.getPassword()));
|
||||
user.setUserStatus(SysUserStatus.STATUS_NORMAL);
|
||||
user.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
TokenData tokenData = TokenData.takeFromRequest();
|
||||
user.setCreateUserId(tokenData.getUserId());
|
||||
user.setCreateUsername(tokenData.getShowName());
|
||||
Date now = new Date();
|
||||
user.setCreateTime(now);
|
||||
user.setUpdateTime(now);
|
||||
sysUserMapper.insert(user);
|
||||
if (CollectionUtils.isNotEmpty(roleIdSet)) {
|
||||
List<SysUserRole> userRoleList = new LinkedList<>();
|
||||
for (Long roleId : roleIdSet) {
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setUserId(user.getUserId());
|
||||
userRole.setRoleId(roleId);
|
||||
userRoleList.add(userRole);
|
||||
}
|
||||
sysUserRoleMapper.insertList(userRoleList);
|
||||
}
|
||||
return user;
|
||||
}
|
||||
SysUser saveNew(SysUser user, Set<Long> roleIdSet);
|
||||
|
||||
/**
|
||||
* 更新用户对象。
|
||||
@@ -108,33 +39,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param roleIdSet 用户角色Id列表。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean update(SysUser user, SysUser originalUser, Set<Long> roleIdSet) {
|
||||
user.setLoginName(originalUser.getLoginName());
|
||||
user.setPassword(originalUser.getPassword());
|
||||
user.setCreateUserId(originalUser.getCreateUserId());
|
||||
user.setCreateUsername(originalUser.getCreateUsername());
|
||||
user.setCreateTime(originalUser.getCreateTime());
|
||||
user.setUpdateTime(new Date());
|
||||
if (sysUserMapper.updateByPrimaryKeySelective(user) != 1) {
|
||||
return false;
|
||||
}
|
||||
// 先删除原有的User-Role关联关系,再重新插入新的关联关系
|
||||
SysUserRole deletedUserRole = new SysUserRole();
|
||||
deletedUserRole.setUserId(user.getUserId());
|
||||
sysUserRoleMapper.delete(deletedUserRole);
|
||||
if (CollectionUtils.isNotEmpty(roleIdSet)) {
|
||||
List<SysUserRole> userRoleList = new LinkedList<>();
|
||||
for (Long roleId : roleIdSet) {
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setUserId(user.getUserId());
|
||||
userRole.setRoleId(roleId);
|
||||
userRoleList.add(userRole);
|
||||
}
|
||||
sysUserRoleMapper.insertList(userRoleList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
boolean update(SysUser user, SysUser originalUser, Set<Long> roleIdSet);
|
||||
|
||||
/**
|
||||
* 重置用户密码。
|
||||
@@ -142,16 +47,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param newPass 新密码。
|
||||
* @return 成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean changePassword(Long userId, String newPass) {
|
||||
Example e = new Example(SysUser.class);
|
||||
e.createCriteria()
|
||||
.andEqualTo(super.idFieldName, userId)
|
||||
.andEqualTo(super.deletedFlagFieldName, GlobalDeletedFlag.NORMAL);
|
||||
SysUser updatedUser = new SysUser();
|
||||
updatedUser.setPassword(passwordEncoder.encode(newPass));
|
||||
return sysUserMapper.updateByExampleSelective(updatedUser, e) == 1;
|
||||
}
|
||||
boolean changePassword(Long userId, String newPass);
|
||||
|
||||
/**
|
||||
* 删除指定数据。
|
||||
@@ -159,23 +55,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param userId 主键Id。
|
||||
* @return 成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean remove(Long userId) {
|
||||
Example sysUserExample = new Example(SysUser.class);
|
||||
Example.Criteria c = sysUserExample.createCriteria();
|
||||
c.andEqualTo(super.idFieldName, userId);
|
||||
c.andEqualTo(super.deletedFlagFieldName, GlobalDeletedFlag.NORMAL);
|
||||
// 这里先删除主数据
|
||||
SysUser deletedObject = new SysUser();
|
||||
deletedObject.setDeletedFlag(GlobalDeletedFlag.DELETED);
|
||||
if (sysUserMapper.updateByExampleSelective(deletedObject, sysUserExample) == 0) {
|
||||
return false;
|
||||
}
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setUserId(userId);
|
||||
sysUserRoleMapper.delete(userRole);
|
||||
return true;
|
||||
}
|
||||
boolean remove(Long userId);
|
||||
|
||||
/**
|
||||
* 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
|
||||
@@ -185,9 +65,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param orderBy 排序参数。
|
||||
* @return 查询结果集。
|
||||
*/
|
||||
public List<SysUser> getSysUserList(SysUser filter, String orderBy) {
|
||||
return sysUserMapper.getSysUserList(null, null, filter, orderBy);
|
||||
}
|
||||
List<SysUser> getSysUserList(SysUser filter, String orderBy);
|
||||
|
||||
/**
|
||||
* 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。
|
||||
@@ -200,11 +78,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param orderBy 排序参数。
|
||||
* @return 查询结果集。
|
||||
*/
|
||||
public <M> List<SysUser> getSysUserList(
|
||||
String inFilterField, Set<M> inFilterValues, SysUser filter, String orderBy) {
|
||||
String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, SysUser.class);
|
||||
return sysUserMapper.getSysUserList(inFilterColumn, inFilterValues, filter, orderBy);
|
||||
}
|
||||
<M> List<SysUser> getSysUserList(String inFilterField, Set<M> inFilterValues, SysUser filter, String orderBy);
|
||||
|
||||
/**
|
||||
* 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
|
||||
@@ -214,12 +88,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param orderBy 排序对象。
|
||||
* @return 查询结果集。
|
||||
*/
|
||||
public List<SysUser> getSysUserListWithRelation(SysUser filter, String orderBy) {
|
||||
List<SysUser> resultList = sysUserMapper.getSysUserList(null, null, filter, orderBy);
|
||||
Map<String, List<MyWhereCriteria>> criteriaMap = buildAggregationAdditionalWhereCriteria();
|
||||
this.buildRelationForDataList(resultList, MyRelationParam.normal(), criteriaMap);
|
||||
return resultList;
|
||||
}
|
||||
List<SysUser> getSysUserListWithRelation(SysUser filter, String orderBy);
|
||||
|
||||
/**
|
||||
* 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。
|
||||
@@ -232,13 +101,8 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param orderBy 排序对象。
|
||||
* @return 查询结果集。
|
||||
*/
|
||||
public <M> List<SysUser> getSysUserListWithRelation(
|
||||
String inFilterField, Set<M> inFilterValues, SysUser filter, String orderBy) {
|
||||
List<SysUser> resultList =
|
||||
sysUserMapper.getSysUserList(inFilterField, inFilterValues, filter, orderBy);
|
||||
this.buildRelationForDataList(resultList, MyRelationParam.dictOnly(), null);
|
||||
return resultList;
|
||||
}
|
||||
<M> List<SysUser> getSysUserListWithRelation(
|
||||
String inFilterField, Set<M> inFilterValues, SysUser filter, String orderBy);
|
||||
|
||||
/**
|
||||
* 获取指定用户的权限集合。
|
||||
@@ -246,10 +110,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param userId 用户主键Id。
|
||||
* @return 用户权限集合。
|
||||
*/
|
||||
public Set<String> getSysPermSetByUserId(Long userId) {
|
||||
List<SysPerm> permList = sysPermService.getPermListByUserId(userId);
|
||||
return permList.stream().map(SysPerm::getUrl).collect(Collectors.toSet());
|
||||
}
|
||||
Set<String> getSysPermSetByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 获取指定角色的用户列表。
|
||||
@@ -259,9 +120,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param orderBy 排序参数。
|
||||
* @return 用户列表。
|
||||
*/
|
||||
public List<SysUser> getSysUserListByRoleId(Long roleId, SysUser filter, String orderBy) {
|
||||
return sysUserMapper.getSysUserListByRoleId(roleId, filter, orderBy);
|
||||
}
|
||||
List<SysUser> getSysUserListByRoleId(Long roleId, SysUser filter, String orderBy);
|
||||
|
||||
/**
|
||||
* 获取不属于指定角色的用户列表。
|
||||
@@ -271,9 +130,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param orderBy 排序参数。
|
||||
* @return 用户列表。
|
||||
*/
|
||||
public List<SysUser> getNotInSysUserListByRoleId(Long roleId, SysUser filter, String orderBy) {
|
||||
return sysUserMapper.getNotInSysUserListByRoleId(roleId, filter, orderBy);
|
||||
}
|
||||
List<SysUser> getNotInSysUserListByRoleId(Long roleId, SysUser filter, String orderBy);
|
||||
|
||||
/**
|
||||
* 查询用户的权限资源地址列表。同时返回详细的分配路径。
|
||||
@@ -282,9 +139,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param url url过滤条件。
|
||||
* @return 包含从用户到权限资源的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysPermListWithDetail(Long userId, String url) {
|
||||
return sysUserMapper.getSysPermListWithDetail(userId, url);
|
||||
}
|
||||
List<Map<String, Object>> getSysPermListWithDetail(Long userId, String url);
|
||||
|
||||
/**
|
||||
* 查询用户的权限字列表。同时返回详细的分配路径。
|
||||
@@ -293,9 +148,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param permCode 权限字名称过滤条件。
|
||||
* @return 包含从用户到权限字的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysPermCodeListWithDetail(Long userId, String permCode) {
|
||||
return sysUserMapper.getSysPermCodeListWithDetail(userId, permCode);
|
||||
}
|
||||
List<Map<String, Object>> getSysPermCodeListWithDetail(Long userId, String permCode);
|
||||
|
||||
/**
|
||||
* 查询用户的菜单列表。同时返回详细的分配路径。
|
||||
@@ -304,9 +157,7 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param menuName 菜单名称过滤条件。
|
||||
* @return 包含从用户到菜单的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
public List<Map<String, Object>> getSysMenuListWithDetail(Long userId, String menuName) {
|
||||
return sysUserMapper.getSysMenuListWithDetail(userId, menuName);
|
||||
}
|
||||
List<Map<String, Object>> getSysMenuListWithDetail(Long userId, String menuName);
|
||||
|
||||
/**
|
||||
* 验证用户对象关联的数据是否都合法。
|
||||
@@ -316,17 +167,5 @@ public class SysUserService extends BaseService<SysUser, Long> {
|
||||
* @param roleIdListString 逗号分隔的角色Id列表字符串。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
public CallResult verifyRelatedData(SysUser sysUser, SysUser originalSysUser, String roleIdListString) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
if (StringUtils.isBlank(roleIdListString)) {
|
||||
return CallResult.error("数据验证失败,用户的角色数据不能为空!");
|
||||
}
|
||||
Set<Long> roleIdSet = Arrays.stream(
|
||||
roleIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet());
|
||||
if (!sysRoleService.existAllPrimaryKeys(roleIdSet)) {
|
||||
return CallResult.error("数据验证失败,存在不合法的用户角色,请刷新后重试!");
|
||||
}
|
||||
jsonObject.put("roleIdSet", roleIdSet);
|
||||
return CallResult.ok(jsonObject);
|
||||
}
|
||||
CallResult verifyRelatedData(SysUser sysUser, SysUser originalSysUser, String roleIdListString);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
package com.orange.demo.upmsservice.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.util.MyModelUtil;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsinterface.constant.SysMenuType;
|
||||
import com.orange.demo.upmsservice.service.SysMenuService;
|
||||
import com.orange.demo.upmsservice.service.SysPermCodeService;
|
||||
import com.orange.demo.upmsservice.dao.SysMenuMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysMenuPermCodeMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysRoleMenuMapper;
|
||||
import com.orange.demo.upmsservice.model.SysMenu;
|
||||
import com.orange.demo.upmsservice.model.SysMenuPermCode;
|
||||
import com.orange.demo.upmsservice.model.SysRoleMenu;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 菜单数据服务类。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service("sysMenuService")
|
||||
public class SysMenuServiceImpl extends BaseService<SysMenu, Long> implements SysMenuService {
|
||||
|
||||
@Autowired
|
||||
private SysMenuMapper sysMenuMapper;
|
||||
@Autowired
|
||||
private SysRoleMenuMapper sysRoleMenuMapper;
|
||||
@Autowired
|
||||
private SysMenuPermCodeMapper sysMenuPermCodeMapper;
|
||||
@Autowired
|
||||
private SysPermCodeService sysPermCodeService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysMenu> mapper() {
|
||||
return sysMenuMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存新增的菜单对象。
|
||||
*
|
||||
* @param sysMenu 新增的菜单对象。
|
||||
* @param permCodeIdSet 权限字Id列表。
|
||||
* @return 新增后的菜单对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public SysMenu saveNew(SysMenu sysMenu, Set<Long> permCodeIdSet) {
|
||||
sysMenu.setMenuId(idGenerator.nextLongId());
|
||||
MyModelUtil.fillCommonsForInsert(sysMenu);
|
||||
sysMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysMenuMapper.insert(sysMenu);
|
||||
if (permCodeIdSet != null) {
|
||||
List<SysMenuPermCode> sysMenuPermCodeList = new LinkedList<>();
|
||||
for (Long permCodeId : permCodeIdSet) {
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setMenuId(sysMenu.getMenuId());
|
||||
menuPermCode.setPermCodeId(permCodeId);
|
||||
sysMenuPermCodeList.add(menuPermCode);
|
||||
}
|
||||
sysMenuPermCodeMapper.insertList(sysMenuPermCodeList);
|
||||
}
|
||||
return sysMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新菜单对象。
|
||||
*
|
||||
* @param sysMenu 更新的菜单对象。
|
||||
* @param originalSysMenu 原有的菜单对象。
|
||||
* @param permCodeIdSet 权限字Id列表。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean update(SysMenu sysMenu, SysMenu originalSysMenu, Set<Long> permCodeIdSet) {
|
||||
MyModelUtil.fillCommonsForUpdate(sysMenu, originalSysMenu);
|
||||
sysMenu.setMenuType(originalSysMenu.getMenuType());
|
||||
sysMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
if (sysMenuMapper.updateByPrimaryKey(sysMenu) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysMenuPermCode deletedMenuPermCode = new SysMenuPermCode();
|
||||
deletedMenuPermCode.setMenuId(sysMenu.getMenuId());
|
||||
sysMenuPermCodeMapper.delete(deletedMenuPermCode);
|
||||
if (permCodeIdSet != null) {
|
||||
List<SysMenuPermCode> sysMenuPermCodeList = new LinkedList<>();
|
||||
for (Long permCodeId : permCodeIdSet) {
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setMenuId(sysMenu.getMenuId());
|
||||
menuPermCode.setPermCodeId(permCodeId);
|
||||
sysMenuPermCodeList.add(menuPermCode);
|
||||
}
|
||||
sysMenuPermCodeMapper.insertList(sysMenuPermCodeList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定的菜单。
|
||||
*
|
||||
* @param menuId 菜单主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean remove(Long menuId) {
|
||||
if (!this.removeById(menuId)) {
|
||||
return false;
|
||||
}
|
||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||
roleMenu.setMenuId(menuId);
|
||||
sysRoleMenuMapper.delete(roleMenu);
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setMenuId(menuId);
|
||||
sysMenuPermCodeMapper.delete(menuPermCode);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取全部菜单列表。
|
||||
*
|
||||
* @return 全部菜单列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysMenu> getAllMenuList() {
|
||||
Example e = new Example(SysMenu.class);
|
||||
e.orderBy("menuType").orderBy("showOrder");
|
||||
Example.Criteria c = e.createCriteria();
|
||||
c.andIn("menuType", Arrays.asList(SysMenuType.TYPE_MENU, SysMenuType.TYPE_DIRECTORY));
|
||||
c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL);
|
||||
return sysMenuMapper.selectByExample(e);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定用户Id的菜单列表。
|
||||
*
|
||||
* @param userId 用户主键Id。
|
||||
* @return 用户关联的菜单列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysMenu> getMenuListByUserId(Long userId) {
|
||||
return sysMenuMapper.getMenuListByUserId(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前菜单是否存在子菜单。
|
||||
*
|
||||
* @param menuId 菜单主键Id。
|
||||
* @return 存在返回true,否则false。
|
||||
*/
|
||||
@Override
|
||||
public boolean hasChildren(Long menuId) {
|
||||
SysMenu menu = new SysMenu();
|
||||
menu.setParentId(menuId);
|
||||
return this.getCountByFilter(menu) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证菜单对象关联的数据是否都合法。
|
||||
*
|
||||
* @param sysMenu 当前操作的对象。
|
||||
* @param originalSysMenu 原有对象。
|
||||
* @param permCodeIdListString 逗号分隔的权限Id列表。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
@Override
|
||||
public CallResult verifyRelatedData(SysMenu sysMenu, SysMenu originalSysMenu, String permCodeIdListString) {
|
||||
// menu、ui fragment和button类型的menu不能没有parentId
|
||||
if (sysMenu.getParentId() == null) {
|
||||
if (sysMenu.getMenuType() != SysMenuType.TYPE_DIRECTORY) {
|
||||
return CallResult.error("数据验证失败,当前类型菜单项的上级菜单不能为空!");
|
||||
}
|
||||
}
|
||||
if (this.needToVerify(sysMenu, originalSysMenu, SysMenu::getParentId)) {
|
||||
String errorMessage = checkErrorOfNonDirectoryMenu(sysMenu);
|
||||
if (errorMessage != null) {
|
||||
return CallResult.error(errorMessage);
|
||||
}
|
||||
}
|
||||
JSONObject jsonObject = null;
|
||||
if (StringUtils.isNotBlank(permCodeIdListString)) {
|
||||
Set<Long> permCodeIdSet = Arrays.stream(
|
||||
permCodeIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet());
|
||||
if (!sysPermCodeService.existAllPrimaryKeys(permCodeIdSet)) {
|
||||
return CallResult.error("数据验证失败,存在不合法的权限字,请刷新后重试!");
|
||||
}
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("permCodeIdSet", permCodeIdSet);
|
||||
}
|
||||
return CallResult.ok(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询菜单的权限资源地址列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param menuId 菜单Id。
|
||||
* @param url 权限资源地址过滤条件。
|
||||
* @return 包含从菜单到权限资源的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysPermListWithDetail(Long menuId, String url) {
|
||||
return sysMenuMapper.getSysPermListWithDetail(menuId, url);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询菜单的用户列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param menuId 菜单Id。
|
||||
* @param loginName 登录名。
|
||||
* @return 包含从菜单到用户的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysUserListWithDetail(Long menuId, String loginName) {
|
||||
return sysMenuMapper.getSysUserListWithDetail(menuId, loginName);
|
||||
}
|
||||
|
||||
private String checkErrorOfNonDirectoryMenu(SysMenu sysMenu) {
|
||||
// 判断父节点是否存在
|
||||
SysMenu parentSysMenu = getById(sysMenu.getParentId());
|
||||
if (parentSysMenu == null) {
|
||||
return "数据验证失败,关联的上级菜单并不存在,请刷新后重试!";
|
||||
}
|
||||
// 逐个判断每种类型的菜单,他的父菜单的合法性,先从目录类型和菜单类型开始
|
||||
if (sysMenu.getMenuType() == SysMenuType.TYPE_DIRECTORY
|
||||
|| sysMenu.getMenuType() == SysMenuType.TYPE_MENU) {
|
||||
// 他们的上级只能是目录
|
||||
if (parentSysMenu.getMenuType() != SysMenuType.TYPE_DIRECTORY) {
|
||||
return "数据验证失败,当前类型菜单项的上级菜单只能是目录类型!";
|
||||
}
|
||||
} else if (sysMenu.getMenuType() == SysMenuType.TYPE_UI_FRAGMENT) {
|
||||
// ui fragment的上级只能是menu类型
|
||||
if (parentSysMenu.getMenuType() != SysMenuType.TYPE_MENU) {
|
||||
return "数据验证失败,当前类型菜单项的上级菜单只能是菜单类型和按钮类型!";
|
||||
}
|
||||
} else if (sysMenu.getMenuType() == SysMenuType.TYPE_BUTTON) {
|
||||
// button的上级只能是menu和ui fragment
|
||||
if (parentSysMenu.getMenuType() != SysMenuType.TYPE_MENU
|
||||
&& parentSysMenu.getMenuType() != SysMenuType.TYPE_UI_FRAGMENT) {
|
||||
return "数据验证失败,当前类型菜单项的上级菜单只能是菜单类型和UI片段类型!";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,213 @@
|
||||
package com.orange.demo.upmsservice.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.util.MyModelUtil;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsservice.dao.SysMenuPermCodeMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermCodeMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermCodePermMapper;
|
||||
import com.orange.demo.upmsservice.model.SysMenuPermCode;
|
||||
import com.orange.demo.upmsservice.model.SysPermCode;
|
||||
import com.orange.demo.upmsservice.model.SysPermCodePerm;
|
||||
import com.orange.demo.upmsservice.service.SysPermCodeService;
|
||||
import com.orange.demo.upmsservice.service.SysPermService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 权限字数据服务类。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service("sysPermCodeService")
|
||||
public class SysPermCodeServiceImpl extends BaseService<SysPermCode, Long> implements SysPermCodeService {
|
||||
|
||||
@Autowired
|
||||
private SysPermCodeMapper sysPermCodeMapper;
|
||||
@Autowired
|
||||
private SysPermCodePermMapper sysPermCodePermMapper;
|
||||
@Autowired
|
||||
private SysMenuPermCodeMapper sysMenuPermCodeMapper;
|
||||
@Autowired
|
||||
private SysPermService sysPermService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysPermCode> mapper() {
|
||||
return sysPermCodeMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定用户的权限字列表。
|
||||
*
|
||||
* @param userId 用户主键Id。
|
||||
* @return 用户关联的权限字列表。
|
||||
*/
|
||||
@Override
|
||||
public List<String> getPermCodeListByUserId(Long userId) {
|
||||
return sysPermCodeMapper.getPermCodeListByUserId(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存新增的权限字对象。
|
||||
*
|
||||
* @param sysPermCode 新增的权限字对象。
|
||||
* @param permIdSet 权限资源Id列表。
|
||||
* @return 新增后的权限字对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public SysPermCode saveNew(SysPermCode sysPermCode, Set<Long> permIdSet) {
|
||||
sysPermCode.setPermCodeId(idGenerator.nextLongId());
|
||||
MyModelUtil.fillCommonsForInsert(sysPermCode);
|
||||
sysPermCode.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysPermCodeMapper.insert(sysPermCode);
|
||||
if (permIdSet != null) {
|
||||
List<SysPermCodePerm> sysPermCodePermList = new LinkedList<>();
|
||||
for (Long permId : permIdSet) {
|
||||
SysPermCodePerm permCodePerm = new SysPermCodePerm();
|
||||
permCodePerm.setPermCodeId(sysPermCode.getPermCodeId());
|
||||
permCodePerm.setPermId(permId);
|
||||
sysPermCodePermList.add(permCodePerm);
|
||||
}
|
||||
sysPermCodePermMapper.insertList(sysPermCodePermList);
|
||||
}
|
||||
return sysPermCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新权限字对象。
|
||||
*
|
||||
* @param sysPermCode 更新的权限字对象。
|
||||
* @param originalSysPermCode 原有的权限字对象。
|
||||
* @param permIdSet 权限资源Id列表。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean update(SysPermCode sysPermCode, SysPermCode originalSysPermCode, Set<Long> permIdSet) {
|
||||
MyModelUtil.fillCommonsForUpdate(sysPermCode, originalSysPermCode);
|
||||
sysPermCode.setParentId(originalSysPermCode.getParentId());
|
||||
sysPermCode.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
if (sysPermCodeMapper.updateByPrimaryKey(sysPermCode) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysPermCodePerm deletedPermCodePerm = new SysPermCodePerm();
|
||||
deletedPermCodePerm.setPermCodeId(sysPermCode.getPermCodeId());
|
||||
sysPermCodePermMapper.delete(deletedPermCodePerm);
|
||||
if (permIdSet != null) {
|
||||
List<SysPermCodePerm> sysPermCodePermList = new LinkedList<>();
|
||||
for (Long permId : permIdSet) {
|
||||
SysPermCodePerm permCodePerm = new SysPermCodePerm();
|
||||
permCodePerm.setPermCodeId(sysPermCode.getPermCodeId());
|
||||
permCodePerm.setPermId(permId);
|
||||
sysPermCodePermList.add(permCodePerm);
|
||||
}
|
||||
sysPermCodePermMapper.insertList(sysPermCodePermList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定的权限字。
|
||||
*
|
||||
* @param permCodeId 权限字主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean remove(Long permCodeId) {
|
||||
if (!this.removeById(permCodeId)) {
|
||||
return false;
|
||||
}
|
||||
SysMenuPermCode menuPermCode = new SysMenuPermCode();
|
||||
menuPermCode.setPermCodeId(permCodeId);
|
||||
sysMenuPermCodeMapper.delete(menuPermCode);
|
||||
SysPermCodePerm permCodePerm = new SysPermCodePerm();
|
||||
permCodePerm.setPermCodeId(permCodeId);
|
||||
sysPermCodePermMapper.delete(permCodePerm);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前权限字是否存在下级权限字对象。
|
||||
*
|
||||
* @param permCodeId 权限字主键Id。
|
||||
* @return 存在返回true,否则false。
|
||||
*/
|
||||
@Override
|
||||
public boolean hasChildren(Long permCodeId) {
|
||||
SysPermCode permCode = new SysPermCode();
|
||||
permCode.setParentId(permCodeId);
|
||||
return this.getCountByFilter(permCode) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证权限字对象关联的数据是否都合法。
|
||||
*
|
||||
* @param sysPermCode 当前操作的对象。
|
||||
* @param originalSysPermCode 原有对象。
|
||||
* @param permIdListString 逗号分隔的权限资源Id列表。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
@Override
|
||||
public CallResult verifyRelatedData(
|
||||
SysPermCode sysPermCode, SysPermCode originalSysPermCode, String permIdListString) {
|
||||
if (this.needToVerify(sysPermCode, originalSysPermCode, SysPermCode::getParentId)) {
|
||||
if (getById(sysPermCode.getParentId()) == null) {
|
||||
return CallResult.error("数据验证失败,关联的上级权限字并不存在,请刷新后重试!");
|
||||
}
|
||||
}
|
||||
JSONObject jsonObject = null;
|
||||
if (StringUtils.isNotBlank(permIdListString)) {
|
||||
Set<Long> permIdSet = Arrays.stream(
|
||||
permIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet());
|
||||
if (!sysPermService.existAllPrimaryKeys(permIdSet)) {
|
||||
return CallResult.error("数据验证失败,存在不合法的权限资源,请刷新后重试!");
|
||||
}
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("permIdSet", permIdSet);
|
||||
}
|
||||
return CallResult.ok(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询权限字的用户列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param permCodeId 权限字Id。
|
||||
* @param loginName 登录名。
|
||||
* @return 包含从权限字到用户的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysUserListWithDetail(Long permCodeId, String loginName) {
|
||||
return sysPermCodeMapper.getSysUserListWithDetail(permCodeId, loginName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询权限字的角色列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param permCodeId 权限字Id。
|
||||
* @param roleName 角色名。
|
||||
* @return 包含从权限字到角色的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysRoleListWithDetail(Long permCodeId, String roleName) {
|
||||
return sysPermCodeMapper.getSysRoleListWithDetail(permCodeId, roleName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package com.orange.demo.upmsservice.service.impl;
|
||||
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.util.MyModelUtil;
|
||||
import com.orange.demo.upmsservice.dao.SysPermModuleMapper;
|
||||
import com.orange.demo.upmsservice.model.SysPerm;
|
||||
import com.orange.demo.upmsservice.model.SysPermModule;
|
||||
import com.orange.demo.upmsservice.service.SysPermModuleService;
|
||||
import com.orange.demo.upmsservice.service.SysPermService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 权限资源模块数据服务类。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service("sysPermModuleService")
|
||||
public class SysPermModuleServiceImpl extends BaseService<SysPermModule, Long> implements SysPermModuleService {
|
||||
|
||||
@Autowired
|
||||
private SysPermModuleMapper sysPermModuleMapper;
|
||||
@Autowired
|
||||
private SysPermService sysPermService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysPermModule> mapper() {
|
||||
return sysPermModuleMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存新增的权限资源模块对象。
|
||||
*
|
||||
* @param sysPermModule 新增的权限资源模块对象。
|
||||
* @return 新增后的权限资源模块对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public SysPermModule saveNew(SysPermModule sysPermModule) {
|
||||
sysPermModule.setModuleId(idGenerator.nextLongId());
|
||||
MyModelUtil.fillCommonsForInsert(sysPermModule);
|
||||
sysPermModule.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysPermModuleMapper.insert(sysPermModule);
|
||||
return sysPermModule;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新权限资源模块对象。
|
||||
*
|
||||
* @param sysPermModule 更新的权限资源模块对象。
|
||||
* @param originalSysPermModule 原有的权限资源模块对象。
|
||||
* @return 更新成功返回true,否则false
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean update(SysPermModule sysPermModule, SysPermModule originalSysPermModule) {
|
||||
MyModelUtil.fillCommonsForUpdate(sysPermModule, originalSysPermModule);
|
||||
sysPermModule.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
return sysPermModuleMapper.updateByPrimaryKey(sysPermModule) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定的权限资源模块。
|
||||
*
|
||||
* @param moduleId 权限资源模块主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean remove(Long moduleId) {
|
||||
return this.removeById(moduleId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限模块资源及其关联的权限资源列表。
|
||||
*
|
||||
* @return 权限资源模块及其关联的权限资源列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysPermModule> getPermModuleAndPermList() {
|
||||
return sysPermModuleMapper.getPermModuleAndPermList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否存在下级权限资源模块。
|
||||
*
|
||||
* @param moduleId 权限资源模块主键Id。
|
||||
* @return 存在返回true,否则false。
|
||||
*/
|
||||
@Override
|
||||
public boolean hasChildren(Long moduleId) {
|
||||
SysPermModule permModule = new SysPermModule();
|
||||
permModule.setParentId(moduleId);
|
||||
return this.getCountByFilter(permModule) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否存在权限数据。
|
||||
*
|
||||
* @param moduleId 权限资源模块主键Id。
|
||||
* @return 存在返回true,否则false。
|
||||
*/
|
||||
@Override
|
||||
public boolean hasModulePerms(Long moduleId) {
|
||||
SysPerm filter = new SysPerm();
|
||||
filter.setModuleId(moduleId);
|
||||
return sysPermService.getCountByFilter(filter) > 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,190 @@
|
||||
package com.orange.demo.upmsservice.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.object.MyRelationParam;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.util.MyModelUtil;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsservice.dao.SysPermCodePermMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermMapper;
|
||||
import com.orange.demo.upmsservice.model.SysPerm;
|
||||
import com.orange.demo.upmsservice.model.SysPermCodePerm;
|
||||
import com.orange.demo.upmsservice.model.SysPermModule;
|
||||
import com.orange.demo.upmsservice.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 权限资源数据服务类。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service("sysPermService")
|
||||
public class SysPermServiceImpl extends BaseService<SysPerm, Long> implements SysPermService {
|
||||
|
||||
@Autowired
|
||||
private SysPermMapper sysPermMapper;
|
||||
@Autowired
|
||||
private SysPermCodePermMapper sysPermCodePermMapper;
|
||||
@Autowired
|
||||
private SysPermModuleService sysPermModuleService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysPerm> mapper() {
|
||||
return sysPermMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存新增的权限资源对象。
|
||||
*
|
||||
* @param perm 新增的权限资源对象。
|
||||
* @return 新增后的权限资源对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public SysPerm saveNew(SysPerm perm) {
|
||||
perm.setPermId(idGenerator.nextLongId());
|
||||
MyModelUtil.fillCommonsForInsert(perm);
|
||||
perm.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysPermMapper.insert(perm);
|
||||
return perm;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新权限资源对象。
|
||||
*
|
||||
* @param perm 更新的权限资源对象。
|
||||
* @param originalPerm 原有的权限资源对象。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean update(SysPerm perm, SysPerm originalPerm) {
|
||||
MyModelUtil.fillCommonsForUpdate(perm, originalPerm);
|
||||
perm.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
return sysPermMapper.updateByPrimaryKeySelective(perm) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除权限资源。
|
||||
*
|
||||
* @param permId 权限资源主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean remove(Long permId) {
|
||||
if (!this.removeById(permId)) {
|
||||
return false;
|
||||
}
|
||||
SysPermCodePerm permCodePerm = new SysPermCodePerm();
|
||||
permCodePerm.setPermId(permId);
|
||||
sysPermCodePermMapper.delete(permCodePerm);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取权限数据列表。
|
||||
*
|
||||
* @param sysPermFilter 过滤对象。
|
||||
* @return 权限列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysPerm> getPermListWithRelation(SysPerm sysPermFilter) {
|
||||
Example e = new Example(SysPerm.class);
|
||||
e.orderBy("showOrder");
|
||||
Example.Criteria c = e.createCriteria();
|
||||
if (ObjectUtil.isNotNull(sysPermFilter.getModuleId())) {
|
||||
c.andEqualTo("moduleId", sysPermFilter.getModuleId());
|
||||
}
|
||||
if (ObjectUtil.isNotNull(sysPermFilter.getUrl())) {
|
||||
c.andLike("url", "%" + sysPermFilter.getUrl() + "%");
|
||||
}
|
||||
c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL);
|
||||
List<SysPerm> permList = sysPermMapper.selectByExample(e);
|
||||
// 这里因为权限只有字典数据,所以仅仅做字典关联。
|
||||
this.buildRelationForDataList(permList, MyRelationParam.dictOnly());
|
||||
return permList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取与指定用户关联的权限资源列表。
|
||||
*
|
||||
* @param userId 关联的用户主键Id。
|
||||
* @return 与指定用户Id关联的权限资源列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysPerm> getPermListByUserId(Long userId) {
|
||||
return sysPermMapper.getPermListByUserId(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证权限资源对象关联的数据是否都合法。
|
||||
*
|
||||
* @param sysPerm 当前操作的对象。
|
||||
* @param originalSysPerm 原有对象。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
@Override
|
||||
public CallResult verifyRelatedData(SysPerm sysPerm, SysPerm originalSysPerm) {
|
||||
if (this.needToVerify(sysPerm, originalSysPerm, SysPerm::getModuleId)) {
|
||||
SysPermModule permModule = sysPermModuleService.getById(sysPerm.getModuleId());
|
||||
if (permModule == null) {
|
||||
return CallResult.error("数据验证失败,关联的权限模块Id并不存在,请刷新后重试!");
|
||||
}
|
||||
}
|
||||
return CallResult.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询权限资源地址的用户列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param permId 权限资源Id。
|
||||
* @param loginName 登录名。
|
||||
* @return 包含从权限资源到用户的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysUserListWithDetail(Long permId, String loginName) {
|
||||
return sysPermMapper.getSysUserListWithDetail(permId, loginName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询权限资源地址的角色列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param permId 权限资源Id。
|
||||
* @param roleName 角色名。
|
||||
* @return 包含从权限资源到角色的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysRoleListWithDetail(Long permId, String roleName) {
|
||||
return sysPermMapper.getSysRoleListWithDetail(permId, roleName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询权限资源地址的菜单列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param permId 权限资源Id。
|
||||
* @param menuName 菜单名。
|
||||
* @return 包含从权限资源到菜单的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysMenuListWithDetail(Long permId, String menuName) {
|
||||
return sysPermMapper.getSysMenuListWithDetail(permId, menuName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.orange.demo.upmsservice.service.impl;
|
||||
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysPermWhitelistMapper;
|
||||
import com.orange.demo.upmsservice.model.SysPermWhitelist;
|
||||
import com.orange.demo.upmsservice.service.SysPermWhitelistService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 白名单数据服务类。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service("sysPermWhitelistService")
|
||||
public class SysPermWhitelistServiceImpl extends BaseService<SysPermWhitelist, String> implements SysPermWhitelistService {
|
||||
|
||||
@Autowired
|
||||
private SysPermWhitelistMapper sysPermWhitelistMapper;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysPermWhitelist> mapper() {
|
||||
return sysPermWhitelistMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取白名单权限资源的列表。
|
||||
*
|
||||
* @return 白名单权限资源地址列表。
|
||||
*/
|
||||
@Override
|
||||
public List<String> getWhitelistPermList() {
|
||||
List<SysPermWhitelist> dataList = this.getAllList();
|
||||
Function<SysPermWhitelist, String> getterFunc = SysPermWhitelist::getPermUrl;
|
||||
return dataList.stream()
|
||||
.filter(x -> getterFunc.apply(x) != null).map(getterFunc).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
package com.orange.demo.upmsservice.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.util.MyModelUtil;
|
||||
import com.orange.demo.common.core.object.CallResult;
|
||||
import com.orange.demo.upmsservice.dao.SysRoleMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysRoleMenuMapper;
|
||||
import com.orange.demo.upmsservice.dao.SysUserRoleMapper;
|
||||
import com.orange.demo.upmsservice.model.SysRole;
|
||||
import com.orange.demo.upmsservice.model.SysRoleMenu;
|
||||
import com.orange.demo.upmsservice.model.SysUserRole;
|
||||
import com.orange.demo.upmsservice.service.SysMenuService;
|
||||
import com.orange.demo.upmsservice.service.SysRoleService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 角色数据服务类。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service("sysRoleService")
|
||||
public class SysRoleServiceImpl extends BaseService<SysRole, Long> implements SysRoleService {
|
||||
|
||||
@Autowired
|
||||
private SysRoleMapper sysRoleMapper;
|
||||
@Autowired
|
||||
private SysRoleMenuMapper sysRoleMenuMapper;
|
||||
@Autowired
|
||||
private SysUserRoleMapper sysUserRoleMapper;
|
||||
@Autowired
|
||||
private SysMenuService sysMenuService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
|
||||
/**
|
||||
* 返回主对象的Mapper对象。
|
||||
*
|
||||
* @return 主对象的Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysRole> mapper() {
|
||||
return sysRoleMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存新增的角色对象。
|
||||
*
|
||||
* @param role 新增的角色对象。
|
||||
* @param menuIdSet 菜单Id列表。
|
||||
* @return 新增后的角色对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public SysRole saveNew(SysRole role, Set<Long> menuIdSet) {
|
||||
role.setRoleId(idGenerator.nextLongId());
|
||||
MyModelUtil.fillCommonsForInsert(role);
|
||||
role.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
sysRoleMapper.insert(role);
|
||||
if (menuIdSet != null) {
|
||||
List<SysRoleMenu> roleMenuList = new LinkedList<>();
|
||||
for (Long menuId : menuIdSet) {
|
||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||
roleMenu.setRoleId(role.getRoleId());
|
||||
roleMenu.setMenuId(menuId);
|
||||
roleMenuList.add(roleMenu);
|
||||
}
|
||||
sysRoleMenuMapper.insertList(roleMenuList);
|
||||
}
|
||||
return role;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新角色对象。
|
||||
*
|
||||
* @param role 更新的角色对象。
|
||||
* @param originalRole 原有的角色对象。
|
||||
* @param menuIdSet 菜单Id列表。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean update(SysRole role, SysRole originalRole, Set<Long> menuIdSet) {
|
||||
MyModelUtil.fillCommonsForUpdate(role, originalRole);
|
||||
role.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
if (sysRoleMapper.updateByPrimaryKey(role) != 1) {
|
||||
return false;
|
||||
}
|
||||
SysRoleMenu deletedRoleMenu = new SysRoleMenu();
|
||||
deletedRoleMenu.setRoleId(role.getRoleId());
|
||||
sysRoleMenuMapper.delete(deletedRoleMenu);
|
||||
if (menuIdSet != null) {
|
||||
List<SysRoleMenu> roleMenuList = new LinkedList<>();
|
||||
for (Long menuId : menuIdSet) {
|
||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||
roleMenu.setRoleId(role.getRoleId());
|
||||
roleMenu.setMenuId(menuId);
|
||||
roleMenuList.add(roleMenu);
|
||||
}
|
||||
sysRoleMenuMapper.insertList(roleMenuList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定角色。
|
||||
*
|
||||
* @param roleId 角色主键Id。
|
||||
* @return 删除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean remove(Long roleId) {
|
||||
if (!this.removeById(roleId)) {
|
||||
return false;
|
||||
}
|
||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||
roleMenu.setRoleId(roleId);
|
||||
sysRoleMenuMapper.delete(roleMenu);
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setRoleId(roleId);
|
||||
sysUserRoleMapper.delete(userRole);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色列表。
|
||||
*
|
||||
* @param filter 角色过滤对象。
|
||||
* @param orderBy 排序参数。
|
||||
* @return 角色列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysRole> getSysRoleList(SysRole filter, String orderBy) {
|
||||
return sysRoleMapper.getSysRoleList(filter, orderBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增用户角色关联。
|
||||
*
|
||||
* @param userRoleList 用户角色关系数据列表。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void addUserRoleList(List<SysUserRole> userRoleList) {
|
||||
sysUserRoleMapper.insertList(userRoleList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除指定用户和指定角色的关联关系。
|
||||
*
|
||||
* @param roleId 角色主键Id。
|
||||
* @param userId 用户主键Id。
|
||||
* @return 移除成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean removeUserRole(Long roleId, Long userId) {
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setRoleId(roleId);
|
||||
userRole.setUserId(userId);
|
||||
return sysUserRoleMapper.delete(userRole) == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证角色对象关联的数据是否都合法。
|
||||
*
|
||||
* @param sysRole 当前操作的对象。
|
||||
* @param originalSysRole 原有对象。
|
||||
* @param menuIdListString 逗号分隔的menuId列表。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
@Override
|
||||
public CallResult verifyRelatedData(SysRole sysRole, SysRole originalSysRole, String menuIdListString) {
|
||||
JSONObject jsonObject = null;
|
||||
if (StringUtils.isNotBlank(menuIdListString)) {
|
||||
Set<Long> menuIdSet = Arrays.stream(
|
||||
menuIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet());
|
||||
if (!sysMenuService.existAllPrimaryKeys(menuIdSet)) {
|
||||
return CallResult.error("数据验证失败,存在不合法的菜单权限,请刷新后重试!");
|
||||
}
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("menuIdSet", menuIdSet);
|
||||
}
|
||||
return CallResult.ok(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询角色的权限资源地址列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param roleId 角色Id。
|
||||
* @param url url过滤条件。
|
||||
* @return 包含从角色到权限资源的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysPermListWithDetail(Long roleId, String url) {
|
||||
return sysRoleMapper.getSysPermListWithDetail(roleId, url);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询角色的权限字列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param roleId 角色Id。
|
||||
* @param permCode 权限字名称过滤条件。
|
||||
* @return 包含从角色到权限字的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysPermCodeListWithDetail(Long roleId, String permCode) {
|
||||
return sysRoleMapper.getSysPermCodeListWithDetail(roleId, permCode);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,336 @@
|
||||
package com.orange.demo.upmsservice.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.orange.demo.upmsservice.service.*;
|
||||
import com.orange.demo.upmsservice.dao.*;
|
||||
import com.orange.demo.upmsservice.model.*;
|
||||
import com.orange.demo.common.core.util.*;
|
||||
import com.orange.demo.common.core.object.*;
|
||||
import com.orange.demo.common.core.constant.GlobalDeletedFlag;
|
||||
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
|
||||
import com.orange.demo.common.core.base.service.BaseService;
|
||||
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
|
||||
import com.orange.demo.upmsinterface.constant.SysUserStatus;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 用户管理数据操作服务类。
|
||||
*
|
||||
* @author Jerry
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Service("sysUserService")
|
||||
public class SysUserServiceImpl extends BaseService<SysUser, Long> implements SysUserService {
|
||||
|
||||
@Autowired
|
||||
private SysUserMapper sysUserMapper;
|
||||
@Autowired
|
||||
private SysUserRoleMapper sysUserRoleMapper;
|
||||
@Autowired
|
||||
private SysPermService sysPermService;
|
||||
@Autowired
|
||||
private SysRoleService sysRoleService;
|
||||
@Autowired
|
||||
private IdGeneratorWrapper idGenerator;
|
||||
@Autowired
|
||||
private PasswordEncoder passwordEncoder;
|
||||
|
||||
/**
|
||||
* 返回当前Service的主表Mapper对象。
|
||||
*
|
||||
* @return 主表Mapper对象。
|
||||
*/
|
||||
@Override
|
||||
protected BaseDaoMapper<SysUser> mapper() {
|
||||
return sysUserMapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定登录名的用户对象。
|
||||
*
|
||||
* @param loginName 指定登录用户名。
|
||||
* @return 用户对象。
|
||||
*/
|
||||
@Override
|
||||
public SysUser getSysUserByLoginName(String loginName) {
|
||||
Example e = new Example(SysUser.class);
|
||||
Example.Criteria c = e.createCriteria();
|
||||
c.andEqualTo("loginName", loginName);
|
||||
c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL);
|
||||
return sysUserMapper.selectOneByExample(e);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存新增的用户对象。
|
||||
*
|
||||
* @param user 新增的用户对象。
|
||||
* @param roleIdSet 用户角色Id集合。
|
||||
* @return 新增后的用户对象。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public SysUser saveNew(SysUser user, Set<Long> roleIdSet) {
|
||||
user.setUserId(idGenerator.nextLongId());
|
||||
user.setPassword(passwordEncoder.encode(user.getPassword()));
|
||||
user.setUserStatus(SysUserStatus.STATUS_NORMAL);
|
||||
user.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
MyModelUtil.fillCommonsForInsert(user);
|
||||
sysUserMapper.insert(user);
|
||||
if (CollectionUtils.isNotEmpty(roleIdSet)) {
|
||||
List<SysUserRole> userRoleList = new LinkedList<>();
|
||||
for (Long roleId : roleIdSet) {
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setUserId(user.getUserId());
|
||||
userRole.setRoleId(roleId);
|
||||
userRoleList.add(userRole);
|
||||
}
|
||||
sysUserRoleMapper.insertList(userRoleList);
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户对象。
|
||||
*
|
||||
* @param user 更新的用户对象。
|
||||
* @param originalUser 原有的用户对象。
|
||||
* @param roleIdSet 用户角色Id列表。
|
||||
* @return 更新成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean update(SysUser user, SysUser originalUser, Set<Long> roleIdSet) {
|
||||
user.setLoginName(originalUser.getLoginName());
|
||||
user.setPassword(originalUser.getPassword());
|
||||
MyModelUtil.fillCommonsForUpdate(user, originalUser);
|
||||
user.setDeletedFlag(GlobalDeletedFlag.NORMAL);
|
||||
if (sysUserMapper.updateByPrimaryKey(user) != 1) {
|
||||
return false;
|
||||
}
|
||||
// 先删除原有的User-Role关联关系,再重新插入新的关联关系
|
||||
SysUserRole deletedUserRole = new SysUserRole();
|
||||
deletedUserRole.setUserId(user.getUserId());
|
||||
sysUserRoleMapper.delete(deletedUserRole);
|
||||
if (CollectionUtils.isNotEmpty(roleIdSet)) {
|
||||
List<SysUserRole> userRoleList = new LinkedList<>();
|
||||
for (Long roleId : roleIdSet) {
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setUserId(user.getUserId());
|
||||
userRole.setRoleId(roleId);
|
||||
userRoleList.add(userRole);
|
||||
}
|
||||
sysUserRoleMapper.insertList(userRoleList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置用户密码。
|
||||
* @param userId 用户主键Id。
|
||||
* @param newPass 新密码。
|
||||
* @return 成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean changePassword(Long userId, String newPass) {
|
||||
Example e = new Example(SysUser.class);
|
||||
e.createCriteria()
|
||||
.andEqualTo(super.idFieldName, userId)
|
||||
.andEqualTo(super.deletedFlagFieldName, GlobalDeletedFlag.NORMAL);
|
||||
SysUser updatedUser = new SysUser();
|
||||
updatedUser.setPassword(passwordEncoder.encode(newPass));
|
||||
return sysUserMapper.updateByExampleSelective(updatedUser, e) == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除指定数据。
|
||||
*
|
||||
* @param userId 主键Id。
|
||||
* @return 成功返回true,否则false。
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean remove(Long userId) {
|
||||
// 这里先删除主数据
|
||||
if (!this.removeById(userId)) {
|
||||
return false;
|
||||
}
|
||||
SysUserRole userRole = new SysUserRole();
|
||||
userRole.setUserId(userId);
|
||||
sysUserRoleMapper.delete(userRole);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
|
||||
* 如果需要同时获取关联数据,请移步(getSysUserListWithRelation)方法。
|
||||
*
|
||||
* @param filter 过滤对象。
|
||||
* @param orderBy 排序参数。
|
||||
* @return 查询结果集。
|
||||
*/
|
||||
@Override
|
||||
public List<SysUser> getSysUserList(SysUser filter, String orderBy) {
|
||||
return sysUserMapper.getSysUserList(null, null, filter, orderBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。
|
||||
* 由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
|
||||
* 如果需要同时获取关联数据,请移步(getSysUserListWithRelation)方法。
|
||||
*
|
||||
* @param inFilterField (In-list)指定的字段(Java成员字段,而非数据列名)。
|
||||
* @param inFilterValues inFilterField指定字段的(In-list)数据列表。
|
||||
* @param filter 过滤对象。
|
||||
* @param orderBy 排序参数。
|
||||
* @return 查询结果集。
|
||||
*/
|
||||
@Override
|
||||
public <M> List<SysUser> getSysUserList(
|
||||
String inFilterField, Set<M> inFilterValues, SysUser filter, String orderBy) {
|
||||
String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, SysUser.class);
|
||||
return sysUserMapper.getSysUserList(inFilterColumn, inFilterValues, filter, orderBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
|
||||
* 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。
|
||||
* 如果仅仅需要获取主表数据,请移步(getSysUserList),以便获取更好的查询性能。
|
||||
*
|
||||
* @param filter 主表过滤对象。
|
||||
* @param orderBy 排序对象。
|
||||
* @return 查询结果集。
|
||||
*/
|
||||
@Override
|
||||
public List<SysUser> getSysUserListWithRelation(SysUser filter, String orderBy) {
|
||||
List<SysUser> resultList = sysUserMapper.getSysUserList(null, null, filter, orderBy);
|
||||
this.buildRelationForDataList(resultList, MyRelationParam.normal());
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。
|
||||
* 同时还包含主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
|
||||
* 如果仅仅需要获取主表数据,请移步(getSysUserList),以便获取更好的查询性能。
|
||||
*
|
||||
* @param inFilterField (In-list)指定的字段(Java成员字段,而非数据列名)。
|
||||
* @param inFilterValues inFilterField指定字段的(In-list)数据列表。
|
||||
* @param filter 主表过滤对象。
|
||||
* @param orderBy 排序对象。
|
||||
* @return 查询结果集。
|
||||
*/
|
||||
@Override
|
||||
public <M> List<SysUser> getSysUserListWithRelation(
|
||||
String inFilterField, Set<M> inFilterValues, SysUser filter, String orderBy) {
|
||||
List<SysUser> resultList =
|
||||
sysUserMapper.getSysUserList(inFilterField, inFilterValues, filter, orderBy);
|
||||
this.buildRelationForDataList(resultList, MyRelationParam.dictOnly());
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定用户的权限集合。
|
||||
*
|
||||
* @param userId 用户主键Id。
|
||||
* @return 用户权限集合。
|
||||
*/
|
||||
@Override
|
||||
public Set<String> getSysPermSetByUserId(Long userId) {
|
||||
List<SysPerm> permList = sysPermService.getPermListByUserId(userId);
|
||||
return permList.stream().map(SysPerm::getUrl).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定角色的用户列表。
|
||||
*
|
||||
* @param roleId 角色主键Id。
|
||||
* @param filter 用户过滤对象。
|
||||
* @param orderBy 排序参数。
|
||||
* @return 用户列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysUser> getSysUserListByRoleId(Long roleId, SysUser filter, String orderBy) {
|
||||
return sysUserMapper.getSysUserListByRoleId(roleId, filter, orderBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取不属于指定角色的用户列表。
|
||||
*
|
||||
* @param roleId 角色主键Id。
|
||||
* @param filter 用户过滤对象。
|
||||
* @param orderBy 排序参数。
|
||||
* @return 用户列表。
|
||||
*/
|
||||
@Override
|
||||
public List<SysUser> getNotInSysUserListByRoleId(Long roleId, SysUser filter, String orderBy) {
|
||||
return sysUserMapper.getNotInSysUserListByRoleId(roleId, filter, orderBy);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户的权限资源地址列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param userId 用户Id。
|
||||
* @param url url过滤条件。
|
||||
* @return 包含从用户到权限资源的完整权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysPermListWithDetail(Long userId, String url) {
|
||||
return sysUserMapper.getSysPermListWithDetail(userId, url);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户的权限字列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param userId 用户Id。
|
||||
* @param permCode 权限字名称过滤条件。
|
||||
* @return 包含从用户到权限字的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysPermCodeListWithDetail(Long userId, String permCode) {
|
||||
return sysUserMapper.getSysPermCodeListWithDetail(userId, permCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户的菜单列表。同时返回详细的分配路径。
|
||||
*
|
||||
* @param userId 用户Id。
|
||||
* @param menuName 菜单名称过滤条件。
|
||||
* @return 包含从用户到菜单的权限分配路径信息的查询结果列表。
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getSysMenuListWithDetail(Long userId, String menuName) {
|
||||
return sysUserMapper.getSysMenuListWithDetail(userId, menuName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证用户对象关联的数据是否都合法。
|
||||
*
|
||||
* @param sysUser 当前操作的对象。
|
||||
* @param originalSysUser 原有对象。
|
||||
* @param roleIdListString 逗号分隔的角色Id列表字符串。
|
||||
* @return 验证结果。
|
||||
*/
|
||||
@Override
|
||||
public CallResult verifyRelatedData(SysUser sysUser, SysUser originalSysUser, String roleIdListString) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
if (StringUtils.isBlank(roleIdListString)) {
|
||||
return CallResult.error("数据验证失败,用户的角色数据不能为空!");
|
||||
}
|
||||
Set<Long> roleIdSet = Arrays.stream(
|
||||
roleIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet());
|
||||
if (!sysRoleService.existAllPrimaryKeys(roleIdSet)) {
|
||||
return CallResult.error("数据验证失败,存在不合法的用户角色,请刷新后重试!");
|
||||
}
|
||||
jsonObject.put("roleIdSet", roleIdSet);
|
||||
return CallResult.ok(jsonObject);
|
||||
}
|
||||
}
|
||||
@@ -82,12 +82,12 @@
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-extra:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-autoconfigure:2.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.1.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" />
|
||||
<orderEntry type="module" module-name="application-common" />
|
||||
<orderEntry type="module" module-name="common-swagger" />
|
||||
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.5" level="project" />
|
||||
|
||||
Reference in New Issue
Block a user