https://github.com/736248591/hdu_rank
本项目是一款基于基于Flask和BootstrapVue的杭电刷题排行榜前后端分离的网站。
DEMO页面:
操作系统:Windows或者Linux均可。
python3.x pip3 MySQL8.x
# 安装所需的PIP库
pip3 install flask pymysql requests flask_cors
# 国内用户可以使用在pip安装时候添加参数,如:
pip3 install -i https://mirrors.ustc.edu.cn/pypi/web/simple/ flask pymysql requests flask_cors
# 下载项目
wget https://github.com/736248591/hdu_rank/archive/3.0.0.zip
tar -zxvf 3.0.0.zip
# 进入项目
cd hdu_rank
# 运行安装助手
python3 helper.py
# 启动爬虫进程
python3 hdu_crawl.py &
注:以下方式二选一即可
注意在windows下tornado无法以多进程运行。
# 安装所需的PIP库
pip3 install tornado
# 国内用户可以使用以下命令来替换上面命令
pip3 install -i https://mirrors.ustc.edu.cn/pypi/web/simple/ tornado
cd 3.0.0
# 启动tornado
python3 run_tornado.py
# 安装所需的PIP库
pip3 install uWSGI
# 增加hdurank的用户名和组
/usr/sbin/groupadd hdurank
/usr/sbin/useradd -g hdurank hdurank
# 新建域名
lnmp vhost add
# 按照提示填写你的域名和项目本地存放的地址。注意,网站的根目录填写的是hdu_rank/static
# 编辑NGINX的配置
vim /usr/local/nginx/conf/vhost/你的域名.conf
# 在server的子级location的同级加入以下内容。
location ~* /api/{
include uwsgi_params;
uwsgi_pass 127.0.0.1:5007;
}
# 重启nginx服务器
lnmp nginx restart
# 开启新的一个screen,这样在关闭终端以后程序不会被关闭
screen -R hdu_rank
# 创建管理员密码
vim admin.key
# 修改服务器配置文件
vim my_setting.py
USE_STATIC 设置为False
# 启动uwsgi服务器
uwsgi --ini uwsgi.ini
这些方式可以查看Flask官方中文文档,这里不再赘述。
数据库逻辑表.xlsx
参数: (无)
响应数据:
{
status: 操作状态 Boolean,
notice: 公告 string,
crawl_status: 爬虫状态 union("runnable","running","sleeping","stopped")
users: 用户列表(当状态为True时,拥有这个字段)
[
{
id: 用户ID unsigned int,
uid 登录账号 string,
class_name 班级 string,
name 姓名 string,
motto 格言 string,
account 账号 string,
solved_num 题数 int,
status 状态 union("unchecked","fetching","active","disconnect")
}
],
user:{
id 用户ID unsigned int,
uid 登录账号 string,
class 班级 string,
name 姓名 string,
motto 格言 string,
account 账号 string,
solved_num 题数 int,
status 状态 union("unchecked","fetching","active"),
html 自定义页面代码 string
},
admin:{
id: 管理员ID int,
uid: 管理员 string,
is_super: 是否可以管理其他用户 bool,
}
}
说明: 不填写任何信息的时候,则返回当前登录信息。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
uid | string(16) | 账号 | |
pwd | string(16) | “” | 密码,sha3-512(原始密码),重复加密6次 |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string,
// 当登录成功时候显示以下信息
user:{
id 用户ID unsigned int,
uid 登录账号 string,
class 班级 string,
name 姓名 string,
motto 格言 string,
account 账号 string,
solved_num 题数 int,
status 状态 union("unchecked","fetching","active"),
html 自定义页面代码 string
},
admin:{
id: 管理员ID int,
uid: 管理员 string,
is_super: 是否可以管理其他用户 bool,
}
}
说明: 修改时候,只需提交ID和修改的字段即可。添加用户时候,不需要id。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
id | int | 用户唯一标识 | |
uid | string(16) | 登录账号 | |
pwd | string(16) | “” | 密码,sha3-512(原始密码),重复加密6次 |
class_name | string(24) | “” | 班级 |
name | string(16) | 姓名 | |
account | string(64) | 杭电账号 | |
motto | string(255) | 格言 | |
status | ‘unchecked’,‘fetching’,‘active’ | 状态,只有管理层才能修改 | |
html | string | 自定义代码 |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string
}
说明: 注册的时候用来验证字段。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
field | string | 字段 | |
value | string | 数值 |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string
}
参数: (无)
响应数据:
{
status: 操作状态 Boolean
}
说明: 必须先登录才能使用该接口。用户只能删除自己,只有管理员可以删除任意用户。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
id | unsigned int | 用户ID |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string
}
说明: 不填写任何信息的时候,则返回当前登录信息。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
uid | unsigned int | 管理员ID | |
pwd | string | 密码,sha3-512(原始密码),重复加密6次 |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string,
admin:{
id: 管理员ID int,
uid: 管理员 string,
is_super: 是否可以管理其他用户 bool,
}
}
参数: (无)
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string,
admins:[
{
id: 管理员ID int,
uid: 管理员登录账号 int,
is_super: 是否可以管理其他管理员 bool
}
]
}
说明: 添加管理员的时候用来验证字段。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
field | string | 字段 | |
value | string | 数值 |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string
}
说明: 修改时候,只需提交ID和修改的字段即可。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
id | unsigned int | ID | |
uid | string(16) | 管理员ID | |
is_super | bool | 是否可以管理其他用户 | |
pwd | string(128) | 密码,sha3-512(原始密码),重复加密6次 |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string,
}
说明: 必须先登录才能使用该接口。只有超级管理员才能删除其他管理员。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
id | unsigned int | 用户ID |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string
}
说明: 只有管理员才能使用该接口。
参数:(无)
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string
}
说明: 只有管理员才能使用该接口。
参数:(无)
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string
}
说明: 只有管理员才能使用该接口。
参数:
字段名 | 数据类型 | 默认值 | 描 述 |
---|---|---|---|
notice | string | 通知 |
响应数据:
{
status: 操作状态 Boolean,
mgs: 错误原因 (当状态为false时,拥有这个字段)string
}
安装Node.js和Yarn
cd hdu_rank
yarn global add @vue/cli
yarn install
yarn build
修改uwsgi服务器配置。
修正了爬虫连接的一些问题。
升级了依赖包的版本,解决安全隐患。
修复了数据库文件导入的BUG。
添加了说明文档中python3.7需要的依赖。
未创建管理员密码错误。
添加了网站的图标和标题。
1.0 初次发布