init: Initialize the basic project.

This commit is contained in:
2026-01-06 09:58:29 +08:00
commit 1ab79d6f8f
1441 changed files with 129326 additions and 0 deletions

View File

@@ -0,0 +1 @@
# 系统功能插件api接口

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.nl</groupId>
<artifactId>nl-plugin-api</artifactId>
<version>3.0.0</version>
</parent>
<artifactId>nl-plugin-sys-api</artifactId>
<packaging>jar</packaging>
<description>系统功能插件api接口</description>
<dependencies>
<!-- 每个插件接口都要引入common -->
<dependency>
<groupId>org.nl</groupId>
<artifactId>nl-common</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1 @@
#系统API接口

View File

@@ -0,0 +1,30 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
/**
* 按钮API
*
* @author xuyuxiang
* @date 2022/11/1 13:45
**/
public interface SysButtonApi {
/**
* 代码生成按钮插入
*
* @author xuyuxiang
* @date 2022/11/1 13:48
**/
void addForGenButton(String menuId, String className, String functionName);
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.nl.sys.core.GroupUserVo;
import java.util.List;
/**
* 用户组Api
*
* @author xuyuxiang
* @date 2022/6/6 11:33
**/
public interface SysGroupApi {
/**
* 获取用户组拥有人员
*
* @author xuyuxiang
* @date 2022/5/13 21:00
*/
List<String> ownUser(String groupId);
/**
* 给用户组授权用户
*
* @author xuyuxiang
* @date 2022/8/1 18:28
*/
void grantUser(String groupId, List<String> userIdList);
/**
* 获取用户组选择器
*
* @author yubaoshan
* @date 2025/1/12 02:36
*/
Page<JSONObject> groupSelector(String searchKey, int current, int size);
/**
* 获取用户组下的用户
* @param groupId
* @return List<GroupUserVo>
*/
List<GroupUserVo> getAllUserInfoByGroupId(String groupId);
}

View File

@@ -0,0 +1,42 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
import cn.hutool.core.lang.tree.Tree;
import java.util.List;
/**
* 菜单API
*
* @author xuyuxiang
* @date 2022/11/1 13:44
**/
public interface SysMenuApi {
/**
* 代码生成菜单插入
*
* @author xuyuxiang
* @date 2022/11/1 13:48
**/
String addForGenMenu(String parentId, String busName, String module, String title, String path);
/**
* 获取所有菜单树包括未授权的
*
* @author yubaoshan
* @date 2024/9/6 01:24
**/
List<Tree<String>> menuTreeSelector(String module);
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
import cn.hutool.json.JSONObject;
import java.util.List;
/**
* 模块API
*
* @author yubaoshan
* @date 2024/9/6 01:24
**/
public interface SysModuleApi {
/**
* 获取所有模块
*
* @author yubaoshan
* @date 2024/9/6 01:24
**/
List<JSONObject> moduleSelector();
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 组织API
*
* @author xuyuxiang
* @date 2022/6/6 11:35
**/
public interface SysOrgApi {
/**
* 根据id获取名称
*
* @author xuyuxiang
* @date 2022/8/4 10:12
**/
String getNameById(String orgId);
/**
* 根据组织id获取部门主管id
*
* @author xuyuxiang
* @date 2022/6/6 14:50
**/
String getSupervisorIdByOrgId(String orgId);
/**
* 获取组织树选择器
*
* @author xuyuxiang
* @date 2022/7/22 14:46
**/
List<Tree<String>> orgTreeSelector();
/**
* 获取组织列表选择器
*
* @author xuyuxiang
* @date 2022/7/22 14:45
**/
Page<JSONObject> orgListSelector(String parentId);
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* 职位API
*
* @author xuyuxiang
* @date 2022/6/6 11:35
**/
public interface SysPositionApi {
/**
* 根据id获取名称
*
* @author xuyuxiang
* @date 2022/8/4 10:13
**/
String getNameById(String positionId);
/**
* 获取职位选择器
*
* @author xuyuxiang
* @date 2022/7/22 14:47
**/
Page<JSONObject> positionSelector(String orgId, String searchKey);
}

View File

@@ -0,0 +1,56 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
import java.util.List;
/**
* 关系API
*
* @author xuyuxiang
* @date 2022/6/6 11:41
**/
public interface SysRelationApi {
/**
* 根据角色id集合获取角色下用户id集合
*
* @author xuyuxiang
* @date 2022/6/6 11:43
**/
List<String> getUserIdListByRoleIdList(List<String> roleIdList);
/**
* 根据用户组id集合获取用户组下用户id集合
*
* @author xuyuxiang
* @date 2022/6/6 11:43
**/
List<String> getUserIdListByGroupIdList(List<String> groupIdList);
/**
* 根据移动端菜单Id集合移除角色和移动端菜单关系
*
* @author xuyuxiang
* @date 2023/1/31 9:54
**/
void removeRoleHasMobileMenuRelation(List<String> targetIdList);
/**
* 清除对应的角色与移动端菜单信息中的【授权的移动端按钮信息】
*
* @author xuyuxiang
* @date 2023/1/31 9:54
**/
void removeRoleHasMobileButtonRelation(List<String> targetIdList, List<String> buttonIdList);
}

View File

@@ -0,0 +1,51 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 角色API
*
* @author xuyuxiang
* @date 2022/6/6 11:36
**/
public interface SysRoleApi {
/**
* 判断组织下是否存在角色
*
* @author xuyuxiang
* @date 2022/8/2 11:16
*/
boolean orgHasRole(List<String> orgIdList);
/**
* 获取角色选择器
*
* @author xuyuxiang
* @date 2022/7/22 14:49
**/
Page<JSONObject> roleSelector(String orgId, String category, String searchKey, List<String> dataScopeList, boolean excludeSuperAdmin);
/**
* 代码生成菜单按钮授权
*
* @author xuyuxiang
* @date 2022/11/1 15:58
**/
void grantForGenMenuAndButton(String menuId);
}

View File

@@ -0,0 +1,131 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
*
* 1.请不要删除和修改根目录下的LICENSE文件。
* 2.请不要删除和修改Snowy源码头部的版权声明。
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
* 5.不可二次分发开源参与同类竞品如有想法可联系团队xiaonuobase@qq.com商议合作。
* 6.若您的项目无法满足以上几点需要更多功能代码获取Snowy商业授权许可请在官网购买授权地址为 https://www.xiaonuo.vip
*/
package org.nl.sys.api;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 用户Api
*
* @author xuyuxiang
* @date 2022/6/6 11:33
**/
public interface SysUserApi {
/**
* 根据用户id获取用户对象没有则返回null
*
* @author xuyuxiang
* @date 2022/6/20 18:19
**/
JSONObject getUserByIdWithoutException(String userId);
/**
* 根据用户id获取用户对象列表没有的则为空都没有则返回空集合
*
* @author xuyuxiang
* @date 2022/6/20 18:19
**/
List<JSONObject> getUserListByIdListWithoutException(List<String> userIdList);
/**
* 根据用户id获取用户对象没有则抛出异常
*
* @author xuyuxiang
* @date 2022/6/20 18:19
**/
JSONObject getUserByIdWithException(String userId);
/**
* 根据用户id获取用户对象列表只要有一个没有则抛出异常
*
* @author xuyuxiang
* @date 2022/6/20 18:19
**/
List<JSONObject> getUserListByIdWithException(List<String> userIdList);
/**
* 获取用户拥有角色
*
* @author xuyuxiang
* @date 2022/5/13 21:00
*/
List<String> ownRole(String userId);
/**
* 给用户授权角色
*
* @author xuyuxiang
* @date 2022/8/1 18:28
*/
void grantRole(String userId, List<String> roleIdList);
/**
* 根据组织id集合获取组织下用户id集合含兼职该机构的人
*
* @author xuyuxiang
* @date 2022/6/6 11:40
**/
List<String> getUserIdListByOrgIdList(List<String> orgIdList);
/**
* 根据职位id集合获取职位下用户id集合含兼职该职位的人
*
* @author xuyuxiang
* @date 2022/6/6 11:44
**/
List<String> getUserIdListByPositionIdList(List<String> positionIdList);
/**
* 根据用户id和组织id和主管层级获取上级主管id
*
* @author xuyuxiang
* @date 2022/6/6 14:50
**/
JSONObject getSupervisorIdBySupervisorLevel(List<String> userIdList, String userId, String orgId, String supervisorLevel);
/**
* 根据用户id和组织id和终点主管层级获取上级主管id集合
*
* @author xuyuxiang
* @date 2022/6/6 14:50
**/
List<String> getMulSupervisorIdListByEndLevel(String userId, String orgId, String endLevel);
/**
* 获取用户选择器
*
* @author xuyuxiang
* @date 2022/4/24 20:08
*/
Page<JSONObject> userSelector(String orgId, String searchKey);
/**
* 获取用户列表(排除当前用户)
*
* @author chengchuanyao
* @date 2024/7/19 9:54
*/
List<JSONObject> listUserWithoutCurrent();
/**
* 获取用户的职位列表
*
* @author xuyuxiang
* @date 2022/6/20 18:19
**/
List<JSONObject> getPositionListByUserId(String userId);
}

View File

@@ -0,0 +1,16 @@
package org.nl.sys.core;
import lombok.Data;
/**
* 组下用户
* @Author: lyd
* @Date: 2025/11/11
*/
@Data
public class GroupUserVo {
private String userId;
private String name;
}