# mjava | mc

## 项目

mjava 标准化后端接口, 自用脚手架封装, mc 只 java-mcli 系列 代号 mjava

### 运行

1. 先获取依赖mjava包依赖, 已配置 deploy, 尽量不使用 install, 会产生 jar 文件

2. QueryDSL: 尽量不使用 package, 会产生 jar 文件

   - 先 mjava 的 maven 执行 compiler, 获取 BaseDTO 转 QBaseDTO
   - 再当前项目的 maven 执行 compiler, 将 ...DTO 类转为 Q...DTO 查询

3. 启动文件 Boot

   - JPA 配置扫描基础路径, 涉及子项目也能注册到, 避免启动报错
   - 子项目 Boot 配置 @SpringBootApplication(scanBasePackages = {"com.malk"}), 扫描公共模块

4. 静态资源映射

   - 静态资源读取是 target 内容, 无需使用 package, 使用 compiler 即可生成, 且不会生产 jar 文件
   - mjava 已配置映射路径, 优先读取子项目对应路径内容, 若不存在则会读取 mjava.jar 路径内容, 未匹配则会 404

5. 环境变量: 包含其它文件

   - 若子项目没有指定, mjava 内存在的文件, 则会加载 mjava 环境文件
   - 若子项目存在同名文件, 则会全量覆盖, 以子项目为准

### 功能

快速开发底座, 集成三方平台标准化接口和曹操作逻辑 目前对接的三方平台有: 钉钉, 宜搭, 用友u8\yonsuite, 飞书平台

### 技术

1. 并发和异步实现 `@Async`
2. 函数式编程 `Lambda`
3. 入参校验配置 `@Validated` 注解
4. 统一错误拦截 `CatchException` 类, 通用返回和报错格式
5. 数据库操作 `jpa`, `QueryDSL` 工具
6. JSON数据操作 `fastjson` 阿里巴巴
7. 工具集: `commons-lang3`, `hutool-all`
8. 基于 `winsw`, 在 `windows` 服务器部署能力
9. 通用网络请求 `UtilHttp`, 上传下载, post和get请求
10. 标准导入导出, 导入基于 `EastExcel`, 做了 `Lambda` 封装. 导出可用基于 `EasyExcel` 或 `POI`
11. 三方接口, 统一的Toke过期时间管理, 避免限流和无效token
12. 通用日志, 环境变量配置, 实现主子项目解耦. 当前每一个子项目对应一个客户, 主项目 mjava 也可独立部署, 提供平台通用接口服务

### 配置

1. 通用路径

   - 日志路径： /Users/malk/server/_Tool/var/项目名称/log
   - 文件路径： Users/malk/server/_Tool/var/项目名称/tmp

2. 超时

   - nginx：如pass_proxy 配置超时5分钟
   - web：设置超时5分钟
   - server：设置超时5分钟 `timeOut`
   - server: 异步线程批量等待超时为10分钟 `timeAwait`

> 20220529 malk