学术交流平台系统设计方案

1. 项目概述

了给学者提供一个方便了解学术活动以及交流的平台,各种讲座和活动宣传和实行的不便和不规范的特定情况,先行上线为广大师生提供一个可以方便查询参与活动和学术讲座的管理平台。

2. 软件设计方案

项目采用微服务架构,对模块进行垂直拆分并水平扩展,保证系统各个模块相互独立。每个模块都是一个MVC的设计模式,都负责特定的功能,既是一个模块挂了,其他模块也不受影响,做到了前后端的分离。各个模块功能参考如下。

image.png

整体系统架构如下

image.png

接口api表示方法

后端接口api以restful风格为标准,统一了命名方式。

示例,文档中获取用户信息的URL表示如下:

URL: POST /user/:solink_id/

实际调用时,以请求solink_id为1的用户资料为例,需要完成以下步骤:

  • 在URL前加上URL前缀https://api.so-link.org/v2/
  • :solink_id处填写请求用户的solink_id。
  • 使用POST方法请求。

完整URL为

https://api.so-link.org/v2/user/1/

接口调用状态

后端V2接口全部采用HTTP状态码来表示接口调用是否成功,返回结果中不会再有旧版API中的success字段。常见HTTP状态码及其在接口中表示的意义如下表:

状态码 变量 说明
200 HTTP_200_OK
206 HTTP_206_PARTIAL_CONTENT 批量查询中,查询结果部分成功
400 HTTP_400_BAD_REQUEST 请求的参数、字段错误
403 HTTP_403_FORBIDDEN 认证失败或无执行操作的权限
404 HTTP_404_NOT_FOUND 请求的资源不存在
405 HTTP_405_METHOD_NOT_ALLOWED 请求方法错误
409 HTTP_409_CONFLICT 服务器资源已存在

当状态码不为200时,返回结果中会包含一个detail字段,用于描述错误原因。示例:

{"detail": "Operation not permitted."}

3. 系统视图

注册时序

image.png

登陆时序

签到时序

image.png

请求处理流程

部署视图

image-20201229192409354

4. 通用数据模型

用户个人资料

字段 类型 说明
solink_id integer 用户solink_id
name string 用户姓名
phone string 手机号(创建后不可修改)
email string 用户邮箱
affiliation string 用户所属单位
title string 用户职称
avatar_url string 用户头像
school_id string 用户学号或者工号

会议信息

字段 类型 说明
conference_id string 会议id
name string 会议名称
start_time datetime 会议开始时间
end_time datetime 会议结束时间
location string 会议地点
poster_url string 海报图片url
introduction string 会议介绍
organizer string 主办方
is_valid integer 审核状态(0:待审核, 1:审核通过, -1:审核未通过, 2: 会议已删除)
tags string 会议标签
popularity float 会议热门度

评论回复信息

字段 类型 说明
comment_id integer 评论id
comment_time datetime 发表评论时间
comment_content string 评论内容
comment_url string 评论图片url
comment_is_public Boolean 评论是否公开
comment_upvote_count integer 评论点赞数
set_top boolean 评论顶置, 默认为false
reply_count integer 评论的回复数量
reply_id integer 对评论的回复id
parent_reply integer 指定对哪一条回复进行回复
reply_time datetime 回复时间
reply_content string 回复内容
reply_upvote_count integer 回复点赞数
hasUpvoted bool 用户是否已经对某条评论点赞

5. 实现视图

6. 技术选型

开发方法:
  主要采用面向接口的方式进行开发,尽量解耦合,模块之间通过http,路由到内部网关调用,这样能够很好的保持软件的可维护性和可扩展性。网关是基于openresty构建

开发主要语言:python

开发环境:Windows10,MacOS

部署环境:Docker+Ubuntu

开发工具:pycharm,VSCode

数据库:mysql,redis,mongodb

7. 概念模型工作机制

  1. 参会者

    参会者通过微信或者账号密码登陆,查看各种讲座信息和报名参加各种会议和活动。扫码功能使得用户在现场能够签到。

    学者也可以上传自己学术讲座视频分享学术成果。

  2. 活动发起者

    活动主办方登陆后发起一个活动,并可以生成动态的签到二维码,在会场给用户签到。

  3. 管理员

    管理员通过账号密码登录系统后,可以对活动的信息进行管理工作。

posted @ 2020-12-29 19:28  狄杰斯特拉  阅读(343)  评论(0编辑  收藏  举报