Compare commits

...

3 Commits

Author SHA1 Message Date
danhoo a06007728f
Pre Merge pull request !296 from danhoo/master 2025-03-11 04:52:43 +00:00
RuoYi a256618d5d 优化代码 2025-03-11 12:52:17 +08:00
Rootrl 8db4f0c8f7 通用树形菜单生成工具类 2022-12-08 14:45:53 +08:00
9 changed files with 194 additions and 19 deletions

View File

@ -0,0 +1,136 @@
package com.ruoyi.common.core.utils.trees;
import java.util.ArrayList;
import java.util.List;
/**
*
* @param <T>
*/
public class Tree <T>{
/**
*
*/
protected List<TreeNode> flatTrees = new ArrayList<>();
/**
*
*/
public List<TreeNode> rootTrees = new ArrayList<>();
/**
* Id key
*/
protected String idFlag;
/**
* pid key
*/
protected String pidFlag;
/**
* name key
*/
protected String nameFlag;
/**
* 使
*/
public Tree() {
this("MenuId", "ParentId", "MenuName");
}
/**
*
* @param idFlag
* @param pidFlag
* @param nameFlag
*/
public Tree(String idFlag, String pidFlag, String nameFlag) {
this.idFlag = idFlag;
this.pidFlag = pidFlag;
this.nameFlag = nameFlag;
}
/**
*
* @return
*/
public List<TreeNode> generateTrees(List<T> anyTrees) throws Exception {
// 处理给定的树形结构
screenTrees(anyTrees);
// 找到父节点下面所有子节点 - 递归
generateRecursionTrees();
return rootTrees;
}
/**
*
* @param anyTrees
* @return
*/
protected void screenTrees(List<T> anyTrees) throws Exception {
for (T anyTree: anyTrees) {
TreeNode treeNode = new TreeNode();
try {
treeNode.id = (Long) anyTree.getClass().getMethod("get" + idFlag).invoke(anyTree);
treeNode.pid = (Long) anyTree.getClass().getMethod("get" + pidFlag).invoke(anyTree);
treeNode.label = (String) anyTree.getClass().getMethod("get" + nameFlag).invoke(anyTree);
} catch (Exception e) {
throw new Exception(e.getMessage());
}
// 提取root节点和子节点
if (treeNode.pid == 0L) {
this.rootTrees.add(treeNode);
} else {
this.flatTrees.add(treeNode);
}
}
}
/**
* 使
*/
protected void generateRecursionTrees() {
for (TreeNode rootTreeNode : rootTrees) {
recursionFunction(rootTreeNode);
}
}
/**
*
* @param rootTreeNode
*/
protected void recursionFunction(TreeNode rootTreeNode) {
List<TreeNode> usedTreeNode = new ArrayList<>();
for(TreeNode treeNode : flatTrees) {
if (treeNode.pid == rootTreeNode.id) {
rootTreeNode.children.add(treeNode);
// 标记使用过的node
usedTreeNode.add(treeNode);
}
}
// 删除标记的node
flatTrees.removeAll(usedTreeNode);
// 终止条件
if (usedTreeNode.size() == 0) {
return;
}
// 递归
for (TreeNode treeNode: usedTreeNode) {
recursionFunction(treeNode);
}
}
}

View File

@ -0,0 +1,30 @@
package com.ruoyi.common.core.utils.trees;
import java.util.ArrayList;
import java.util.List;
/**
* Tree node
*/
public class TreeNode {
/**
* ID
*/
public Long id;
/**
* parentId
*/
public Long pid;
/**
* Node name
*/
public String label;
/**
* Child nodes
*/
public List<TreeNode> children = new ArrayList<>();
}

View File

@ -343,25 +343,25 @@ public final class UUID implements java.io.Serializable, Comparable<UUID>
final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36);
// time_low
builder.append(digits(mostSigBits >> 32, 8));
if (false == isSimple)
if (!isSimple)
{
builder.append('-');
}
// time_mid
builder.append(digits(mostSigBits >> 16, 4));
if (false == isSimple)
if (!isSimple)
{
builder.append('-');
}
// time_high_and_version
builder.append(digits(mostSigBits, 4));
if (false == isSimple)
if (!isSimple)
{
builder.append('-');
}
// variant_and_sequence
builder.append(digits(leastSigBits >> 48, 4));
if (false == isSimple)
if (!isSimple)
{
builder.append('-');
}

View File

@ -7,12 +7,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.core.constant.HttpStatus;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.PageUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.sql.SqlUtil;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageDomain;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.core.web.page.TableSupport;
/**
* web
@ -48,6 +53,19 @@ public class BaseController
PageUtils.startPage();
}
/**
*
*/
protected void startOrderBy()
{
PageDomain pageDomain = TableSupport.buildPageRequest();
if (StringUtils.isNotEmpty(pageDomain.getOrderBy()))
{
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
PageHelper.orderBy(orderBy);
}
}
/**
* 线
*/

View File

@ -56,16 +56,8 @@ public class PreAuthorizeAspect
// 注解鉴权
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
checkMethodAnnotation(signature.getMethod());
try
{
// 执行原有逻辑
Object obj = joinPoint.proceed();
return obj;
}
catch (Throwable e)
{
throw e;
}
// 执行原有逻辑
return joinPoint.proceed();
}
/**

View File

@ -57,7 +57,7 @@ public class GenController extends BaseController
}
/**
*
*
*/
@RequiresPermissions("tool:gen:query")
@GetMapping(value = "/{tableId}")

View File

@ -178,7 +178,7 @@ public class SysJobController extends BaseController
@RequiresPermissions("monitor:job:remove")
@Log(title = "定时任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{jobIds}")
public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException
public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException
{
jobService.deleteJobByIds(jobIds);
return success();

View File

@ -3,7 +3,6 @@ package com.ruoyi.job.util;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.core.constant.ScheduleConstants;
@ -30,7 +29,7 @@ public abstract class AbstractQuartzJob implements Job
private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();
@Override
public void execute(JobExecutionContext context) throws JobExecutionException
public void execute(JobExecutionContext context)
{
SysJob sysJob = new SysJob();
BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));

View File

@ -146,6 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
insert into sys_user(
<if test="userId != null and userId != 0">user_id,</if>
<if test="deptId != null and deptId != 0">dept_id,</if>
<if test="userName != null and userName != ''">user_name,</if>
<if test="nickName != null and nickName != ''">nick_name,</if>
<if test="email != null and email != ''">email,</if>
<if test="avatar != null and avatar != ''">avatar,</if>
@ -177,7 +178,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update sys_user
<set>
<if test="deptId != null and deptId != 0">dept_id = #{deptId},</if>
<if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>
<if test="email != null ">email = #{email},</if>
<if test="phonenumber != null ">phonenumber = #{phonenumber},</if>