用户支持分组,wiki空间支持按分组授权,细节优化

This commit is contained in:
暮光:城中城
2021-02-09 22:57:52 +08:00
parent 13d6f3ca8b
commit a153809649
111 changed files with 2760 additions and 338 deletions

View File

@@ -5,8 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.AuthInfo;
import com.zyplayer.doc.data.repository.manage.entity.UserAuth;
import com.zyplayer.doc.data.repository.manage.entity.UserInfo;
import com.zyplayer.doc.data.service.manage.AuthInfoService;
import com.zyplayer.doc.data.service.manage.UserAuthService;
@@ -18,8 +16,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.stream.Collectors;
import java.util.Objects;
import java.util.Set;
@RestController
public class LoginController {
@@ -44,19 +42,7 @@ public class LoginController {
if (!Objects.equals(userInfo.getPassword(), pwdMd5)) {
return DocResponseJson.warn("密码错误");
}
QueryWrapper<UserAuth> authWrapper = new QueryWrapper<>();
authWrapper.eq("user_id", userInfo.getId()).eq("del_flag", "0");
List<UserAuth> userAuthList = userAuthService.list(authWrapper);
Set<String> userAuthSet = Collections.emptySet();
if (userAuthList != null && userAuthList.size() > 0) {
List<Long> authIdList = userAuthList.stream().map(UserAuth::getAuthId).collect(Collectors.toList());
Collection<AuthInfo> authInfoList = authInfoService.listByIds(authIdList);
Map<Long, String> authNameMap = authInfoList.stream().collect(Collectors.toMap(AuthInfo::getId, AuthInfo::getAuthName));
userAuthSet = userAuthList.stream().map(val -> {
String authName = Optional.ofNullable(authNameMap.get(val.getAuthId())).orElse("");
return authName + Optional.ofNullable(val.getAuthCustomSuffix()).orElse("");
}).collect(Collectors.toSet());
}
Set<String> userAuthSet = userAuthService.getUserAuthSet(userInfo.getId());
String accessToken = RandomUtil.simpleUUID();
DocUserDetails userDetails = new DocUserDetails(userInfo.getId(), userInfo.getUserName(), userInfo.getPassword(), true, userAuthSet);
DocUserUtil.setCurrentUser(accessToken, userDetails);
@@ -79,4 +65,4 @@ public class LoginController {
DocUserUtil.logout();
return DocResponseJson.ok();
}
}
}

View File

@@ -0,0 +1,113 @@
package com.zyplayer.doc.manage.web.manage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zyplayer.doc.core.annotation.AuthMan;
import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.core.json.ResponseJson;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.UserGroup;
import com.zyplayer.doc.data.repository.manage.entity.UserGroupRelation;
import com.zyplayer.doc.data.repository.manage.entity.UserInfo;
import com.zyplayer.doc.data.repository.manage.mapper.UserGroupMapper;
import com.zyplayer.doc.data.repository.support.consts.DocAuthConst;
import com.zyplayer.doc.data.service.manage.UserGroupRelationService;
import com.zyplayer.doc.data.service.manage.UserGroupService;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("/user/group")
public class UserGroupController {
@Resource
UserGroupService userGroupService;
@Resource
UserGroupMapper userGroupMapper;
@Resource
UserGroupRelationService userGroupRelationService;
@AuthMan
@PostMapping("/list")
public ResponseJson<Object> list() {
QueryWrapper<UserGroup> wrapper = new QueryWrapper<>();
wrapper.select("id", "name");
wrapper.eq("del_flag", 0);
List<UserGroup> userGroupList = userGroupService.list(wrapper);
return DocResponseJson.ok(userGroupList);
}
@PostMapping("/update")
@AuthMan(DocAuthConst.USER_MANAGE)
public ResponseJson<Object> update(Long id, String name) {
if (StringUtils.isBlank(name)) {
return DocResponseJson.warn("分组名不能为空");
}
UserGroup userGroup = new UserGroup();
userGroup.setId(id);
userGroup.setName(name);
if (userGroup.getId() == null) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
userGroup.setCreateTime(new Date());
userGroup.setCreateUserId(currentUser.getUserId());
userGroup.setCreateUserName(currentUser.getUsername());
}
userGroupService.saveOrUpdate(userGroup);
return DocResponseJson.ok();
}
@PostMapping("/delete")
@AuthMan(DocAuthConst.USER_MANAGE)
public ResponseJson<Object> delete(Long id) {
UserGroup userGroupUp = new UserGroup();
userGroupUp.setId(id);
userGroupUp.setDelFlag(1);
userGroupService.updateById(userGroupUp);
return DocResponseJson.ok();
}
@PostMapping("/relation/update")
@AuthMan(DocAuthConst.USER_MANAGE)
public ResponseJson<Object> relationUpdate(Long groupId, Long userId) {
QueryWrapper<UserGroupRelation> wrapper = new QueryWrapper<>();
wrapper.eq("group_id", groupId).eq("user_id", userId);
UserGroupRelation userGroupRelation = userGroupRelationService.getOne(wrapper);
if (userGroupRelation == null) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
userGroupRelation = new UserGroupRelation();
userGroupRelation.setCreateTime(new Date());
userGroupRelation.setCreateUserId(currentUser.getUserId());
userGroupRelation.setCreateUserName(currentUser.getUsername());
userGroupRelation.setGroupId(groupId);
userGroupRelation.setUserId(userId);
}
userGroupRelation.setDelFlag(0);
userGroupRelationService.saveOrUpdate(userGroupRelation);
return DocResponseJson.ok();
}
@PostMapping("/relation/remove")
@AuthMan(DocAuthConst.USER_MANAGE)
public ResponseJson<Object> relationRemove(Long groupId, Long userId) {
QueryWrapper<UserGroupRelation> wrapper = new QueryWrapper<>();
wrapper.eq("group_id", groupId).eq("user_id", userId);
UserGroupRelation relationUp = new UserGroupRelation();
relationUp.setDelFlag(1);
userGroupRelationService.update(relationUp, wrapper);
return DocResponseJson.ok();
}
@PostMapping("/relation/list")
@AuthMan(DocAuthConst.USER_MANAGE)
public ResponseJson<Object> groupUserList(Long groupId) {
List<UserInfo> userInfoList = userGroupMapper.groupUserList(groupId);
return DocResponseJson.ok(userInfoList);
}
}

View File

@@ -2,6 +2,8 @@ package com.zyplayer.doc.manage.web.manage;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zyplayer.doc.core.annotation.AuthMan;
@@ -18,8 +20,8 @@ import com.zyplayer.doc.data.service.manage.UserAuthService;
import com.zyplayer.doc.data.service.manage.UserInfoService;
import com.zyplayer.doc.manage.web.manage.param.UserListParam;
import com.zyplayer.doc.manage.web.manage.vo.AuthInfoVo;
import com.zyplayer.doc.manage.web.manage.vo.UserInfoAuthVo;
import com.zyplayer.doc.manage.web.manage.vo.UserAuthVo;
import com.zyplayer.doc.manage.web.manage.vo.UserInfoAuthVo;
import org.apache.commons.lang.StringUtils;
import org.dozer.Mapper;
import org.springframework.util.DigestUtils;
@@ -68,8 +70,24 @@ public class UserInfoController {
return DocResponseJson.ok(selfInfoVo);
}
@PostMapping("/search")
@AuthMan(DocAuthConst.USER_MANAGE)
public ResponseJson<Object> search(String search) {
if (StringUtils.isBlank(search)) {
return DocResponseJson.ok();
}
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.and(con -> con.and(conSub -> conSub.like("user_name", search).or().like("user_no", search)
.or().like("email", search)).and(conSub -> conSub.eq("del_flag", 0)));
queryWrapper.select("id", "user_name");
// 搜索最多返回20条
IPage<UserInfo> page = new Page<>(1, 20, false);
userInfoService.page(page, queryWrapper);
return DocResponseJson.ok(page);
}
@PostMapping("/list")
@AuthMan(DocAuthConst.USER_MANAGE)
public ResponseJson<Object> list(UserListParam param) {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(param.getKeyword())) {