提交 62222e4c authored 作者: hzh's avatar hzh

代码优化

上级 719a4250
...@@ -3,6 +3,7 @@ package org.dromara.system.controller.system; ...@@ -3,6 +3,7 @@ package org.dromara.system.controller.system;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.secure.BCrypt; import cn.dev33.satoken.secure.BCrypt;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
...@@ -16,6 +17,7 @@ import org.dromara.common.core.enums.UserType; ...@@ -16,6 +17,7 @@ import org.dromara.common.core.enums.UserType;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.encrypt.annotation.ApiEncrypt; import org.dromara.common.encrypt.annotation.ApiEncrypt;
import org.dromara.common.excel.core.DropDownOptions;
import org.dromara.common.excel.core.ExcelResult; import org.dromara.common.excel.core.ExcelResult;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
...@@ -102,44 +104,44 @@ public class SysUserController extends BaseController { ...@@ -102,44 +104,44 @@ public class SysUserController extends BaseController {
*/ */
@PostMapping("/importTemplate") @PostMapping("/importTemplate")
public void importTemplate(HttpServletResponse response) { public void importTemplate(HttpServletResponse response) {
// List<DropDownOptions> options = getDropDownOptions(); List<DropDownOptions> options = getDropDownOptions();
ExcelUtil.exportExcel(new ArrayList<>(), "用户数据", SysUserImportVo.class, response); ExcelUtil.exportExcel(new ArrayList<>(), "用户数据", SysUserImportVo.class, response,options);
} }
// @org.jetbrains.annotations.NotNull @org.jetbrains.annotations.NotNull
// private List<DropDownOptions> getDropDownOptions() { private List<DropDownOptions> getDropDownOptions() {
// // 获取部门列表 // 获取部门列表
// List<SysDeptVo> deptList = deptService.selectDeptList(DropDownOptions.DELIMITER); List<SysDeptVo> deptList = deptService.selectDeptList(DropDownOptions.DELIMITER);
// List<DemoDept> deptDataList = StreamUtils.toList(deptList, p -> new DemoDept().setId(p.getDeptId()).setName(p.getDeptName()).setDeptId(p.getDeptId())); List<DemoDept> deptDataList = StreamUtils.toList(deptList, p -> new DemoDept().setId(p.getDeptId()).setName(p.getDeptName()).setDeptId(p.getDeptId()));
// //获取角色列表 //获取角色列表
// List<SysRoleVo> roleList = getInfo(null).getData().getRoles(); List<SysRoleVo> roleList = getRoleList(LoginHelper.getUserId());
// //获取职位列表 //获取职位列表
// SysPostBo post = new SysPostBo(); SysPostBo post = new SysPostBo();
// post.setStatus(UserConstants.POST_NORMAL); post.setStatus(UserConstants.POST_NORMAL);
// post.setParams(MapUtil.<String, Object>builder().put("deptIds", StreamUtils.toList(deptList, SysDeptVo::getDeptId)).build()); post.setParams(MapUtil.<String, Object>builder().put("deptIds", StreamUtils.toList(deptList, SysDeptVo::getDeptId)).build());
// List<SysPostVo> postList = postService.selectPostList(post); List<SysPostVo> postList = postService.selectPostList(post);
// List<DemoDept> postDataList = StreamUtils.toList(postList, p -> new DemoDept().setId(p.getPostId()).setName(p.getPostName()).setDeptId(p.getDeptId())); List<DemoDept> postDataList = StreamUtils.toList(postList, p -> new DemoDept().setId(p.getPostId()).setName(p.getPostName()).setDeptId(p.getDeptId()));
//
// int deptIndex = 2, roleIndex = 9, postIndex = 8; int deptIndex = 2, roleIndex = 9, postIndex = 8;
// DropDownOptions deptToPost = DropDownOptions.buildLinkedOptions( DropDownOptions deptToPost = DropDownOptions.buildLinkedOptions(
// deptDataList, deptDataList,
// deptIndex, deptIndex,
// postDataList, postDataList,
// postIndex, postIndex,
// DemoDept::getDeptId, DemoDept::getDeptId,
// DemoDept::getDeptId, DemoDept::getDeptId,
// everyOptions -> DropDownOptions.createOptionValue( everyOptions -> DropDownOptions.createOptionValue(
// everyOptions.getName() everyOptions.getName()
// ) )
// ); );
// DropDownOptions role = new DropDownOptions(roleIndex, StreamUtils.toList(roleList, SysRoleVo::getRoleName)); DropDownOptions role = new DropDownOptions(roleIndex, StreamUtils.toList(roleList, SysRoleVo::getRoleName));
//
// // 把所有的下拉框存储 // 把所有的下拉框存储
// List<DropDownOptions> options = new ArrayList<>(); List<DropDownOptions> options = new ArrayList<>();
// options.add(deptToPost); options.add(deptToPost);
// options.add(role); options.add(role);
// return options; return options;
// } }
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
...@@ -194,10 +196,8 @@ public class SysUserController extends BaseController { ...@@ -194,10 +196,8 @@ public class SysUserController extends BaseController {
public R<SysUserInfoVo> getInfo(@PathVariable(value = "userId", required = false) Long userId) { public R<SysUserInfoVo> getInfo(@PathVariable(value = "userId", required = false) Long userId) {
userService.checkUserDataScope(userId); userService.checkUserDataScope(userId);
SysUserInfoVo userInfoVo = new SysUserInfoVo(); SysUserInfoVo userInfoVo = new SysUserInfoVo();
SysRoleBo roleBo = new SysRoleBo(); List<SysRoleVo> roleList = getRoleList(userId);
roleBo.setStatus(UserConstants.ROLE_NORMAL); userInfoVo.setRoles(roleList);
List<SysRoleVo> roles = roleService.selectRoleList(roleBo);
userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin()));
if (ObjectUtil.isNotNull(userId)) { if (ObjectUtil.isNotNull(userId)) {
SysUserVo sysUser = userService.selectUserById(userId); SysUserVo sysUser = userService.selectUserById(userId);
userInfoVo.setUser(sysUser); userInfoVo.setUser(sysUser);
...@@ -213,6 +213,13 @@ public class SysUserController extends BaseController { ...@@ -213,6 +213,13 @@ public class SysUserController extends BaseController {
return R.ok(userInfoVo); return R.ok(userInfoVo);
} }
private List<SysRoleVo> getRoleList(Long userId) {
SysRoleBo roleBo = new SysRoleBo();
roleBo.setStatus(UserConstants.ROLE_NORMAL);
List<SysRoleVo> roles = roleService.selectRoleList(roleBo);
return LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin());
}
/** /**
* 新增用户 * 新增用户
*/ */
......
...@@ -2,6 +2,7 @@ package org.dromara.system.domain.vo; ...@@ -2,6 +2,7 @@ package org.dromara.system.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
...@@ -19,7 +20,7 @@ import java.io.Serializable; ...@@ -19,7 +20,7 @@ import java.io.Serializable;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
// @Accessors(chain = true) // 导入不允许使用 会找不到set方法 @ColumnWidth(20)
public class SysUserImportVo implements Serializable { public class SysUserImportVo implements Serializable {
@Serial @Serial
......
...@@ -66,6 +66,7 @@ public class SysDeptServiceImpl implements ISysDeptService { ...@@ -66,6 +66,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
SysDeptBo dept = new SysDeptBo(); SysDeptBo dept = new SysDeptBo();
dept.setStatus(UserConstants.DEPT_NORMAL); dept.setStatus(UserConstants.DEPT_NORMAL);
LambdaQueryWrapper<SysDept> lqw = buildQueryWrapper(dept); LambdaQueryWrapper<SysDept> lqw = buildQueryWrapper(dept);
lqw.select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getParentId);
List<SysDeptVo> deptList = baseMapper.selectDeptList(lqw); List<SysDeptVo> deptList = baseMapper.selectDeptList(lqw);
// 构建部门ID到部门对象的映射,提高查找效率 // 构建部门ID到部门对象的映射,提高查找效率
Map<Long, SysDeptVo> deptMap = deptList.stream() Map<Long, SysDeptVo> deptMap = deptList.stream()
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -6,6 +6,7 @@ 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.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
...@@ -36,6 +37,7 @@ import java.util.stream.Collectors; ...@@ -36,6 +37,7 @@ import java.util.stream.Collectors;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@Slf4j
public class SysPostServiceImpl implements ISysPostService { public class SysPostServiceImpl implements ISysPostService {
private final SysPostMapper baseMapper; private final SysPostMapper baseMapper;
...@@ -72,6 +74,27 @@ public class SysPostServiceImpl implements ISysPostService { ...@@ -72,6 +74,27 @@ public class SysPostServiceImpl implements ISysPostService {
.like(StringUtils.isNotBlank(bo.getPostName()), SysPost::getPostName, bo.getPostName()) .like(StringUtils.isNotBlank(bo.getPostName()), SysPost::getPostName, bo.getPostName())
.eq(StringUtils.isNotBlank(bo.getStatus()), SysPost::getStatus, bo.getStatus()) .eq(StringUtils.isNotBlank(bo.getStatus()), SysPost::getStatus, bo.getStatus())
.orderByAsc(SysPost::getPostSort); .orderByAsc(SysPost::getPostSort);
Map<String, Object> params = bo.getParams();
List<Long> deptIdList = new ArrayList<>();
// 安全地获取并转换部门ID列表
if (params != null) {
Object deptIdsObj = params.get("deptIds");
if (deptIdsObj instanceof List) {
try {
// 安全类型转换,避免ClassCastException
deptIdList = ((List<?>) deptIdsObj).stream()
.filter(id -> id instanceof Number)
.map(id -> ((Number) id).longValue())
.collect(Collectors.toList());
} catch (Exception e) {
log.error("转换部门ID列表失败: {}", e.getMessage(), e);
}
}
}
// 使用Stream API处理空集合情况,避免NullPointerException
if (!deptIdList.isEmpty()) {
wrapper.in(SysPost::getDeptId, deptIdList);
}
if (ObjectUtil.isNotNull(bo.getDeptId())) { if (ObjectUtil.isNotNull(bo.getDeptId())) {
//优先单部门搜索 //优先单部门搜索
wrapper.eq(SysPost::getDeptId, bo.getDeptId()); wrapper.eq(SysPost::getDeptId, bo.getDeptId());
...@@ -88,9 +111,6 @@ public class SysPostServiceImpl implements ISysPostService { ...@@ -88,9 +111,6 @@ public class SysPostServiceImpl implements ISysPostService {
x.in(SysPost::getDeptId, deptIds); x.in(SysPost::getDeptId, deptIds);
}); });
} }
// Map<String, Object> params = bo.getParams();
// List<Long> deptIds = (List<Long>) params.getOrDefault("deptIds", List.of());
// wrapper.in(CollectionUtils.isNotEmpty(deptIds), SysDept::getDeptId, deptIds);
return wrapper; return wrapper;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论