WIKI空间支持分页,页面展示优化

This commit is contained in:
暮光:城中城
2023-01-10 20:07:00 +08:00
parent 1c4230e2d1
commit e54d4972e1
10 changed files with 300 additions and 243 deletions

View File

@@ -24,11 +24,6 @@ import javax.sql.DataSource;
@Configuration @Configuration
public class MybatisPlusConfig { public class MybatisPlusConfig {
/**
* sql日志
**/
private static final SqlLogInterceptor SQL_LOG_INTERCEPTOR = new SqlLogInterceptor();
/** /**
* 数据库配置 * 数据库配置
*/ */
@@ -57,7 +52,7 @@ public class MybatisPlusConfig {
public MybatisSqlSessionFactoryBean manageSqlSessionFactory() throws Exception { public MybatisSqlSessionFactoryBean manageSqlSessionFactory() throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean(); MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(manageDatasource()); sqlSessionFactoryBean.setDataSource(manageDatasource());
sqlSessionFactoryBean.setPlugins(SQL_LOG_INTERCEPTOR, paginationInterceptor); sqlSessionFactoryBean.setPlugins(new SqlLogInterceptor(), paginationInterceptor);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapper/manage/*Mapper.xml")); sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapper/manage/*Mapper.xml"));

View File

@@ -12,5 +12,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @since 2021-02-09 * @since 2021-02-09
*/ */
public interface UserSettingService extends IService<UserSetting> { public interface UserSettingService extends IService<UserSetting> {
String getMySettingValue(String name);
} }

View File

@@ -3,6 +3,8 @@ package com.zyplayer.doc.data.service.manage;
import com.zyplayer.doc.data.repository.manage.entity.WikiSpaceFavorite; import com.zyplayer.doc.data.repository.manage.entity.WikiSpaceFavorite;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/** /**
* <p> * <p>
* 用户空间收藏记录表 服务类 * 用户空间收藏记录表 服务类
@@ -12,5 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @since 2021-02-09 * @since 2021-02-09
*/ */
public interface WikiSpaceFavoriteService extends IService<WikiSpaceFavorite> { public interface WikiSpaceFavoriteService extends IService<WikiSpaceFavorite> {
List<WikiSpaceFavorite> myFavoriteSpaceList();
} }

View File

@@ -1,9 +1,13 @@
package com.zyplayer.doc.data.service.manage.impl; package com.zyplayer.doc.data.service.manage.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.UserSetting; import com.zyplayer.doc.data.repository.manage.entity.UserSetting;
import com.zyplayer.doc.data.repository.manage.mapper.UserSettingMapper; import com.zyplayer.doc.data.repository.manage.mapper.UserSettingMapper;
import com.zyplayer.doc.data.repository.support.consts.UserSettingConst;
import com.zyplayer.doc.data.service.manage.UserSettingService; import com.zyplayer.doc.data.service.manage.UserSettingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@@ -16,5 +20,16 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class UserSettingServiceImpl extends ServiceImpl<UserSettingMapper, UserSetting> implements UserSettingService { public class UserSettingServiceImpl extends ServiceImpl<UserSettingMapper, UserSetting> implements UserSettingService {
@Override
public String getMySettingValue(String name) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
LambdaQueryWrapper<UserSetting> settingWrapper = new LambdaQueryWrapper<>();
settingWrapper.eq(UserSetting::getUserId, currentUser.getUserId());
settingWrapper.eq(UserSetting::getName, UserSettingConst.WIKI_ONLY_SHOW_FAVORITE);
settingWrapper.eq(UserSetting::getDelFlag, 0);
UserSetting userSetting = this.getOne(settingWrapper);
if (userSetting == null) return null;
return userSetting.getValue();
}
} }

View File

@@ -1,11 +1,16 @@
package com.zyplayer.doc.data.service.manage.impl; package com.zyplayer.doc.data.service.manage.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.WikiSpaceFavorite; import com.zyplayer.doc.data.repository.manage.entity.WikiSpaceFavorite;
import com.zyplayer.doc.data.repository.manage.mapper.WikiSpaceFavoriteMapper; import com.zyplayer.doc.data.repository.manage.mapper.WikiSpaceFavoriteMapper;
import com.zyplayer.doc.data.service.manage.WikiSpaceFavoriteService; import com.zyplayer.doc.data.service.manage.WikiSpaceFavoriteService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* <p> * <p>
* 用户空间收藏记录表 服务实现类 * 用户空间收藏记录表 服务实现类
@@ -16,5 +21,13 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class WikiSpaceFavoriteServiceImpl extends ServiceImpl<WikiSpaceFavoriteMapper, WikiSpaceFavorite> implements WikiSpaceFavoriteService { public class WikiSpaceFavoriteServiceImpl extends ServiceImpl<WikiSpaceFavoriteMapper, WikiSpaceFavorite> implements WikiSpaceFavoriteService {
@Override
public List<WikiSpaceFavorite> myFavoriteSpaceList() {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
LambdaQueryWrapper<WikiSpaceFavorite> favoriteWrapper = new LambdaQueryWrapper<>();
favoriteWrapper.eq(WikiSpaceFavorite::getUserId, currentUser.getUserId());
favoriteWrapper.eq(WikiSpaceFavorite::getDelFlag, 0);
return this.list(favoriteWrapper);
}
} }

View File

@@ -13,9 +13,7 @@
<div>文档<a target="_blank" href="http://doc.zyplayer.com/doc-wiki#/docs/w4eSzPWvQRSBvaCHZS8t6d">http://doc.zyplayer.com</a></div> <div>文档<a target="_blank" href="http://doc.zyplayer.com/doc-wiki#/docs/w4eSzPWvQRSBvaCHZS8t6d">http://doc.zyplayer.com</a></div>
<div>主页<a target="_blank" href="https://gitee.com/zyplayer/zyplayer-doc">https://gitee.com/zyplayer/zyplayer-doc</a></div> <div>主页<a target="_blank" href="https://gitee.com/zyplayer/zyplayer-doc">https://gitee.com/zyplayer/zyplayer-doc</a></div>
<div>反馈<a target="_blank" href="https://gitee.com/zyplayer/zyplayer-doc/issues">https://gitee.com/zyplayer/zyplayer-doc/issues</a></div> <div>反馈<a target="_blank" href="https://gitee.com/zyplayer/zyplayer-doc/issues">https://gitee.com/zyplayer/zyplayer-doc/issues</a></div>
<div>特性关注&技术交流QQ群466363173</div> <div>新功能关注&技术交流QQ群466363173</div>
<el-divider content-position="left">UI/设计/开发/测试</el-divider>
<div><a target="_blank" href="http://zyplayer.com">暮光城中城</a></div>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="开源软件"> <el-tab-pane label="开源软件">

View File

@@ -470,7 +470,7 @@ body {
} }
.fold-btn { .fold-btn {
color: #ccc; color: #ccc !important;
font-size: 18px; font-size: 18px;
} }

View File

@@ -16,11 +16,7 @@
<div>文档<a target="_blank" href="http://doc.zyplayer.com/doc-wiki#/docs/w4eSzPWvQRSBvaCHZS8t6d">http://doc.zyplayer.com</a></div> <div>文档<a target="_blank" href="http://doc.zyplayer.com/doc-wiki#/docs/w4eSzPWvQRSBvaCHZS8t6d">http://doc.zyplayer.com</a></div>
<div>主页<a target="_blank" href="https://gitee.com/zyplayer/zyplayer-doc">https://gitee.com/zyplayer/zyplayer-doc</a></div> <div>主页<a target="_blank" href="https://gitee.com/zyplayer/zyplayer-doc">https://gitee.com/zyplayer/zyplayer-doc</a></div>
<div>反馈<a target="_blank" href="https://gitee.com/zyplayer/zyplayer-doc/issues">https://gitee.com/zyplayer/zyplayer-doc/issues</a></div> <div>反馈<a target="_blank" href="https://gitee.com/zyplayer/zyplayer-doc/issues">https://gitee.com/zyplayer/zyplayer-doc/issues</a></div>
<div>特性关注&技术交流QQ群466363173</div> <div>新功能关注&技术交流QQ群466363173</div>
<el-divider content-position="left">UI/设计/开发/测试</el-divider>
<div>
<a target="_blank" href="http://zyplayer.com">暮光城中城</a>
</div>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="开源软件"> <el-tab-pane label="开源软件">

View File

@@ -1,5 +1,5 @@
<template> <template>
<div style="min-height: 100%" class="space-manage-vue"> <div style="min-height: 100%;" class="space-manage-vue">
<el-breadcrumb separator-class="el-icon-arrow-right" style="padding: 20px 10px"> <el-breadcrumb separator-class="el-icon-arrow-right" style="padding: 20px 10px">
<el-breadcrumb-item>WIKI文档</el-breadcrumb-item> <el-breadcrumb-item>WIKI文档</el-breadcrumb-item>
<el-breadcrumb-item>空间管理</el-breadcrumb-item> <el-breadcrumb-item>空间管理</el-breadcrumb-item>
@@ -48,9 +48,20 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="page-info-box">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 30, 50]"
:page-size="10"
:current-page="searchParam.pageNum"
layout="prev, pager, next, jumper, sizes, total"
:total="totalCount">
</el-pagination>
</div>
</div> </div>
<!--分组权限弹窗--> <!--分组权限弹窗-->
<el-dialog title="权限管理" v-model="spaceAuthDialogVisible" width="900px"> <el-dialog title="权限管理" v-model="spaceAuthDialogVisible" width="900px" :close-on-click-modal="false">
<el-row> <el-row>
<el-select v-model="spaceAuthNewGroupId" filterable placeholder="请选择分组" style="width: 750px; margin-right: 10px"> <el-select v-model="spaceAuthNewGroupId" filterable placeholder="请选择分组" style="width: 750px; margin-right: 10px">
<el-option v-for="item in searchGroupList" :key="item.id" :label="searchGroupMap[item.id]" :value="item.id"></el-option> <el-option v-for="item in searchGroupList" :key="item.id" :label="searchGroupMap[item.id]" :value="item.id"></el-option>
@@ -167,11 +178,9 @@ const addSpaceAuthUserGroup = () => {
} }
const updateSpaceFavorite = (row) => { const updateSpaceFavorite = (row) => {
let delFlag = row.favorite == 1 ? 1 : 0 let delFlag = row.favorite == 1 ? 1 : 0
pageApi pageApi.spaceFavoriteUpdate({spaceId: row.id, delFlag: delFlag}).then((json) => {
.spaceFavoriteUpdate({spaceId: row.id, delFlag: delFlag}) row.favorite = row.favorite == 1 ? 0 : 1
.then((json) => { })
row.favorite = row.favorite == 1 ? 0 : 1
})
} }
const saveGroupSpaceAuth = () => { const saveGroupSpaceAuth = () => {
let param = { let param = {
@@ -183,9 +192,7 @@ const saveGroupSpaceAuth = () => {
}) })
} }
const manageUserGroup = () => { const manageUserGroup = () => {
let manageUrl = let manageUrl = location.href.substring(0, location.href.indexOf('/doc-wiki')) + '#/console/userGroupList'
location.href.substring(0, location.href.indexOf('/doc-wiki')) +
'#/console/userGroupList'
window.open(manageUrl, '_blank') window.open(manageUrl, '_blank')
} }
const deleteGroupSpaceAuth = (row) => { const deleteGroupSpaceAuth = (row) => {
@@ -199,9 +206,7 @@ const editSpaceAuth = (row) => {
spaceAuthGroupList.value = [] spaceAuthGroupList.value = []
userApi.userGroupList().then((json) => { userApi.userGroupList().then((json) => {
searchGroupList.value = json.data || [] searchGroupList.value = json.data || []
searchGroupList.value.forEach( searchGroupList.value.forEach((item) => (searchGroupMap.value[item.id] = item.name))
(item) => (searchGroupMap.value[item.id] = item.name)
)
}) })
pageApi.spaceAuthList({spaceId: row.id}).then((json) => { pageApi.spaceAuthList({spaceId: row.id}).then((json) => {
spaceAuthGroupList.value = json.data || [] spaceAuthGroupList.value = json.data || []
@@ -222,13 +227,30 @@ const deleteSpaceInfo = (row) => {
}) })
}) })
} }
let totalCount = ref(0);
let searchParam = ref({
ignoreFavorite: 1,
pageNum: 1,
pageSize: 10,
});
const loadSpaceList = () => { const loadSpaceList = () => {
spaceListLoading.value = true spaceListLoading.value = true
pageApi.spaceList({ignoreFavorite: 1}).then((json) => { pageApi.spaceList(searchParam.value).then((json) => {
spaceList.value = json.data || [] spaceList.value = json.data || []
if (searchParam.value.pageNum === 1) {
totalCount.value = json.total;
}
setTimeout(() => (spaceListLoading.value = false), 500) setTimeout(() => (spaceListLoading.value = false), 500)
}) })
} }
const handleSizeChange = (val) => {
searchParam.value.pageSize = val
loadSpaceList()
}
const handleCurrentChange = (val) => {
searchParam.value.pageNum = val
loadSpaceList()
}
const wikiOnlyShowFavoriteChange = () => { const wikiOnlyShowFavoriteChange = () => {
let param = { let param = {
name: 'wiki_only_show_favorite', name: 'wiki_only_show_favorite',
@@ -253,6 +275,18 @@ const getSelfUserInfo = () => {
} }
</script> </script>
<style lang="scss">
.space-manage-vue {
.page-info-box {
margin-top: 10px;
.el-pagination {
justify-content: end;
}
}
}
</style>
<style> <style>
.space-manage-vue .empty-news { .space-manage-vue .empty-news {
text-align: center; text-align: center;

View File

@@ -1,9 +1,12 @@
package com.zyplayer.doc.wiki.controller; package com.zyplayer.doc.wiki.controller;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zyplayer.doc.core.annotation.AuthMan; import com.zyplayer.doc.core.annotation.AuthMan;
import com.zyplayer.doc.core.json.DocResponseJson; import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.core.json.ResponseJson; import com.zyplayer.doc.core.json.ResponseJson;
@@ -25,16 +28,12 @@ import com.zyplayer.doc.wiki.framework.consts.WikiAuthType;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Date; import java.util.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -49,206 +48,209 @@ import java.util.stream.Collectors;
@RequestMapping("/zyplayer-doc-wiki/space") @RequestMapping("/zyplayer-doc-wiki/space")
@RequiredArgsConstructor @RequiredArgsConstructor
public class WikiSpaceController { public class WikiSpaceController {
private final WikiSpaceService wikiSpaceService; private final WikiSpaceService wikiSpaceService;
private final UserGroupAuthService userGroupAuthService; private final UserGroupAuthService userGroupAuthService;
private final WikiSpaceFavoriteService wikiSpaceFavoriteService; private final WikiSpaceFavoriteService wikiSpaceFavoriteService;
private final UserSettingService userSettingService; private final UserSettingService userSettingService;
@PostMapping("/list") @PostMapping("/list")
public ResponseJson<List<WikiSpaceVo>> list(WikiSpace wikiSpace, Integer ignoreFavorite) { public ResponseJson<List<WikiSpaceVo>> list(WikiSpace wikiSpace, Integer ignoreFavorite, Long pageNum, Long pageSize) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser(); DocUserDetails currentUser = DocUserUtil.getCurrentUser();
UpdateWrapper<WikiSpace> wrapper = new UpdateWrapper<>(); LambdaQueryWrapper<WikiSpace> wrapper = new LambdaQueryWrapper<>();
wrapper.eq("del_flag", 0); wrapper.eq(WikiSpace::getDelFlag, 0);
wrapper.eq(wikiSpace.getId() != null, "id", wikiSpace.getId()); wrapper.eq(wikiSpace.getId() != null, WikiSpace::getId, wikiSpace.getId());
wrapper.and(con -> con.and(conSub -> conSub.eq("type", 3).eq("create_user_id", currentUser.getUserId())).or().in("type", 1, 2)); wrapper.and(con -> con.and(conSub -> conSub.eq(WikiSpace::getType, 3).eq(WikiSpace::getCreateUserId, currentUser.getUserId())).or().in(WikiSpace::getType, 1, 2));
List<WikiSpace> spaceList = wikiSpaceService.list(wrapper); // 收藏的空间
List<WikiSpaceVo> spaceVoList = spaceList.stream().map(WikiSpaceVo::new).collect(Collectors.toList()); List<WikiSpaceFavorite> favoriteList = wikiSpaceFavoriteService.myFavoriteSpaceList();
// 收藏 Set<Long> favoriteSpaceIds = favoriteList.stream().map(WikiSpaceFavorite::getSpaceId).collect(Collectors.toSet());
QueryWrapper<WikiSpaceFavorite> favoriteWrapper = new QueryWrapper<>(); // 只展示收藏的空间
favoriteWrapper.eq("user_id", currentUser.getUserId()); if (!Objects.equals(ignoreFavorite, 1)) {
favoriteWrapper.eq("del_flag", 0); String onlyShowFavorite = userSettingService.getMySettingValue(UserSettingConst.WIKI_ONLY_SHOW_FAVORITE);
List<WikiSpaceFavorite> favoriteList = wikiSpaceFavoriteService.list(favoriteWrapper); if (Objects.equals(onlyShowFavorite, "1")) {
Set<Long> spaceFavoriteMap = favoriteList.stream().map(WikiSpaceFavorite::getSpaceId).collect(Collectors.toSet()); if (favoriteSpaceIds.isEmpty()) {
for (WikiSpaceVo spaceVo : spaceVoList) { return DocResponseJson.ok();
spaceVo.setFavorite(spaceFavoriteMap.contains(spaceVo.getId()) ? 1 : 0); }
} wrapper.in(WikiSpace::getId, favoriteSpaceIds);
// 设置 }
if (!Objects.equals(ignoreFavorite, 1)) { }
QueryWrapper<UserSetting> settingWrapper = new QueryWrapper<>(); pageNum = Optional.ofNullable(pageNum).orElse(1L);
settingWrapper.eq("user_id", currentUser.getUserId()); pageSize = Optional.ofNullable(pageSize).orElse(500L);
settingWrapper.eq("name", UserSettingConst.WIKI_ONLY_SHOW_FAVORITE); pageNum = Math.min(Math.max(pageNum, 1L), 1000);
settingWrapper.eq("del_flag", 0); pageSize = Math.min(Math.max(pageSize, 10L), 100);
UserSetting userSetting = userSettingService.getOne(settingWrapper); IPage<WikiSpace> page = new Page<>(pageNum, pageSize, Objects.equals(pageNum, 1L));
if (userSetting != null && Objects.equals(userSetting.getValue(), "1")) { wikiSpaceService.page(page, wrapper);
List<WikiSpaceVo> onlySpaceVoList = spaceVoList.stream().filter(item -> Objects.equals(item.getFavorite(), 1)).collect(Collectors.toList()); // 设置收藏状态
return DocResponseJson.ok(onlySpaceVoList); List<WikiSpaceVo> spaceVoList = page.getRecords().stream().map(WikiSpaceVo::new).collect(Collectors.toList());
} for (WikiSpaceVo spaceVo : spaceVoList) {
} spaceVo.setFavorite(favoriteSpaceIds.contains(spaceVo.getId()) ? 1 : 0);
return DocResponseJson.ok(spaceVoList); }
} DocResponseJson<List<WikiSpaceVo>> responseJson = DocResponseJson.ok(spaceVoList);
responseJson.setTotal(page.getTotal());
@PostMapping("/update") return responseJson;
public ResponseJson<WikiSpace> update(WikiSpace wikiSpace) { }
Long id = wikiSpace.getId();
DocUserDetails currentUser = DocUserUtil.getCurrentUser(); @PostMapping("/update")
if (id != null && id > 0) { public ResponseJson<WikiSpace> update(WikiSpace wikiSpace) {
WikiSpace wikiSpaceSel = wikiSpaceService.getById(id); Long id = wikiSpace.getId();
// 不是创建人不能修改空间 DocUserDetails currentUser = DocUserUtil.getCurrentUser();
if (!Objects.equals(currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) { if (id != null && id > 0) {
return DocResponseJson.warn("您没有该空间的编辑权!"); WikiSpace wikiSpaceSel = wikiSpaceService.getById(id);
} // 不是创建人不能修改空间
wikiSpace.setUuid(null); if (!Objects.equals(currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
wikiSpace.setEditType(null); return DocResponseJson.warn("您没有该空间的编辑权!");
wikiSpaceService.updateById(wikiSpace); }
} else { wikiSpace.setUuid(null);
wikiSpace.setUuid(IdUtil.simpleUUID()); wikiSpace.setEditType(null);
wikiSpace.setCreateTime(new Date()); wikiSpaceService.updateById(wikiSpace);
wikiSpace.setCreateUserId(currentUser.getUserId()); } else {
wikiSpace.setCreateUserName(currentUser.getUsername()); wikiSpace.setUuid(IdUtil.simpleUUID());
wikiSpaceService.save(wikiSpace); wikiSpace.setCreateTime(new Date());
} wikiSpace.setCreateUserId(currentUser.getUserId());
return DocResponseJson.ok(wikiSpace); wikiSpace.setCreateUserName(currentUser.getUsername());
} wikiSpaceService.save(wikiSpace);
}
@PostMapping("/setting/update") return DocResponseJson.ok(wikiSpace);
public ResponseJson<WikiSpace> settingUpdate(String name, String value) { }
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
QueryWrapper<UserSetting> wrapper = new QueryWrapper<>(); @PostMapping("/setting/update")
wrapper.eq("user_id", currentUser.getUserId()); public ResponseJson<WikiSpace> settingUpdate(String name, String value) {
wrapper.eq("name", name); DocUserDetails currentUser = DocUserUtil.getCurrentUser();
UserSetting userSettingSel = userSettingService.getOne(wrapper); QueryWrapper<UserSetting> wrapper = new QueryWrapper<>();
UserSetting userSettingUp = new UserSetting(); wrapper.eq("user_id", currentUser.getUserId());
if (userSettingSel != null) { wrapper.eq("name", name);
userSettingUp.setId(userSettingSel.getId()); UserSetting userSettingSel = userSettingService.getOne(wrapper);
} else { UserSetting userSettingUp = new UserSetting();
userSettingUp.setCreateTime(new Date()); if (userSettingSel != null) {
} userSettingUp.setId(userSettingSel.getId());
userSettingUp.setName(name); } else {
userSettingUp.setValue(value); userSettingUp.setCreateTime(new Date());
userSettingUp.setDelFlag(0); }
userSettingUp.setUserId(currentUser.getUserId()); userSettingUp.setName(name);
userSettingService.saveOrUpdate(userSettingUp); userSettingUp.setValue(value);
return DocResponseJson.ok(); userSettingUp.setDelFlag(0);
} userSettingUp.setUserId(currentUser.getUserId());
userSettingService.saveOrUpdate(userSettingUp);
@PostMapping("/setting/list") return DocResponseJson.ok();
public ResponseJson<WikiSpace> settingList() { }
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
QueryWrapper<UserSetting> wrapper = new QueryWrapper<>(); @PostMapping("/setting/list")
wrapper.eq("user_id", currentUser.getUserId()); public ResponseJson<WikiSpace> settingList() {
wrapper.eq("name", UserSettingConst.WIKI_ONLY_SHOW_FAVORITE); DocUserDetails currentUser = DocUserUtil.getCurrentUser();
wrapper.eq("del_flag", 0); QueryWrapper<UserSetting> wrapper = new QueryWrapper<>();
List<UserSetting> settingList = userSettingService.list(wrapper); wrapper.eq("user_id", currentUser.getUserId());
if (CollectionUtils.isEmpty(settingList)) { wrapper.eq("name", UserSettingConst.WIKI_ONLY_SHOW_FAVORITE);
return DocResponseJson.ok(); wrapper.eq("del_flag", 0);
} List<UserSetting> settingList = userSettingService.list(wrapper);
Map<String, String> userSettingMap = settingList.stream().collect(Collectors.toMap(UserSetting::getName, UserSetting::getValue)); if (CollectionUtils.isEmpty(settingList)) {
return DocResponseJson.ok(userSettingMap); return DocResponseJson.ok();
} }
Map<String, String> userSettingMap = settingList.stream().collect(Collectors.toMap(UserSetting::getName, UserSetting::getValue));
@PostMapping("/favorite/update") return DocResponseJson.ok(userSettingMap);
public ResponseJson<Object> groupAuth(Long spaceId, Integer delFlag) { }
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
QueryWrapper<WikiSpaceFavorite> wrapper = new QueryWrapper<>(); @PostMapping("/favorite/update")
wrapper.eq("space_id", spaceId); public ResponseJson<Object> groupAuth(Long spaceId, Integer delFlag) {
wrapper.eq("user_id", currentUser.getUserId()); DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiSpaceFavorite favoriteSel = wikiSpaceFavoriteService.getOne(wrapper); QueryWrapper<WikiSpaceFavorite> wrapper = new QueryWrapper<>();
WikiSpaceFavorite favoriteUp = new WikiSpaceFavorite(); wrapper.eq("space_id", spaceId);
if (favoriteSel != null) { wrapper.eq("user_id", currentUser.getUserId());
favoriteUp.setId(favoriteSel.getId()); WikiSpaceFavorite favoriteSel = wikiSpaceFavoriteService.getOne(wrapper);
} else { WikiSpaceFavorite favoriteUp = new WikiSpaceFavorite();
favoriteUp.setCreateTime(new Date()); if (favoriteSel != null) {
} favoriteUp.setId(favoriteSel.getId());
favoriteUp.setDelFlag(delFlag); } else {
favoriteUp.setUserId(currentUser.getUserId()); favoriteUp.setCreateTime(new Date());
favoriteUp.setSpaceId(spaceId); }
wikiSpaceFavoriteService.saveOrUpdate(favoriteUp); favoriteUp.setDelFlag(delFlag);
return DocResponseJson.ok(); favoriteUp.setUserId(currentUser.getUserId());
} favoriteUp.setSpaceId(spaceId);
wikiSpaceFavoriteService.saveOrUpdate(favoriteUp);
@PostMapping("/auth/assign") return DocResponseJson.ok();
public ResponseJson<Object> authAssign(Long spaceId, String authList) { }
// 判断是否具有授权的权限
DocUserDetails currentUser = DocUserUtil.getCurrentUser(); @PostMapping("/auth/assign")
WikiSpace wikiSpaceSel = wikiSpaceService.getById(spaceId); public ResponseJson<Object> authAssign(Long spaceId, String authList) {
// 只有空间创建人可以管理该空间对用户组的授权 // 判断是否具有授权的权限
if (!Objects.equals(currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) { DocUserDetails currentUser = DocUserUtil.getCurrentUser();
return DocResponseJson.warn("您没有权限管理该空间的权限"); WikiSpace wikiSpaceSel = wikiSpaceService.getById(spaceId);
} // 只有空间创建人可以管理该空间对用户组的授权
// 先删除页面的所有用户的权限 if (!Objects.equals(currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
QueryWrapper<UserGroupAuth> updateWrapper = new QueryWrapper<>(); return DocResponseJson.warn("您没有权限管理该空间的权限");
updateWrapper.eq("data_id", spaceId); }
updateWrapper.eq("project_type", DocSysType.WIKI.getType()); // 先删除页面的所有用户的权限
userGroupAuthService.remove(updateWrapper); QueryWrapper<UserGroupAuth> updateWrapper = new QueryWrapper<>();
// 在创建权限 updateWrapper.eq("data_id", spaceId);
List<UserSpaceAuthVo> authVoList = JSON.parseArray(authList, UserSpaceAuthVo.class); updateWrapper.eq("project_type", DocSysType.WIKI.getType());
for (UserSpaceAuthVo authVo : authVoList) { userGroupAuthService.remove(updateWrapper);
List<UserGroupAuth> userAuthList = new LinkedList<>(); // 在创建权限
this.createUserAuth(userAuthList, authVo.getEditPage(), spaceId, WikiAuthType.EDIT_PAGE, authVo.getGroupId()); List<UserSpaceAuthVo> authVoList = JSON.parseArray(authList, UserSpaceAuthVo.class);
this.createUserAuth(userAuthList, authVo.getDeletePage(), spaceId, WikiAuthType.DELETE_PAGE, authVo.getGroupId()); for (UserSpaceAuthVo authVo : authVoList) {
this.createUserAuth(userAuthList, authVo.getPageFileUpload(), spaceId, WikiAuthType.PAGE_FILE_UPLOAD, authVo.getGroupId()); List<UserGroupAuth> userAuthList = new LinkedList<>();
this.createUserAuth(userAuthList, authVo.getPageFileDelete(), spaceId, WikiAuthType.PAGE_FILE_DELETE, authVo.getGroupId()); this.createUserAuth(userAuthList, authVo.getEditPage(), spaceId, WikiAuthType.EDIT_PAGE, authVo.getGroupId());
this.createUserAuth(userAuthList, authVo.getPageAuthManage(), spaceId, WikiAuthType.PAGE_AUTH_MANAGE, authVo.getGroupId()); this.createUserAuth(userAuthList, authVo.getDeletePage(), spaceId, WikiAuthType.DELETE_PAGE, authVo.getGroupId());
if (userAuthList.size() > 0) { this.createUserAuth(userAuthList, authVo.getPageFileUpload(), spaceId, WikiAuthType.PAGE_FILE_UPLOAD, authVo.getGroupId());
userGroupAuthService.saveBatch(userAuthList); this.createUserAuth(userAuthList, authVo.getPageFileDelete(), spaceId, WikiAuthType.PAGE_FILE_DELETE, authVo.getGroupId());
} this.createUserAuth(userAuthList, authVo.getPageAuthManage(), spaceId, WikiAuthType.PAGE_AUTH_MANAGE, authVo.getGroupId());
} if (userAuthList.size() > 0) {
return DocResponseJson.ok(); userGroupAuthService.saveBatch(userAuthList);
} }
}
@PostMapping("/auth/list") return DocResponseJson.ok();
public ResponseJson<Object> authList(Long spaceId) { }
// 判断是否具有授权的权限
DocUserDetails currentUser = DocUserUtil.getCurrentUser(); @PostMapping("/auth/list")
WikiSpace wikiSpaceSel = wikiSpaceService.getById(spaceId); public ResponseJson<Object> authList(Long spaceId) {
// 只有空间创建人可以管理该空间对用户组的授权 // 判断是否具有授权的权限
if (!Objects.equals(currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) { DocUserDetails currentUser = DocUserUtil.getCurrentUser();
return DocResponseJson.warn("您没有权限管理该空间的权限"); WikiSpace wikiSpaceSel = wikiSpaceService.getById(spaceId);
} // 只有空间创建人可以管理该空间对用户组的授权
QueryWrapper<UserGroupAuth> queryWrapper = new QueryWrapper<>(); if (!Objects.equals(currentUser.getUserId(), wikiSpaceSel.getCreateUserId())) {
queryWrapper.eq("data_id", spaceId); return DocResponseJson.warn("您没有权限管理该空间的权限");
queryWrapper.eq("project_type", DocSysType.WIKI.getType()); }
List<UserGroupAuth> authList = userGroupAuthService.list(queryWrapper); QueryWrapper<UserGroupAuth> queryWrapper = new QueryWrapper<>();
if (CollectionUtils.isEmpty(authList)) { queryWrapper.eq("data_id", spaceId);
return DocResponseJson.ok(); queryWrapper.eq("project_type", DocSysType.WIKI.getType());
} List<UserGroupAuth> authList = userGroupAuthService.list(queryWrapper);
// 查询用户信息 if (CollectionUtils.isEmpty(authList)) {
Map<Long, List<UserGroupAuth>> userAuthGroup = authList.stream().collect(Collectors.groupingBy(UserGroupAuth::getGroupId)); return DocResponseJson.ok();
List<UserSpaceAuthVo> authVoList = new LinkedList<>(); }
// 组装结果集 // 查询用户信息
userAuthGroup.forEach((key, value) -> { Map<Long, List<UserGroupAuth>> userAuthGroup = authList.stream().collect(Collectors.groupingBy(UserGroupAuth::getGroupId));
Set<Integer> authNameSet = value.stream().map(UserGroupAuth::getAuthType).collect(Collectors.toSet()); List<UserSpaceAuthVo> authVoList = new LinkedList<>();
UserSpaceAuthVo authVo = new UserSpaceAuthVo(); // 组装结果集
authVo.setEditPage(this.haveAuth(authNameSet, WikiAuthType.EDIT_PAGE)); userAuthGroup.forEach((key, value) -> {
authVo.setDeletePage(this.haveAuth(authNameSet, WikiAuthType.DELETE_PAGE)); Set<Integer> authNameSet = value.stream().map(UserGroupAuth::getAuthType).collect(Collectors.toSet());
authVo.setPageFileUpload(this.haveAuth(authNameSet, WikiAuthType.PAGE_FILE_UPLOAD)); UserSpaceAuthVo authVo = new UserSpaceAuthVo();
authVo.setPageFileDelete(this.haveAuth(authNameSet, WikiAuthType.PAGE_FILE_DELETE)); authVo.setEditPage(this.haveAuth(authNameSet, WikiAuthType.EDIT_PAGE));
authVo.setPageAuthManage(this.haveAuth(authNameSet, WikiAuthType.PAGE_AUTH_MANAGE)); authVo.setDeletePage(this.haveAuth(authNameSet, WikiAuthType.DELETE_PAGE));
authVo.setGroupId(key); authVo.setPageFileUpload(this.haveAuth(authNameSet, WikiAuthType.PAGE_FILE_UPLOAD));
authVoList.add(authVo); authVo.setPageFileDelete(this.haveAuth(authNameSet, WikiAuthType.PAGE_FILE_DELETE));
}); authVo.setPageAuthManage(this.haveAuth(authNameSet, WikiAuthType.PAGE_AUTH_MANAGE));
return DocResponseJson.ok(authVoList); authVo.setGroupId(key);
} authVoList.add(authVo);
});
private Integer haveAuth(Set<Integer> authNameSet, WikiAuthType wikiAuthType) { return DocResponseJson.ok(authVoList);
return authNameSet.contains(wikiAuthType.getType()) ? 1 : 0; }
}
private Integer haveAuth(Set<Integer> authNameSet, WikiAuthType wikiAuthType) {
private void createUserAuth(List<UserGroupAuth> userAuthList, Integer authValue, Long spaceId, WikiAuthType authType, Long groupId) { return authNameSet.contains(wikiAuthType.getType()) ? 1 : 0;
if (Objects.equals(authValue, 1)) { }
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
UserGroupAuth userAuth = new UserGroupAuth(); private void createUserAuth(List<UserGroupAuth> userAuthList, Integer authValue, Long spaceId, WikiAuthType authType, Long groupId) {
userAuth.setDataId(spaceId); if (Objects.equals(authValue, 1)) {
userAuth.setAuthType(authType.getType()); DocUserDetails currentUser = DocUserUtil.getCurrentUser();
userAuth.setGroupId(groupId); UserGroupAuth userAuth = new UserGroupAuth();
userAuth.setCreateTime(new Date()); userAuth.setDataId(spaceId);
userAuth.setCreateUserId(currentUser.getUserId()); userAuth.setAuthType(authType.getType());
userAuth.setCreateUserName(currentUser.getUsername()); userAuth.setGroupId(groupId);
userAuth.setProjectType(DocSysType.WIKI.getType()); userAuth.setCreateTime(new Date());
userAuth.setDelFlag(0); userAuth.setCreateUserId(currentUser.getUserId());
userAuthList.add(userAuth); userAuth.setCreateUserName(currentUser.getUsername());
} userAuth.setProjectType(DocSysType.WIKI.getType());
} userAuth.setDelFlag(0);
userAuthList.add(userAuth);
}
}
} }