华容一中校友会后台开发文档
数据字典
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 |
错误识别码