用户支持分组,wiki空间支持按分组授权,细节优化
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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())) {
|
||||
|
||||
Reference in New Issue
Block a user