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

代码优化

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