Commit a183d7ef by huangjinxin

用户和角色相关

1 parent a11d8082
package com.dituhui.pea.pojo;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.dituhui.pea.pojo.role.RoleResourceInfo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 角色信息
......@@ -47,4 +48,6 @@ public class RoleInfo {
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updatedTime;
private List<RoleResourceInfo> resourceInfos;
}
......@@ -8,9 +8,11 @@ import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;
/**
* 用户信息
*
* @author zl
*/
@Data
......@@ -82,6 +84,18 @@ public class UserInfo {
*/
private String extra;
/**
* 组织ids
*/
private List<String> orgIds;
/**
* 组织级别 0:大区 1:分部 2:站点
*/
private Integer orgLevel;
/**
* 角色id
*/
private List<String> roleIds;
/**
* 创建人
*/
//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;
import com.dituhui.pea.pojo.ResourceInfo;
import com.dituhui.pea.pojo.RoleInfo;
import com.dituhui.pea.pojo.WebResult;
import com.dituhui.pea.pojo.role.UserRoleInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -12,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 角色相关接口
*/
......@@ -27,6 +30,16 @@ public interface IRole {
@RequestMapping(value = "/v1/role/add", method = RequestMethod.POST)
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 {
*/
@RequestMapping(value = "/v1/role/list", method = RequestMethod.GET)
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;
import com.dituhui.pea.common.PageResult;
import com.dituhui.pea.pojo.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
......@@ -9,11 +11,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import com.dituhui.pea.common.Result;
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;
*/
@FeignClient(value = "project-user", contextId = "user")
public interface IUser {
/**
* 登录接口
*
*
* @param user
* @return
*/
@RequestMapping(value = "/pea-user/login", method = RequestMethod.POST)
public Result<UserLoginDTO> userLogin(@RequestBody UserLoginParam user);
/**
* 获取用户信息
*
*
* @param userId
* @return
*/
......@@ -43,7 +40,7 @@ public interface IUser {
/**
* 刷新appkey接口<br>
* 初始化系统ak缓存,例如系统上线,新ak入库的时候
*
*
* @return
*/
@RequestMapping(value = "/pea-user/refreshAppkey", method = RequestMethod.POST)
......@@ -138,4 +135,22 @@ public interface IUser {
@RequestMapping(value = "/pea-user/thirdRegister", method = RequestMethod.POST)
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;
import com.dituhui.pea.pojo.ResourceInfo;
import com.dituhui.pea.pojo.RoleInfo;
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.entity.UserRoleEntity;
import com.dituhui.pea.user.service.RoleService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 角色控制层
*/
......@@ -31,6 +37,13 @@ public class RoleController implements IRole {
return WebResult.ok(roleInfo);
}
@Override
public WebResult<RoleInfo> updateRole(@Validated RoleInfo roleInfo) {
roleInfo = roleService.updateRole(roleInfo);
return WebResult.ok(roleInfo);
}
@Override
public WebResult<Boolean> deleteRole(String roleId) {
if (StringUtils.isBlank(roleId)) {
......@@ -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;
import com.dituhui.pea.common.PageResult;
import com.dituhui.pea.pojo.*;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
......@@ -9,11 +11,6 @@ import org.springframework.web.bind.annotation.RestController;
import com.dituhui.pea.common.Result;
import com.dituhui.pea.enums.StatusCodeEnum;
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.service.UserService;
......@@ -21,7 +18,6 @@ import cn.hutool.core.util.ObjectUtil;
/**
* 用户控制层
*
*/
@RestController
public class UserController implements IUser {
......@@ -30,19 +26,19 @@ public class UserController implements IUser {
private UserService userService;
@Override
public Result<UserLoginDTO> userLogin(UserLoginParam user) {
return userService.userLogin(user.getAccount(), user.getPassword());
}
public Result<UserLoginDTO> userLogin(UserLoginParam user) {
return userService.userLogin(user.getAccount(), user.getPassword());
}
@Override
public Result<UserLoginDTO> getUserInfo(String userId) {
return userService.getUserInfo(userId);
}
@Override
public Result<Boolean> refreshAppkey() {
return userService.refreshAppkey();
}
public Result<UserLoginDTO> getUserInfo(String userId) {
return userService.getUserInfo(userId);
}
@Override
public Result<Boolean> refreshAppkey() {
return userService.refreshAppkey();
}
@Override
public WebResult<UserInfo> getCurrentUserInfo(String userToken, Boolean needTeamInfo) {
......@@ -69,12 +65,12 @@ public class UserController implements IUser {
@Override
public WebResult<UserInfo> queryUserByPhone(String phone) {
System.out.println("queryUserByPhone ["+phone+"]");
System.out.println("queryUserByPhone [" + phone + "]");
if (StringUtils.isBlank(phone)) {
return WebResult.failed(StatusCodeEnum.COMMON_PARAM_EMPTY);
}
UserInfo userInfo = userService.queryUserByPhone(phone);
System.out.println("queryUserByPhone UserInfo ["+userInfo+"]");
System.out.println("queryUserByPhone UserInfo [" + userInfo + "]");
return WebResult.ok(userInfo);
}
......@@ -135,4 +131,30 @@ public class UserController implements IUser {
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
List<RoleResourceEntity> findByRoleIdIn(List<String> roleIds);
/**
* 根据角色ID查询
*
* @param roleIds 角色ID
* @return
*/
List<RoleResourceEntity> findByRoleId(String 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>,
/**
* 根据角色ID查询
*
* @param roleId 角色ID
* @return
*/
List<UserRoleEntity> findByRoleId(String roleId);
/**
* 根据用户ID查询
*
* @param roleId 角色ID
* @return
*/
......@@ -33,6 +35,7 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>,
/**
* 根据角色ID和用户ID删除
*
* @param roleId 角色ID
* @param userId 用户ID
*/
......@@ -41,8 +44,16 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>,
/**
* 根据角色ID删除
*
* @param roleId 角色ID
*/
void deleteByRoleId(String roleId);
/**
* 根据用户ID删除
*
* @param userId 角色ID
*/
void deleteByUserId(String userId);
}
......@@ -12,11 +12,10 @@ import java.util.Date;
/**
* 用户表(UserEntity)实体类
*
*/
@Data
@Entity
@Table(name ="sys_user")
@Table(name = "sys_user")
@EntityListeners(AuditingEntityListener.class)
public class UserEntity implements Serializable {
private static final long serialVersionUID = 595672857439664430L;
......@@ -114,4 +113,21 @@ public class UserEntity implements Serializable {
@LastModifiedDate
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;
import com.dituhui.pea.pojo.PageRequest;
import com.dituhui.pea.pojo.ResourceInfo;
import com.dituhui.pea.pojo.RoleInfo;
import com.dituhui.pea.pojo.role.RoleResourceInfo;
import com.dituhui.pea.user.dao.*;
import com.dituhui.pea.user.entity.*;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 角色业务层
......@@ -50,6 +54,31 @@ public class RoleService {
public RoleInfo addRole(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) {
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);
return roleInfo;
}
......@@ -65,6 +94,8 @@ public class RoleService {
roleDao.deleteById(roleId);
// 删除用户和角色的关系
userRoleDao.deleteByRoleId(roleId);
// 删除权限和角色的关系
roleResourceDao.deleteByRoleId(roleId);
}
@Transactional(rollbackFor = Exception.class)
......@@ -196,7 +227,8 @@ public class RoleService {
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);
List<RoleInfo> roleInfos = new ArrayList<>();
for (RoleEntity role : page.getContent()) {
......@@ -210,4 +242,28 @@ public class RoleService {
result.setTotalPage(page.getTotalPages());
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!