# Ape - 低代码开发平台 **Repository Path**: admin_yys/ape ## Basic Information - **Project Name**: Ape - 低代码开发平台 - **Description**: 低代码开发平台,毕设利器!!! - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2022-06-10 - **Last Updated**: 2025-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ape - 低代码开发平台 ## 介绍 ​ **Ape** 是基于 SpringBoot + Vue2 开发的一款低代码开发平台。其目的是为了更敏捷的开发中小型项目,包括管理端的配置及客户端的定制生成。 ## 技术栈 - 后端 - SpringBoot - MyBatis - 前端 - Vue2 - 数据 - MySQL - 存储 - Minio ## 环境要求 1. JDK: 11 2. Node: 14.x 3. yarn: 1.22.19 4. MySQL: 8.0+ 5. Maven: 3.6+ ## 项目结构 - ape-admin -- 前端 - ape-bg -- 后端 - ape-db -- 数据库初始化文件及文档 ## 如何开始 1. 克隆项目到本地 2. 安装并配置MySQL数据库 ```mysql -- 建议使用MySQL8.0+,请自行安装 -- 安装完成后创建数据库,并导入ape-db/ape_db.sql ``` 3. 导入后端项目到IDE并使用Maven构建 4. 修改数据库配置文件`application-druid.yml` ```yaml # MySQL连接配置(14行~23行) master: username: xxxx password: xxxx # useUnicode=true characterEncoding=utf8 字符集 # serverTimezone=GMT%2B8 时区 # zeroDateTimeBehavior=convertToNull 解决 timestamp异常 # useSSL=true 使用安全认证 # allowMultiQueries=true 允许批量操作 jdbc-url: jdbc:mysql://localhost:3306/ape_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true driver-class-name: com.mysql.cj.jdbc.Driver # Redis配置(31行~42行) redis: host: localhost port: 6379 database: 0 password: lettuce: pool: min-idle: 0 max-idle: 8 max-wait: 1ms max-active: 8 shutdown-timeout: 100ms ``` 5. 修改内置工具配置文件`application-ape.yml` ```yaml # 邮件发送工具配置(22行~35行) mail: # 邮件服务器 host: smtp.163.com # 发送端口 port: 465 # 邮箱认证用户名 username: xxxxxxxx@163.com # 邮箱认证密码 password: xxxxxxxxxxxxxxxx # 发送协议 protocol: smtp # 默认编码格式 defaultEncoding: utf-8 # 邮件签名(此内容会添加至邮件标题和邮件内容前) signature: 【猿帅网络】 # OSS存储工具配置(38行~55行) # 系统目前内置文件管理使用的是minio存储系统,如要使用内置文件管理系统,请务必配置 oss.minio oss: # 阿里云oss配置 ali: keyId: keySecret: bucketName: endpoint: # 七牛云配置 qiniu: bucketName: accessKey: secretKey: # minio配置 minio: host: accessKey: secretKey: bucket: # openai工具配置(80行~87行) # 系统中内置集成了GPT-3.5,如需使用,请将如下配置完善 openai: # 请求代理地址,即转发访问到`https://api.openai.com`的地址,可使用腾讯云函数 vpn: # openai api key apikey: # model model: ``` 6. 运行后端项目 启动类所在位置:`${pwd}/ape/ape-bg/op-server/scr/main/java/com/ape9527/ApeApplication.java` 7. 安装并配置Node.js和yarn ```shell # 建议使用node-v14.16.0,请自行安装 # 安装yarn npm install -g yarn --registry=https://registry.npm.taobao.org #配置镜像源 yarn config set registry https://registry.npm.taobao.org -g ``` 8. 安装前端依赖 ```shell yarn ``` 9. 运行前端项目 ```shell yarn dev ``` ## 通用接口API文档 > 为了简化项目的开发过程,降低开发成本,本项目中内置了通用CRUD接口。 > ### 通用列表查询 #### 请求地址: `/api/base/data/list` #### 请求方式: `POST` #### 接口描述: 暂无 #### 请求参数: **Headers** | 参数名称 | 参数值 | 是否必须 | 备注 | | ------------- | ---------------- | -------- | -------- | | Content-Type | application/json | 是 | | | Authorization | | 是 | 请求令牌 | **Body** | 名称 | 类型 | 是否必须 | 默认值 | 备注 | | -------------------------- | -------- | -------- | ------------------------------------------------- | ---------------------------------------------------------- | | objectCode | string | 是 | | 数据对象编码 | | selectFields | string[] | | 当前对象所有字段 | 查询字段 | | enableCorrelateQuery | boolean | | false | 是否开启关联查询 | | correlatedBaseObjs | array | | | 关联数据对象 | | \|--fieldCode | string | | | 数据对象属性编码 | | \|--correlatedBaseObj | string | | | 关联数据对象编码 | | \|--correlatedBaseObjField | string | | | 关联数据对象属性编码 | | \|--selectField | string | | | 关联数据对象的查询字段 | | enableDataIsolation | boolean | | false | 是否开启部门数据隔离
数据权限为`本部门及以下部门权限` | | conditions | object[] | | | 查询条件字段 | | \|--fieldCode | String | | | 数据对象属性编码 | | \|--operator | String | | | sql操作符 | | \|--value | 任意类型 | | | 值 | | page | object | | | 分页对象 | | \|--page | boolean | | false | 是否开启分页 | | \|--pageNum | integer | | 1 | 当前页码 | | \|--pageSize | integer | | 10 | 每页大小 | | sorts | object[] | | `[{'fieldCode':'create_time','sortType':'DESC'}]` | 排序字段 | | \|--fieldCode | string | | | 字段编码 | | \|--sortType | string | | | 排序方式:`ASC or DESC` | #### 返回数据: | 名称 | 类型 | 是否必须 | 默认值 | 备注 | | ------------ | -------- | -------- | ------ | ------------ | | code | integer | 是 | | 状态码 | | msg | string | 是 | | 状态信息 | | data | 任意类型 | | | 返回数据 | | \|--page | boolean | | | 是否开启分页 | | \|--pageNum | integer | | | 当前页码 | | \|--pageSize | integer | | | 每页大小 | | \|--total | integer | | | 总条数 | | \|--pages | integer | | | 总页数 | | \|--list | array | | | 数据集合 | ### 通用详情查询 #### 请求地址: `/api/base/data/detail` #### 请求方式: `POST` #### 接口描述: 暂无 #### 请求参数: **Headers** | 参数名称 | 参数值 | 是否必须 | 备注 | | ------------- | ---------------- | -------- | -------- | | Content-Type | application/json | 是 | | | Authorization | | 是 | 请求令牌 | **Body** | 名称 | 类型 | 是否必须 | 默认值 | 备注 | | -------------------------- | -------- | -------- | ---------------- | ---------------------- | | objectCode | string | 是 | | 数据对象编码 | | uuid | string | 是 | | 唯一id | | selectFields | string[] | | 当前对象所有字段 | 查询字段 | | enableCorrelateQuery | boolean | | false | 是否开启关联查询 | | correlatedBaseObjs | array | | | 关联数据对象 | | \|--fieldCode | string | | | 数据对象属性编码 | | \|--correlatedBaseObj | string | | | 关联数据对象编码 | | \|--correlatedBaseObjField | string | | | 关联数据对象属性编码 | | \|--selectField | string | | | 关联数据对象的查询字段 | #### 返回数据: | 名称 | 类型 | 是否必须 | 默认值 | 备注 | | ---- | ------- | -------- | ------ | -------- | | code | integer | 是 | | 状态码 | | msg | string | 是 | | 状态信息 | | data | object | | | 返回数据 | ### 通用保存 #### 请求地址: `/api/base/data/save` #### 请求方式: `POST` #### 接口描述: 根据参数区分新增或者更新 #### 请求参数: **Headers** | 参数名称 | 参数值 | 是否必须 | 备注 | | ------------- | ---------------- | -------- | -------- | | Content-Type | application/json | 是 | | | Authorization | | 是 | 请求令牌 | **Body** | 名称 | 类型 | 是否必须 | 默认值 | 备注 | | ------------- | -------- | -------- | ------ | ---------------------------------------------------------- | | objectCode | string | 是 | | 数据对象编码 | | fields | object[] | 是 | | 保存的字段与值 | | \|--fieldCode | String | | | 数据对象属性编码 | | \|--value | 任意类型 | | | 值 | | conditions | object[] | | | 更新的条件,包含数据即认为是更新,新增方法使用时需保持为空 | | \|--fieldCode | String | | | 数据对象属性编码 | | \|--operator | String | | | sql操作符 | | \|--value | 任意类型 | | | 值 | #### 返回数据: | 名称 | 类型 | 是否必须 | 默认值 | 备注 | | ---- | ------- | -------- | ------ | -------- | | code | integer | 是 | | 状态码 | | msg | string | 是 | | 状态信息 | ### 通用删除 #### 请求地址: `/api/base/data/del` #### 请求方式: `POST` #### 接口描述: 此接口不进行物理删除,只进行逻辑删除,即标记数据库中`del`字段的值为`1` #### 请求参数: **Headers** | 参数名称 | 参数值 | 是否必须 | 备注 | | ------------- | ---------------- | -------- | -------- | | Content-Type | application/json | 是 | | | Authorization | | 是 | 请求令牌 | **Body** | 名称 | 类型 | 是否必须 | 默认值 | 备注 | | ------------- | -------- | -------- | ------ | ---------------- | | objectCode | string | 是 | | 数据对象编码 | | conditions | object[] | | | 删除的条件 | | \|--fieldCode | String | | | 数据对象属性编码 | | \|--operator | String | | | sql操作符 | | \|--value | 任意类型 | | | 值 | #### 返回数据: | 名称 | 类型 | 是否必须 | 默认值 | 备注 | | ---- | ------- | -------- | ------ | -------- | | code | integer | 是 | | 状态码 | | msg | string | 是 | | 状态信息 | ## 其他参考文档 - [《平台开发参考手册(前端)》](https://gitee.com/admin_yys/ape-release/blob/master/%E5%B9%B3%E5%8F%B0%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%EF%BC%88%E5%89%8D%E7%AB%AF%EF%BC%89.md) - [《平台开发参考手册(后端)》](https://gitee.com/admin_yys/ape-release/blob/master/%E5%B9%B3%E5%8F%B0%E5%BC%80%E5%8F%91%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%EF%BC%88%E5%90%8E%E7%AB%AF%EF%BC%89.md) ## 贡献指南 ## 许可证 ## 联系方式