From ab4ac8d8433425450354a1d44a4726d9dadf3d92 Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Sun, 6 Jul 2025 11:29:28 +0000 Subject: [PATCH] Update README.md --- apijson/README.md | 205 +++++++++++++++++++++++++++++----------------- 1 file changed, 131 insertions(+), 74 deletions(-) diff --git a/apijson/README.md b/apijson/README.md index 234f3bb..c56a301 100644 --- a/apijson/README.md +++ b/apijson/README.md @@ -1,74 +1,131 @@ -### apijson配置选项 - - * -Dapijson.enabled=true,配置false停用apijson - * -Dapijson.debug=false,配置true开启调试 - * -Dapijson.test=false,配置true开启框架测试 - * -Dapijson.verify=60,配置验证码有效期(秒),非调试时有效 - -### apijson框架引用1 - - * 创建数据库apijson,创建用户apijson/apijson,导入脚本apijson.sql - * 下载[apijson-framework-4.1.0.jar](http://t.xlongwei.com/windows/apijson-framework-4.1.0.jar)、[apijson-orm-4.1.0.jar](http://t.xlongwei.com/windows/apijson-orm-4.1.0.jar) - * mvn install:install-file -DgroupId=apijson.orm -DartifactId=apijson-orm -Dversion=4.1.0 -Dpackaging=jar -Dfile=apijson-orm-4.1.0.jar - * mvn install:install-file -DgroupId=apijson.framework -DartifactId=apijson-framework -Dversion=4.1.0 -Dpackaging=jar -Dfile=apijson-framework-4.1.0.jar - * sh start.sh install,apjson-orm更改为com.github.tencent:APIJSON,版本升级到4.6.0 - -### apijson框架引用2 - - * git clone https://gitee.com/APIJSON/APIJSON.git - * 导入脚本MySQL/sys.sql - * vi APIJSON-Java-Server/APIJSONORM/pom.xml,groupId=apijson.orm,artifactId=apijson-orm - * mvn install -f APIJSON-Java-Server/APIJSONORM/pom.xml - * vi APIJSON-Java-Server/APIJSONFramework/pom.xml,groupId=apijson.framework,artifactId=apijson-framework - * mvn install -f APIJSON-Java-Server/APIJSONFramework/pom.xml - -### apijson.sql与sys.sql的差异 - - * APIJSONSQLConfig默认MySQL为5.7.22,light4j的MySQL版本为5.1.63 - * json类型替换为varchar(65535),apijson.JSON.getCorrectJson正确处理String="[1,2,3]"为JSONArray=[1,2,3] - * sys.sql表名首字母为大写,apijson.sql表名统一为小写字母,/etc/my.cnf需配置`lower_case_table_names=1` - * apijson_privacy字段pasword、payPassword添加注解@JSONField,避免fastjson解析报错,密码启用加密,修改字段长度 - * apijson.sql增加了beetlsql示例里的user表 - * apijson权限管理:优先开放指定ip权限:grant all on apijson.* to apijson@'127.0.0.1' identified by 'apijson'; - -### apijson请求示例 - - * http://localhost:8080/service/apijson/get - * 单条数据:{"Moment":{"id":12}} - * 部分字段:{"Moment":{"id":12,"@column":"content"}} - * 字段别名:{"Moment":{"id":12,"@column":"id,date:time,content:text"}} - * 多条数据:{"[]":{"Moment":{"id{}":[12,15,32],"@column":"id,date,content"}}} - * 逻辑非:{"[]":{"Moment":{"id!{}":[12,15,32],"@column":"id"}}} - * 逻辑与:{"[]":{"Moment":{"id&{}":">=300,<=400","@column":"id"}}} - * 模糊查询:{"[]":{"Moment":{"content$":"%APIJSON%","@column":"id,date,content:text"}}} - * 正则匹配:{"[]":{"Moment":{"content?":"^[0-9]+$","@column":"id,date,content:text"}}} - * json数组(老版本MySQL不支持):{"[]":{"Moment":{"praiseUserIdList<>":82001,"@column":"id,date,content,praiseUserIdList"}}} - * 分页:{"[]":{"Moment":{"@column":"id,date,content,praiseUserIdList"},"page":0,"count":5}} - * 查询总数:{"[]":{"Moment":{},"query":1},"total@":"/[]/total"} - * 查询某页:{"[]":{"Moment":{"@column":"id"},"query":2,page:1},"total@":"/[]/total"} - * 排序:{"[]":{"Moment":{"@column":"id,date,content","@order":"date-,id,content+"}}} - * 关联查询(Access表控制权限和实际表名):{"[]":{"Moment":{"@column":"id,date,userId","id":12},"User":{"id@":"/Moment/userId","@column":"id,name"}}} - * 最大值:{"[]":{"Moment":{"@column":"max(id):maxid"}}} - -### apijson账户管理 - - * 生成验证码:http://localhost:8080/service/apijson/postVerify,{"type":1,"phone":"13000038710"},type=0登录 1注册 2密码 3支付 4重载 - * 校验验证码:http://localhost:8080/service/apijson/headVerify,{"type":1,"phone":"13000038710","verify":"1979"},非调试时60秒过期 - * 验证码注册:http://localhost:8080/service/apijson/register,{"Privacy":{"phone":"18810761776","_password":"666666"},"User":{"name":"xlongwei"},"verify":"1979"} - * 原密码改密:http://localhost:8080/service/apijson/putPassword,{"oldPassword":666666,"Privacy":{"id":38710,"_password":"123456"}} - * 获取验证码:http://localhost:8080/service/apijson/getVerify,{"type":2,"phone":"13000038710"},响应报文不出现验证码,适合短信发送等场景 - * 验证码改密:http://localhost:8080/service/apijson/putPassword,{"verify":"2798","Privacy":{"phone":"13000038710","_password":"666666"}} - * 改支付密码:http://localhost:8080/service/apijson/putPassword,{"verify":"2798","Privacy":{"phone":"13000038710","_payPassword":"666666"}} - * 验证码重载:http://localhost:8080/service/apijson/reload,{"phone":"13000038710","verify":"1950"},type=ALL, FUNCTION, REQUEST, ACCESS - * 密码登录:http://localhost:8080/service/apijson/login,{"phone":"13000038710","password":"666666"} - * 验证码登录:http://localhost:8080/service/apijson/login,{"phone":"13000038710","password":"1979",type:"1"},或使用"verify":"1979"更合适{"phone":"13000038710","verify":"1979"} - * 新增:http://localhost:8080/service/apijson/post,{"Moment":{"content":"今天天气不错,到处都是提拉米苏雪","userId":38710},"tag":"Moment"},tag为Request表中配置,一般是Table表名 - * 修改:http://localhost:8080/service/apijson/put,{"Moment":{"id":12,"content":"海洋动物数量减少,如果非吃不可,不点杀也是在保护它们"},"tag":"Moment"} - * 查询余额:http://localhost:8080/service/apijson/gets,{"Privacy":{"id":38710},"tag":"Privacy"},根据Access表配置不运行get方法,而gets方法不会返回隐藏字段 - * 充值提现:http://localhost:8080/service/apijson/putBalance,{"Privacy":{"balance+":-1000,"_payPassword":666666},"tag":"Privacy"},充值为正数,提现为负数,Privacy.id可以自动获取 - * 登出:http://localhost:8080/service/apijson/logout - -### Request请求校验 - - * tag表名+method方法+version版本:唯一定位请求配置,版本默认为1 - * structure:请求参数校验,NECESSARY必填字段,DISALLOW禁止字段, + + +# Light4j 项目 + +## 项目简介 +`light4j` 是一个基于 Java 的开源项目,旨在为开发者提供一套轻量级的工具和服务,支持多种功能,如 APIJSON、微信公众号开发、数据库操作、文件处理、加密解密、日期处理、验证码生成等。该项目利用多种开源库和框架,如 Undertow、BeetlSQL、APIJSON、Redis 等,提供灵活的扩展性和高效的性能。 + +## 本地测试 +可以在本地环境中运行和测试该项目,通过 `src/test/java` 下的测试类(如 `AesCryptoTest`, `BankUtilTest`, `ConsulTest` 等)来验证核心功能。这些测试用例覆盖了加密、数据库连接、网络请求、日期处理等多种场景。 + +## 线上部署 +该项目支持部署到线上服务器。使用 `start.sh` 或 `start.bat` 脚本启动应用。根据 `server.yml`、`secret.yml`、`handler.yml` 等配置文件进行服务配置。支持通过 Consul 进行服务注册与发现。 + +## 配置说明 +- **服务器配置**: `server.yml`, `secret.yml`, `handler.yml` +- **数据库配置**: `beetl/sql/user.md`, `btsql-ext.properties` +- **Redis 配置**: `RedisUtil`, `RedisConfig`, `RedisCache` +- **微信相关配置**: `WeixinUtil` +- **日志配置**: `logback.xml`, `logjanino.xml`, `logserver.xml` +- **加密配置**: `AesCrypto`, `DesUtil`, `RsaUtil` +- **定时任务**: `TaskUtil` +- **文件处理**: `FileUtil`, `UploadUtil`, `DocxUtil`, `PdfUtil` + +## 其他说明 +- **依赖管理**: 项目使用 `Maven`(`pom.xml`)进行依赖管理。 +- **多环境支持**: 支持 `dev`, `test`, `prod` 等多种环境配置。 +- **日志管理**: 使用 `Logback` 和 `Janino` 进行日志记录。 +- **服务注册与发现**: 支持通过 `Consul` 注册服务并发现其他服务。 +- **WebSocket**: 提供 `WebSocketAbstractCallback`, `WebSocketChatCallback` 等类支持 WebSocket 通信。 + +## 功能模块 +### APIJSON 支持 +`light4j` 支持 [APIJSON](https://gitee.com/Toml/to/apijson) 规范,提供了以下关键类: +- `DemoApplication`: APIJSON 应用的启动类。 +- `DemoController`: APIJSON 请求的控制器,支持登录、注册、数据查询等功能。 +- `DemoParser`: 自定义的 APIJSON 解析器。 +- `DemoSQLExecutor`: SQL 执行器,用于数据持久化。 +- `DemoSQLConfig`: SQL 配置,如 MySQL 支持。 + +### 微信公众号支持 +该项目提供了微信公众号开发的工具类和处理器: +- `WeixinUtil`: 微信消息的加密解密、访问令牌获取、菜单管理等。 +- `WeixinHandler`: 处理微信公众号的请求,如 token 验证、加密、用户消息。 +- `AbstractMessageHandler`: 抽象消息处理类,支持文本、图片、语音、视频、位置等消息类型。 +- `AbstractEventHandler`: 支持事件处理,如用户关注、取消关注、扫码等。 + +### 数据库支持 +- **BeetlSQL**: 使用 `Beetl` 进行数据库操作,提供 `UserDao` 接口和 `User` 模型。 +- **MySqlUtil**: 提供 MySQL 数据库连接和查询工具。 +- **DruidUtil**: 支持 Druid 数据库连接池。 +- **RedisUtil**: 使用 Redis 进行缓存和会话管理。 + +### 文件处理 +- `FileUtil`: 提供文件读写、压缩/解压、编码处理等功能。 +- `UploadUtil`: 支持文件上传和存储。 +- `DocxUtil`: Word 文档的读写与替换。 +- `PdfUtil`: PDF 文件的生成、合并、签名。 +- `ExcelUtil`: Excel 文件的读写和操作。 + +### 加密与安全 +- `AesCrypto`: AES 加密与解密。 +- `DesUtil`: DES 加密与解密。 +- `RsaUtil`: RSA 非对称加密,支持签名与验证。 +- `ShiroUtil`: 提供基于 Apache Shiro 的权限管理。 + +### 工具类 +- `DateUtil`: 日期和时间的处理,如格式化、工作日计算。 +- `StringUtil`: 字符串处理,如正则匹配、编码转换、URL 验证。 +- `NumberUtil`: 数值处理,如大写金额转换、表达式解析。 +- `JsonUtil`: JSON 数据的解析和构建。 +- `PinyinUtil`: 汉字转拼音,支持排序和搜索。 +- `HolidayUtil`: 节假日的处理,如工作日计算。 +- `IdCardUtil`: 身份证验证与信息提取。 +- `PlateUtil`: 车牌号码验证。 +- `MailUtil`: 邮件发送工具。 + +## 使用说明 +### 本地开发 +1. 确保安装了 Java 1.8 或更高版本。 +2. 使用 Maven 构建项目:`mvn clean install` +3. 修改 `server.yml`、`secret.yml` 等配置文件。 +4. 运行 `Servers.java` 或 `DemoApplication.java` 启动服务。 + +### 部署到服务器 +1. 打包生成 jar 文件:`mvn package` +2. 上传 jar 文件到服务器。 +3. 使用 `start.sh` 启动服务:`./start.sh` +4. 检查日志文件:`logs/server.log` + +### 使用 APIJSON +1. 在 `DemoApplication` 中初始化 APIJSON。 +2. 使用 `DemoController` 处理 APIJSON 请求。 +3. 通过 `DemoParser` 解析请求并生成 SQL 查询。 +4. 使用 `DemoSQLExecutor` 执行数据库操作。 + +### 微信公众号开发 +1. 配置 `WeixinUtil` 中的 token 和加密参数。 +2. 使用 `WeixinHandler` 处理公众号请求。 +3. 实现自定义消息处理器,如 `TextHandler`, `ImageHandler`, `LocationHandler`。 + +### 文件处理 +- **Word 操作**: 使用 `DocxUtil` 进行 Word 文档的读写与替换。 +- **PDF 操作**: 使用 `PdfUtil` 创建、合并、签名 PDF 文件。 +- **Excel 操作**: 使用 `ExcelUtil` 生成 Excel 文件并进行数据操作。 +- **文件上传**: 使用 `UploadUtil` 处理上传请求。 + +### 数据库操作 +- **MySQL**: 使用 `MySqlUtil` 进行数据库连接和查询。 +- **Redis**: 使用 `RedisUtil` 进行缓存管理。 +- **Druid**: 使用 `DruidUtil` 进行数据库连接池管理。 + +## 项目结构 +- **`src/main/java`**: Java 源码。 +- **`src/main/resources`**: 配置文件、模板、数据库脚本等。 +- **`src/test/java`**: 测试类。 +- **`apijson/`**: APIJSON 相关配置和 SQL 文件。 +- **`pom.xml`**: Maven 依赖配置。 +- **`knife4j/`**: Swagger API 文档配置。 +- **`beetl/`**: Beetl 模板引擎配置。 +- **`start.sh` / `start.bat`**: 启动脚本。 + +## 特性 +- 高性能轻量级框架,支持多种数据库和缓存。 +- 完整的微信公众号开发支持。 +- 强大的文件处理能力(Word, PDF, Excel)。 +- 提供丰富的工具类,如加密、日期、字符串、JSON 处理等。 +- 支持 APIJSON 规范,简化 API 开发。 +- 支持多环境配置和部署。 + +## 许可证 +该项目遵循 Apache 2.0 许可证。具体请参考 `LICENSE` 文件。 \ No newline at end of file -- Gitee