All Projects → itning → Shw_server

itning / Shw_server

Licence: apache-2.0
使用SpringCloud和Spring WebFlux开发的学生作业管理系统服务端,前后端分离项目,微服务架构。支持Docker集群化部署,Redis集群化缓存,文件在线预览 压缩包预览 打包上传下载

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Shw server

Mall Swarm
mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。
Stars: ✭ 7,874 (+11830.3%)
Mutual labels:  mysql, redis, mongodb, springboot, springcloud
Mall
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
Stars: ✭ 54,797 (+82925.76%)
Mutual labels:  mysql, redis, mongodb, springboot, springcloud
Superboot
随着技术日新月异,新技术新平台不断出现,对现如今的开发人员来说选择快速高效的框架进行项目开发,既能提高产出,又能节约时间。本框架无需开发即可实现服务注册、服务发现、负载均衡、服务网关、配置中心、API管理、分布式事务、支撑平台、集成框架、数据传输加密等功能,是学习SpringCloud整体业务模式的完整示例,并且可以直接用于生产环境
Stars: ✭ 341 (+416.67%)
Mutual labels:  mysql, redis, mongodb, springboot, springcloud
Mall Learning
mall学习教程,架构、业务、技术要点全方位解析。mall项目(40k+star)是一套电商系统,使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技术,采用Docker容器化部署。
Stars: ✭ 10,236 (+15409.09%)
Mutual labels:  mysql, redis, mongodb, springboot, springcloud
Tutorial
Java全栈知识架构体系总结
Stars: ✭ 407 (+516.67%)
Mutual labels:  mysql, redis, mongodb, springboot, springcloud
Supermarket
设计精良的网上商城系统,包括前端、后端、数据库、负载均衡、数据库缓存、分库分表、读写分离、全文检索、消息队列等,使用SpringCloud框架,基于Java开发。该项目可部署到服务器上,不断完善中……
Stars: ✭ 1,278 (+1836.36%)
Mutual labels:  mysql, redis, springboot, springcloud
Spring Boot Vue Bank
我,请始皇[打钱]是一个前后端分离的工具人系统,项目采用 SpringBoot+Go+Vue 开发,项目加入常见的企业级应用所涉及到的技术点,例如 Redis、RabbitMQ 等(主要是多用用工具多踩踩坑)。
Stars: ✭ 157 (+137.88%)
Mutual labels:  mysql, redis, mongodb, springboot
Javacollection
Java开源项目之「自学编程之路」:学习指南+面试指南+资源分享+技术文章
Stars: ✭ 2,957 (+4380.3%)
Mutual labels:  mysql, redis, springboot, springcloud
Bcmall
以教学为目的的电商系统。包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3。
Stars: ✭ 188 (+184.85%)
Mutual labels:  mysql, redis, springboot, springcloud
Docs
Java知识总结:MySQL实战45讲,多线程和JVM知识总结,,SpringBoot,SpringCloud,Storm系列,微信小程序开发,ELK,《JAVA核心技术36讲笔记》,《深入理解JVM虚拟机笔记》,《高性能MySQL笔记》,《数据结构与算法》等等
Stars: ✭ 308 (+366.67%)
Mutual labels:  redis, mongodb, springboot, springcloud
Goodskill
🐂基于springcloud +dubbo构建的模拟秒杀项目,模块化设计,集成了分库分表、elasticsearch🔍、gateway、mybatis-plus、spring-session等常用开源组件
Stars: ✭ 786 (+1090.91%)
Mutual labels:  redis, mongodb, springboot, springcloud
Javaall
这是一个Java开发宝典,所有的Java技术都在这里,用心学习,努力提升!
Stars: ✭ 67 (+1.52%)
Mutual labels:  mysql, redis, springboot, springcloud
Mall Cloud Alibaba
mall-cloud-alibaba 是一套基于开源商城 mall 改造的 spring cloud alibaba 体系微服务商城系统。采用了spring cloud alibaba 、 Spring Cloud Greenwich、Spring Boot 2、MyBatis、Docker、Elasticsearch等核心技术。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
Stars: ✭ 370 (+460.61%)
Mutual labels:  mysql, redis, springboot, springcloud
Webpersonal
WebPersonal 是基于 Spring Boot + Vue Admin Template 搭建的个人网站,采用Docker容器化部署。包括个人简历、权限管理、相册等功能,持续更新,您的 Star⭐,就是我最大的动力(●'◡'●)
Stars: ✭ 28 (-57.58%)
Mutual labels:  mysql, redis, springboot, springcloud
Szt Bigdata
深圳地铁大数据客流分析系统🚇🚄🌟
Stars: ✭ 826 (+1151.52%)
Mutual labels:  mysql, redis, mongodb, springboot
Onemall
芋道 mall 商城,基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。
Stars: ✭ 5,312 (+7948.48%)
Mutual labels:  mysql, redis, springboot, springcloud
Pdf
编程电子书,电子书,编程书籍,包括C,C#,Docker,Elasticsearch,Git,Hadoop,HeadFirst,Java,Javascript,jvm,Kafka,Linux,Maven,MongoDB,MyBatis,MySQL,Netty,Nginx,Python,RabbitMQ,Redis,Scala,Solr,Spark,Spring,SpringBoot,SpringCloud,TCPIP,Tomcat,Zookeeper,人工智能,大数据类,并发编程,数据库类,数据挖掘,新面试题,架构设计,算法系列,计算机类,设计模式,软件测试,重构优化,等更多分类
Stars: ✭ 12,009 (+18095.45%)
Mutual labels:  mysql, redis, springboot, springcloud
Spring Boot Examples
about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。
Stars: ✭ 26,812 (+40524.24%)
Mutual labels:  mongodb, springboot, springcloud
Zxw.framework.netcore
基于EF Core的Code First模式的DotNetCore快速开发框架,其中包括DBContext、IOC组件autofac和AspectCore.Injector、代码生成器(也支持DB First)、基于AspectCore的memcache和Redis缓存组件,以及基于ICanPay的支付库和一些日常用的方法和扩展,比如批量插入、更新、删除以及触发器支持,当然还有demo。欢迎提交各种建议、意见和pr~
Stars: ✭ 691 (+946.97%)
Mutual labels:  mysql, redis, mongodb
Bifrost
Bifrost ---- 面向生产环境的 MySQL 同步到Redis,MongoDB,ClickHouse,MySQL等服务的异构中间件
Stars: ✭ 701 (+962.12%)
Mutual labels:  mysql, redis, mongodb

作业管理系统服务端

V2版本(V2分支)目前正在编写中

点我查看主分支完成版本

主分支使用Spring Boot编写,请点击查看

前后端分离项目,前端:shw_client

GitHub stars GitHub forks GitHub watchers GitHub followers

GitHub issues GitHub license GitHub last commit GitHub release GitHub repo size in bytes HitCount language

架构

微服务架构。使用Spring Cloud开发部署。

项目采用微服务开发,采用JWT技术作为身份验证手段,前后端分离。目前前后端交互使用JSON方式,GraphQLprotobuf通信方式正在开发中。

jiagou

jiagou

技术栈:

前端:Vue.JS

后端:Spring Cloud

数据库:MongoDB

中间件:RabbitMQ

技术栈 描述
Eureka Eureka用于服务的注册与发现。Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是spring Cloud体系中最重要最核心的组件之一。
Ribbon Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。
Feign Feign支持服务的调用以及均衡负载。Feign是从Netflix中分离出来的轻量级项目,能够在类接口上添加注释,成为一个REST API 客户端。
Config Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。
Bus Spring Cloud Bus通过轻量消息代理连接各个分布的节点。
Stream Spring Cloud Stream 是一个构建消息驱动微服务的框架。
Zuul 微服务网关
Hystrix Hystrix处理服务的熔断防止故障扩散。Hystrix-dashboard 是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数据。
Sleuth Spring Cloud Sleuth为服务之间调用提供链路追踪。通过Sleuth可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长。从而让我们可以很方便的理清各微服务间的调用关系。
WebFlux 异步非阻塞,函数式编程风格Web框架

服务(模块)简要功能说明:

  1. shw-gateway

    网关服务。使用zuul框架实现的微服务网关,该网关拦截未经认证的请求并将请求转发到shw-security服务。

  2. shw-eureka

    微服务发现与注册服务。

  3. shw-security

    安全服务。使用CAS实现SSO进行统一登陆,发放token。token使用JWT技术实现。

  4. shw-group

    群组服务。教师所创建的群组CRUD的业务逻辑实现。

  5. shw-studentgroup

    学生群组服务。管理学生加入的群组。

  6. shw-upload

    上传服务。学生上传作业文件,教师下载文件的业务逻辑服务。

  7. shw-work

    作业服务。管理教师创建的作业,作业数据的CRUD。

  8. shw-notice

    通知服务。管理教师发布的通知。

  9. shw-file

    文件服务。文件的持久化服务。

  10. shw-common

    公共模块。包括一些异常,工具类等等

  11. shw-hystrix-dashboard

    hystrix监控信息服务

消息队列系统:

msg

为什么使用消息队列?

  1. 异步

    教师与学生的一些操作在异步的环境下进行,增加了系统承载QPS。

  2. 解耦

    服务与服务之间耦合度降低。

  3. 削峰

    减轻高峰时间数据库压力。

数据库:

er

登陆流程:

shw_login

验证用户信息流程:

yanzheng

部署

开启rabbitmq

docker run -d --hostname localhost --name myrabbit -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 5671:5671 -p 15671:15671 -p 25672:25672 rabbitmq:3.7.14-management

开启ziplin

docker run -d -e RABBIT_ADDRESSES=dockervm -p 9411:9411 openzipkin/zipkin

API文档

HTML版本

Markdown版本

表字段实体属性

群组属性(group)

属性名 类型 说明 约束
id string 唯一标识群组 非空,主键
name string 群组名称 非空
teacher_name string 教师名 非空
teacher_number string 教师序号 非空,索引
code string 邀请码(暂时和ID相同) 非空,索引
create_time data 创建时间 非空
update_time data 更新时间 非空

学生群组属性(student_group)

属性名 类型 说明 约束
student_number string 学生ID 非空,主键
group_id string 群组ID 非空,主键
create_time date 创建时间 非空
update_time date 更新时间 非空

作业属性(work)

属性名 类型 说明 约束
id string 作业ID,标识唯一作业 非空,主键
group_id string 群组ID,该作业所属群 非空,索引
enabled bit 作业启用状态 非空,默认启用
name string 作业名 非空
create_time date 创建时间 非空
update_time date 更新时间 非空
file_name_format string 文件名规范 非空

上传属性(upload)

属性名 类型 说明 约束
student_number string 学生ID 非空,主键
work_id string 作业ID 非空,主键
mime string 文件类型 非空
size double 文件大小 非空
create_time date 上传时间 非空
update_time date 修改时间 非空

通知属性(notice)

属性名 类型 说明 约束
id string 通知ID,唯一标识 非空,主键
invite_people_name string 邀请人 非空
invite_group_id string 邀请加入的群组ID 非空
student_number string 被邀请人学号 非空,索引
create_time date 创建时间 非空
update_time date 修改时间 非空

接口

统一响应格式:

Content-Type: application/json

状态吗:

400 请求参数错误

401 需要登陆

403 权限不足

404 资源不存在

405 不支持该请求方法

500 服务器出错

503 服务不可用

Json格式规范:

{
   "code": -1,
   "msg": "该活动不存在",
   "data":"响应数据"
}

公共

获取登陆用户信息

请求方法 GET

请求路径 /user

响应状态 200(请求成功)

群组

获取学生的所有群组

请求方法 GET

请求路径 /student/groups

响应状态 200(请求成功)

{
    "code": 200,
    "msg": "请求成功",
    "data":[{
        "id":"a3f65ga621v3za6",
        "name":"群组A",
        ...
    }, {   } ]
}

###学生添加群组

请求方法 POST

请求路径 /student/group

响应状态 201(创建成功)

请求参数 说明
code 群组邀请码

学生退出群组

请求方法 DELETE

请求路径 /student/group/{id}

响应状态 204(退出成功) 404(ID不存在)

请求参数 说明
id 群组id

获取教师的所有群组

请求方法 GET

请求路径 /teacher/groups

响应状态 200(请求成功)

教师创建群组

请求方法 PUT

请求参数 name

响应状态 201(创建成功)

请求参数 说明
name 群组名称

教师解散群组

请求方法 DELETE

请求路径 /teacher/group/{id}

响应状态 204(解散成功) 404(ID不存在)

请求参数 说明
id 群组ID

教师修改群信息

请求方法 PATCH

请求路径 /teacher/group/{id}

响应状态 204(修改成功) 404(ID不存在)

请求参数 说明
id 群组ID
name 新群名称

管理员查询所有群信息

请求方法 GET

请求路径 /admin/groups

响应状态 200(查询成功)

请求参数 说明
limit 指定返回结果数量 0~n
page 指定返回页码1~n

管理员根据群名称模糊搜索

请求方法 GET

请求路径 /admin/search/groups/{name}

响应状态 200(查询成功)

请求参数 说明
name 模糊群名称

邀请(待定)

学生拉取邀请消息

请求方法 GET

请求路径 /student/notices

响应状态 200(l拉取成功)

学生处理邀请消息

请求方法 PATCH

请求路径 /student/notice/{id}

响应状态 204(处理成功) 404(ID不存在)

备注 消息处理后直接删除

请求参数 说明
id 消息ID
enabled 处理状态 1-> 同意加入 0-> 拒绝加入

作业

教师新建作业

请求方法 PUT

请求路径 /teacher/work

响应状态 201(新建成功)

请求参数 说明
name 作业名
group_id 该作业所属群组ID

教师查询所有作业

请求方法 GET

请求路径 /teacher/works/{group_id}

响应状态 200(查询成功) 404(ID不存在)

请求参数 说明
group_id 群组ID

教师修改作业状态

请求方法 PATCH

请求路径 /teacher/work/{id}

响应状态 204(修改成功) 404(ID不存在)

请求参数 说明
id 作业ID
name 修改后的作业名
enabled 作业启用状态

教师删除作业

请求方法 DELETE

请求路径 /teacher/work/{id}

响应状态 204(删除成功) 404(ID不存在)

请求参数 说明
id 作业ID

学生上传作业

请求方法 POST

请求路径 /student/work/{id}

响应状态 201(上传成功)

请求参数 说明
id 作业ID
file 文件
filename 文件名

下载某学生作业

请求方法 GET

请求路径 /student/download/{student_id}/{work_id}

响应状态 200(请求成功) 404(ID不存在)

请求参数 说明
student_id 学生ID
work_id 作业ID

学生查询未交作业

请求方法 GET

请求路径 /student/works/un_done

响应状态 200(请求成功)

学生查询已交作业

请求方法 GET

请求路径 /student/works/done

响应状态 200(请求成功)

学生删除作业

请求方法 DELETE

请求路径 /student/work/{word_id}

请求参数 说明
work_id 作业ID

上传

学生查询上传信息

请求方法 GET

请求路径 /student/upload/{work_id}

响应状态 200(请求成功)

请求参数 说明
work_id 作业ID
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].