
## 服务功能

``

    1.用户通过WEB3钱包访问H5页面，需要链接钱包 （login）
    2.首次访问，如果没有通过其他推广链接访问，则首页不显示连接钱包按钮，不显示报名按钮
    3.首次访问，如果是通过其他推广链接访问的，则可以链接钱包后，点击报名（即必须认有推荐人才可以报名）(sign) 
    4.报名填写申请表，需要上传1寸照，如果没有，可以唤醒手机摄像头自拍 (upload)
    5.报名后，信息提交后台，需要人工审核（确认照片是否真人，确认其他条件是否符合），后台需要一张用户表（地址，姓名，性别，电话，公司，职务，推荐地址，注册时间，以及调整推荐关系的操作）
    6.报名后，不管有没有审核通过，用户都可以生成专属的推广二维码和推广链接，进行分享了 
    7.审核通过后，点击首页右上角钱包，可以进入我的活动页面，活动根据时间倒序
    8.后台需要有创建课程主题的表（课程主题、课程简介，创建时间等基本信息就行，用于首页的报名）
    9后台还需要有创建活动的表（活动关联的课程出题，活动名称，活动起止时间，生成活动专属二维码，签到人员清单，活动上下线等）
    10.用户签到的时候，就是唤醒摄像头扫一扫活动专属二维码，然后生成学员签到确认的设计页，组织者人工核对照片和真人无误后，发放听课吊牌
``


## server项目结构

```shell
├── api
│   └── v1
├── config
├── core
├── docs
├── global
├── initialize
│   └── internal
├── middleware
├── model
│   ├── request
│   └── response
├── packfile
├── resource
│   ├── excel
│   ├── page
│   └── template
├── router
├── service
├── source
└── utils
    ├── timer
    └── upload
```

| 文件夹       | 说明                    | 描述                        |
| ------------ | ----------------------- | --------------------------- |
| `api`        | api层                   | api层 |
| `--v1`       | v1版本接口              | v1版本接口                  |
| `config`     | 配置包                  | config.yaml对应的配置结构体 |
| `core`       | 核心文件                | 核心组件(zap, viper, server)的初始化 |
| `docs`       | swagger文档目录         | swagger文档目录 |
| `global`     | 全局对象                | 全局对象 |
| `initialize` | 初始化 | router,redis,gorm,validator, timer的初始化 |
| `--internal` | 初始化内部函数 | gorm 的 longger 自定义,在此文件夹的函数只能由 `initialize` 层进行调用 |
| `middleware` | 中间件层 | 用于存放 `gin` 中间件代码 |
| `model`      | 模型层                  | 模型对应数据表              |
| `--request`  | 入参结构体              | 接收前端发送到后端的数据。  |
| `--response` | 出参结构体              | 返回给前端的数据结构体      |
| `packfile`   | 静态文件打包            | 静态文件打包 |
| `resource`   | 静态资源文件夹          | 负责存放静态文件                |
| `--excel` | excel导入导出默认路径 | excel导入导出默认路径 |
| `--page` | 表单生成器 | 表单生成器 打包后的dist |
| `--template` | 模板 | 模板文件夹,存放的是代码生成器的模板 |
| `router`     | 路由层                  | 路由层 |
| `service`    | service层               | 存放业务逻辑问题 |
| `source` | source层 | 存放初始化数据的函数 |
| `utils`      | 工具包                  | 工具函数封装            |
| `--timer` | timer | 定时器接口封装 |
| `--upload`      | oss                  | oss接口封装        |

