# 数据采集系统

**！！！引入包时请评估是否有必要，放在依赖数量急剧扩大**

### 架构说明
> 项目使用springboot3.3.x+mybatis plus搭建，权限框架暂定shiro。


### 各模块说明
##### 0、入口 `service-deploy`
> 项目入口，提供一下全局的拦截、过滤器或者异常处理，也可以做全局的配置管理

##### 1、基础模块 `service-base`
> 该模块是所有依赖包引入入口，数据库访问层mapper以及对mapper的二次封装dao，建议按功能模块分包或者有更好的分包方式也请说明
>

##### 2、计算模块 `service-calc`
> 指标计算的相关功能
>

##### 3、数据采集 `service-daq`
> 主要的数据采集功能模块，对数据库的访问请走base提供的服务；当前模块可以按需求扩展数据采集方式，包括但不限于邮箱、托管api等方式
> 

##### 4、后台管理 `service-manage`
> 提供后台管理系统的api，建议按各一级菜单分包
>

##### 各模块依赖关系
> `service-base`依赖了所有第三方包，包括一个私有包，`service-calc`、`service-daq`和`service-manage`依赖`service-base`模块


### 待办事项
- [x] shiro 基于jwt的登录认证+授权
- [x] 自定义基于rsa的密码匹配器 `ShiroRsaCredentialsMatcher`
- [x] 可实现的用户信息适配器 `LoginAuthAdapter`
- [x] 用户信息接入数据库数据
- [x] 系统管理-用户、角色、菜单和操作日志


### FAQ

- 1. 下列包的作用？
    
```xml
<dependency>
    <groupId>com.smppw</groupId>
    <artifactId>data-calc</artifactId>
    <version>${data-calc.version}</version>
</dependency>
```
> 封装了一些常用对象、工具类和指标计算方法

2. 部分依赖不可删除，删除就报错，比如joda-time
> data-calc包目前有强依赖的第三方包，待优化后可控制

3. 关于全局统一处理的说明
> 全局统一处理是要求所有接口必须返回一样的数据结构，目前在系统中定义为
```json
{
    "code": 2000,
    "msg": "",
    "data": null
}
```
> 此结构中的data属性就是目前成功返回的数据对象，统一的对象结构为 `com.smppw.common.pojo.ResultVo`。
> 
> 约定：当接口返回结果是String类型时把返回字符串作为上述结构的data，当接口返回`com.smppw.common.pojo.ResultVo`时直接返回该对象；
> 其他属性都用此对象的data接收

4. 关于操作日志记录
> 系统中定义了注解`SystemLog`来标记哪些接口需要记录用户操作，该注解必须针对方法标记，并且无法标记多种操作；当标记在类上时，仅取value字段作为上级模块名

5. 关于封装的公共方法和抽象对象包`com.simuwang.base.common.support.*`的说明
> 系统定义数据库操作数据抽象类 `BaseEntity<?>`，基础查询请求参数抽象类 `BaseQuery`，基础视图对象 `BaseVO`，一系列支持新增和修改请求的抽象类 `*Cmd`
> 和抽象的service方法 `IService`；包括常见的单表分页和自己实现的多表关联的分页案例。
> 
> 其中 BaseEntity对象可以转换为BaseVO对象，只需要实现其中的toVo方法即可。详情参考 `SysUserController`类的使用方法

