# pmcspsc
**Repository Path**: soldiergitee/pmcspsc
## Basic Information
- **Project Name**: pmcspsc
- **Description**: No description available
- **Primary Language**: JavaScript
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-09
- **Last Updated**: 2021-06-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
大学生专业学科竞赛项目过程管理系统 -后台
============================
#### 项目说明
pmcspsc
#### _2019年秋季大三第一学期,JAVAEE期末课设_
#### _2020年春季大三第二学期,SpringBoot消息中间件期末课设_
技术要求:spring boot,spring mvc,mybatis,mybatis plus
#### 构建项目
1. idea自带数据库管理工具导入方式
创建pmcspsc数据库命令:
CREATE SCHEMA pmcspsc DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2. maven引入jar包
选择maven 中的install
3. 运行PMCSPSCApplication
#### 部署项目
1. 生成docker镜像:docker build -t soldierdocker/pmcspsc:v1.0.0 .
2. 推镜像:docker push soldierdocker/pmcspsc
3. 拉镜像:docker pull soldierdocker/pmcspsc:v1.0.0
4. 启动容器:docker run -d -p 8080:8080 soldierdocker/pmcspsc:v1.0.0
-
某大学拟开发一套大学生专业学科竞赛项目过程管理系统,实现全校专业学科竞赛项目从立项到结题的过程管理其需求描述如下:
-
(一)项目立项过程:
-
1)填写项目立项申请
二级学院作为组赛单位报送每年专业学科竞赛项目。组赛单位的指导老师每年在线填写参加专业学科『竞赛项目立项申请信息』,
然后从系统导出并打印项目立项申请书,将签字盖章后的项目立项申请书扫描为PDF文档并作为佐证附件上传到系统,
最后将立项申请提交给教务处实验实践科审核。『项目立项申请信息』分为项目基本信息和经费预算信息两部分,
其中项目基本信息包括赛事名称、组赛单位、赛制(单人赛、团队赛)、项目负责人、联系电话、电子邮件、竞赛起始日期、
竞赛结束日期、专业、竞赛主办单位、竞赛承办单位、申请立项日期、论证组赛的目的和意义、竞赛邀请函或通知附件;
-
经费预算表
| 参赛注册费 |
差旅费 |
培训费 |
指导费 |
耗材费 |
教师奖金 |
其它 |
合计 |
| 0 |
5000 |
0 |
0 |
0 |
0 |
2000 |
7000 |
-
2)审核项目立项申请
教务处实验实践科工作人员可以在线审核项目立项申请内容。
如果审核不通过,需填写审核意见并回退给指导老师。指导老师可以删除自己的项目立项申请,但是不能删除已经审核通过的立项申请。
-
(二)填写报名过程:
报名参赛方式分为个人赛和团队赛,指导老师填写参赛报名信息。
参赛报名信息分为团队信息和团队成员信息,团队信息包括团队编号、项目编号、赛题、报名时间等,
团队成员信息包括编号、团队编号、学号、姓名、学院、班级、年级、专业、邮箱、手机号等。
-
(三)项目结题过程
1)填写项目结题申请
比赛结束后,指导老师需在线填写各参赛队伍的获奖情况和资金实际使用情况,并上传结题报告书 PDF 扫描件。
获奖情况包括获奖名次(特等奖、一等奖、二等奖、三等奖、优秀奖、无)和级别(国家级、区级等);
| 参赛注册费 |
差旅费 |
培训费 |
评审费 |
指导费 |
领队费 |
组织费 |
奖金 |
耗材费 |
合计 |
| 0 |
0 |
0 |
0 |
0 |
0 |
0 |
1000 |
0 |
1000 |
-
2)审核项目结题申请。教务处实验实践科工作人员审核结题申请内容,并填写审核意见。
如果申请内容有问题则结题申请退回给组赛的指导老师,经组赛指导老师修改后重新提交。
教务处实验实践科工作人员可以统计竞赛立项情况、获奖情况。
## `2020.04.27重构`
### `使用RabbitMQ消息中间件`
#### RabbitMQ的安装
[RabbitMQ的安装过程](https://www.cnblogs.com/soldier-cnblogs/p/13197866.html)
#### RabbitMQ的配置
[SpringBoot + RabbitMQ配置参数解释](https://www.cnblogs.com/qts-hope/p/11242559.html)
### `安全优化`
#### redis的安装
1. docker下拉redis镜像:docker pull docker.io/redis
2. 启动容器:docker run -d --name redis1 -p 6379:6379 redis --requirepass "123456"
3. 参数解释: -d : 后台运行 -name 为容器的名字 -p 端口映射 --requirepass:redis密码 redis为镜像名
#### 接口的限流防刷
自定义Prevent注解,可以使用拦截器减少对业务的侵入
```C
总结:
定义一切面,通过@Prevent注解作为切入点、在该切面的前置通知获取该方法的所有入参并将其Base64编码,
项目名称 + 完整方法名作为redis的key + 用户id,访问次数作为reids的value,
Prevent的value作为redis的expire,存入redis;
每次进来这个切面根据key判断redis值是否存在,不存在则设value为1且允许调用;存在则判断是否超过frequency,不超过自增;超出拦截防刷
```