# pmms-dev
**Repository Path**: xmnzp/pmms-dev
## Basic Information
- **Project Name**: pmms-dev
- **Description**: 后台管理系统后台服务
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-02-14
- **Last Updated**: 2024-05-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 后台管理系统
[接口管理效果演示](http://114.55.164.189:8001/pm/doc.html)

##### 一 .集成了mybatisPlus
1. 避免繁琐的mapper.xml 文件和一些dao层 ,可以调用自带的api进行数据层数据交互操作
##### 二 . 集成了热部署的依赖
1. 通过引用依赖 ````
```xml
org.springframework.boot
spring-boot-devtools
```
2. 可以实现热部署,在不修改配置文件的时候,可以通过ctrl +F9完成代码重新编译,减少项目重启浪费的时间
##### 三 .集成了SwaggerUI 实现对restFul 接口清晰的管理
1. 导入相关依赖
```xml
io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.7.0
```
2. 详细内容参考 https://blog.csdn.net/qq_41665356/article/details/89178145
3. 需要注意的是,不同的UI风格依赖,访问的路径也不同 默认是swagger-ui.html
4. 接口路径为 http://adingxiong.com/pm/docs.html
##### 四. 集成redis,实现接口Token权限验证,进行接口安全管理
详细内容参见
https://blog.csdn.net/FindHuni/article/details/94451136
##### 五. 项目打包运行
1. 需要在plugin下面添加maven官方的依赖
2. 通过LifeCycle 下面找到package或者是install进行打包
###### 运行 停止 查看 等相关
```cmd
# 运行jar包
jar -jar xxxx.jar
# 后台运行jar
nohup java -jar xxx.jar &
# 后台运行 并制定地方生成日志文件
nohup java -jar xxxx.jar >temp.log &
# 查看端口 或者pid
ps aux | grep xxx.jar
# 查看pid 通过端口
ps -ef | grep 8001
# 关闭进程
kill -9 pid
```
##### 六. springboot整合shiro进行权限的验证
`shiro`是目前主流的`java`安全框架,主要用来更便捷的认证,授权,加密,会话管理。
验证的过程是:
1. 创建`SecurityManager`安全管理器;
2. `Subject`主体带授权信息执行授权,请求到`SecurityManager`
3. `SecurityManager`安全管理器调用`Authorizer`授权
4. `Authorizer`结合主体一步步传过来的授权信息与`Realm`中的数据比对.
`subject`(用户)调用`SecurityManager`进行权限验证,然后`SecurityManager根据Realm的规则仅限用户的身份和权限的比对.
`
##### `Shiro`架构
`shiro `的三个主要组件
+ `Subject`
+ `SecurityManger`
+ `Realms`
##### 七 . 整合了 AutoGenerator 代码生成器 ,自动生成 entity dao controller mapper
##### 八 .整合了JWT实现Token认证
###### 什么是JWT
JsonwebToken 是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。
###### 工作原理
+ 用户使用用户名密码请求服务器
+ 服务器进行验证用户信息
+ 服务器通过验证发送给用户一个token
+ 客户端存储token,并在每次请求时附加这个token值
+ 服务器验证token,并返回数据
这个token必须要在每次请求时发送给服务器,它应该保存在请求头中,另外,服务器要支持CORS(跨来源资源共享)策略,一般我们在服务端这么做就可以了 Access-Control-Allow-Origin:*
##### 九 .整合邮箱功能 进行邮箱验证
邮箱的application配置
```yml
# 邮箱的基本验证
mail:
host: smtp.qq.com
username: xiongchao.panda@qq.com #imap 授权吗
password: *******
port: 465
default-encoding: UTF-8
properties: {"mail.smtp.auth":true,"mail.smtp.ssl.enable":true,"mail.smtp.starttls.required":true}
```
##### 十. 整合七牛云,实现静态资源有七牛云管理
##### 十一 .整合Redis
Redis的使用场景
+ 数据缓存
+ 排行榜
+ 计时器
+ 分布式会话
+ 分布式锁
+ 社交网络
+ 最新列表
+ 消息服务器
##### 十二. 整合消息服务器RabbitMQ
+ 基本消息模型:生产者–>队列–>消费者
+ work消息模型:生产者–>队列–>多个消费者共同消费
+ 订阅模型-Fanout:广播模式,将消息交给所有绑定到交换机的队列,每个消费者都会收到同一条消息
+ 订阅模型-Direct:定向,把消息交给符合指定 rotingKey 的队列
+ 订阅模型-Topic 主题模式:通配符,把消息交给符合routing pattern(路由模式) 的队列
##### 十三. 整合 liquibase
LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。其有点主要有以下:
+ 支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等;
+ 支持多开发者的协作维护;
+ 日志文件支持多种格式,如XML, YAML, JSON, SQL等;
+ 支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等。
#### 更新记录
更新时间 | 日志记录
---|---
2020-05-08 | 整合liquibasebase,对数据库进行日志式管理
2020-05-09 | 添加CommentGenerator代码注释自动成功累,在生成EntityBean的同事自动生成SwaggerUI的项目注解