Commit a183d7ef by huangjinxin

用户和角色相关

1 parent a11d8082
package com.dituhui.pea.pojo; package com.dituhui.pea.pojo;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.dituhui.pea.pojo.role.RoleResourceInfo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 角色信息 * 角色信息
...@@ -47,4 +48,6 @@ public class RoleInfo { ...@@ -47,4 +48,6 @@ public class RoleInfo {
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updatedTime; private Date updatedTime;
private List<RoleResourceInfo> resourceInfos;
} }
...@@ -8,9 +8,11 @@ import javax.validation.constraints.Max; ...@@ -8,9 +8,11 @@ import javax.validation.constraints.Max;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 用户信息 * 用户信息
*
* @author zl * @author zl
*/ */
@Data @Data
...@@ -82,6 +84,18 @@ public class UserInfo { ...@@ -82,6 +84,18 @@ public class UserInfo {
*/ */
private String extra; private String extra;
/** /**
* 组织ids
*/
private List<String> orgIds;
/**
* 组织级别 0:大区 1:分部 2:站点
*/
private Integer orgLevel;
/**
* 角色id
*/
private List<String> roleIds;
/**
* 创建人 * 创建人
*/ */
//private String createdBy; //private String createdBy;
......
package com.dituhui.pea.pojo;
import com.dituhui.pea.validated.Phone;
import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 用户信息
*
* @author zl
*/
@Data
public class UserInfoSearch extends PageRequest implements Serializable {
/**
* 主键
*/
private String id;
/**
* 账号
*/
private String account;
/**
* 昵称
*/
private String nickname;
/**
* 邮箱
*/
private String email;
/**
* 电话
*/
private String phone;
/**
* 生日
*/
private String birthday;
/**
* 地区
*/
private String region;
/**
* 性别
*/
private Integer sex;
/**
* 头像
*/
private String avatar;
private String wechat;
private String qq;
private String weibo;
/**
* 最后登录时间
*/
//private Date lastLoginTime;
/**
* 用户自定义条件
*/
private String extra;
/**
* 角色id
*/
private String roleId;
/**
* 用户来源:0:bean 1:新建
*/
private Integer source;
/**
* 模糊查询字段
*/
private String queryString;
/**
* 工程师工号
*/
private String engineerCode;
/**
* 是否禁用 0: 否 1:是 默认0
*/
private Integer ban;
/**
* 创建人
*/
//private String createdBy;
/**
* 创建时间
*/
// private Date createdTime;
/**
* 更新人
*/
//private String updatedBy;
/**
* 更新时间
*/
// private Date updatedTime;
}
package com.dituhui.pea.pojo.role;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 角色资源表(RoleResourceEntity)实体类
*
*/
@Data
public class RoleResourceInfo implements Serializable {
/**
* 主键
*/
private String id;
/**
* 角色id
*/
private String roleId;
/**
* 资源id
*/
private String resourceId;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}
package com.dituhui.pea.pojo.role;
import java.util.Date;
public class UserRoleInfo {
/**
* 主键
*/
private String id;
/**
* 用户id
*/
private String userId;
/**
* 角色id
*/
private String roleId;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}
...@@ -5,6 +5,7 @@ import com.dituhui.pea.pojo.PageRequest; ...@@ -5,6 +5,7 @@ import com.dituhui.pea.pojo.PageRequest;
import com.dituhui.pea.pojo.ResourceInfo; import com.dituhui.pea.pojo.ResourceInfo;
import com.dituhui.pea.pojo.RoleInfo; import com.dituhui.pea.pojo.RoleInfo;
import com.dituhui.pea.pojo.WebResult; import com.dituhui.pea.pojo.WebResult;
import com.dituhui.pea.pojo.role.UserRoleInfo;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -12,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -12,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/** /**
* 角色相关接口 * 角色相关接口
*/ */
...@@ -27,6 +30,16 @@ public interface IRole { ...@@ -27,6 +30,16 @@ public interface IRole {
@RequestMapping(value = "/v1/role/add", method = RequestMethod.POST) @RequestMapping(value = "/v1/role/add", method = RequestMethod.POST)
WebResult<RoleInfo> addRole(@RequestBody RoleInfo roleInfo); WebResult<RoleInfo> addRole(@RequestBody RoleInfo roleInfo);
/**
* 修改角色
*
* @param roleInfo 角色信息
* @return
*/
@RequestMapping(value = "/v1/role/update", method = RequestMethod.POST)
WebResult<RoleInfo> updateRole(@RequestBody RoleInfo roleInfo);
/** /**
* 删除角色 * 删除角色
* *
...@@ -113,4 +126,22 @@ public interface IRole { ...@@ -113,4 +126,22 @@ public interface IRole {
*/ */
@RequestMapping(value = "/v1/role/list", method = RequestMethod.GET) @RequestMapping(value = "/v1/role/list", method = RequestMethod.GET)
WebResult<PageResult<RoleInfo>> listRole(PageRequest pageRequest); WebResult<PageResult<RoleInfo>> listRole(PageRequest pageRequest);
/**
* 获取用户角色权限列表
*
* @param roleId 用户id
* @return
*/
@RequestMapping(value = "/v1/role/info", method = RequestMethod.GET)
WebResult<RoleInfo> info(@RequestParam("roleId") String roleId);
/**
* 获取用户角色权限列表
*
* @param userId 用户id
* @return
*/
@RequestMapping(value = "/v1/role/allResource", method = RequestMethod.GET)
WebResult<List<ResourceInfo>> allResource();
} }
package com.dituhui.pea.user; package com.dituhui.pea.user;
import com.dituhui.pea.common.PageResult;
import com.dituhui.pea.pojo.*;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
...@@ -9,11 +11,6 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -9,11 +11,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.enums.ThirdPartyEnum; import com.dituhui.pea.enums.ThirdPartyEnum;
import com.dituhui.pea.pojo.ThirdUserInfo;
import com.dituhui.pea.pojo.UserInfo;
import com.dituhui.pea.pojo.UserLoginDTO;
import com.dituhui.pea.pojo.UserLoginParam;
import com.dituhui.pea.pojo.WebResult;
/** /**
* 用户相关接口 * 用户相关接口
...@@ -21,19 +18,19 @@ import com.dituhui.pea.pojo.WebResult; ...@@ -21,19 +18,19 @@ import com.dituhui.pea.pojo.WebResult;
*/ */
@FeignClient(value = "project-user", contextId = "user") @FeignClient(value = "project-user", contextId = "user")
public interface IUser { public interface IUser {
/** /**
* 登录接口 * 登录接口
* *
* @param user * @param user
* @return * @return
*/ */
@RequestMapping(value = "/pea-user/login", method = RequestMethod.POST) @RequestMapping(value = "/pea-user/login", method = RequestMethod.POST)
public Result<UserLoginDTO> userLogin(@RequestBody UserLoginParam user); public Result<UserLoginDTO> userLogin(@RequestBody UserLoginParam user);
/** /**
* 获取用户信息 * 获取用户信息
* *
* @param userId * @param userId
* @return * @return
*/ */
...@@ -43,7 +40,7 @@ public interface IUser { ...@@ -43,7 +40,7 @@ public interface IUser {
/** /**
* 刷新appkey接口<br> * 刷新appkey接口<br>
* 初始化系统ak缓存,例如系统上线,新ak入库的时候 * 初始化系统ak缓存,例如系统上线,新ak入库的时候
* *
* @return * @return
*/ */
@RequestMapping(value = "/pea-user/refreshAppkey", method = RequestMethod.POST) @RequestMapping(value = "/pea-user/refreshAppkey", method = RequestMethod.POST)
...@@ -138,4 +135,22 @@ public interface IUser { ...@@ -138,4 +135,22 @@ public interface IUser {
@RequestMapping(value = "/pea-user/thirdRegister", method = RequestMethod.POST) @RequestMapping(value = "/pea-user/thirdRegister", method = RequestMethod.POST)
WebResult<UserInfo> thirdRegister(@RequestBody ThirdUserInfo thirdUserInfo); WebResult<UserInfo> thirdRegister(@RequestBody ThirdUserInfo thirdUserInfo);
/**
* 用户列表
* @param search 查询条件
* @return
*/
@RequestMapping(value = "/pea-user/list", method = RequestMethod.GET)
WebResult<PageResult<UserInfoSearch>> list(UserInfoSearch search);
/**
* 禁用用户
* @param search 查询条件
* @return
*/
@RequestMapping(value = "/pea-user/ban", method = RequestMethod.GET)
WebResult<Boolean> ban(UserInfoSearch search);
} }
...@@ -6,14 +6,20 @@ import com.dituhui.pea.pojo.PageRequest; ...@@ -6,14 +6,20 @@ import com.dituhui.pea.pojo.PageRequest;
import com.dituhui.pea.pojo.ResourceInfo; import com.dituhui.pea.pojo.ResourceInfo;
import com.dituhui.pea.pojo.RoleInfo; import com.dituhui.pea.pojo.RoleInfo;
import com.dituhui.pea.pojo.WebResult; import com.dituhui.pea.pojo.WebResult;
import com.dituhui.pea.pojo.role.RoleResourceInfo;
import com.dituhui.pea.pojo.role.UserRoleInfo;
import com.dituhui.pea.user.IRole; import com.dituhui.pea.user.IRole;
import com.dituhui.pea.user.entity.UserRoleEntity;
import com.dituhui.pea.user.service.RoleService; import com.dituhui.pea.user.service.RoleService;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* 角色控制层 * 角色控制层
*/ */
...@@ -31,6 +37,13 @@ public class RoleController implements IRole { ...@@ -31,6 +37,13 @@ public class RoleController implements IRole {
return WebResult.ok(roleInfo); return WebResult.ok(roleInfo);
} }
@Override
public WebResult<RoleInfo> updateRole(@Validated RoleInfo roleInfo) {
roleInfo = roleService.updateRole(roleInfo);
return WebResult.ok(roleInfo);
}
@Override @Override
public WebResult<Boolean> deleteRole(String roleId) { public WebResult<Boolean> deleteRole(String roleId) {
if (StringUtils.isBlank(roleId)) { if (StringUtils.isBlank(roleId)) {
...@@ -107,4 +120,18 @@ public class RoleController implements IRole { ...@@ -107,4 +120,18 @@ public class RoleController implements IRole {
} }
@Override
public WebResult<RoleInfo> info(String roleId) {
RoleInfo result = roleService.info(roleId);
return WebResult.ok(result);
}
@Override
public WebResult<List<ResourceInfo>> allResource() {
List<ResourceInfo> result = roleService.allResource();
return WebResult.ok(result);
}
} }
package com.dituhui.pea.user.controller; package com.dituhui.pea.user.controller;
import com.dituhui.pea.common.PageResult;
import com.dituhui.pea.pojo.*;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
...@@ -9,11 +11,6 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -9,11 +11,6 @@ import org.springframework.web.bind.annotation.RestController;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.enums.StatusCodeEnum; import com.dituhui.pea.enums.StatusCodeEnum;
import com.dituhui.pea.enums.ThirdPartyEnum; import com.dituhui.pea.enums.ThirdPartyEnum;
import com.dituhui.pea.pojo.ThirdUserInfo;
import com.dituhui.pea.pojo.UserInfo;
import com.dituhui.pea.pojo.UserLoginDTO;
import com.dituhui.pea.pojo.UserLoginParam;
import com.dituhui.pea.pojo.WebResult;
import com.dituhui.pea.user.IUser; import com.dituhui.pea.user.IUser;
import com.dituhui.pea.user.service.UserService; import com.dituhui.pea.user.service.UserService;
...@@ -21,7 +18,6 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -21,7 +18,6 @@ import cn.hutool.core.util.ObjectUtil;
/** /**
* 用户控制层 * 用户控制层
*
*/ */
@RestController @RestController
public class UserController implements IUser { public class UserController implements IUser {
...@@ -30,19 +26,19 @@ public class UserController implements IUser { ...@@ -30,19 +26,19 @@ public class UserController implements IUser {
private UserService userService; private UserService userService;
@Override @Override
public Result<UserLoginDTO> userLogin(UserLoginParam user) { public Result<UserLoginDTO> userLogin(UserLoginParam user) {
return userService.userLogin(user.getAccount(), user.getPassword()); return userService.userLogin(user.getAccount(), user.getPassword());
} }
@Override @Override
public Result<UserLoginDTO> getUserInfo(String userId) { public Result<UserLoginDTO> getUserInfo(String userId) {
return userService.getUserInfo(userId); return userService.getUserInfo(userId);
} }
@Override @Override
public Result<Boolean> refreshAppkey() { public Result<Boolean> refreshAppkey() {
return userService.refreshAppkey(); return userService.refreshAppkey();
} }
@Override @Override
public WebResult<UserInfo> getCurrentUserInfo(String userToken, Boolean needTeamInfo) { public WebResult<UserInfo> getCurrentUserInfo(String userToken, Boolean needTeamInfo) {
...@@ -69,12 +65,12 @@ public class UserController implements IUser { ...@@ -69,12 +65,12 @@ public class UserController implements IUser {
@Override @Override
public WebResult<UserInfo> queryUserByPhone(String phone) { public WebResult<UserInfo> queryUserByPhone(String phone) {
System.out.println("queryUserByPhone ["+phone+"]"); System.out.println("queryUserByPhone [" + phone + "]");
if (StringUtils.isBlank(phone)) { if (StringUtils.isBlank(phone)) {
return WebResult.failed(StatusCodeEnum.COMMON_PARAM_EMPTY); return WebResult.failed(StatusCodeEnum.COMMON_PARAM_EMPTY);
} }
UserInfo userInfo = userService.queryUserByPhone(phone); UserInfo userInfo = userService.queryUserByPhone(phone);
System.out.println("queryUserByPhone UserInfo ["+userInfo+"]"); System.out.println("queryUserByPhone UserInfo [" + userInfo + "]");
return WebResult.ok(userInfo); return WebResult.ok(userInfo);
} }
...@@ -135,4 +131,30 @@ public class UserController implements IUser { ...@@ -135,4 +131,30 @@ public class UserController implements IUser {
return WebResult.ok(userInfo); return WebResult.ok(userInfo);
} }
/**
* 用户列表
*
* @param search 查询条件
* @return
*/
@Override
public WebResult<PageResult<UserInfoSearch>> list(UserInfoSearch search) {
PageResult<UserInfoSearch> result = userService.list(search);
return WebResult.ok(result);
}
/**
* 禁用用户
*
* @param search 查询条件
* @return
*/
@Override
public WebResult<Boolean> ban(UserInfoSearch search) {
userService.ban(search);
return WebResult.ok();
}
} }
...@@ -33,6 +33,14 @@ public interface RoleResourceDao extends JpaRepository<RoleResourceEntity, Strin ...@@ -33,6 +33,14 @@ public interface RoleResourceDao extends JpaRepository<RoleResourceEntity, Strin
List<RoleResourceEntity> findByRoleIdIn(List<String> roleIds); List<RoleResourceEntity> findByRoleIdIn(List<String> roleIds);
/** /**
* 根据角色ID查询
*
* @param roleIds 角色ID
* @return
*/
List<RoleResourceEntity> findByRoleId(String roleId);
/**
* 根据角色ID删除对应的资源关系 * 根据角色ID删除对应的资源关系
* *
* @param roleId 角色ID * @param roleId 角色ID
......
package com.dituhui.pea.user.dao;
import com.dituhui.pea.user.entity.UserOrgEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;
/**
* 用户组织关联表
*/
public interface UserOrgDao extends JpaRepository<UserOrgEntity, String>, JpaSpecificationExecutor<UserOrgEntity>,
CrudRepository<UserOrgEntity, String> {
/**
* 根据用户id查询
*
* @param id
* @return
*/
UserOrgEntity findByUserId(String id);
void deleteByUserId(String userId);
}
...@@ -19,13 +19,15 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>, ...@@ -19,13 +19,15 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>,
/** /**
* 根据角色ID查询 * 根据角色ID查询
*
* @param roleId 角色ID * @param roleId 角色ID
* @return * @return
*/ */
List<UserRoleEntity> findByRoleId(String roleId); List<UserRoleEntity> findByRoleId(String roleId);
/** /**
* 根据用户ID查询 * 根据用户ID查询
*
* @param roleId 角色ID * @param roleId 角色ID
* @return * @return
*/ */
...@@ -33,6 +35,7 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>, ...@@ -33,6 +35,7 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>,
/** /**
* 根据角色ID和用户ID删除 * 根据角色ID和用户ID删除
*
* @param roleId 角色ID * @param roleId 角色ID
* @param userId 用户ID * @param userId 用户ID
*/ */
...@@ -41,8 +44,16 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>, ...@@ -41,8 +44,16 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>,
/** /**
* 根据角色ID删除 * 根据角色ID删除
*
* @param roleId 角色ID * @param roleId 角色ID
*/ */
void deleteByRoleId(String roleId); void deleteByRoleId(String roleId);
/**
* 根据用户ID删除
*
* @param userId 角色ID
*/
void deleteByUserId(String userId);
} }
...@@ -12,11 +12,10 @@ import java.util.Date; ...@@ -12,11 +12,10 @@ import java.util.Date;
/** /**
* 用户表(UserEntity)实体类 * 用户表(UserEntity)实体类
*
*/ */
@Data @Data
@Entity @Entity
@Table(name ="sys_user") @Table(name = "sys_user")
@EntityListeners(AuditingEntityListener.class) @EntityListeners(AuditingEntityListener.class)
public class UserEntity implements Serializable { public class UserEntity implements Serializable {
private static final long serialVersionUID = 595672857439664430L; private static final long serialVersionUID = 595672857439664430L;
...@@ -114,4 +113,21 @@ public class UserEntity implements Serializable { ...@@ -114,4 +113,21 @@ public class UserEntity implements Serializable {
@LastModifiedDate @LastModifiedDate
private Date updatedTime; private Date updatedTime;
/**
* 是否禁用 0: 否 1:是 默认0
*/
@Column(name = "ban")
private Integer ban = 0;
/**
* 用户来源:0:bean 1:新建
*/
@Column(name = "source")
private Integer source;
/**
* 工程师工号
*/
@Column(name = "engineer_code")
private String engineerCode;
} }
package com.dituhui.pea.user.entity;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@Table(name = "sys_user_org")
@Data
@Accessors(chain = true)
public class UserOrgEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "user_id", nullable = false, unique = true)
private String userId;
@Column(name = "org_ids", nullable = false)
private String orgIds;
@Column(name = "org_ids", nullable = false)
private Integer teamType = 1;
/**
* 组织级别 0:大区 1:分部 2:站点
*/
@Column(name = "org_level", nullable = false)
private Integer orgLevel;
@Column(name = "create_time", nullable = false, updatable = false, columnDefinition = "timestamp default current_timestamp")
private LocalDateTime createTime;
@Column(name = "update_time", nullable = false, columnDefinition = "timestamp default current_timestamp on update current_timestamp")
private LocalDateTime updateTime;
}
...@@ -9,18 +9,22 @@ import com.dituhui.pea.exception.BusinessException; ...@@ -9,18 +9,22 @@ import com.dituhui.pea.exception.BusinessException;
import com.dituhui.pea.pojo.PageRequest; import com.dituhui.pea.pojo.PageRequest;
import com.dituhui.pea.pojo.ResourceInfo; import com.dituhui.pea.pojo.ResourceInfo;
import com.dituhui.pea.pojo.RoleInfo; import com.dituhui.pea.pojo.RoleInfo;
import com.dituhui.pea.pojo.role.RoleResourceInfo;
import com.dituhui.pea.user.dao.*; import com.dituhui.pea.user.dao.*;
import com.dituhui.pea.user.entity.*; import com.dituhui.pea.user.entity.*;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 角色业务层 * 角色业务层
...@@ -50,6 +54,31 @@ public class RoleService { ...@@ -50,6 +54,31 @@ public class RoleService {
public RoleInfo addRole(RoleInfo roleInfo) { public RoleInfo addRole(RoleInfo roleInfo) {
RoleEntity roleEntity = BeanUtil.copyProperties(roleInfo, RoleEntity.class); RoleEntity roleEntity = BeanUtil.copyProperties(roleInfo, RoleEntity.class);
roleEntity = roleDao.save(roleEntity); roleEntity = roleDao.save(roleEntity);
List<RoleResourceInfo> resourceInfos = roleInfo.getResourceInfos();
if (CollectionUtils.isNotEmpty(resourceInfos)) {
for (RoleResourceInfo resourceInfo : resourceInfos) {
RoleResourceEntity roleResourceEntity = assembleRoleResource(roleEntity.getId(), resourceInfo.getResourceId());
roleResourceDao.save(roleResourceEntity);
}
}
roleInfo = BeanUtil.copyProperties(roleEntity, RoleInfo.class);
return roleInfo;
}
@Transactional(rollbackFor = Exception.class)
public RoleInfo updateRole(RoleInfo roleInfo) {
RoleEntity roleEntity = BeanUtil.copyProperties(roleInfo, RoleEntity.class);
roleEntity = roleDao.save(roleEntity);
List<RoleResourceInfo> resourceInfos = roleInfo.getResourceInfos();
if (CollectionUtils.isNotEmpty(resourceInfos)) {
for (RoleResourceInfo resourceInfo : resourceInfos) {
// 先清除
roleResourceDao.deleteByRoleId(roleEntity.getId());
RoleResourceEntity roleResourceEntity = assembleRoleResource(roleEntity.getId(), resourceInfo.getResourceId());
roleResourceDao.save(roleResourceEntity);
}
}
roleInfo = BeanUtil.copyProperties(roleEntity, RoleInfo.class); roleInfo = BeanUtil.copyProperties(roleEntity, RoleInfo.class);
return roleInfo; return roleInfo;
} }
...@@ -65,6 +94,8 @@ public class RoleService { ...@@ -65,6 +94,8 @@ public class RoleService {
roleDao.deleteById(roleId); roleDao.deleteById(roleId);
// 删除用户和角色的关系 // 删除用户和角色的关系
userRoleDao.deleteByRoleId(roleId); userRoleDao.deleteByRoleId(roleId);
// 删除权限和角色的关系
roleResourceDao.deleteByRoleId(roleId);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -196,7 +227,8 @@ public class RoleService { ...@@ -196,7 +227,8 @@ public class RoleService {
public PageResult<RoleInfo> listRole(PageRequest pageRequest) { public PageResult<RoleInfo> listRole(PageRequest pageRequest) {
Pageable pageable = org.springframework.data.domain.PageRequest.of(pageRequest.getPage() - 1, pageRequest.getSize()); Sort sort = Sort.by(Sort.Order.desc("createdTime"));
Pageable pageable = org.springframework.data.domain.PageRequest.of(pageRequest.getPage() - 1, pageRequest.getSize(), sort);
Page<RoleEntity> page = roleDao.findAll(pageable); Page<RoleEntity> page = roleDao.findAll(pageable);
List<RoleInfo> roleInfos = new ArrayList<>(); List<RoleInfo> roleInfos = new ArrayList<>();
for (RoleEntity role : page.getContent()) { for (RoleEntity role : page.getContent()) {
...@@ -210,4 +242,28 @@ public class RoleService { ...@@ -210,4 +242,28 @@ public class RoleService {
result.setTotalPage(page.getTotalPages()); result.setTotalPage(page.getTotalPages());
return result; return result;
} }
/**
* 获取用户下所有角色权限
*
* @param roleId
* @return
*/
public RoleInfo info(String roleId) {
// 判断角色是否存在
RoleEntity roleEntity = roleDao.findById(roleId).orElse(null);
if (ObjectUtil.isNull(roleEntity)) {
throw new BusinessException(StatusCodeEnum.ROLE_DOES_NOT_EXIST);
}
RoleInfo roleInfo = BeanUtil.copyProperties(roleEntity, RoleInfo.class);
List<RoleResourceEntity> resourceEntities = roleResourceDao.findByRoleId(roleId);
List<RoleResourceInfo> resourceInfos = resourceEntities.stream().map(entity -> BeanUtil.copyProperties(entity, RoleResourceInfo.class)).collect(Collectors.toList());
roleInfo.setResourceInfos(resourceInfos);
return roleInfo;
}
public List<ResourceInfo> allResource() {
List<ResourceEntity> all = resourceDao.findAll();
return all.stream().map(entity -> BeanUtil.copyProperties(entity, ResourceInfo.class)).collect(Collectors.toList());
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!