MCPcopy Index your code
hub / github.com/Yiuman/citrus

github.com/Yiuman/citrus @0.15.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.15.0 ↗ · + Follow
1,752 symbols 4,440 edges 383 files 769 documented · 44%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

citrus-logo

Citrus: 低代码开发脚手架

code style springboot-2.5.2 mybatis-plus-3.4.3 maven

项目简介

:rainbow: 低代码快速开发脚手架

前后端分离架构,基于SpringBoot2.x + SpringSecurity + JWT + Mybatis-plus + Activiti7

灵活、高效,降低开发成本

前端仓库地址:https://github.com/Yiuman/citrus-vuetify

:smile: 我是一个活生生的例子

欢迎issues、PR~~ 如果此项目对你有所帮助,麻烦动动小手给个小星星:star:

项目特性

  1. 开箱即用,引入starter依赖后即可启动
  2. 高效开发,只需要定义实体与库表,入口继承基类的Controller,即可完成基础的增删改查操作
  3. 常用数据结构的封装与基础的CRUD实现(左右值预遍历树、普通树等)
  4. 统一的认证入口,方便的安全认证扩展,可实现多种方式的认证,且支持表单与接口
  5. 灵活的权限钩子,既可全局进行权限验证、亦可定义于类与方法,验证方式易与扩展
  6. 细粒度的RBAC权限控制,可自定义验证方式,支持数据范围注入
  7. 动态数据源+多数据源事务管理
  8. 封装activiti7工作流,多实例加签,任务跳转

项目结构/模块设计及使用指南

  • citrus-boot-starter 项目自动配置相关
  • citrus-main 项目的运行入口(体验开箱即用的快感)
  • citrus-security 项目安全相关的代码,统一认证、验证码类型、鉴权、jwt等 安全模块传送门
  • citrus-support 项目通用支持相关的代码,通用Service层、Controller层,工具类、缓存、异常、注入、数据结构、动态数据源及相关扩展 通用CRUD指南多数据源及事务
  • citrus-system 项目系统设计的主要实现 包含用户、角色、权限、资源、菜单、数据范围等模块的实现与处理,数据范围注入也在这里 权限数据范围设计
  • citrus-workflow 整合activiti7的工作流模块,实现多维度人员解析、加签、跳转功能 acitivi模型设计器
  • citrus-workflow-impl 系统模块与工作流模块结合的工作流相关实现

如何使用

方式一

  1. springboot项目中引入最新的依赖 见readme顶部微章

xml <dependency> <groupId>com.github.yiuman</groupId> <artifactId>citrus-boot-starter</artifactId> <version>${latest}</version> </dependency>

  1. 下载 https://github.com/Yiuman/citrus/tree/master/sql 中的sql文件,创建你的数据并执行(多数据源请见多数据源及事务使用指南)

  2. application.yml中配置数据库及应用信息

    yml spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/citrus?zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8 username: root password: yiuman server: port: 8082

  3. 启动项目

方式二

  1. 克隆项目 git clone https://github.com/Yiuman/citrus.git

  2. 自行修改项目配置与代码

  3. 启动项目

Extension points exported contracts — how you extend this code

InjectAnnotationParser (Interface)
注解注入解析器 @param 注解类型 @author yiuman @date 2020/7/23 [7 implementers]
citrus-support/src/main/java/com/github/yiuman/citrus/support/inject/InjectAnnotationParser.java
TaskCandidateResolver (Interface)
任务的候选人解析器 根据任务定义的候选人的字符串解析成相关候选人用户ID @author yiuman @date 2020/12/18 [6 implementers]
citrus-workflow/src/main/java/com/github/yiuman/citrus/workflow/resolver/TaskCandidateResolver.java
AuthorizeHook (Interface)
鉴权钩子,用于执行当前请求的鉴权 @author yiuman @date 2020/3/23 [6 implementers]
citrus-security/src/main/java/com/github/yiuman/citrus/security/authorize/AuthorizeHook.java
ExecutionStrategy (Interface)
元数据执行策略 @param 元数据实体 @author yiuman @date 2021/4/25 [8 implementers]
citrus-mda/src/main/java/com/github/yiuman/citrus/mda/ddl/strategy/ExecutionStrategy.java
DataRangeService (Interface)
数据范围服务类 @author yiuman @date 2020/7/1 [2 implementers]
citrus-system/src/main/java/com/github/yiuman/citrus/system/service/DataRangeService.java
TableOperateMapper (Interface)
@author yiuman @date 2021/3/27 [2 implementers]
citrus-main/src/main/java/com/github/yiuman/citrus/dynamic/TableOperateMapper.java
FileStorageService (Interface)
文件服务类 @author yiuman @date 2021/3/18 [6 implementers]
citrus-support/src/main/java/com/github/yiuman/citrus/support/file/FileStorageService.java
CandidateParser (Interface)
候选人解释器 @author yiuman @date 2020/12/18 [8 implementers]
citrus-workflow/src/main/java/com/github/yiuman/citrus/workflow/resolver/CandidateParser.java

Core symbols most depended-on inside this repo

get
called by 90
citrus-support/src/main/java/com/github/yiuman/citrus/support/crud/rest/QueryRestful.java
getClass
called by 49
citrus-support/src/main/java/com/github/yiuman/citrus/support/utils/JavassistUtils.java
getId
called by 46
citrus-support/src/main/java/com/github/yiuman/citrus/support/model/Tree.java
add
called by 43
citrus-support/src/main/java/com/github/yiuman/citrus/support/utils/Buttons.java
eq
called by 37
citrus-support/src/main/java/com/github/yiuman/citrus/support/crud/query/builder/LambdaQueryBuilder.java
addColumn
called by 34
citrus-support/src/main/java/com/github/yiuman/citrus/support/crud/view/impl/SimpleTableView.java
getUserId
called by 30
citrus-workflow/src/main/java/com/github/yiuman/citrus/workflow/model/ProcessPersonalModel.java
ok
called by 29
citrus-support/src/main/java/com/github/yiuman/citrus/support/http/ResponseEntity.java

Shape

Method 1,349
Class 286
Interface 113
Enum 4

Languages

Java100%

Modules by API surface

citrus-support/src/main/java/com/github/yiuman/citrus/support/utils/WebUtils.java27 symbols
citrus-system/src/main/java/com/github/yiuman/citrus/system/service/UserService.java24 symbols
citrus-support/src/main/java/com/github/yiuman/citrus/support/datasource/DynamicSqlSessionTemplate.java23 symbols
citrus-support/src/main/java/com/github/yiuman/citrus/support/crud/service/BasePreOrderTreeService.java19 symbols
citrus-mda/src/main/java/com/github/yiuman/citrus/mda/service/impl/MdaServiceImpl.java19 symbols
citrus-boot-starter/src/main/java/com/github/yiuman/citrus/starter/DynamicDataSourceAutoConfiguration.java19 symbols
citrus-support/src/main/java/com/github/yiuman/citrus/support/crud/rest/BaseCrudController.java18 symbols
citrus-support/src/main/java/com/github/yiuman/citrus/support/crud/service/BaseDtoService.java17 symbols
citrus-security/src/main/java/com/github/yiuman/citrus/security/jwt/JwtProperties.java17 symbols
citrus-elasticsearch/src/main/java/com/github/yiuman/citrus/elasticsearch/service/BaseElasticsearchService.java17 symbols
citrus-support/src/main/java/com/github/yiuman/citrus/support/widget/Selections.java15 symbols
citrus-support/src/main/java/com/github/yiuman/citrus/support/crud/service/TreeOperation.java15 symbols

Datastores touched

(mysql)Database · 1 repos
citrusDatabase · 1 repos
citrus2Database · 1 repos

For agents

$ claude mcp add citrus \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact