0%

校友会小程序开发文档

华容一中校友会后台开发文档

数据字典

  • 数据库名: alumni_association
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条数据
  • 返回值: json数组
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
  • 返回值: json数组
key 类型 描述
applicantAlumniId int 发起者id
targetAlumniId int 发起者id
applicantOpenId string 发起者id
targetOpenId string 接收者id
card object 名片
  • POST /user/notification/num
  • 获取名片交换消息数
  • 返回值: json数组
key 类型 描述
num int 消息数量
用户信息相关
  • 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 电话
  • 返回值: json数组
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
  • 返回值: json对象
key 类型 描述
name string 姓名
  • GET /user/help
  • 获取用户帮填记录
  • 请求参数
参数 是否必须 描述
openId T 用户openid
alumniId T 用户id
  • 返回值: json对象
key 类型 描述
name string 姓名
  • GET /user/invitation/num
  • 邀请人数
  • 请求参数
参数 是否必须 描述
openId T 用户openid
alumniId T 用户id
  • 返回值: json对象
key 类型 描述
num int 数量
  • GET /user/help/num
  • 帮填人数
  • 请求参数
参数 是否必须 描述
openId T 用户openid
alumniId T 用户id
  • 返回值: json对象
key 类型 描述
name string 姓名
权限相关
统计与排名
  • 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 结束时间
  • 返回值: json对象
key 类型 描述
num int 人数
  • GET /count/everyday
  • 所有班级每天新加入人数排名,返回值按人数递减排列
  • 返回值: json对象
key 类型 描述
date string 日期
num int 人数
修改用户
  • DELETE /auth/alumni
  • 请求参数
参数 是否必须 描述
alumniId T 用户id

错误识别码

  • 200 查询成功
  • 500 网络繁忙