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;
/**
* 用户相关接口
......@@ -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 {
......@@ -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,6 +19,7 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>,
/**
* 根据角色ID查询
*
* @param roleId 角色ID
* @return
*/
......@@ -26,6 +27,7 @@ public interface UserRoleDao extends JpaRepository<UserRoleEntity, String>,
/**
* 根据用户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());
}
}
package com.dituhui.pea.user.service;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.math.BigInteger;
import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import com.dituhui.pea.common.PageResult;
import com.dituhui.pea.pojo.*;
import com.dituhui.pea.user.dao.*;
import com.dituhui.pea.user.entity.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -25,27 +32,8 @@ import com.dituhui.pea.enums.StatusCodeEnum;
import com.dituhui.pea.enums.ThirdPartyEnum;
import com.dituhui.pea.exception.BusinessException;
import com.dituhui.pea.order.IOrganization;
import com.dituhui.pea.pojo.AppDTO;
import com.dituhui.pea.pojo.OrganizationDTO;
import com.dituhui.pea.pojo.ResourceInfo;
import com.dituhui.pea.pojo.RoleInfo;
import com.dituhui.pea.pojo.ThirdUserInfo;
import com.dituhui.pea.pojo.UserInfo;
import com.dituhui.pea.pojo.UserLoginDTO;
import com.dituhui.pea.user.commom.RedisService;
import com.dituhui.pea.user.constant.TextConstant;
import com.dituhui.pea.user.dao.AppDao;
import com.dituhui.pea.user.dao.ResourceDao;
import com.dituhui.pea.user.dao.RoleDao;
import com.dituhui.pea.user.dao.RoleResourceDao;
import com.dituhui.pea.user.dao.UserDao;
import com.dituhui.pea.user.dao.UserRoleDao;
import com.dituhui.pea.user.entity.AppEntity;
import com.dituhui.pea.user.entity.ResourceEntity;
import com.dituhui.pea.user.entity.RoleEntity;
import com.dituhui.pea.user.entity.RoleResourceEntity;
import com.dituhui.pea.user.entity.UserEntity;
import com.dituhui.pea.user.entity.UserRoleEntity;
import com.dituhui.pea.user.factory.ThirdStrategy;
import com.dituhui.pea.user.factory.ThirdStrategyFactory;
import com.dituhui.pea.user.utils.TextHelper;
......@@ -62,7 +50,6 @@ import lombok.extern.slf4j.Slf4j;
/**
* 用户业务层
*
*/
@Service
@Slf4j
......@@ -101,6 +88,12 @@ public class UserService {
@Autowired
AppDao appDao;
@Autowired
EntityManager entityManager;
@Autowired
UserOrgDao userOrgDao;
public Result<UserLoginDTO> userLogin(String account, String password) {
UserEntity user = userDao.findByAccountAndPassword(account, SecureUtil.md5(password));
log.info("{}/{} login", account, password);
......@@ -297,6 +290,7 @@ public class UserService {
userEntity.setPassword(SecureUtil.md5(userInfo.getPassword()));
// 保存用户信息
userEntity = userDao.save(userEntity);
savaUserRoleAndOrgInfo(userInfo);
return BeanUtil.copyProperties(userEntity, UserInfo.class);
}
......@@ -437,11 +431,47 @@ public class UserService {
}
assembleUpdateUserInfo(userInfo, userEntity);
userEntity = userDao.save(userEntity);
savaUserRoleAndOrgInfo(userInfo);
userInfo = BeanUtil.copyProperties(userEntity, UserInfo.class);
return userInfo;
}
/**
* 处理用户角色和机构关联信息
*
* @param userInfo
*/
private void savaUserRoleAndOrgInfo(UserInfo userInfo) {
//处理用户角色关联信息
if (CollectionUtils.isNotEmpty(userInfo.getRoleIds())) {
List<UserRoleEntity> userRoleList = userRoleDao.findByUserId(userInfo.getId());
Map<String, UserRoleEntity> userRoleMap = userRoleList.stream().collect(Collectors.toMap(UserRoleEntity::getRoleId, e -> e));
Set<String> collect = userInfo.getRoleIds().stream().collect(Collectors.toSet());
for (String roleId : collect) {
if (userRoleMap.containsKey(roleId)) {
userRoleMap.remove(roleId);
} else {
UserRoleEntity userRoleEntity = new UserRoleEntity();
userRoleEntity.setUserId(userInfo.getId());
userRoleEntity.setRoleId(roleId);
userRoleDao.save(userRoleEntity);
}
}
}
//处理用户机构关联信息
if (CollectionUtils.isNotEmpty(userInfo.getOrgIds()) && null != userInfo.getOrgIds()) {
UserOrgEntity userOrgEntity = userOrgDao.findByUserId(userInfo.getId());
if (null == userOrgEntity) {
userOrgEntity = new UserOrgEntity();
userOrgEntity.setUserId(userInfo.getId());
}
userOrgEntity.setOrgIds(String.join(",", userInfo.getOrgIds()));
userOrgEntity.setOrgLevel(userInfo.getOrgLevel());
userOrgDao.save(userOrgEntity);
}
}
/**
* 删除用户信息
*
* @param userId 用户ID
......@@ -453,8 +483,10 @@ public class UserService {
if (ObjectUtil.isNull(userEntity)) {
throw new BusinessException(StatusCodeEnum.USER_DOES_NOT_EXIST);
}
// 删除用户
// 删除用户以及关联关系
userDao.deleteById(userId);
userOrgDao.deleteByUserId(userId);
userRoleDao.deleteByUserId(userId);
}
/**
......@@ -625,4 +657,66 @@ public class UserService {
return Result.success(true);
}
/**
* 查询用户列表
*
* @param search
* @return
*/
public PageResult<UserInfoSearch> list(UserInfoSearch search) {
entityManager.clear();
PageResult<UserInfoSearch> pageResult = new PageResult<>();
String count = "select count(*) ";
String select = "SELECT su.*,sr.name roleName ";
String limit = " ORDER BY su.CREATED_TIME DESC limit " + (search.getPage() - 1) * search.getSize() + "," + search.getSize();
StringBuffer querySql = new StringBuffer("from sys_user su left join sys_user_role sur on su.id =sur.user_id left JOIN sys_role sr on sr.id =sur.role_id where 1=1 ");
if (StringUtils.isNotBlank(search.getRoleId())) {
querySql.append("sr.id ='" + search.getRoleId() + "'");
}
if (null != search.getSource()) {
querySql.append("su.source ='" + search.getSource() + "'");
}
if (null != search.getSource()) {
querySql.append("(su.engineer_code LIKE '%" + search.getQueryString() + "%' or su.nickname like '%" + search.getQueryString() + "%' or su.phone like '%" + search.getQueryString() + "%' or su.email like '%" + search.getQueryString() + "%' )");
}
BigInteger countNum = (BigInteger) entityManager.createQuery(count + querySql.toString()).getSingleResult();
if (countNum.intValue() == 0) {
return pageResult;
}
List<Map<String, Object>> resultList = entityManager.createQuery(select + querySql.toString() + limit).getResultList();
List<UserInfoSearch> list = resultList.stream().map(a -> mapConvertToObject(a, UserInfoSearch.class)).collect(Collectors.toList());
Integer pageInt = countNum.intValue() / search.getSize();
pageResult.setDataList(list);
pageResult.setCurrPage(search.getPage());
pageResult.setRecordCount(countNum.intValue());
pageResult.setTotalPage(pageInt * search.getSize() == countNum.intValue() ? pageInt : pageInt + 1);
return pageResult;
}
/**
* 将map转换为POJO对象
*
* @param map map
* @param beanClass class
* @return r
*/
public static <T> T mapConvertToObject(Map<String, Object> map, Class<T> beanClass) {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(map, beanClass);
}
/**
* 禁用用户
*
* @param search
*/
@Transactional
public void ban(UserInfoSearch search) {
UserEntity byId = userDao.findById(search.getId()).orElse(null);
if (null != byId && null != search.getBan()) {
byId.setBan(search.getBan());
userDao.save(byId);
}
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!