# tina
**Repository Path**: kluzhang/tina
## Basic Information
- **Project Name**: tina
- **Description**: 基于SpringBoot权限管理系统(Tina)
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: http://www.pigs.gold/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2021-10-08
- **Last Updated**: 2021-10-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### Tina文档
### 介绍
这是我第一次写开发文档可能写的不好的地方或者说错问题,如有请联系我 3121831267@qq.com
此系统不是适合所有人
学了两年了,快要准备出去实习了
### 作者
Tina 来自不愿意透露姓名的Java新人
### 支持
如项目对你有帮助,请我喝杯茶吧
### 肝了一晚上的效果图
|  |  |
|---|---|
|  |  |
|  |  |
### 系统需求
- JDK >= 1.8
- MySQL >= 5.7
- Maven >= 3.0
### 模块说明
    |- 模块说明
        |- tina-common 公共模块
        |- tina-model 存放模型
        |- tina-persistence 持久层模块
        |- tina-web  视图模块
### 内置功能
    1.基于经典技术组合(Dubbo、Spirng Boot、LayUI、MyBatis Plus、Redis、MySQL、 Docker、 Apache Shiro)
    2.Shiro权限的控制
    3.Maven管理项目,服务拆分,尽量松耦合,方便模块升级,增减模块
    4.完全响应式布局(支持电脑、平板、手机等所有主流设备)	
    5.画廊(精美二次元壁纸)
    6.可视化数据(echarts)
    7.项目环境搭建、云端部署
    8.系统管理(用户管理、角色管理、菜单管理、友情链接)
    9.服务监控(在线用户、服务监控、系统日志)
### 服务器容器
    springboot内置Jetty , Tomcat , Undertow , 默认是Tomcat,需要排除Tomcat
    这里使用的是 Undertow 作为服务的容器
    
    SrpingBoot已经完全继承了Undertow技术
    Undertow在高并发业务场景中,性能和内存使用方面都优于Tomcat
    
    当然不是说Tomcat不好,没有这个意思
    如果你想要切换Tomcat 这也很简单 去掉即可
    
                
                    
                        org.springframework.boot
                        spring-boot-start-tomcat
                    
                
    
            
                org.springframework.boot
                spring-boot-starter-undertow
            
    
    
### 标题前端手册
    BootStrap-V3
    LayUI-V2.45
    jQuery
    Echarts
    xm-select
    font-awesome-4.7.0
    iconPicker
    前端框架使用LayuiCMS-V1现成框架二次开发
    ....
### 标题后端手册
    fastjson -- 阿里json解析包
    lombok 	 -- 小辣椒主要用来简化实体类的方法比如set get 有参无参等
    commons-io   --      文件上传
    commons-fileupload  --	同上
    swagger 	-- Api在线文档
    freemarker 	-- mybatisPlus代码生成器模板依赖
    mybatis-plus  -- 持久层框架用法跟mybatis差不多,是mybatis增强版
    druid 	-- 		引入阿里数据库连接池
    mysql-connector-java 	--	mysql连接驱动包的是这里使用8.0
    redis	--	redis连接驱动
    commons-lang3	--	字符串相关工具类
    UserAgentUtils	--	解析客户端操作系统、浏览器等
    aliyun-sdk-oss	--  阿里 oos 这个可有可无,如果你的不需要使用OOS这个驱动删除即可
    oshi-core	--	获取系统信息
    hutool-all	--	Hutool Java工具包
    websocket	-- 聊天系统需要要用到的,因为http只能依赖于客户端发送请求不能实时交互
    AOP	--	对用户操作的日志记录
    shiro-redis	-- sessionID存到redis里面
    jedis	-- redis连接驱动
    ....
### 标题项目功能
入口
	|- 登录页面
		|- ajax异步登录方式
		|- layui布局
顶部
	|- 天气信息
	|- 搜索
	|- 显示/隐藏菜单
顶部右侧菜单
	|-  个人资料
		|- 用户基本信息更改
		|- 用户头像,文件上传 Baen64字符上传
		|- 可对角色降级
	|-  修改密码
		|- 对原来的旧密码判断
		|- 新密码使用随机生成盐 MD5加密方式加固密码安全
	|-  锁屏
		|- sessionStorage判断是否已锁屏
		|- 密码是固定,因为这个所谓的锁屏也就是一个model弹窗
	|- 系统公告
	|- 清除缓存
		|- 前端采用 sessionStorage 作为当前页面缓存提供访问速度
		|- 如果不需要清除换直接window.localStorage.clear();清除即可
		|- 大量使用sessionStorage会造成页面的卡顿
	|- 退出
		|- 调用SHIRO logout 进行一个清除session
	|- 更换皮肤
		|- layui颜色选择器
右侧内容
	|- 后台首页
		|- 数据统计
		|- 内存使用率,使用了echarts.js可视化数据图表
		|- 系统公告
		|- 数据报表		
	|- 页面操作
		|- 刷新当前
		|- 关闭其他
		|- 关闭全部
	|- 系统管理
		|- 用户管理
			|- 用户列表展示
			|- 搜索框
			|- 回收站
			|- 新增
			|- 编辑
			|-状态开关
		|- 画廊管理
			|- 新增
			|- 查询
			|- 删除/批量删除
			|- 上传文件
		|- 角色管理
			|- 查询
			|- 搜索框
			|- 回收站
			|- 状态开关
			|- 新增
			|- 分配菜单权限
		|- 菜单管理
			|- tree table展示
			|- 菜单名称搜索
			|- 删除
			|- 新增	
		|- 友情链接
			|- 新增
			|- 搜索
			|- 跳转
			|- 单元格编辑
			|- 删除						
	|- 系统监控
		|- 服务监控
			|- 系统资源使用列表
		|- 在线用户
			|- 搜索
			|- 强退/批量强退
		|- 系统日志
			|-  搜索
			|-  删除
			|- 详情
底部
	|- 版权/捐赠
其他
	|- 自定义加载框
	|- 页面提示框
	|- 后台异常处理
### 数据库
    MySQL -- 5.7
    
    ti_links	-- 	友情链接表
    ti_menu		-- 	菜单表
    ti_online	--	用户在线表
    ti_role		--  角色表
    ti_role_menu_ref	--	角色菜单关联表
    ti_slideshow	--	画廊表
    ti_system_log	--	系统日志表
    ti_user_friends	--	好友表
    ti_users		--	用户表
    ti_users_role_ref	--	用户角色关联表
### BUG
编辑菜单如果选择父ID刷新然后列表就不显示了,这是因为遍历的时候如果父ID是0那就是主父节点,在JS中禁用编辑那个菜单,我尝试了很多遍但是不行
SHIRO在登录过期,没有权限403,请求跳转网络有请求到login.html或者403.html但就是不跳转
### 效果图
|   |   |
|---|---|
|   |  |
|   |   |
|   |   |
|   |   |
|   |   |

VTW}(MO6I[C09E.png")