@Autowired
private AccountHelper accountHelper;
@Autowired
private AdminService adminService;
@ApiOperation("当前登录用户")
@GetMapping("getUserInfo")
public UserVo getUserInfo() {
return this.adminService.getUser(this.accountHelper.getUserId());
}
@ApiOperation("添加用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "account", value = "账号", required = true, dataType = "String"),
@ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String"),
@ApiImplicitParam(name = "rePassword", value = "确认密码", required = true, dataType = "String"),
@ApiImplicitParam(name = "departmentId", value = "departmentId", required = false, dataType = "Long"),
@ApiImplicitParam(name = "role", value = "角色", required = false, dataType = "String"),
@ApiImplicitParam(name = "userName", value = "姓名", required = false, dataType = "String"),
@ApiImplicitParam(name = "List<UserRole>", value = "角色",required = false, dataType = "List<UserRole>")
})
@PostMapping(value = "addUser")
public User addUser(@RequestBody @ApiIgnore UserVo userVo) {
return this.adminService.addUser(userVo);
}
@ApiOperation("修改用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long"),
@ApiImplicitParam(name = "departmentId", value = "departmentId", required = false, dataType = "Long"),
@ApiImplicitParam(name = "role", value = "角色", required = false, dataType = "String"),
@ApiImplicitParam(name = "userName", value = "姓名", required = true, dataType = "String"),
@ApiImplicitParam(name = "List<UserRole>", value = "角色", required = false, dataType = "List<UserRole>")
})
@PostMapping(value = "updateUser")
public User updateUser(@RequestBody UserVo userVo){
return this.adminService.updateUser(userVo);
}
@ApiOperation("修改密码")
@ApiImplicitParams({
@ApiImplicitParam(name = "oldPassword", value = "原密码", required = true, dataType = "String"),
@ApiImplicitParam(name = "newPassword", value = "新密码", required = true, dataType = "String")
})
@GetMapping(value = "resetPassword")
public User resetPassword(String oldPassword, String newPassword) {
return this.adminService.resetPassword(this.accountHelper.getUserId(), oldPassword, newPassword);
}
@ApiOperation("所有管理员")
@ApiImplicitParams({
@ApiImplicitParam(name = "current", value = "第几页", required = true, dataType = "Long"),
@ApiImplicitParam(name = "size", value = "一页几条", required = true, dataType = "Long"),
@ApiImplicitParam(name = "roleName", value = "角色", dataType = "String"),
@ApiImplicitParam(name = "userName", value = "用户名", dataType = "String")
})
@GetMapping(value = "getUserList")
public IPage<UserVo> getUserList(Page page, UserVo userVo) {
return this.adminService.getUserList(page,userVo);
}
@ApiOperation("重置密码")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long"),
@ApiImplicitParam(name = "password", value = "新密码", required = true, dataType = "String")
})
@GetMapping(value = "resetUserPassword")
public void resetUserPassword(Long id,String password){
this.adminService.resetUserPassword(id,password);
}
@ApiOperation("获取一用户的角色")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "userId", required = true, dataType = "Long"),
})
@GetMapping(value = "getUserRole")
public List<Role> getUserRole(Long userId){
return this.adminService.getUserRole(userId);
}
@ApiOperation("获取所有的角色")
@GetMapping(value = "getUserRoleAll")
public List<Role> getUserRoleAll(){
return this.adminService.getUserRoleAll();
}
@ApiOperation("获取当前用户的权限")
@GetMapping(value = "getCurrentUserRolePermission")
public List<RolePermission> getCurrentUserRolePermission(){
return this.adminService.getUserRolePermission(this.accountHelper.getUserId());
}
@ApiOperation("获取当前用户的权限Vo")
@GetMapping(value = "getCurrentUserRolePermissionVo")
public List<RolePermissionVo> getCurrentUserRolePermissionVo(){
return this.adminService.getCurrentUserRolePermissionVo(this.accountHelper.getUserId());
}
@ApiOperation("获取一用户的权限")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "userId", required = true, dataType = "Long"),
})
@GetMapping(value = "getUserRolePermission")
public List<RolePermission> getUserRolePermission(Long userId){
return this.adminService.getUserRolePermission(userId);
}
@ApiOperation("设置用户的角色")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId[]", value = "userId", required = true, dataType = "Long[]"),
@ApiImplicitParam(name = "roleIds", value = "roleIds", required = true, dataType = "Long[]"),
})
@PostMapping(value = "updateUserRole")
void updateUserRole( @RequestBody JSONObject jsonObject) {
this.adminService.updateUserRole(
jsonObject.getObject("userIds", Constant.CLASS_TYPE.LIST_LONG),
jsonObject.getObject("roleIds", Constant.CLASS_TYPE.LIST_LONG),
accountHelper.getUserId());
}
@ApiOperation("添加角色")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleName", value = "roleName", required = true, dataType = "String")
})
@PostMapping(value = "addRole")
public void addRole(@RequestBody RoleVo roleVo) {
roleVo.setCreateUserId(this.accountHelper.getUserId());
this.adminService.addRole(roleVo);
}
@ApiOperation("修改角色")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long"),
@ApiImplicitParam(name = "roleName", value = "roleName", required = true, dataType = "String")
})
@PostMapping(value = "updateRole")
public void updateRole(@RequestBody RoleVo roleVo){
roleVo.setCreateUserId(this.accountHelper.getUserId());
this.adminService.updateRole(roleVo);
}
@ApiOperation("删除角色")
@PostMapping(value = "delRole")
@ApiImplicitParams({
@ApiImplicitParam(name = "编号", value = "id", required = true, dataType = "Long"),
})
public void delRole(@RequestBody RoleVo roleVo) {
this.adminService.delRole(roleVo);
}
@ApiOperation("查询单个角色")
@PostMapping(value = "getRoleOne")
@ApiImplicitParams({
@ApiImplicitParam(name = "编号", value = "id", required = true, dataType = "Long"),
})
public RoleVo getRoleOne(@RequestBody RoleVo roleVo) {
return this.adminService.getRoleOne(roleVo);
}
@ApiOperation("角色列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleName", value = "roleName", required = true, dataType = "String"),
@ApiImplicitParam(name = "createTimeStart", value = "createTimeStart", required = false, dataType = "LocalDateTime"),
@ApiImplicitParam(name = "createTimeEnd", value = "createTimeEnd", required = false, dataType = "createTimeEnd")
})
@GetMapping(value = "getRoleList")
public IPage<Role> getRoleList(Page<Role> page, RoleVo role){
return this.adminService.getRoleList(page, role);
}
@ApiOperation("角色和权限列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleName", value = "roleName", required = true, dataType = "String"),
@ApiImplicitParam(name = "createTimeStart", value = "createTimeStart", required = false, dataType = "LocalDateTime"),
@ApiImplicitParam(name = "createTimeEnd", value = "createTimeEnd", required = false, dataType = "createTimeEnd")
})
@GetMapping(value = "getRolePermissionList")
public IPage<RoleVo> getRolePermissionList(Page page, RoleVo role){
return this.adminService.getRolePermissionList(page, role);
}
@ApiOperation("获取一角色权限")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleName", value = "roleName", required = true, dataType = "String")
})
@GetMapping(value = "getRolePermission")
public List<RolePermission> getRolePermission(Long roleId) {
return this.adminService.getRolePermission(roleId);
}
@ApiOperation("设置角色权限")
@ApiImplicitParams({
@ApiImplicitParam(name = "roleIds", value = "roleId", required = true, dataType = "Long[]"),
@ApiImplicitParam(name = "rolePermissions[].permissionTitle", value = "permissionTitle", required = true, dataType = "String"),
@ApiImplicitParam(name = "rolePermissions[].permissionValue", value = "permissionValue", required = true, dataType = "String")
})
@PostMapping(value = "updateRolePermission")
public void updateRolePermission(@RequestBody JSONObject json){
this.adminService.updateRolePermission(
json.getObject("roleIds", Constant.CLASS_TYPE.LIST_LONG),
json.getObject("rolePermissions", new TypeReference<List<RolePermission>>() {}.getType()),
this.accountHelper.getUserId()
);
}
@ApiOperation("添加部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "departmentName", value = "部门名称", required = true, dataType = "String"),
})
@PostMapping(value = "addDepartment")
public void addDepartment(@RequestBody Department department) {
department.setUersId(this.accountHelper.getUserId());
this.adminService.addDepartment(department);
}
@ApiOperation("修改部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "部门Id", required = true, dataType = "Long"),
})
@PostMapping(value = "updateDepartment")
public void updateDepartment(@RequestBody Department department) {
this.adminService.updateDepartment(department);
}
@ApiOperation("删除部门")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long"),
})
@GetMapping(value = "delDepartment")
public void delDepartment(Long id) {
this.adminService.delDepartment(id);
}
@ApiOperation("部门列表不分页")
@GetMapping(value = "getDepartmentAll")
@ApiImplicitParams({
})
public List<Department> getDepartmentAll() {
return this.adminService.getDepartmentAll();
}
@ApiOperation("部门列表")
@GetMapping(value = "getDepartmentList")
@ApiImplicitParams({
@ApiImplicitParam(name = "current", value = "第几页", required = true, dataType = "Long"),
@ApiImplicitParam(name = "size", value = "一页几条", required = true, dataType = "Long"),
@ApiImplicitParam(name = "departmentName", value = "部门名称", dataType = "String"),
})
public IPage<DepartmentVo> getDepartmentList(Page page, String departmentName) {
return this.adminService.getDepartmentList(page, departmentName);
}
@ApiOperation("所有菜单列表(有一二级区分)")
@GetMapping(value = "getPermissionVoList")
public List<PermissionVo> getPermissionVoList(PermissionVo permissionVo){
return this.adminService.getPermissionVoList(permissionVo);
}
@ApiOperation("修改权限信息")
@PostMapping("editPermissionVo")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long"),
@ApiImplicitParam(name = "parentId", value = "上级菜单", required = true, dataType = "Long"),
@ApiImplicitParam(name = "name", value = "菜单标题", required = false, dataType = "String"),
@ApiImplicitParam(name = "url", value = "路径", required = false, dataType = "String"),
@ApiImplicitParam(name = "component", value = "组件", required = false, dataType = "String"),
@ApiImplicitParam(name = "componentName", value = "组件名字", required = false, dataType = "String"),
@ApiImplicitParam(name = "redirect", value = "一级菜单跳转地址", required = false, dataType = "String"),
@ApiImplicitParam(name = "menuType", value = "菜单类型(0:一级菜单; 1:子菜单:2:按钮权限)", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "menuAttribution", value = "菜单归属", required = false, dataType = "String"),
@ApiImplicitParam(name = "perms", value = "菜单权限编码", required = false, dataType = "String"),
@ApiImplicitParam(name = "permsType", value = "权限策略1显示2禁用", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "sortNo", value = "菜单排序", required = false, dataType = "Double"),
@ApiImplicitParam(name = "icon", value = "菜单图标", required = false, dataType = "String"),
@ApiImplicitParam(name = "permissionFlag", value = "权限按钮标识", required = false, dataType = "String"),
@ApiImplicitParam(name = "isRoute", value = "是否路由菜单: 0:不是 1:是(默认值1)", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "isLeaf", value = "是否叶子节点:1:是,0:不是", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "hidden", value = "是否隐藏路由: 0否,1是", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "description", value = "描述", required = false, dataType = "String"),
@ApiImplicitParam(name = "createBy", value = "创建人", required = false, dataType = "String"),
@ApiImplicitParam(name = "createTime", value = "创建时间", required = false, dataType = "LocalDateTime"),
@ApiImplicitParam(name = "updateBy", value = "更新人", required = false, dataType = "String"),
@ApiImplicitParam(name = "updateTime", value = "更新时间", required = false, dataType = "LocalDateTime"),
@ApiImplicitParam(name = "delFlag", value = "删除状态 0正常 1已删除", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "status", value = "按钮权限状态(0无效1有效)", required = false, dataType = "String"),
@ApiImplicitParam(name = "internalOrExternal", value = "外链菜单打开方式 0/内部打开 1/外部打开", required = false, dataType = "Integer")
})
public void editPermissionVo(@RequestBody PermissionVo permissionVo){
this.adminService.editPermissionVo(permissionVo);
}
@ApiOperation("删除权限信息")
@PostMapping("delPermissionVo")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long")
})
public void delPermissionVo(@RequestBody PermissionVo permissionVo){
this.adminService.delPermissionVo(permissionVo);
}
@ApiOperation("根据ID获取菜单详细信息")
@GetMapping("getPermissionInfoById")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long")
})
public Permission getPermissionInfoById(@RequestParam(value = "id") Long id){
return this.adminService.getPermissionInfoById(id);
}
@ApiOperation("新增菜单信息")
@PostMapping("addPermission")
@ApiImplicitParams({
@ApiImplicitParam(name = "parentId", value = "上级菜单", required = true, dataType = "Long"),
@ApiImplicitParam(name = "name", value = "菜单标题", required = false, dataType = "String"),
@ApiImplicitParam(name = "url", value = "路径", required = false, dataType = "String"),
@ApiImplicitParam(name = "component", value = "组件", required = false, dataType = "String"),
@ApiImplicitParam(name = "componentName", value = "组件名字", required = false, dataType = "String"),
@ApiImplicitParam(name = "redirect", value = "一级菜单跳转地址", required = false, dataType = "String"),
@ApiImplicitParam(name = "menuType", value = "菜单类型(0:一级菜单; 1:子菜单:2:按钮权限)", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "menuAttribution", value = "菜单归属", required = false, dataType = "String"),
@ApiImplicitParam(name = "perms", value = "菜单权限编码", required = false, dataType = "String"),
@ApiImplicitParam(name = "permsType", value = "权限策略1显示2禁用", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "sortNo", value = "菜单排序", required = false, dataType = "Double"),
@ApiImplicitParam(name = "icon", value = "菜单图标", required = false, dataType = "String"),
@ApiImplicitParam(name = "permissionFlag", value = "权限按钮标识", required = false, dataType = "String"),
@ApiImplicitParam(name = "isRoute", value = "是否路由菜单: 0:不是 1:是(默认值1)", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "isLeaf", value = "是否叶子节点:1:是,0:不是", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "hidden", value = "是否隐藏路由: 0否,1是", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "description", value = "描述", required = false, dataType = "String"),
@ApiImplicitParam(name = "createBy", value = "创建人", required = false, dataType = "String"),
@ApiImplicitParam(name = "createTime", value = "创建时间", required = false, dataType = "LocalDateTime"),
@ApiImplicitParam(name = "updateBy", value = "更新人", required = false, dataType = "String"),
@ApiImplicitParam(name = "updateTime", value = "更新时间", required = false, dataType = "LocalDateTime"),
@ApiImplicitParam(name = "delFlag", value = "删除状态 0正常 1已删除", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "status", value = "按钮权限状态(0无效1有效)", required = false, dataType = "String"),
@ApiImplicitParam(name = "internalOrExternal", value = "外链菜单打开方式 0/内部打开 1/外部打开", required = false, dataType = "Integer")
})
public void addPermission(@RequestBody PermissionVo permissionVo){
this.adminService.addPermission(permissionVo);
}
@ApiOperation("获取分页菜单列表(没有分一二级菜单)")
@ApiImplicitParams({
@ApiImplicitParam(name = "current", value = "第几页", required = true, dataType = "Long"),
@ApiImplicitParam(name = "size", value = "一页几条", required = true, dataType = "Long"),
})
@GetMapping(value = "getPermissionPage")
public IPage<PermissionVo> getPermissionPage(Page page,PermissionVo permissionVo){
return this.adminService.getPermissionPage(page,permissionVo);
}
@ApiOperation("根据角色ID获取角色对应的用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "current", value = "第几页", required = true, dataType = "Long"),
@ApiImplicitParam(name = "size", value = "一页几条", required = true, dataType = "Long"),
})
@PostMapping(value = "getUserByRoleId")
public IPage<RoleVo> getUserByRoleId(Page page,@RequestBody RoleVo roleVo){
return this.adminService.getUserByRoleId(page,roleVo);
}
@PostMapping(value = "delRoleBatchUser")
@ApiOperation("批量删除角色对应的用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id",value = "角色ID",dataType = "String"),
@ApiImplicitParam(name = "userIdList",value = "用户ID",dataType = "Long"),
})
public void delRoleBatchUser(@RequestBody RoleVo roleVo){
this.adminService.delRoleBatchUser(roleVo);
}
@PostMapping(value = "getPermissionVoAllListByRoleId")
@ApiOperation("获取角色对于的权限信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "角色id", required = true, dataType = "String"),
})
public List<PermissionVo> getPermissionVoAllListByRoleId(@RequestBody PermissionVo permissionVo){
return this.adminService.getPermissionVoAllListByRoleId(permissionVo);
}
@ApiOperation("获取菜单信息(没有链表查询)")
@GetMapping(value = "getPermissionInfo")
public List<PermissionVo> getPermissionInfo(PermissionVo permissionVo){
return this.adminService.getPermissionInfo(permissionVo);
}
@ApiOperation("批量删除菜单信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id",value = "主键id集合",dataType = "Long")
})
@PostMapping(value = "delBatchPermissionInfo")
public void delBatchPermissionInfo(@RequestBody List<Long> ids){
this.adminService.delBatchPermissionInfo(ids);
}
@ApiOperation("编辑角色权限")
@ApiResponse(code = 200, message = "success", response = IPage.class)
@PostMapping(value = "editRolePermission")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "角色id", required = true, dataType = "Long"),
@ApiImplicitParam(name = "rolePermissionList[].permissionId", value = "权限id数组", dataType = "Long"),
})
public void editRolePermission(@RequestBody RoleVo roleVo){
adminService.editRolePermission(roleVo);
};
@ApiOperation("批量添加角色用户")
@ApiResponse(code = 200, message = "success", response = IPage.class)
@PostMapping(value = "addRoleBatchUser")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "角色id", dataType = "String"),
@ApiImplicitParam(name = "userList[].id", value = "用户id", dataType = "Long"),
})
public void addRoleBatchUser(@RequestBody RoleVo roleVo){
adminService.addRoleBatchUser(roleVo);
};
@ApiOperation("根据用户角色查询村庄")
@GetMapping(value = "getVillageByRoleId")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "角色id", dataType = "String")
})
public List<Village> getVillageByRoleId(){
List<Village> villages=adminService.getVillageByRoleId(this.accountHelper.getUserId());
return villages;
};
@Autowired
private UserMapper userMapper;
@Autowired
private OauthService oauthService;
@Autowired
private RoleMapper roleMapper;
@Autowired
private RolePermissionMapper rolePermissionMapper;
@Autowired
private UserRoleMapper userRoleMapper;
@Autowired
private DepartmentMapper departmentMapper;
@Autowired
private FlowMapper flowMapper;
@Autowired
private FlowMiddleMapper flowMiddleMapper;
@Autowired
private PermissionMapper permissionMapper;
@Autowired
private RoleVillageMapper roleVillageMapper;
@Autowired
private VillageMapper villageMapper;
@Autowired
private RoleWuyeMapper roleWuyeMapper;
@Override
public UserVo getUser(Long id) {
AssertExt.hasId(id, "no id");
UserVo userDB = this.userMapper.getUserById(id);
AssertExt.notNull(userDB, "user [%s] not exist", id);
userDB.setPassword(null);
userDB.setSalt(null);
userDB.setRoleList(this.roleMapper.getUserRole(id));
return userDB;
}
@Override
public User addUser(UserVo userVo) {
AssertExt.notBlank(userVo.getUserName(), "no user name");
AssertExt.notBlank(userVo.getPassword(), "no password");
AssertExt.isTrue(userVo.getPassword().equals(userVo.getRePassword()), "password not equal");
AssertExt.matches("^[A-Za-z0-9][A-Za-z0-9_\\-]{5,10}[A-Za-z0-9]$", userVo.getUserName(),
"账号是数字、字母、下划线、中横线(不能以下划线、中横线开头结尾);长度7到12位");
AssertExt.matches(".{8,20}", userVo.getPassword(), "密码长度8到20位");
User userDB = this.userMapper.selectOne(new QueryWrapper<User>().eq("user_name", userVo.getUserName()));
AssertExt.isTrue(userDB == null, "user[%s] exists", userVo.getUserName());
User user = new User();
BeanUtils.copyProperties(userVo, user);
user.setSalt(RandomStringUtils.random(10, true, true));
user.setPassword(DigestUtils.sha1Hex(userVo.getPassword() + user.getSalt()));
user.setStatus(User.EStatus.ACTIVE.val());
user.setCreateTime(LocalDateTime.now());
user.setId(null);
this.userMapper.insert(user);
List<Role> roleList = userVo.getRoleList();
if(roleList.size()>0 && roleList!=null){
for (Role role : roleList) {
UserRole userRole = new UserRole();
userRole.setUserId(userVo.getUserId());
userRole.setRoleId(role.getId());
userRole.setUserId(user.getId());
userRole.setCreateTime(LocalDateTime.now());
this.userRoleMapper.insert(userRole);
}
this.userMapper.updateById(user);
}
return user;
}
@Override
public User login(User user) {
AssertExt.notBlank(user.getUserName(), "no user name");
AssertExt.notBlank(user.getPassword(), "no password");
User userDB = this.userMapper.selectOne(new QueryWrapper<User>().eq("user_name", user.getUserName()));
AssertExt.notNull(userDB, "账号不存在", user.getUserName());
boolean check = DigestUtils.sha1Hex(user.getPassword() + userDB.getSalt()).equals(userDB.getPassword());
AssertExt.isTrue(check, "密码错误");
AssertExt.isTrue(User.EStatus.ACTIVE.val().equals(userDB.getStatus()), "状态不可用【%】", userDB.getStatus());
userDB.setPassword(null);
userDB.setSalt(null);
return userDB;
}
@Override
public User updateUser(UserVo userVo) {
AssertExt.hasId(userVo.getId(), "id为空");
AssertExt.notBlank(userVo.getName(), "name为空");
AssertExt.checkEnum(User.EStatus.class, userVo.getStatus(), "无效status %s", userVo.getStatus());
User userDB = this.userMapper.selectById(userVo.getId());
AssertExt.notNull(userDB, "user[%s] not exist", userVo.getId());
userDB.setName(userVo.getName());
userDB.setStatus(userVo.getStatus());
userDB.setDepartmentId(userVo.getDepartmentId());
this.userMapper.updateById(userDB);
if (userVo.getUserRoleList().size()>0) {
this.userRoleMapper.delete(new QueryWrapper<UserRole>().eq("user_id",userVo.getId()));
this.flowMiddleMapper.deleteByUserId(userVo.getId());//删除用户流程中间表
userVo.getUserRoleList().forEach(userRole -> {
userRole.setUserId(userVo.getId());
userRole.setCreateTime(LocalDateTime.now());
this.userRoleMapper.insert(userRole);
//判断是否有流程角色
Flow flow = this.flowMapper.selectOne(new QueryWrapper<Flow>()
.eq("role_id", userRole.getRoleId()));
if(flow!=null){
//有流程角色先删除原有中间表数据再插入新数据
FlowMiddle flowMiddle = this.flowMiddleMapper.selectOne(new QueryWrapper<FlowMiddle>()
.eq("user_id", userVo.getId())
.eq("flow_id", flow.getId()));
if(flowMiddle==null){
FlowMiddle fm_tmp = new FlowMiddle();
fm_tmp.setUserId(userVo.getId());
fm_tmp.setFlowId(flow.getId());
fm_tmp.setCreateTime(LocalDateTime.now());
flowMiddleMapper.insert(fm_tmp);
}else{
flowMiddle.setIsDel(0);
flowMiddle.setUpdateTime(LocalDateTime.now());
flowMiddleMapper.updateById(flowMiddle);
}
}
});
}
return userDB;
}
@Override
public User resetPassword(Long userId, String oldPassword, String newPassword) {
AssertExt.hasId(userId, "userId为空");
AssertExt.notBlank(oldPassword, "旧密码为空");
AssertExt.notBlank(newPassword, "新密码为空");
AssertExt.matches(".{8,20}", newPassword, "密码长度8到20位");
User userDB = this.userMapper.selectById(userId);
AssertExt.notNull(userDB, "user[%s] not exist", userId);
boolean check = DigestUtils.sha1Hex(oldPassword + userDB.getSalt()).equals(userDB.getPassword());
AssertExt.isTrue(check, "旧密码 错误");
userDB.setPassword(DigestUtils.sha1Hex(newPassword + userDB.getSalt()));
this.userMapper.updateById(userDB);
this.oauthService.kickOutUser(userDB.getUserName());
return userDB;
}
@Override
public IPage<UserVo> getUserList(Page page, UserVo userVo) {
IPage<UserVo> userPage = this.userMapper.searchUser(page, userVo);
userPage.getRecords().forEach(u -> {
u.setRoleList(this.roleMapper.getUserRole(u.getId()));
u.setPassword(null);
u.setSalt(null);
});
return userPage;
}
@Override
public void resetUserPassword(Long id, String password) {
AssertExt.hasId(id, "id为空");
User userDB = this.userMapper.selectById(id);
userDB.setPassword(DigestUtils.sha1Hex(password + userDB.getSalt()));
this.userMapper.updateById(userDB);
this.oauthService.kickOutUser(userDB.getUserName());
}
@Override
public List<Role> getUserRole(Long userId) {
AssertExt.hasId(userId, "userId为空");
User userDB = this.userMapper.selectById(userId);
AssertExt.notNull(userDB, "无效用户ID[%s]", userId);
return this.roleMapper.getUserRole(userId);
}
@Override
public List<Role> getUserRoleAll() {
return this.roleMapper.getUserRoleAll();
}
@Override
public List<RolePermission> getUserRolePermission(Long userId) {
AssertExt.hasId(userId, "userId为空");
User userDB = this.userMapper.selectById(userId);
AssertExt.notNull(userDB, "无效用户ID[%s]", userId);
return this.roleMapper.getUserRolePermission(userId);
}
@Override
public void updateUserRole(List<Long> userIds, List<Long> roleIds, Long createUserId) {
AssertExt.notEmpty(userIds, "userIds不能空");
userIds.forEach(userId -> this.updateUserRole(userId, createUserId, roleIds));
}
private void updateUserRole(Long userId, Long createUserId, List<Long> roles) {
AssertExt.hasId(userId, "无效userId");
AssertExt.notNull(roles, "无效rolePermissions");
User userDB = this.userMapper.selectById(userId);
AssertExt.notNull(userDB, "user[%s]不存在");
this.userRoleMapper.delete(new QueryWrapper<UserRole>().eq("user_id", userId));
if (roles.isEmpty()) {
log.warn("没有roleId传入");
return;
}
List<Role> roleDBList = this.roleMapper.selectList(new QueryWrapper<Role>().in("id", roles.stream().distinct().collect(Collectors.toList())));
if (roleDBList.isEmpty()) {
log.warn("roleId均不存在");
return;
}
roleDBList.stream().map(role -> new UserRole()
.setUserId(userId)
.setRoleId(role.getId())
.setCreateUserId(createUserId)
.setCreateTime(LocalDateTime.now())
).forEach(userRole -> {
this.userRoleMapper.insert(userRole);
});
}
@Override
@Transactional
public void addRole(RoleVo roleVo) {
AssertExt.notNull(roleVo.getRoleName(), "角色名称为空");
Role roleDB = this.roleMapper.selectOne(new QueryWrapper<Role>().eq("ROLE_NAME", roleVo.getRoleName()));
AssertExt.isTrue(roleDB == null, "角色名称[%s] 已存在", roleVo.getRoleName());
roleVo.setCreateTime(LocalDateTime.now());
this.roleMapper.insert(roleVo);
RoleVillage roleVillage=new RoleVillage();
roleVillage.setRoleId(roleVo.getId());
roleVillage.setVillageName(roleVo.getVillageName());
int insert1 = this.roleVillageMapper.insert(roleVillage);
if(insert1<1){
new RuntimeException("新增角色村庄失败");
}
RoleWuye roleWuye=new RoleWuye();
roleWuye.setRoleId(roleVo.getId());
roleWuye.setVillageName(roleVo.getWuyeName());
int insert = roleWuyeMapper.insert(roleWuye);
if(insert<1){
new RuntimeException("新增角色物业失败");
}
}
@Override
public void updateRole(RoleVo roleVo) {
AssertExt.hasId(roleVo.getId(),"ID为空");
AssertExt.notNull(roleVo.getRoleName(),"请填写角色名称");
AssertExt.notNull(roleVo.getRoleCode(),"请填写角色编码");
Role roleDB = this.roleMapper.selectOne(new QueryWrapper<Role>().ne("id", roleVo.getId()).eq("role_name", roleVo.getRoleName()));
AssertExt.isTrue(roleDB == null, "角色名称[%s] 已存在", roleVo.getRoleName());
this.roleMapper.updateById(roleVo);
this.rolePermissionMapper.delete(new QueryWrapper<RolePermission>().eq("role_id",roleVo.getId()));
if(roleVo.getRolePermissionList()!=null && roleVo.getRolePermissionList().size()>0){
for (RolePermission rolePermission:roleVo.getRolePermissionList()){
rolePermission.setRoleId(roleVo.getId());
rolePermission.setCreateBy(roleVo.getCreateBy());
rolePermission.setCreateTime(LocalDateTime.now());
this.rolePermissionMapper.insert(rolePermission);
}
}
UpdateWrapper<RoleVillage> updateWrapper=new UpdateWrapper();
LambdaUpdateWrapper<RoleVillage> eq = updateWrapper.lambda().set(RoleVillage::getVillageName, roleVo.getVillageName()).eq(RoleVillage::getRoleId,
roleVo.getId());
int update = roleVillageMapper.update(null, eq);
if(update<1){
new RuntimeException("修改中间表失败");
}
}
@Override
public IPage<Role> getRoleList(IPage<Role> page, RoleVo role) {
QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(role.getRoleName())) {
queryWrapper.like("role_name", role.getRoleName());
}
if (role.getCreateTimeStart() != null) {
queryWrapper.gt("create_time", role.getCreateTimeStart());
}
if (role.getCreateTimeEnd() != null) {
queryWrapper.lt("create_time_end", role.getCreateTimeEnd());
}
queryWrapper.eq("del_flag",0);
queryWrapper.orderByDesc("create_time");
return this.roleMapper.selectPage(page, queryWrapper);
}
@Override
public List<RolePermission> getRolePermission(Long roleId) {
AssertExt.hasId(roleId, "无效roleId");
return this.rolePermissionMapper.selectList(new QueryWrapper<RolePermission>().eq("role_id", roleId));
}
@Override
public void updateRolePermission(List<Long> roleIds, List<RolePermission> rolePermissions, Long createUserId) {
AssertExt.notEmpty(roleIds, "roleIds不能空");
AssertExt.notNull(rolePermissions, "无效rolePermissions");
rolePermissions.forEach((rolePermission) -> {
AssertExt.notBlank(rolePermission.getPermissionValue(), "permissionValue 不能空");
AssertExt.notBlank(rolePermission.getPermissionTitle(), "permissionTitle 不能空");
});
roleIds.forEach(id -> this.updateRolePermission(id, createUserId, rolePermissions));
}
private void updateRolePermission(Long roleId, Long createUserId, List<RolePermission> rolePermissions) {
AssertExt.hasId(roleId, "无效roleId");
AssertExt.notNull(rolePermissions, "无效rolePermissions");
Role roleDB = this.roleMapper.selectById(roleId);
AssertExt.notNull(roleDB, "role[%s]不存在");
this.rolePermissionMapper.delete(new QueryWrapper<RolePermission>().eq("role_id", roleId));
rolePermissions.forEach(rolePermission -> {
rolePermission.setRoleId(roleId);
rolePermission.setCreateUserId(createUserId);
rolePermission.setCreateTime(LocalDateTime.now());
this.rolePermissionMapper.insert(rolePermission);
});
}
@Override
public void addDepartment(Department department) {
AssertExt.notNull(department.getDepartmentName(), "部门名称为空");
Department departmentDB = this.departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", department.getDepartmentName()));
AssertExt.isTrue(departmentDB == null, "该部门名称的已存在");
department.setCreateTime(LocalDateTime.now());
this.departmentMapper.insert(department);
}
@Override
public void updateDepartment(Department department) {
AssertExt.hasId(department.getId(), "id为空");
AssertExt.notNull(department.getDepartmentName(), "部门名称为空");
Department departmentDB = this.departmentMapper.selectById(department.getId());
AssertExt.notNull(departmentDB, "无效id【%s】", department.getId());
List<Department> departmentList = this.departmentMapper.selectList(new QueryWrapper<Department>().ne("id", department.getId()).eq("department_name", department.getDepartmentName()));
AssertExt.isTrue(departmentList.size() == 0, "该部门名称的已存在");
this.departmentMapper.updateById(department);
}
@Override
public void delDepartment(Long id) {
Department department = this.departmentMapper.selectById(id);
AssertExt.notNull(department, "无效id");
/* List<Member> member = this.memberMapper.selectList(new QueryWrapper<Member>().eq("department_id", id).ne("status", Member.EStatus.DIMISSION.val()));
AssertExt.isTrue(member.size() <= 0, "不能删除,下面还有员工");*/
department.setIsDel(1);
this.departmentMapper.updateById(department);
}
@Override
public List<Department> getDepartmentAll() {
return this.departmentMapper.selectList(new QueryWrapper<Department>().eq("is_del", 0));
}
@Override
public IPage<DepartmentVo> getDepartmentList(Page page, String departmentName) {
IPage<DepartmentVo> departmentVoIPage = this.departmentMapper.getDepartmentList(page, departmentName);
return departmentVoIPage;
}
@Override
public IPage<RoleVo> getRolePermissionList(Page page, RoleVo role) {
IPage<RoleVo> rolePermissionList = this.roleMapper.getRolePermissionList(page, role);
rolePermissionList.getRecords().forEach(role1 ->{
role1.setRolePermissionList(this.rolePermissionMapper.selectList(new QueryWrapper<RolePermission>().eq("role_id",role1.getId())));
});
return rolePermissionList;
}
@Override
public void delRole(RoleVo roleVo) {
AssertExt.hasId(roleVo.getId(),"id为空");
Role role = this.roleMapper.selectById(roleVo.getId());
AssertExt.isTrue(role!=null,"角色不存在");
role.setDelFlag(1);
role.setCreateTime(LocalDateTime.now());
this.roleMapper.updateById(role);
}
@Override
public List<PermissionVo> getPermissionVoList(PermissionVo permissionVo) {
List<PermissionVo> permissionVos = permissionMapper.getSysPermissionVoAllList(permissionVo);
if (permissionVos.size()==0){
return null;
}
List<PermissionVo> permissionVoList = new ArrayList<>();
if (permissionVos != null) {
for (int i = 0; i < permissionVos.size(); i++) {
PermissionVo permissionVo1 = permissionVos.get(i);
for (int j = 0; j < permissionVos.size(); j++) {
PermissionVo p = permissionVos.get(j);
if (p.getId().equals(permissionVo1.getParentId())) {
if (p.getChildren() == null) {
p.setChildren(new ArrayList<>());
}
p.getChildren().add(permissionVo1);
}
}
}
for (int i = 0; i < permissionVos.size(); i++) {
PermissionVo permissionVo1 = permissionVos.get(i);
if (permissionVo1.getMenuType() != null && permissionVo1.getMenuType() == 0) {
permissionVoList.add(permissionVo1);
}
}
}
return permissionVoList;
}
@Override
public void editPermissionVo(PermissionVo permissionVo) {
AssertExt.notNull(permissionVo.getId(),"菜单ID不能为空");
Permission permission = this.permissionMapper.selectById(permissionVo.getId());
AssertExt.isFalse(permission==null,"菜单不存在");
BeanUtils.copyProperties(permissionVo,permission);
permissionVo.setCreateTime(LocalDateTime.now());
this.permissionMapper.updateById(permissionVo);
}
@Override
public void delPermissionVo(PermissionVo permissionVo) {
AssertExt.notNull(permissionVo.getId(), "菜单ID不能为空");
Permission permission = this.permissionMapper.selectById(permissionVo.getId());
AssertExt.isFalse(permission == null, "菜单不存在");
permission.setDelFlag(1);
this.permissionMapper.updateById(permission);
}
@Override
public Permission getPermissionInfoById(Long id) {
AssertExt.hasId(id, "id为空");
QueryWrapper<Permission> wrapper = new QueryWrapper<>();
wrapper.eq("id", id).eq("DEL_FLAG", 0);
Permission permission = this.permissionMapper.selectOne(wrapper);
return permission;
}
@Override
public void addPermission(PermissionVo permissionVo) {
AssertExt.notNull(permissionVo.getMenuType(), "菜单类型不能为空");
if (permissionVo.getMenuType() > 0) {
AssertExt.notNull(permissionVo.getParentId(), "请选择父类菜单");
}
permissionVo.setCreateTime(LocalDateTime.now());
permissionVo.setUpdateTime(LocalDateTime.now());
this.permissionMapper.insert(permissionVo);
}
@Override
public IPage<PermissionVo> getPermissionPage(Page page, PermissionVo permissionVo) {
IPage<PermissionVo> permissionVoIPage=this.permissionMapper.getPermissionPage(page,permissionVo);
return permissionVoIPage;
}
@Override
public IPage<RoleVo> getUserByRoleId(Page page,RoleVo roleVo) {
IPage<RoleVo> roleIPage= roleMapper.getRoleList(page,roleVo);
roleIPage.getRecords().forEach(role->{
role.setUserList(this.userMapper.getUserByRoleId(role.getId()));
});
return roleIPage;
}
@Override
public void delRoleBatchUser(RoleVo roleVo) {
AssertExt.notEmpty(roleVo.getRoleUserList(),"需要删除的用户列表不能为空");
AssertExt.notNull(roleVo.getId(),"角色ID不能为空");
for (UserVo userVo:roleVo.getRoleUserList()){
QueryWrapper<UserRole> ur=new QueryWrapper<>();
ur.eq("user_id",userVo.getId()).eq("role_id",roleVo.getId());
this.userRoleMapper.delete(ur);
}
}
@Override
public RoleVo getRoleOne(RoleVo roleVo) {
//获取角色权限信息
List<RolePermission> rolePermissions = rolePermissionMapper.selectList(new QueryWrapper<RolePermission>().eq("role_id", roleVo.getId()));
roleVo.setRolePermissionList(rolePermissions);
Role role = this.roleMapper.selectById(roleVo.getId());
BeanUtils.copyProperties(role,roleVo);
}
@Override
public List<PermissionVo> getPermissionVoAllListByRoleId(PermissionVo permissionVo) {
AssertExt.notNull(permissionVo.getRoleId(), "角色Id不能为空");
Role role = this.roleMapper.selectById(permissionVo.getRoleId());
if (role == null) {
AssertExt.notNull(null, "角色不存在");
}
List<PermissionVo> permissionVos=permissionMapper.getPermissionVoAllListByRoleId(permissionVo);
return permissionVos;
}
@Override
public List<PermissionVo> getPermissionInfo(PermissionVo permissionVo) {
List<PermissionVo> permissionVos= permissionMapper.getPermissionInfo(permissionVo);
if (permissionVos.size()==0){
return null;
}
List<PermissionVo> permissionVoList = new ArrayList<>();
if (permissionVos != null) {
for (int i = 0; i < permissionVos.size(); i++) {
PermissionVo permissionVo1 = permissionVos.get(i);
for (int j = 0; j < permissionVos.size(); j++) {
PermissionVo p = permissionVos.get(j);
if (p.getId().equals(permissionVo1.getParentId())) {
if (p.getChildren() == null) {
p.setChildren(new ArrayList<>());
}
p.getChildren().add(permissionVo1);
}
}
}
for (int i = 0; i < permissionVos.size(); i++) {
PermissionVo permissionVo1 = permissionVos.get(i);
if (permissionVo1.getMenuType() != null && permissionVo1.getMenuType() == 0) {
permissionVoList.add(permissionVo1);
}
}
}
return permissionVoList;
}
@Override
@Transactional
public void delBatchPermissionInfo(List<Long> ids) {
AssertExt.notNull(ids,"未获取到id");
UpdateWrapper<Permission> wrapper = new UpdateWrapper<>();
wrapper.set("del_flag",1).in("id",ids);
this.permissionMapper.update(null,wrapper);
rolePermissionMapper.deleteBatch(ids);
}
@Override
public void editRolePermission(RoleVo roleVo) {
AssertExt.hasId(roleVo.getId(), "角色ID不可为空");
AssertExt.notNull(roleVo.getRolePermissionList(), "权限数据不可为空");
Role roleDB = this.roleMapper.selectById(roleVo.getId());
if (roleDB == null) {
AssertExt.notNull(null, "当前角色不存在");
}
this.rolePermissionMapper.delete(new QueryWrapper<RolePermission>().eq("ROLE_ID", roleVo.getId()));
if (roleVo.getRolePermissionList() != null && roleVo.getRolePermissionList().size() > 0) {
for (RolePermission rolePermission : roleVo.getRolePermissionList()) {
rolePermission.setRoleId(roleVo.getId());
rolePermission.setCreateTime(LocalDateTime.now());
this.rolePermissionMapper.insert(rolePermission);
}
}
}
@Override
public void addRoleBatchUser(RoleVo roleVo) {
AssertExt.notNull(roleVo.getUserList(), "用户列表不能为空");
AssertExt.notNull(roleVo.getId(), "角色id不能为空");
Role role = this.roleMapper.selectById(roleVo.getId());
if (role == null) {
AssertExt.notNull(null, "角色不存在");
}
for (UserVo userVo : roleVo.getUserList()) {
User u = this.userMapper.selectById(userVo.getId());
AssertExt.notNull(u, "用户不存在");
UserRole userVo1 = this.userRoleMapper.selectOne(new QueryWrapper<UserRole>()
.eq("USER_ID", userVo.getId())
.eq("ROLE_ID", roleVo.getId()));
if (userVo1 == null) {
UserRole ur = new UserRole();
ur.setUserId(userVo.getId());
ur.setRoleId(roleVo.getId());
ur.setCreateTime(LocalDateTime.now());
this.userRoleMapper.insert(ur);
}
}
}
@Override
public List<RolePermissionVo> getCurrentUserRolePermissionVo(Long userId) {
AssertExt.hasId(userId, "userId为空");
User userDB = this.userMapper.selectById(userId);
AssertExt.notNull(userDB, "无效用户ID[%s]", userId);
List<RolePermissionVo> permissionVos = this.roleMapper.getUserRolePermissionVo(userId);
return permissionVos;
}
@Override
public List<Village> getVillageByRoleId(Long userId) {
if(userId==1){
List<Village> adminVillage=villageMapper.getVillage();
return adminVillage;
}
List<Village> village=userRoleMapper.getVillage(userId);
return village;
}