华容一中校友会后台开发文档
数据字典
alumni
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| name |
varchar |
|
|
|
|
| phone |
varchar |
|
|
|
|
| org |
varchar |
|
T |
|
|
| work |
varchar |
|
T |
|
|
| qq |
varchar |
|
T |
|
|
| province |
varchar |
|
|
|
省 |
| city |
varchar |
|
|
|
市 |
| district |
varchar |
|
|
|
区 |
| gender |
int |
|
|
|
0表示男,1表示女 |
| join_time |
timestamp |
|
|
|
|
| branch |
int |
|
|
|
校友会id |
| open_id |
varchar |
|
|
|
微信为小程序用户分配的唯一id |
| helper_open_id |
varchar |
|
T |
|
帮助录入当前用户信息的用户的open_id |
| update_times |
int |
0 |
|
|
班级修改次数,不允许超过3次 |
class
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| class_name |
varchar |
|
|
|
|
| grade_id |
int |
|
|
|
班级所属年级id |
| monitor_name |
varchar |
|
T |
|
班长姓名 |
| teacher_name |
varchar |
|
T |
|
班主任姓名 |
| teacher_name2 |
varchar |
|
T |
|
班主任2姓名 |
| update_time |
timestamp |
|
T |
|
最后一次被修改的时间 |
| modifier_open_id |
varchar |
|
|
|
最后一次修改班级信息的用户openid |
| modifier_alumni_id |
int |
|
|
|
最后一次修改班级信息的用户id |
level
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| level_code |
int |
|
|
T |
权限编码 |
| level_name |
int |
|
|
|
权限名 |
| middle_or_high |
varchar |
|
|
|
高中或初中 |
| monitor_name |
varchar |
|
T |
|
班长姓名 |
| teacher_name |
varchar |
|
T |
|
班主任姓名 |
| teacher_name2 |
varchar |
|
T |
|
班主任2姓名 |
| update_time |
timestamp |
|
T |
|
最后一次被修改的时间 |
| modifier_open_id |
varchar |
|
|
|
最后一次修改班级信息的用户openid |
| modifier_alumni_id |
int |
|
|
|
最后一次修改班级信息的用户id |
alumni_class
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| alumni_id |
int |
|
|
|
校友id |
| class_id |
int |
|
|
|
班级id |
grade
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| year |
int |
|
|
|
毕业年份 |
| middle_or_high |
varchar |
|
|
|
高中或初中 |
association
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| name |
varchar |
|
|
|
校友会名字 |
| principle_id |
int |
|
T |
|
校友会主席id |
| secretary_general_id_id |
int |
|
T |
|
校友会秘书长id |
| contact_person_id |
int |
|
T |
|
联系人id |
invitation
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| invite_person_id |
int |
|
|
|
邀请人(host)id |
| invited_person_id |
int |
|
|
|
被邀请人(guest)id |
| invite_person_open_id |
varchar |
|
|
|
邀请人openid |
| invited_person_open_id |
varchar |
|
|
|
被邀请人openid |
notification
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| applicant_open_id |
varchar |
|
|
|
交换名片请求发起者openid |
| target_open_id |
varchar |
|
|
|
交换名片请求接收者openid |
| apply_time |
timestamp |
|
|
|
发起时间 |
| state |
tinyint(1) |
|
T |
|
消息接收状态,0代表拒绝,1代表同意 |
| applicant_alumni_id |
int |
|
|
|
请求发起者id |
| target_alumni_id |
int |
|
|
|
请求接收者id |
card
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| source_alumni_id |
int |
|
|
|
名片来源用户id |
| target_alumni_id |
int |
|
|
|
名片接收用户id |
help_registration
| 字段名 |
数据类型 |
默认值 |
允许非空 |
自动递增 |
备注 |
| id |
int |
|
|
T |
主键 |
| helper_alumni_id |
int |
|
|
|
帮填信息者id |
| helped_alumni_id |
int |
|
|
|
被帮填信息者id |
后台开发框架
SpringBoot+Mybatis+shiro
SpringBoot: Spring的简化版,通过大量的预定义配置简化Spring的配置
Mybatis: ORM框架, 负责与数据库交互
shiro: 权限控制框架,基于角色分配权限(暂未实现)
关键工具
jwt: 根据微信提供的openid和session_key生成token.将token加入到所有请求的header中,用于鉴权,判断是否为非法请求
lombok: 简化代码,自动生成POJO类的getter和setter方法
Tomcat: 可以处理动态资源的应用服务器.项目打成war包后部署到Tomcat下运行
设计模式
MVC架构
- model
service层
UserService
AuthorizationService
dao层
AlumniMapper
AlumniClassMapper
NotificationMapper
CardMapper
- view
web端
- controller
MainController
UserController
AuthorizationController接口url
- 目前正在将原java后台用springboot框架重构, 原api部分为php, 现在统一为java, 功能已迁移大约60%.
- 使用springboot框架开发新后台性能更好,加权限控制更方便(原后台没有编写权限管理的代码,权限都由前端控制,存在安全隐患).接口url(功能说明,参数说明,调用方法)待补充…
1 2
| 举例: 原后台按不同条件查询校友信息需要通过多个不同的请求地址,现在可以统一为一个请求地址,根据传入的参数查找相应的内容
|
遗留bug
- Bug1(已解决): 发送邮件需要先通过官方api获取微信的access_token,api每天最多请求2000次,超过次数将不能再发送邮件.
- 解决方法: 每次获取的token有2个小时的过期时间,需要保存该token防止重复请求,设置一个springboot的定时任务.
请求说明
- host
https://www.csubigdata.com/xyh常量请求
GET /years
- 获取所有年份
- 返回值
数组
[1999,2000,…,2029]
GET /classes
- 获取所有班级
- 返回值: json数组
| key |
类型 |
描述 |
| classId |
int |
班级id |
| className |
string |
班级名 |
| middleOrHigh |
string |
高中或初中 |
| year |
int |
毕业年份 |
GET /recent/invitation
- 获取最近一段时间的邀请记录
- 请求参数
| key |
类型 |
描述 |
| limit |
int |
请求最近n条数据 |
| key |
类型 |
描述 |
| invitePersonName |
string |
邀请人名字 |
| invitedPersonName |
string |
被邀请人名字 |
GET /rank/help
- 帮填信息排名,返回数据按邀请数递减排列
- 返回值: json数组
| key |
类型 |
描述 |
| name |
string |
名字 |
| num |
int |
帮填信息的人数 |
GET /rank/invitation
- 邀请排名
- 返回值: json数组
| key |
类型 |
描述 |
| name |
string |
名字 |
| num |
int |
邀请人数 |
登录
GET /user/openid
- 获取openid
- 请求参数
| 参数 |
是否必须 |
描述 |
| code |
是 |
微信随机生成的字符串,用于换取open_id与session_key |
| key |
类型 |
描述 |
| openid |
string |
小程序为当前用户生成的唯一id |
| session_key |
string |
|
| token |
string |
根据openid与session_key通过jwt生成的token,用于鉴权 |
名片相关
POST /user/card/apply
- 申请交换名片
- 请求参数
| 参数 |
类型 |
描述 |
| applicantAlumniId |
int |
发起者id |
| targetAlumniId |
int |
发起者id |
| applicantOpenId |
string |
发起者id |
| targetOpenId |
string |
接收者id |
POST /user/card/agree
- 同意交换名片
- 请求参数
| 参数 |
类型 |
描述 |
| applicantAlumniId |
int |
发起者id |
| targetAlumniId |
int |
发起者id |
| applicantOpenId |
string |
发起者id |
| targetOpenId |
string |
接收者id |
POST /user/card/reject
- 拒绝交换名片
- 请求参数
| 参数 |
类型 |
描述 |
| applicantAlumniId |
int |
发起者id |
| targetAlumniId |
int |
发起者id |
| applicantOpenId |
string |
发起者id |
| targetOpenId |
string |
接收者id |
POST /user/cards
- 获取所有名片
- 请求参数
| 参数 | 类型 | 描述 |
| ———— | —— | ———— |
| alumniId | int | 发起者id |
- 返回值: json数组
[card1,card2,…]
| key |
类型 |
描述 |
| card.name |
string |
姓名 |
| card.phone |
string |
电话 |
| card.province |
string |
省 |
| card.city |
string |
市 |
| card.district |
string |
区 |
POST /user/notifications
- 获取所有名片交换消息
- 请求参数
| 参数 |
是否必须 |
描述 |
| alumniId |
int |
发起者id |
| key |
类型 |
描述 |
| applicantAlumniId |
int |
发起者id |
| targetAlumniId |
int |
发起者id |
| applicantOpenId |
string |
发起者id |
| targetOpenId |
string |
接收者id |
| card |
object |
名片 |
POST /user/notification/num
- 获取名片交换消息数
- 返回值: json数组
用户信息相关
GET /user/info
- 获取个人信息
POST /user/insert
- 录入信息
PUT /user/update
- 修改信息
GET /user/captcha
- 获取验证码
二维码分享
GET /user/qrcode
- 生成二维码
班级相关
POST /class/insert
- 录入班级信息
PUT /class/update
- 修改班级信息
查询信息
GET /query/alumnus
- 查询用户信息
- 请求参数
| 参数 |
是否必须 |
描述 |
| size |
T |
每页的数据条数 |
| page |
T |
页数 |
| classId |
F |
班级id |
| classId2 |
F |
班级id2 |
| branch |
F |
校友会id |
| gradeId |
F |
年级id |
| gradeId2 |
F |
年级id2 |
| name |
F |
姓名 |
| phone |
F |
电话 |
| key |
类型 |
描述 |
| alumniId |
int |
用户id |
| name |
string |
姓名 |
| phone |
string |
电话 |
| org |
string |
单位 |
| work |
string |
职位 |
| branch |
int |
校友会id |
| gradeId |
int |
年级id |
| classId |
int |
年级id |
| gradeId2 |
int |
年级id2 |
| classId2 |
int |
班级id2 |
个人成就相关
GET /user/invitation
- 获取用户邀请记录
- 请求参数
| 参数 |
是否必须 |
描述 |
| openId |
T |
用户openid |
| alumniId |
T |
用户id |
GET /user/help
- 获取用户帮填记录
- 请求参数
| 参数 |
是否必须 |
描述 |
| openId |
T |
用户openid |
| alumniId |
T |
用户id |
GET /user/invitation/num
- 邀请人数
- 请求参数
| 参数 |
是否必须 |
描述 |
| openId |
T |
用户openid |
| alumniId |
T |
用户id |
GET /user/help/num
- 帮填人数
- 请求参数
| 参数 |
是否必须 |
描述 |
| openId |
T |
用户openid |
| alumniId |
T |
用户id |
权限相关
统计与排名
GET /auth/count/branch/{branch}
- 统计各个分会人数
- 返回值: json对象
| key |
类型 |
描述 |
| branch |
int |
分会id |
| num |
int |
人数 |
GET /auth/count/grade/{gradeId}
- 统计各个年级分会人数
- 返回值: json对象
| key |
类型 |
描述 |
| gradeId |
int |
年级id |
| num |
int |
人数 |
GET /auth/count/class/{classId}
- 统计各个班级人数
- 返回值: json对象
| key |
类型 |
描述 |
| classId |
int |
班级id |
| num |
int |
人数 |
GET /auth/count/period
- 统计某一段时间的人数
- 请求参数
| 参数 |
是否必须 |
描述 |
| start |
T |
开始时间 |
| end |
T |
结束时间 |
GET /count/everyday
- 所有班级每天新加入人数排名,返回值按人数递减排列
- 返回值: json对象
| key |
类型 |
描述 |
| date |
string |
日期 |
| num |
int |
人数 |
修改用户
| 参数 |
是否必须 |
描述 |
| alumniId |
T |
用户id |
错误识别码