用户,部门去jpa
This commit is contained in:
@@ -44,22 +44,26 @@ public class BaseEntity implements Serializable {
|
||||
@CreatedBy
|
||||
@Column(name = "create_by", updatable = false)
|
||||
@ApiModelProperty(value = "创建人", hidden = true)
|
||||
private String createBy;
|
||||
private String create_name;
|
||||
|
||||
private Long create_id;
|
||||
|
||||
@LastModifiedBy
|
||||
@Column(name = "update_by")
|
||||
@ApiModelProperty(value = "更新人", hidden = true)
|
||||
private String updatedBy;
|
||||
private String update_optname;
|
||||
|
||||
private Long update_optid;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "create_time", updatable = false)
|
||||
@ApiModelProperty(value = "创建时间", hidden = true)
|
||||
private Timestamp createTime;
|
||||
private Timestamp create_time;
|
||||
|
||||
@UpdateTimestamp
|
||||
@Column(name = "update_time")
|
||||
@ApiModelProperty(value = "更新时间", hidden = true)
|
||||
private Timestamp updateTime;
|
||||
private Timestamp update_time;
|
||||
|
||||
/* 分组校验 */
|
||||
public @interface Create {}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class SecurityUtils {
|
||||
* @return 系统用户名称
|
||||
*/
|
||||
public static String getCurrentNickName() {
|
||||
return getCurrentUser().getNickName();
|
||||
return getCurrentUser().getPreson_name();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.modules.common.utils.dto;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.Data;
|
||||
import org.nl.modules.system.domain.User;
|
||||
import org.nl.modules.system.service.dto.UserDto;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -22,7 +23,7 @@ public class CurrentUser implements Serializable {
|
||||
//账号
|
||||
private String username;
|
||||
//姓名
|
||||
private String nickName;
|
||||
private String preson_name;
|
||||
|
||||
//用户详细信息
|
||||
private UserDto user;
|
||||
|
||||
@@ -22,6 +22,7 @@ import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.wf.captcha.base.Captcha;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -48,6 +49,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -110,7 +112,7 @@ public class AuthorizationController {
|
||||
CurrentUser user = new CurrentUser();
|
||||
user.setId(userInfo.getLong("user_id"));
|
||||
user.setUsername(userInfo.getString("username"));
|
||||
user.setNickName(userInfo.getString("person_name"));
|
||||
user.setPermissions(Lists.newArrayList(userInfo.getString("person_name")));
|
||||
user.setUser(this.getById(userInfo.getLong("user_id")));
|
||||
user.setPermissions(permissionList);
|
||||
|
||||
|
||||
@@ -32,23 +32,12 @@ import java.util.Set;
|
||||
* @author Zheng Jie
|
||||
* @date 2019-03-25
|
||||
*/
|
||||
@Entity
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name="sys_dept")
|
||||
public class Dept extends BaseEntity implements Serializable {
|
||||
|
||||
@Id
|
||||
@Column(name = "dept_id")
|
||||
@NotNull(groups = Update.class)
|
||||
@ApiModelProperty(value = "ID", hidden = true)
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long dept_id;
|
||||
|
||||
@JsonIgnore
|
||||
@ManyToMany(mappedBy = "depts")
|
||||
@ApiModelProperty(value = "角色")
|
||||
private Set<Role> roles;
|
||||
|
||||
@ApiModelProperty(value = "排序")
|
||||
private Integer deptSort;
|
||||
@@ -67,21 +56,4 @@ public class Dept extends BaseEntity implements Serializable {
|
||||
@ApiModelProperty(value = "子节点数目", hidden = true)
|
||||
private Integer subCount = 0;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
Dept dept = (Dept) o;
|
||||
return Objects.equals(id, dept.id) &&
|
||||
Objects.equals(name, dept.name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,24 +57,6 @@ public class Param extends BaseEntity implements Serializable {
|
||||
@ApiModelProperty(value = "is_delete")
|
||||
private String is_delete;
|
||||
|
||||
@Column(name = "create_by",nullable = false,updatable = false,insertable = false)
|
||||
@NotBlank
|
||||
@ApiModelProperty(value = "create_by")
|
||||
private String create_by;
|
||||
|
||||
@Column(name = "create_time",nullable = false,updatable = false,insertable = false)
|
||||
@NotBlank
|
||||
@ApiModelProperty(value = "create_time")
|
||||
private String create_time;
|
||||
|
||||
@Column(name = "update_by",updatable = false,insertable = false)
|
||||
@ApiModelProperty(value = "update_by")
|
||||
private String update_by;
|
||||
|
||||
@Column(name = "update_time",updatable = false,insertable = false)
|
||||
@ApiModelProperty(value = "update_time")
|
||||
private String update_time;
|
||||
|
||||
public void copy(Param source){
|
||||
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
||||
}
|
||||
|
||||
@@ -34,40 +34,23 @@ import java.util.Set;
|
||||
* @author Zheng Jie
|
||||
* @date 2018-11-22
|
||||
*/
|
||||
@Entity
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name="sys_user")
|
||||
public class User extends BaseEntity implements Serializable {
|
||||
|
||||
@Id
|
||||
@Column(name = "user_id")
|
||||
@NotNull(groups = Update.class)
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@ApiModelProperty(value = "ID", hidden = true)
|
||||
private Long id;
|
||||
|
||||
@ManyToMany
|
||||
@ApiModelProperty(value = "用户角色")
|
||||
@JoinTable(name = "sys_users_roles",
|
||||
joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "user_id")},
|
||||
inverseJoinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")})
|
||||
private Set<Role> roles;
|
||||
private Long user_id;
|
||||
|
||||
private String roles;
|
||||
|
||||
private String depts;
|
||||
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "dept_id")
|
||||
@ApiModelProperty(value = "用户部门")
|
||||
@NotFound(action= NotFoundAction.IGNORE)
|
||||
private Dept dept;
|
||||
|
||||
@NotBlank
|
||||
@Column(unique = true)
|
||||
@ApiModelProperty(value = "用户名称")
|
||||
private String username;
|
||||
|
||||
@NotBlank
|
||||
@ApiModelProperty(value = "用户昵称")
|
||||
private String nickName;
|
||||
|
||||
private String person_name;
|
||||
|
||||
@ApiModelProperty(value = "邮箱")
|
||||
private String email;
|
||||
@@ -89,7 +72,7 @@ public class User extends BaseEntity implements Serializable {
|
||||
|
||||
@NotNull
|
||||
@ApiModelProperty(value = "是否启用")
|
||||
private Boolean enabled;
|
||||
private Boolean is_used;
|
||||
|
||||
@ApiModelProperty(value = "是否为admin账号", hidden = true)
|
||||
private Boolean isAdmin = false;
|
||||
@@ -98,21 +81,4 @@ public class User extends BaseEntity implements Serializable {
|
||||
@ApiModelProperty(value = "最后修改密码的时间", hidden = true)
|
||||
private Date pwdResetTime;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
User user = (User) o;
|
||||
return Objects.equals(id, user.id) &&
|
||||
Objects.equals(username, user.username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, username);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ public class DeptController {
|
||||
@PostMapping
|
||||
@SaCheckPermission("dept:add")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody Dept resources){
|
||||
if (resources.getId() != null) {
|
||||
if (resources.getDept_id() != null) {
|
||||
throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
|
||||
}
|
||||
deptService.create(resources);
|
||||
|
||||
@@ -134,7 +134,7 @@ public class UserController {
|
||||
@ApiOperation("修改用户:个人中心")
|
||||
@PutMapping(value = "center")
|
||||
public ResponseEntity<Object> center(@Validated(User.Update.class) @RequestBody User resources){
|
||||
if(!resources.getId().equals(StpUtil.getLoginIdAsLong())){
|
||||
if(!resources.getUser_id().equals(StpUtil.getLoginIdAsLong())){
|
||||
throw new BadRequestException("不能修改他人资料");
|
||||
}
|
||||
userService.updateCenter(resources);
|
||||
@@ -153,10 +153,10 @@ public class UserController {
|
||||
throw new BadRequestException("角色权限不足,不能删除:" + userService.findById(id).getUsername());
|
||||
}
|
||||
// 删除缓存信息
|
||||
UserDto userDto = userService.findById(id);
|
||||
redisUtils.del("data::user:" + userDto.getId());
|
||||
redisUtils.del("menu::user:" + userDto.getId());
|
||||
redisUtils.del("role::auth:" + userDto.getId());
|
||||
User userDto = userService.findById(id);
|
||||
redisUtils.del("data::user:" + userDto.getUser_id());
|
||||
redisUtils.del("menu::user:" + userDto.getUser_id());
|
||||
redisUtils.del("role::auth:" + userDto.getUser_id());
|
||||
redisUtils.del("user::username:" + userDto.getUsername());
|
||||
}
|
||||
userService.delete(ids);
|
||||
@@ -169,7 +169,7 @@ public class UserController {
|
||||
// 解密,得到字符密码
|
||||
String oldPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,passVo.getOldPass());
|
||||
String newPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,passVo.getNewPass());
|
||||
UserDto user = userService.findByName(SecurityUtils.getCurrentUsername());
|
||||
User user = userService.findByName(SecurityUtils.getCurrentUsername());
|
||||
if (!SaSecureUtil.md5BySalt(user.getPassword(), "salt").equals(SaSecureUtil.md5BySalt(oldPass, "salt"))) {
|
||||
throw new BadRequestException("修改失败,旧密码错误");
|
||||
}
|
||||
@@ -191,7 +191,7 @@ public class UserController {
|
||||
@PostMapping(value = "/updateEmail/{code}")
|
||||
public ResponseEntity<Object> updateEmail(@PathVariable String code,@RequestBody User user) throws Exception {
|
||||
String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,user.getPassword());
|
||||
UserDto userDto = userService.findByName(SecurityUtils.getCurrentUsername());
|
||||
User userDto = userService.findByName(SecurityUtils.getCurrentUsername());
|
||||
if(!SaSecureUtil.md5BySalt(user.getPassword(), "salt").equals(SaSecureUtil.md5BySalt(password, "salt"))){
|
||||
throw new BadRequestException("密码错误");
|
||||
}
|
||||
@@ -204,10 +204,10 @@ public class UserController {
|
||||
* @param resources /
|
||||
*/
|
||||
private void checkLevel(User resources) {
|
||||
Integer currentLevel = Collections.min(roleService.findByUsersId(StpUtil.getLoginIdAsLong()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList()));
|
||||
Integer optLevel = roleService.findByRoles(resources.getRoles());
|
||||
if (currentLevel > optLevel) {
|
||||
throw new BadRequestException("角色权限不足");
|
||||
}
|
||||
// Integer currentLevel = Collections.min(roleService.findByUsersId(StpUtil.getLoginIdAsLong()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList()));
|
||||
// Integer optLevel = roleService.findByRoles(resources.getRoles());
|
||||
// if (currentLevel > optLevel) {
|
||||
// throw new BadRequestException("角色权限不足");
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package org.nl.modules.system.service;
|
||||
|
||||
import org.nl.modules.system.domain.User;
|
||||
import org.nl.modules.system.service.dto.UserDto;
|
||||
|
||||
import java.util.List;
|
||||
@@ -31,5 +32,5 @@ public interface DataService {
|
||||
* @param user /
|
||||
* @return /
|
||||
*/
|
||||
List<Long> getDeptIds(UserDto user);
|
||||
List<Long> getDeptIds(User user);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public class UserDto extends BaseDTO implements Serializable {
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
private Set<RoleSmallDto> roles;
|
||||
// private Set<RoleSmallDto> roles;
|
||||
|
||||
|
||||
private String username;
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.nl.modules.common.annotation.Query;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -41,10 +42,11 @@ public class UserQueryCriteria implements Serializable {
|
||||
private String blurry;
|
||||
|
||||
@Query
|
||||
private Boolean enabled;
|
||||
private Boolean is_used;
|
||||
|
||||
private Long deptId;
|
||||
|
||||
@Query(type = Query.Type.BETWEEN)
|
||||
private List<Timestamp> createTime;
|
||||
private Date startTime;
|
||||
|
||||
private Date endTime;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.modules.common.utils.enums.DataScopeEnum;
|
||||
import org.nl.modules.system.domain.Dept;
|
||||
import org.nl.modules.system.domain.User;
|
||||
import org.nl.modules.system.service.DataService;
|
||||
import org.nl.modules.system.service.DeptService;
|
||||
import org.nl.modules.system.service.RoleService;
|
||||
@@ -51,11 +52,11 @@ public class DataServiceImpl implements DataService {
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(key = "'user:' + #p0.id")
|
||||
public List<Long> getDeptIds(UserDto user) {
|
||||
public List<Long> getDeptIds(User user) {
|
||||
// 用于存储部门id
|
||||
Set<Long> deptIds = new HashSet<>();
|
||||
// 查询用户角色
|
||||
List<RoleSmallDto> roleSet = roleService.findByUsersId(user.getId());
|
||||
List<RoleSmallDto> roleSet = roleService.findByUsersId(user.getUser_id());
|
||||
// 获取对应的部门ID
|
||||
for (RoleSmallDto role : roleSet) {
|
||||
DataScopeEnum dataScopeEnum = DataScopeEnum.find(role.getDataScope());
|
||||
@@ -84,8 +85,8 @@ public class DataServiceImpl implements DataService {
|
||||
public Set<Long> getCustomize(Set<Long> deptIds, RoleSmallDto role){
|
||||
Set<Dept> depts = deptService.findByRoleId(role.getId());
|
||||
for (Dept dept : depts) {
|
||||
deptIds.add(dept.getId());
|
||||
List<Dept> deptChildren = deptService.findByPid(dept.getId());
|
||||
deptIds.add(dept.getDept_id());
|
||||
List<Dept> deptChildren = deptService.findByPid(dept.getPid());
|
||||
if (deptChildren != null && deptChildren.size() != 0) {
|
||||
deptIds.addAll(deptService.getDeptChildren(deptChildren));
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ public class DeptServiceImpl implements DeptService {
|
||||
@Cacheable(key = "'id:' + #p0")
|
||||
public DeptDto findById(Long id) {
|
||||
Dept dept = deptRepository.findById(id).orElseGet(Dept::new);
|
||||
ValidationUtil.isNull(dept.getId(), "Dept", "id", id);
|
||||
ValidationUtil.isNull(dept.getDept_id(), "Dept", "id", id);
|
||||
return deptMapper.toDto(dept);
|
||||
}
|
||||
|
||||
@@ -131,20 +131,20 @@ public class DeptServiceImpl implements DeptService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(Dept resources) {
|
||||
// 旧的部门
|
||||
Long oldPid = findById(resources.getId()).getPid();
|
||||
Long oldPid = findById(resources.getDept_id()).getPid();
|
||||
Long newPid = resources.getPid();
|
||||
if (resources.getPid() != null && resources.getId().equals(resources.getPid())) {
|
||||
if (resources.getPid() != null && resources.getDept_id().equals(resources.getPid())) {
|
||||
throw new BadRequestException("上级不能为自己");
|
||||
}
|
||||
Dept dept = deptRepository.findById(resources.getId()).orElseGet(Dept::new);
|
||||
ValidationUtil.isNull(dept.getId(), "Dept", "id", resources.getId());
|
||||
resources.setId(dept.getId());
|
||||
Dept dept = deptRepository.findById(resources.getDept_id()).orElseGet(Dept::new);
|
||||
ValidationUtil.isNull(dept.getDept_id(), "Dept", "id", resources.getDept_id());
|
||||
resources.setDept_id(dept.getDept_id());
|
||||
deptRepository.save(resources);
|
||||
// 更新父节点中子节点数目
|
||||
updateSubCnt(oldPid);
|
||||
updateSubCnt(newPid);
|
||||
// 清理缓存
|
||||
delCaches(resources.getId());
|
||||
delCaches(resources.getDept_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -162,7 +162,7 @@ public class DeptServiceImpl implements DeptService {
|
||||
public Set<DeptDto> getDeleteDepts(List<Dept> menuList, Set<DeptDto> deptDtos) {
|
||||
for (Dept dept : menuList) {
|
||||
deptDtos.add(deptMapper.toDto(dept));
|
||||
List<Dept> depts = deptRepository.findByPid(dept.getId());
|
||||
List<Dept> depts = deptRepository.findByPid(dept.getDept_id());
|
||||
if (depts != null && depts.size() != 0) {
|
||||
getDeleteDepts(depts, deptDtos);
|
||||
}
|
||||
@@ -260,7 +260,7 @@ public class DeptServiceImpl implements DeptService {
|
||||
public void delCaches(Long id) {
|
||||
List<User> users = userRepository.findByRoleDeptId(id);
|
||||
// 删除数据权限
|
||||
redisUtils.delByKeys(CacheKey.DATA_USER, users.stream().map(User::getId).collect(Collectors.toSet()));
|
||||
redisUtils.delByKeys(CacheKey.DATA_USER, users.stream().map(User::getUser_id).collect(Collectors.toSet()));
|
||||
redisUtils.del(CacheKey.DEPT_ID + id);
|
||||
}
|
||||
|
||||
@@ -269,11 +269,11 @@ public class DeptServiceImpl implements DeptService {
|
||||
List<Long> list = new ArrayList<>();
|
||||
deptList.forEach(dept -> {
|
||||
if (dept != null && dept.getEnabled()) {
|
||||
List<Dept> depts = deptRepository.findByPid(dept.getId());
|
||||
List<Dept> depts = deptRepository.findByPid(dept.getDept_id());
|
||||
if (deptList.size() != 0) {
|
||||
list.addAll(getDeptChildren(depts));
|
||||
}
|
||||
list.add(dept.getId());
|
||||
list.add(dept.getDept_id());
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
@@ -353,7 +353,7 @@ public class MenuServiceImpl implements MenuService {
|
||||
public void delCaches(Long id) {
|
||||
List<User> users = userRepository.findByMenuId(id);
|
||||
redisUtils.del("menu::id:" + id);
|
||||
redisUtils.delByKeys("menu::user:", users.stream().map(User::getId).collect(Collectors.toSet()));
|
||||
redisUtils.delByKeys("menu::user:", users.stream().map(User::getUser_id).collect(Collectors.toSet()));
|
||||
// 清除 Role 缓存
|
||||
List<Role> roles = roleService.findInMenuId(new ArrayList<Long>() {{
|
||||
add(id);
|
||||
|
||||
@@ -82,8 +82,8 @@ public class ParamServiceImpl implements ParamService {
|
||||
dto.setId(IdUtil.simpleUUID());
|
||||
dto.setCreate_id(currentId);
|
||||
dto.setUpdate_optid(currentId);
|
||||
dto.setCreate_name(currentUsername.getNickName());
|
||||
dto.setUpdate_optname(currentUsername.getNickName());
|
||||
dto.setCreate_name(currentUsername.getPreson_name());
|
||||
dto.setUpdate_optname(currentUsername.getPreson_name());
|
||||
dto.setUpdate_time(now);
|
||||
dto.setCreate_time(now);
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ public class RoleServiceImpl implements RoleService {
|
||||
users = CollectionUtil.isEmpty(users) ? userRepository.findByRoleId(id) : users;
|
||||
if (CollectionUtil.isNotEmpty(users)) {
|
||||
// users.forEach(item -> userCacheClean.cleanUserCache(item.getUsername()));
|
||||
Set<Long> userIds = users.stream().map(User::getId).collect(Collectors.toSet());
|
||||
Set<Long> userIds = users.stream().map(User::getUser_id).collect(Collectors.toSet());
|
||||
redisUtils.delByKeys(CacheKey.DATA_USER, userIds);
|
||||
redisUtils.delByKeys(CacheKey.MENU_USER, userIds);
|
||||
redisUtils.delByKeys(CacheKey.ROLE_AUTH, userIds);
|
||||
|
||||
Reference in New Issue
Block a user