style(framework): 优化代码格式与注解配置

This commit is contained in:
2025-10-31 15:15:28 +08:00
parent dcf2528e5d
commit 4bf72f5a7f
187 changed files with 2598 additions and 2290 deletions
@@ -36,7 +36,6 @@ import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@RestController
@Tag(name = "系统:部门管理")
@@ -39,7 +39,6 @@ import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@RestController
@Tag(name = "系统:角色管理")
@@ -132,8 +131,7 @@ public class SystemRoleController {
* @return /
*/
private int checkRoleLevels(Integer level) {
List<Integer> levels =
systemRoleService.queryRoleByUsersId(CsSecurityHelper.getCurrentUserId()).stream().map(SystemRoleTb::getLevel).toList();
List<Integer> levels = systemRoleService.queryRoleByUsersId(CsSecurityHelper.getCurrentUserId()).stream().map(SystemRoleTb::getLevel).toList();
int min = Collections.min(levels);
if (level != null) {
if (level < min) {
@@ -49,7 +49,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
@Tag(name = "系统:用户管理")
@RestController
@@ -142,8 +141,8 @@ public class SystemUserController {
@PreAuthorize("@el.check('user:del')")
public ResponseEntity<Object> removeUserByIds(@RequestBody Set<Long> ids) {
for (Long id : ids) {
Integer currentLevel = Collections.min(
systemRoleService.queryRoleByUsersId(CsSecurityHelper.getCurrentUserId()).stream().map(SystemRoleTb::getLevel).toList());
Integer currentLevel =
Collections.min(systemRoleService.queryRoleByUsersId(CsSecurityHelper.getCurrentUserId()).stream().map(SystemRoleTb::getLevel).toList());
Integer optLevel = Collections.min(systemRoleService.queryRoleByUsersId(id).stream().map(SystemRoleTb::getLevel).toList());
if (currentLevel > optLevel) {
throw new BadRequestException("角色权限不足, 不能删除:" + systemUserService.getUserById(id).getUsername());
@@ -202,8 +201,8 @@ public class SystemUserController {
* @param args /
*/
private void checkLevel(SystemUserTb args) {
Integer currentLevel = Collections.min(
systemRoleService.queryRoleByUsersId(CsSecurityHelper.getCurrentUserId()).stream().map(SystemRoleTb::getLevel).toList());
Integer currentLevel =
Collections.min(systemRoleService.queryRoleByUsersId(CsSecurityHelper.getCurrentUserId()).stream().map(SystemRoleTb::getLevel).toList());
Integer optLevel = systemRoleService.getDeptLevelByRoles(args.getRoles());
if (currentLevel > optLevel) {
throw new BadRequestException("角色权限不足");
@@ -39,33 +39,33 @@ public class SystemDeptTb extends CsBaseUserTimeTb {
@NotNull(groups = Update.class)
@TableId(value = "dept_id", type = IdType.AUTO)
@Schema(name ="ID", hidden = true)
@Schema(name = "ID", hidden = true)
private Long id;
@TableField(exist = false)
@JSONField(serialize = false)
@Schema(name ="角色")
@Schema(name = "角色")
private Set<SystemRoleTb> roles;
@TableField(exist = false)
@Schema(name ="子部门")
@Schema(name = "子部门")
private List<SystemDeptTb> children;
@Schema(name ="排序")
@Schema(name = "排序")
private Integer deptSort;
@NotBlank
@Schema(name ="部门名称")
@Schema(name = "部门名称")
private String name;
@NotNull
@Schema(name ="是否启用")
@Schema(name = "是否启用")
private Boolean enabled;
@Schema(name ="上级部门")
@Schema(name = "上级部门")
private Long pid;
@Schema(name ="子节点数目", hidden = true)
@Schema(name = "子节点数目", hidden = true)
private Integer subCount = 0;
@Override
@@ -85,17 +85,17 @@ public class SystemDeptTb extends CsBaseUserTimeTb {
return Objects.hash(id, name);
}
@Schema(name ="是否有子节点")
@Schema(name = "是否有子节点")
public Boolean getHasChildren() {
return subCount > 0;
}
@Schema(name ="是否为叶子")
@Schema(name = "是否为叶子")
public Boolean getLeaf() {
return subCount <= 0;
}
@Schema(name ="标签名称")
@Schema(name = "标签名称")
public String getLabel() {
return name;
}
@@ -30,15 +30,15 @@ import lombok.Setter;
public class SystemDictTb extends CsBaseUserTimeTb {
@NotNull(groups = Update.class)
@Schema(name ="ID", hidden = true)
@Schema(name = "ID", hidden = true)
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@NotBlank
@Schema(name ="名称")
@Schema(name = "名称")
private String name;
@Schema(name ="描述")
@Schema(name = "描述")
@TableField(updateStrategy = FieldStrategy.ALWAYS)
private String description;
}
@@ -36,22 +36,22 @@ public class SystemEmailConfigTb extends CsObject {
private Long id;
@NotBlank
@Schema(name ="邮件服务器SMTP地址")
@Schema(name = "邮件服务器SMTP地址")
private String host;
@NotBlank
@Schema(name ="邮件服务器 SMTP 端口")
@Schema(name = "邮件服务器 SMTP 端口")
private String port;
@NotBlank
@Schema(name ="发件者用户名")
@Schema(name = "发件者用户名")
private String user;
@NotBlank
@Schema(name ="密码")
@Schema(name = "密码")
private String password;
@NotBlank
@Schema(name ="收件人")
@Schema(name = "收件人")
private String fromUser;
}
@@ -35,19 +35,19 @@ public class SystemJobTb extends CsBaseUserTimeTb {
@NotNull(groups = Update.class)
@TableId(value = "id", type = IdType.AUTO)
@Schema(name ="ID", hidden = true)
@Schema(name = "ID", hidden = true)
private Long id;
@NotBlank
@Schema(name ="岗位名称")
@Schema(name = "岗位名称")
private String name;
@NotNull
@Schema(name ="岗位排序")
@Schema(name = "岗位排序")
private Long jobSort;
@NotNull
@Schema(name ="是否启用")
@Schema(name = "是否启用")
private Boolean enabled;
@Override
@@ -32,28 +32,28 @@ import lombok.Setter;
public class SystemLocalStorageTb extends CsBaseUserTimeTb {
@TableId(value = "id", type = IdType.AUTO)
@Schema(name ="ID", hidden = true)
@Schema(name = "ID", hidden = true)
private Long id;
@Schema(name ="真实文件名")
@Schema(name = "真实文件名")
private String realName;
@Schema(name ="文件名")
@Schema(name = "文件名")
private String name;
@Schema(name ="后缀")
@Schema(name = "后缀")
private String suffix;
@Schema(name ="路径")
@Schema(name = "路径")
private String path;
@Schema(name ="类型")
@Schema(name = "类型")
private String type;
@Schema(name ="大小")
@Schema(name = "大小")
private String size;
@Schema(name ="日期分组")
@Schema(name = "日期分组")
private String dateGroup;
public void copy(SystemLocalStorageTb source) {
@@ -38,55 +38,55 @@ public class SystemMenuTb extends CsBaseUserTimeTb {
@NotNull(groups = {Update.class})
@TableId(value = "menu_id", type = IdType.AUTO)
@Schema(name ="ID", hidden = true)
@Schema(name = "ID", hidden = true)
private Long id;
@TableField(exist = false)
@JSONField(serialize = false)
@Schema(name ="菜单角色")
@Schema(name = "菜单角色")
private Set<SystemRoleTb> roles;
@TableField(exist = false)
private List<SystemMenuTb> children;
@Schema(name ="菜单标题")
@Schema(name = "菜单标题")
private String title;
@TableField(value = "name")
@Schema(name ="菜单组件名称")
@Schema(name = "菜单组件名称")
private String componentName;
@Schema(name ="排序")
@Schema(name = "排序")
private Integer menuSort = 999;
@Schema(name ="组件路径")
@Schema(name = "组件路径")
private String component;
@Schema(name ="路由地址")
@Schema(name = "路由地址")
private String path;
@Schema(name ="菜单类型,目录、菜单、按钮")
@Schema(name = "菜单类型,目录、菜单、按钮")
private Integer type;
@Schema(name ="权限标识")
@Schema(name = "权限标识")
private String permission;
@Schema(name ="菜单图标")
@Schema(name = "菜单图标")
private String icon;
@Schema(name ="缓存")
@Schema(name = "缓存")
private Boolean cache;
@Schema(name ="是否隐藏")
@Schema(name = "是否隐藏")
private Boolean hidden;
@Schema(name ="上级菜单")
@Schema(name = "上级菜单")
private Long pid;
@Schema(name ="子节点数目", hidden = true)
@Schema(name = "子节点数目", hidden = true)
private Integer subCount = 0;
@Schema(name ="外链菜单")
@Schema(name = "外链菜单")
private Boolean iFrame;
@Override
@@ -106,17 +106,17 @@ public class SystemMenuTb extends CsBaseUserTimeTb {
return Objects.hash(id);
}
@Schema(name ="是否有子节点")
@Schema(name = "是否有子节点")
public Boolean getHasChildren() {
return subCount > 0;
}
@Schema(name ="是否为叶子")
@Schema(name = "是否为叶子")
public Boolean getLeaf() {
return subCount <= 0;
}
@Schema(name ="标签名称")
@Schema(name = "标签名称")
public String getLabel() {
return title;
}
@@ -38,43 +38,43 @@ import lombok.Setter;
@TableName("system_oss_storage")
@Schema(name = "SystemOssStorage对象", description = "OSS存储")
public class SystemOssStorageTb extends CsBaseUserTimeTb {
@Schema(name="ID")
@Schema(name = "ID")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField("service_type")
@Schema(name="类型,比如minio")
@Schema(name = "类型,比如minio")
private String serviceType;
@TableField("endpoint")
@Schema(name="服务地址")
@Schema(name = "服务地址")
private String endpoint;
@TableField("bucket_name")
@Schema(name="存储桶名称")
@Schema(name = "存储桶名称")
private String bucketName;
@TableField("file_name")
@Schema(name="完整文件名称")
@Schema(name = "完整文件名称")
private String fileName;
@TableField("file_size")
@Schema(name="文件大小, 单位:字节")
@Schema(name = "文件大小, 单位:字节")
private Long fileSize;
@TableField("file_mime")
@Schema(name="文件类型")
@Schema(name = "文件类型")
private String fileMime;
@Schema(name="短文件名")
@Schema(name = "短文件名")
@TableField("file_prefix")
private String filePrefix;
@Schema(name="文件后缀")
@Schema(name = "文件后缀")
@TableField("file_suffix")
private String fileSuffix;
@TableField("file_md5")
@Schema(name="文件md5")
@Schema(name = "文件md5")
private String fileMd5;
@TableField("file_url")
@Schema(name="文件链接")
@Schema(name = "文件链接")
private String fileUrl;
@TableField("file_code")
@Schema(name="文件编码")
@Schema(name = "文件编码")
private String fileCode;
@TableField("object_name")
@Schema(name="对象路径")
@Schema(name = "对象路径")
private String objectName;
}
@@ -75,7 +75,7 @@ public class SystemRoleTb extends CsBaseUserTimeTb {
if (o == null || getClass() != o.getClass()) {
return false;
}
SystemRoleTb role = (SystemRoleTb) o;
SystemRoleTb role = (SystemRoleTb)o;
return Objects.equals(id, role.id);
}
@@ -105,7 +105,7 @@ public class SystemUserTb extends CsBaseUserTimeTb {
if (o == null || getClass() != o.getClass()) {
return false;
}
SystemUserTb user = (SystemUserTb) o;
SystemUserTb user = (SystemUserTb)o;
return Objects.equals(id, user.id) && Objects.equals(username, user.username);
}
@@ -36,11 +36,7 @@ public @interface BizLock {
String bizName() default "";
/**
* 锁key,支持SpEL表达式
* 示例:
* #user.id - 获取参数user的id属性
* #p0 - 获取第一个参数
* #root.methodName - 获取方法名
* 锁key,支持SpEL表达式 示例: #user.id - 获取参数user的id属性 #p0 - 获取第一个参数 #root.methodName - 获取方法名
*/
String key() default "";
@@ -60,11 +60,11 @@ public class BizLockAspect {
private String parseLockKey(ProceedingJoinPoint joinPoint, BizLock bizLock) {
// 如果key为空,使用默认格式: bizName:方法名
if (bizLock.key().isEmpty()) {
return String.format("%s:%s", bizLock.bizName(), ((MethodSignature) joinPoint.getSignature()).getMethod().getName());
return String.format("%s:%s", bizLock.bizName(), ((MethodSignature)joinPoint.getSignature()).getMethod().getName());
}
// 解析SpEL表达式
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
MethodSignature signature = (MethodSignature)joinPoint.getSignature();
Method method = signature.getMethod();
// 创建SpEL上下文
@@ -18,7 +18,6 @@ package cn.odboy.system.framework.operalog;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.framework.context.CsRequestHolder;
import cn.odboy.system.dal.dataobject.SystemOperationLogTb;
@@ -86,7 +85,7 @@ public class OperationLogAspect {
private SystemOperationLogTb getOperationLogTb(ProceedingJoinPoint joinPoint, OperationLog annotation, TimeInterval timeInterval) {
long executeTime = timeInterval.intervalMs();
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
MethodSignature signature = (MethodSignature)joinPoint.getSignature();
String bizName = annotation.bizName();
if (StrUtil.isBlank(bizName)) {
Method method = signature.getMethod();
@@ -17,7 +17,6 @@ package cn.odboy.system.framework.operalog.core;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.framework.context.CsRequestHolder;
import cn.odboy.system.dal.dataobject.SystemOperationLogTb;
@@ -22,7 +22,6 @@ import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service(value = "el")
public class AuthorityConfig {
@@ -60,7 +60,7 @@ public class CsSecurityHelper {
public static List<Long> getCurrentUserDataScope() {
UserDetails userDetails = getCurrentUser();
// 将 Java 对象转换为 JSONObject 对象
JSONObject jsonObject = (JSONObject) JSON.toJSON(userDetails);
JSONObject jsonObject = (JSONObject)JSON.toJSON(userDetails);
JSONArray jsonArray = jsonObject.getJSONArray("dataScopes");
return JSON.parseArray(jsonArray.toJSONString(), Long.class);
}
@@ -122,7 +122,7 @@ public class CsSecurityHelper {
* @return /
*/
public static String getToken() {
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
HttpServletRequest request = ((ServletRequestAttributes)Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
String bearerToken = request.getHeader(SystemConst.HEADER_NAME);
if (bearerToken != null && bearerToken.startsWith(SystemConst.TOKEN_PREFIX)) {
// 去掉令牌前缀
@@ -39,7 +39,7 @@ public class TokenFilter extends GenericFilterBean {
private final SystemUserOnlineInfoDAO systemUserOnlineInfoDAO;
/**
* @param tokenProvider Token
* @param tokenProvider Token
* @param systemUserOnlineInfoDAO 用户在线
*/
public TokenFilter(TokenProvider tokenProvider, SystemUserOnlineInfoDAO systemUserOnlineInfoDAO) {
@@ -49,7 +49,7 @@ public class TokenFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
String token = resolveToken(httpServletRequest);
// 对于 Token 为空的不需要去查 Redis
if (StrUtil.isNotBlank(token)) {
@@ -48,6 +48,8 @@ import java.util.concurrent.TimeUnit;
@Slf4j
@Component
public class TokenProvider implements InitializingBean {
public static final String AUTHORITIES_UUID_KEY = "uid";
public static final String AUTHORITIES_UID_KEY = "userId";
@Autowired
private CsRedisHelper redisHelper;
@Autowired
@@ -57,8 +59,6 @@ public class TokenProvider implements InitializingBean {
// 0.12.x版本
private SecretKey signingKey;
private JwtParser jwtParser;
public static final String AUTHORITIES_UUID_KEY = "uid";
public static final String AUTHORITIES_UID_KEY = "userId";
@Override
public void afterPropertiesSet() {
@@ -125,7 +125,7 @@ public class TokenProvider implements InitializingBean {
// 判断是否续期token,计算token的过期时间
String loginKey = loginKey(token);
long time = redisHelper.getExpire(loginKey) * 1000;
Date expireDate = DateUtil.offset(new Date(), DateField.MILLISECOND, (int) time);
Date expireDate = DateUtil.offset(new Date(), DateField.MILLISECOND, (int)time);
// 判断当前时间与过期时间的时间差
long differ = expireDate.getTime() - System.currentTimeMillis();
// 如果在续期检查的范围内,则续期
@@ -52,7 +52,7 @@ public class ExecutionJobBean extends QuartzJobBean {
@Override
public void executeInternal(JobExecutionContext context) {
// 获取任务
SystemQuartzJobTb quartzJob = (SystemQuartzJobTb) context.getMergedJobDataMap().get(SystemQuartzJobTb.JOB_KEY);
SystemQuartzJobTb quartzJob = (SystemQuartzJobTb)context.getMergedJobDataMap().get(SystemQuartzJobTb.JOB_KEY);
// 获取spring bean
SystemQuartzLogMapper quartzLogMapper = CsSpringBeanHolder.getBean(SystemQuartzLogMapper.class);
SystemQuartzJobService systemQuartzJobService = CsSpringBeanHolder.getBean(SystemQuartzJobService.class);
@@ -41,12 +41,13 @@ public class QuartzManage {
JobDetail jobDetail = JobBuilder.newJob(ExecutionJobBean.class).withIdentity(JOB_NAME + quartzJob.getId()).build();
// 通过触发器名和cron 表达式创建 Trigger
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(JOB_NAME + quartzJob.getId()).startNow().withSchedule(CronScheduleBuilder.cronSchedule(quartzJob.getCronExpression())).build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(JOB_NAME + quartzJob.getId()).startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(quartzJob.getCronExpression())).build();
trigger.getJobDataMap().put(SystemQuartzJobTb.JOB_KEY, quartzJob);
// 重置启动时间
((CronTriggerImpl) trigger).setStartTime(new Date());
((CronTriggerImpl)trigger).setStartTime(new Date());
// 执行定时任务,如果是持久化的,这里会报错,捕获输出
try {
@@ -73,16 +74,16 @@ public class QuartzManage {
public void updateJobCron(SystemQuartzJobTb quartzJob) {
try {
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getId());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
CronTrigger trigger = (CronTrigger)scheduler.getTrigger(triggerKey);
// 如果不存在则创建一个定时任务
if (trigger == null) {
addJob(quartzJob);
trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
trigger = (CronTrigger)scheduler.getTrigger(triggerKey);
}
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(quartzJob.getCronExpression());
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
// 重置启动时间
((CronTriggerImpl) trigger).setStartTime(new Date());
((CronTriggerImpl)trigger).setStartTime(new Date());
trigger.getJobDataMap().put(SystemQuartzJobTb.JOB_KEY, quartzJob);
scheduler.rescheduleJob(triggerKey, trigger);
@@ -120,7 +121,7 @@ public class QuartzManage {
public void resumeJob(SystemQuartzJobTb quartzJob) {
try {
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getId());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
CronTrigger trigger = (CronTrigger)scheduler.getTrigger(triggerKey);
// 如果不存在则创建一个定时任务
if (trigger == null) {
addJob(quartzJob);
@@ -141,7 +142,7 @@ public class QuartzManage {
public void runJobNow(SystemQuartzJobTb quartzJob) {
try {
TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getId());
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
CronTrigger trigger = (CronTrigger)scheduler.getTrigger(triggerKey);
// 如果不存在则创建一个定时任务
if (trigger == null) {
addJob(quartzJob);
@@ -164,7 +164,9 @@ public class MinioRepository {
systemOssStorageTb.setObjectName(objectName);
try (InputStream fileInputStream = CsFileUtil.getInputStream(tempFile)) {
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName).stream(fileInputStream, fileSize, -1).contentType(contentType).build();
PutObjectArgs objectArgs =
PutObjectArgs.builder().bucket(ossMinioConfig.getBucketName()).object(objectName).stream(fileInputStream, fileSize, -1).contentType(contentType)
.build();
minioClient.putObject(objectArgs);
log.info("文件上传成功,并删除临时文件,文件名:{}", originalFilename);
return systemOssStorageTb;
@@ -201,7 +203,9 @@ public class MinioRepository {
log.info("准备上传文件,原文件名:{},上传后文件名:{}", originalFilename, fileName);
try (InputStream fileInputStream = file.getInputStream()) {
PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName).stream(fileInputStream, file.getSize(), -1).contentType(file.getContentType()).build();
PutObjectArgs objectArgs =
PutObjectArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(objectName).stream(fileInputStream, file.getSize(), -1)
.contentType(file.getContentType()).build();
// 使用重试机制进行上传
uploadWithRetry(objectArgs, 3);
log.info("文件上传成功,objectName: {}", objectName);
@@ -249,7 +253,8 @@ public class MinioRepository {
return null;
}
try {
GetPresignedObjectUrlArgs presignedUrlArgs = GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fullFileName).method(Method.GET)
GetPresignedObjectUrlArgs presignedUrlArgs =
GetPresignedObjectUrlArgs.builder().bucket(properties.getOss().getMinio().getBucketName()).object(fullFileName).method(Method.GET)
// 设置 URL 过期时间为 7 天, 最大 7 天, 别挣扎了
.expiry(3600 * 24 * 7).build();
String url = minioClient.getPresignedObjectUrl(presignedUrlArgs);
@@ -27,7 +27,6 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 数据权限 Service
@@ -368,8 +368,7 @@ public class SystemDeptService {
private List<SystemProductLineVo> buildDeptSelectOptions(List<SystemDeptTb> depts) {
// 获取所有部门并按父子关系组织
Map<Long, SystemDeptTb> deptMap =
depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
Map<Long, SystemDeptTb> deptMap = depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
List<SystemProductLineVo> options = new ArrayList<>();
for (SystemDeptTb dept : depts) {
// 构建部门ID路径
@@ -420,8 +419,7 @@ public class SystemDeptService {
public List<SystemProductLineTreeVo> queryDeptSelectProDataSource() {
List<SystemDeptTb> depts = findEnabledDepts();
// 获取所有部门并按父子关系组织
Map<Long, SystemDeptTb> deptMap =
depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
Map<Long, SystemDeptTb> deptMap = depts.stream().collect(Collectors.toMap(SystemDeptTb::getId, Function.identity()));
List<SystemProductLineTreeVo> options = new ArrayList<>();
// 构建树形结构
for (SystemDeptTb dept : depts) {
@@ -102,14 +102,10 @@ public class SystemEmailService {
// 发送
try {
int size = sendEmailRequest.getTos().size();
Mail.create(account)
.setTos(sendEmailRequest.getTos().toArray(new String[size]))
.setTitle(sendEmailRequest.getSubject())
.setContent(content)
.setHtml(true)
// 关闭session
.setUseGlobalSession(false)
.send();
Mail.create(account).setTos(sendEmailRequest.getTos().toArray(new String[size])).setTitle(sendEmailRequest.getSubject()).setContent(content)
.setHtml(true)
// 关闭session
.setUseGlobalSession(false).send();
} catch (Exception e) {
log.error("邮件发送失败", e);
throw new BadRequestException("邮件发送失败");
@@ -152,8 +148,7 @@ public class SystemEmailService {
} else {
content = CsResourceTemplateUtil.render(null, biEnum.getTemplateName(), Dict.create().set("code", oldCode));
}
SystemSendEmailArgs sendEmailRequest =
new SystemSendEmailArgs(Collections.singletonList(email), applicationTitle, content);
SystemSendEmailArgs sendEmailRequest = new SystemSendEmailArgs(Collections.singletonList(email), applicationTitle, content);
sendEmail(sendEmailRequest);
}
@@ -123,8 +123,7 @@ public class SystemLocalStorageService {
* @param response /
* @throws IOException /
*/
public void exportLocalStorageExcel(List<SystemLocalStorageTb> localStorages, HttpServletResponse response)
throws IOException {
public void exportLocalStorageExcel(List<SystemLocalStorageTb> localStorages, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (SystemLocalStorageTb localStorage : localStorages) {
Map<String, Object> map = new LinkedHashMap<>();
@@ -146,9 +145,7 @@ public class SystemLocalStorageService {
* @param page 分页参数
* @return /
*/
public CsPageResult<SystemLocalStorageTb> queryLocalStorage(
SystemQueryStorageArgs criteria,
Page<SystemLocalStorageTb> page) {
public CsPageResult<SystemLocalStorageTb> queryLocalStorage(SystemQueryStorageArgs criteria, Page<SystemLocalStorageTb> page) {
return CsPageUtil.toPage(systemLocalStorageMapper.selectLocalStorageByArgs(criteria, page));
}
@@ -159,7 +156,6 @@ public class SystemLocalStorageService {
* @return /
*/
public List<SystemLocalStorageTb> queryLocalStorage(SystemQueryStorageArgs criteria) {
return systemLocalStorageMapper.selectLocalStorageByArgs(criteria, CsPageUtil.getCount(systemLocalStorageMapper))
.getRecords();
return systemLocalStorageMapper.selectLocalStorageByArgs(criteria, CsPageUtil.getCount(systemLocalStorageMapper)).getRecords();
}
}
@@ -46,6 +46,8 @@ import java.util.stream.Collectors;
@Service
public class SystemMenuService {
private static final String YES_STR = "是";
private static final String NO_STR = "否";
@Autowired
private SystemMenuMapper systemMenuMapper;
@Autowired
@@ -53,9 +55,6 @@ public class SystemMenuService {
@Autowired
private SystemRoleService systemRoleService;
private static final String YES_STR = "是";
private static final String NO_STR = "否";
/**
* 创建
*
@@ -75,7 +74,8 @@ public class SystemMenuService {
args.setPid(null);
}
if (args.getIFrame()) {
if (!(args.getPath().toLowerCase().startsWith(TransferProtocolConst.PREFIX_HTTP) || args.getPath().toLowerCase().startsWith(TransferProtocolConst.PREFIX_HTTPS))) {
if (!(args.getPath().toLowerCase().startsWith(TransferProtocolConst.PREFIX_HTTP) || args.getPath().toLowerCase()
.startsWith(TransferProtocolConst.PREFIX_HTTPS))) {
throw new BadRequestException(TransferProtocolConst.PREFIX_HTTPS_BAD_REQUEST);
}
}
@@ -99,7 +99,8 @@ public class SystemMenuService {
}
SystemMenuTb menu = systemMenuMapper.selectById(args.getId());
if (args.getIFrame()) {
if (!(args.getPath().toLowerCase().startsWith(TransferProtocolConst.PREFIX_HTTP) || args.getPath().toLowerCase().startsWith(TransferProtocolConst.PREFIX_HTTPS))) {
if (!(args.getPath().toLowerCase().startsWith(TransferProtocolConst.PREFIX_HTTP) || args.getPath().toLowerCase()
.startsWith(TransferProtocolConst.PREFIX_HTTPS))) {
throw new BadRequestException(TransferProtocolConst.PREFIX_HTTPS_BAD_REQUEST);
}
}
@@ -98,7 +98,7 @@ public class SystemMonitorService {
diskInfo.put("available", CsFileUtil.getSize(available));
diskInfo.put("used", CsFileUtil.getSize(used));
if (total != 0) {
diskInfo.put("usageRate", df.format(used / (double) total * 100));
diskInfo.put("usageRate", df.format(used / (double)total * 100));
} else {
diskInfo.put("usageRate", 0);
}
@@ -122,7 +122,7 @@ public class SystemMonitorService {
if (used == 0) {
swapInfo.put("usageRate", 0);
} else {
swapInfo.put("usageRate", df.format(used / (double) total * 100));
swapInfo.put("usageRate", df.format(used / (double)total * 100));
}
return swapInfo;
}
@@ -138,9 +138,7 @@ public class SystemMonitorService {
memoryInfo.put("total", FormatUtil.formatBytes(memory.getTotal()));
memoryInfo.put("available", FormatUtil.formatBytes(memory.getAvailable()));
memoryInfo.put("used", FormatUtil.formatBytes(memory.getTotal() - memory.getAvailable()));
memoryInfo.put(
"usageRate",
df.format((memory.getTotal() - memory.getAvailable()) / (double) memory.getTotal() * 100));
memoryInfo.put("usageRate", df.format((memory.getTotal() - memory.getAvailable()) / (double)memory.getTotal() * 100));
return memoryInfo;
}
@@ -171,16 +169,12 @@ public class SystemMonitorService {
}
long user = ticks[CentralProcessor.TickType.USER.getIndex()] - prevTicks[CentralProcessor.TickType.USER.getIndex()];
long nice = ticks[CentralProcessor.TickType.NICE.getIndex()] - prevTicks[CentralProcessor.TickType.NICE.getIndex()];
long sys =
ticks[CentralProcessor.TickType.SYSTEM.getIndex()] - prevTicks[CentralProcessor.TickType.SYSTEM.getIndex()];
long sys = ticks[CentralProcessor.TickType.SYSTEM.getIndex()] - prevTicks[CentralProcessor.TickType.SYSTEM.getIndex()];
long idle = ticks[CentralProcessor.TickType.IDLE.getIndex()] - prevTicks[CentralProcessor.TickType.IDLE.getIndex()];
long ioWait =
ticks[CentralProcessor.TickType.IOWAIT.getIndex()] - prevTicks[CentralProcessor.TickType.IOWAIT.getIndex()];
long ioWait = ticks[CentralProcessor.TickType.IOWAIT.getIndex()] - prevTicks[CentralProcessor.TickType.IOWAIT.getIndex()];
long irq = ticks[CentralProcessor.TickType.IRQ.getIndex()] - prevTicks[CentralProcessor.TickType.IRQ.getIndex()];
long softIrq =
ticks[CentralProcessor.TickType.SOFTIRQ.getIndex()] - prevTicks[CentralProcessor.TickType.SOFTIRQ.getIndex()];
long steal =
ticks[CentralProcessor.TickType.STEAL.getIndex()] - prevTicks[CentralProcessor.TickType.STEAL.getIndex()];
long softIrq = ticks[CentralProcessor.TickType.SOFTIRQ.getIndex()] - prevTicks[CentralProcessor.TickType.SOFTIRQ.getIndex()];
long steal = ticks[CentralProcessor.TickType.STEAL.getIndex()] - prevTicks[CentralProcessor.TickType.STEAL.getIndex()];
long totalCpu = user + nice + sys + idle + ioWait + irq + softIrq + steal;
cpuInfo.put("used", df.format(100d * user / totalCpu + 100d * sys / totalCpu));
cpuInfo.put("idle", df.format(100d * idle / totalCpu));
@@ -179,8 +179,7 @@ public class SystemQuartzJobService {
* @throws IOException /
*/
public void exportQuartzJobExcel(List<SystemQuartzJobTb> quartzJobs, HttpServletResponse response)
throws IOException {
public void exportQuartzJobExcel(List<SystemQuartzJobTb> quartzJobs, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (SystemQuartzJobTb quartzJob : quartzJobs) {
Map<String, Object> map = new LinkedHashMap<>();
@@ -205,8 +204,7 @@ public class SystemQuartzJobService {
* @throws IOException /
*/
public void exportQuartzLogExcel(List<SystemQuartzLogTb> queryAllLog, HttpServletResponse response)
throws IOException {
public void exportQuartzLogExcel(List<SystemQuartzLogTb> queryAllLog, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (SystemQuartzLogTb quartzLog : queryAllLog) {
Map<String, Object> map = new LinkedHashMap<>();
@@ -232,9 +230,7 @@ public class SystemQuartzJobService {
* @return /
*/
public CsPageResult<SystemQuartzJobTb> queryQuartzJobByArgs(
SystemQueryQuartzJobArgs criteria,
Page<SystemQuartzJobTb> page) {
public CsPageResult<SystemQuartzJobTb> queryQuartzJobByArgs(SystemQueryQuartzJobArgs criteria, Page<SystemQuartzJobTb> page) {
return CsPageUtil.toPage(systemQuartzJobMapper.selectQuartzJobByArgs(criteria, page));
}
@@ -246,9 +242,7 @@ public class SystemQuartzJobService {
* @return /
*/
public CsPageResult<SystemQuartzLogTb> queryQuartzLogByArgs(
SystemQueryQuartzJobArgs criteria,
Page<SystemQuartzLogTb> page) {
public CsPageResult<SystemQuartzLogTb> queryQuartzLogByArgs(SystemQueryQuartzJobArgs criteria, Page<SystemQuartzLogTb> page) {
return CsPageUtil.toPage(systemQuartzLogMapper.selectQuartzLogByArgs(criteria, page));
}
@@ -260,8 +254,7 @@ public class SystemQuartzJobService {
*/
public List<SystemQuartzJobTb> queryQuartzJobByArgs(SystemQueryQuartzJobArgs criteria) {
return systemQuartzJobMapper.selectQuartzJobByArgs(criteria, CsPageUtil.getCount(systemQuartzJobMapper))
.getRecords();
return systemQuartzJobMapper.selectQuartzJobByArgs(criteria, CsPageUtil.getCount(systemQuartzJobMapper)).getRecords();
}
/**
@@ -272,8 +265,7 @@ public class SystemQuartzJobService {
*/
public List<SystemQuartzLogTb> queryQuartzLogByArgs(SystemQueryQuartzJobArgs criteria) {
return systemQuartzLogMapper.selectQuartzLogByArgs(criteria, CsPageUtil.getCount(systemQuartzLogMapper))
.getRecords();
return systemQuartzLogMapper.selectQuartzLogByArgs(criteria, CsPageUtil.getCount(systemQuartzLogMapper)).getRecords();
}
public SystemQuartzJobTb getQuartzJobById(Long id) {
@@ -231,11 +231,8 @@ public class SystemRoleService {
return permissions.stream().map(SystemRoleCodeVo::new).toList();
}
List<SystemRoleTb> roles = systemRoleMapper.selectRoleByUserId(user.getId());
permissions = roles.stream()
.flatMap(role -> role.getMenus().stream())
.map(SystemMenuTb::getPermission)
.filter(StrUtil::isNotBlank)
.collect(Collectors.toSet());
permissions =
roles.stream().flatMap(role -> role.getMenus().stream()).map(SystemMenuTb::getPermission).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
return permissions.stream().map(SystemRoleCodeVo::new).toList();
}
@@ -44,7 +44,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class SystemUserService {
@@ -165,9 +165,7 @@ public final class SqlUtil {
private static List<String> readSqlList(File sqlFile) throws Exception {
List<String> sqlList = Lists.newArrayList();
StringBuilder sb = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
Files.newInputStream(sqlFile.toPath()),
StandardCharsets.UTF_8))) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(Files.newInputStream(sqlFile.toPath()), StandardCharsets.UTF_8))) {
String tmp;
while ((tmp = reader.readLine()) != null) {
log.info("line:{}", tmp);
@@ -35,28 +35,28 @@
</collection>
</resultMap>
<select id="selectUserByArgs" resultMap="BaseResultMap">
select u.user_id as user_user_id,
u.dept_id as user_dept_id,
select u.user_id as user_user_id,
u.dept_id as user_dept_id,
u.username as user_username,
u.nick_name as user_nick_name,
u.email as user_email,
u.nick_name as user_nick_name,
u.email as user_email,
u.phone as user_phone,
u.gender as user_gender,
u.avatar_name as user_avatar_name,
u.gender as user_gender,
u.avatar_name as user_avatar_name,
u.avatar_path as user_avatar_path,
u.enabled as user_enabled,
u.pwd_reset_time as user_pwd_reset_time,
u.enabled as user_enabled,
u.pwd_reset_time as user_pwd_reset_time,
u.create_by as user_create_by,
u.update_by as user_update_by,
u.create_time as user_create_time,
u.update_by as user_update_by,
u.create_time as user_create_time,
u.update_time as user_update_time,
d.dept_id as dept_id,
d.dept_id as dept_id,
d.name as dept_name,
j.id as job_id,
j.id as job_id,
j.name as job_name,
r.role_id as role_id,
r.name as role_name,
r.level as role_level,
r.role_id as role_id,
r.name as role_name,
r.level as role_level,
r.data_scope as role_data_scope
from system_user u
left join system_dept d on u.dept_id = d.dept_id