# SmartCityServer **Repository Path**: wulixuezhe0317/SmartCityServer ## Basic Information - **Project Name**: SmartCityServer - **Description**: 完成基本架构的创建 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-12-19 - **Last Updated**: 2022-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SmartCityServer ## 介绍 SmartCityServer项目是由青岛港湾职业技术学院学生刘俊沣、左爽负责开发,
以便用于山东省“移动应用开发大赛”的后端服务器,
主要目的为了方便在模拟赛过程中调用连接内部局域网接口,
便于进行数据的传输,方便比赛的模拟进行。
### 作者 架构设计:刘俊沣
功能编写:刘俊沣,左爽
创建时间:2021年12月
#### 软件架构 在SmartCityServer第一阶段的开发过程中,架构采用最基础的MVC架构进行设计。
内部采用AOP结构进行批量处理设计,对于JSON对象,JSON数组分别进行处理,
采用SpringBoot+MyBatis-Plus框架进行设计数据库的访问,在数据读取过程中
采用Redis+RabbitMQ缓存机制进行数据缓冲,优化数据的读取效率,降低服务器的响应时间。
对于Web页面的data传递,采用XML/HTML配置,使用MongoDB数据库保存,
该功能在开发的第二阶段预计进行使用,在第一阶段采用内置URL文件存储的方式保存XML/HTML文件,
并将文件的本地存储链接作为URI地址直接存储在MySQL数据库中。
#### 安装教程 1. 本项目运行在
2. 安装JDK8并配置环境
3. 安装MySQL5.5 x64,设置账号密码
4. 安装并配置Maven环境3.8.1
5. 安装配置RabbitMQ3.9.12,并配置非guest账户和管理员权限
6. 安装MongoDB5.0,并配置账号密码
7. 安装Redis2.8.2并配置服务器跨域使用
#### 模块设计SmartCityServer-XXX... 1. SmartCityServer-bean:通用开放接口的bean子包,存放所有开放API接口的实体信息,对应数据表创建,包括bean类和DTO类(Mybatis-plus的 QueryWapper调用类)。 2. SmartCityServer-common: 通用工具子包,存放所有的通用工具,可以统一返回状态JSON数据,对信息进行格式化设置等。 3. SmartCityServer-mapper: 映射类,用于保存映射接口与xml映射文件,可以实现实体类与DTO类的数据格式转换。 4. SmartCityServer-service: 用于实现业务功能,包括基本的增删改查功能以及上传下载等基本业务功能。 5. SmartCityServer-open-api: 对外开放的API接口,同时配置了全局的Configuration类,对组件进行注册,开放Swagger2工具,便于阅读接口。 6. SmartCityServer-socket: 用于存放网络通信工具,后期可用于实现实时在线聊天等流媒体功能。 7. SmartCityServer-manage: 用于设计后端的管理功能,接口统一保存在open-api模块中,用于内部调用。 8. SmartCityServer-student: 实现在线训练的任务分配与学习功能,用于项目的训练与线上视频教学。 9. SmartCityServer-teacher: 用于教师管理工作,主要对课程体系、训练内容进行设计,上传或安排课程,可实现录播、直播、线上教学互动、课程任务安排与学习进度监测工作。 后续将会进行持续更新开发... #### 使用说明 1. Maven开发环境:v3.8.1
2. JSE开发环境:v1.8
3. MySQL开发环境:MySQL5.5
4. Redis开发环境:Redis2.8.2
5. MongoDB开发环境:MongoDB 5.0
6. RabbitMQ开发环境:Erlang 24.2,RabbitMQ 3.9.12
7. idea开发环境:IntelliJ IDEA Community Edition 2021.1 x64
8. 数据库统一开发环境:Navicat Premium10.1.8
9. 系统开发环境:Windows10 x64 家庭版/专业版
10. 调试环境:postman,swagger2
11. 压测环境:JMeter
#### 参与贡献 1. 架构设计:刘俊沣
2. 用户登录:刘俊沣
3. 开发环境配置:刘俊沣
4. [DEADME.md](https://gitee.com/wulixuezhe0317/SmartCityServer/blob/develop/README.md) 文档编辑:刘俊沣
#### 特技 1. 在单机环境下不需要配置任何端口号,可以实现单机的大量并发使用 2. Redis+RabbitMQ实现多级缓存和消息的序列化服务,保证运行过程中的原子性 3. 启动速度快,打包成jar后可以不依赖tomcat直接启用 4. 设置了一系列格式化输入输出环境,对接口进行二次封装保证数据的安全性 5. 使用MyBatis-Plus保证SQL的安全性 6. JVM底层进行优化,保证数据安全和必要的线程安全处理 7. 使用Swegger2线上API开放接口,实现在线调试、查看API接口信息内容 8. redis缓存用于存储一些常用临时数据,例如:用户登录时的token凭证,数据字典,通用服务信息,广告信息,新闻等。 9. mongodb数据库:用于保存html文档,log日志文件统一管理。 #### maven子项目结构 表格所示: | 子包名 | 描述与要求 | | --------- | ------------------------------------------------------------------------- | | bean | 用于存放开放接口的实体类信息,
包括bean类,DTO类,BO类,VO类等模型 | | common | 用于存放各种工具,包括格式化工具,字符串判断工具,数据效验工具等 | | socket | 用于存放长连接公共工具,实现实时信息传输,拆分后作为网络通信中间件 | | mapper | 用于存放开放数据的ORM映射层,实现不同数据的传输功能 | | openAPI | 用于展示对外开放的接口,android开发可以直接通过swagger2查找接口测试 | | teacher | 项目拆分后作为教学专用独立服务,上传、安排教学计划与相关资料、在线视频 | | student | 项目拆分后用于提供训练、学习的独立服务 | | manager | 用于对开放接口的公共资源进行管理,包括密码重置,公共数据操作 | 目前项目处于单体架构设计阶段,在设计完成之后进行微服务拆分。