CommonAdmin是一个按钮级权限管理系统,包含企业后台最常用的系统模块,代码简洁,开箱即用。
访问地址:https://gitee.com/caochenlei/common-admin
前端技术栈:
技术名称 | 采用版本 | 官方地址 |
---|---|---|
vue-element-admin | 4.4.0 | 点击访问 |
后端技术栈:
技术名称 | 采用版本 | 官方地址 |
---|---|---|
Spring Boot | 2.5.14 | 点击访问 |
Spring Security | 5.5.8 | 点击访问 |
MyBatis | 3.5.9 | 点击访问 |
JJWT | 0.11.5 | 点击访问 |
Knife4j | 3.0.3 | 点击访问 |
开发的工具:
工具名称 | 采用版本 | 下载地址 |
---|---|---|
IntelliJ IDEA | 2021.1 | 下载地址 |
Maven | 3.6.3 | 下载地址 |
MySQL | 5.7.34 | 下载地址 |
Redis | 3.2.100 | 下载地址 |
Visual Studio Code | 1.58.2 | 下载地址 |
Node.js | 14.17.1 | 下载地址 |
Java JDK | 1.8.0_291 | 下载地址 |
common-admin 前端工程
common-admin-server 后端工程
common-admin目录介绍:
├─plop-templates 模板文件,可以使用npm new来创建,可以用代码生成器代替
├─public
└─src
│ App.vue 根组件
│ main.js 入口文件
│ permission.js 权限控制
│ settings.js 全局设置
├─api
│ cloudStorage.js 存放访问后端统一存储接口api
│ sysConfig.js 存放访问后端系统配置接口api
│ sysDepartment.js 存放访问后端系统部门接口api
│ sysLog.js 存放访问后端系统日志接口api
│ sysMenu.js 存放访问后端系统菜单接口api
│ sysRole.js 存放访问后端系统角色接口api
│ sysUser.js 存放访问后端系统用户接口api
├─assets 静态资源
├─components 组件库
├─directive 指令集
├─filters 过滤器
├─icons SVG图标
├─layout 后台布局
├─router 全局路由
├─store 全局存储
├─styles 样式库
├─utils 工具类
└─views
├─dashboard
│ index.vue 默认首页
├─error-page
│ 401.vue 401错误页
│ 404.vue 404错误页
├─login
│ index.vue 登录页面
├─profile
│ avatar.vue 头像上传组件
│ index.vue 个人中心
├─redirect
│ index.vue 重定向
└─system
├─config
│ cloudStorage.vue 云存储配置组件
│ index.vue 系统配置管理页面
├─department
│ index.vue 系统部门管理页面
├─log
│ index.vue 系统日志管理页面
├─menu
│ index.vue 系统菜单管理页面
├─role
│ index.vue 系统角色管理页面
└─user
index.vue 系统用户管理页面
common-admin-server目录介绍:(部分包更换了位置)
│ pom.xml 项目依赖
└─src
└─main
├─java
│ └─io
│ └─github
│ └─caochenlei
│ │ MainApplication.java 主启动类
│ ├─annotation
│ │ RedisCache.java 方法缓存注解
│ │ SysLogRecord.java 系统日志注解
│ ├─aspect
│ │ RedisCacheAspect.java 方法缓存切面
│ │ SysLogAspect.java 系统日志切面
│ ├─common
│ │ Constant.java 全局常量
│ │ Payload.java JWT载荷
│ ├─config
│ │ AsyncConfig.java 异步线程池配置
│ │ ImageCodeConfig.java 图片验证码配置
│ │ RedisConfig.java Redis访问配置
│ │ SwaggerConfig.java 接口文档配置
│ │ WebMvcConfig.java 解决跨域配置
│ │ WebSecurityConfig.java 登录/权限配置
│ │ WebServerFactoryCustomizerConfig.java 解决Undertow警告配置
│ ├─controller
│ │ CloudStorageController.java
│ │ SysConfigController.java
│ │ SysDepartmentController.java
│ │ SysLogController.java
│ │ SysMenuController.java
│ │ SysRoleController.java
│ │ SysUserController.java
│ ├─domain
│ │ SysConfig.java
│ │ SysDepartment.java
│ │ SysLog.java
│ │ SysMenu.java
│ │ SysRole.java
│ │ SysUser.java
│ ├─dto
│ │ SysUserInfoDTO.java 载荷中传输的用户对象
│ ├─exception
│ │ AuthTokenException.java Token认证失败异常
│ │ AuthTokenExpiredException.java Token时间过期异常
│ │ CustomAuthenticationException.java 自定义认证失败异常
│ │ ImageCodeException.java 图片验证码失败异常
│ ├─filter
│ │ CustomAuthenticationFilter.java 请求验证过滤器(重要)
│ ├─handler
│ │ CustomAccessDeniedHandler.java 无权限访问处理器
│ │ CustomAuthenticationEntryPointHandler.java无权限访问处理器
│ │ CustomAuthenticationFailureHandler.java 登录失败处理器
│ │ CustomAuthenticationSuccessHandler.java 登录成功处理器
│ │ GlobalExceptionHandler.java 全局控制器异常处理器
│ ├─mapper
│ │ SysConfigMapper.java
│ │ SysDepartmentMapper.java
│ │ SysLogMapper.java
│ │ SysMenuMapper.java
│ │ SysRoleMapper.java
│ │ SysUserMapper.java
│ ├─prop
│ │ RsaKeyProperties.java 获取RSA公/私钥配置对象
│ ├─service
│ │ │ SysDepartmentService.java
│ │ │ SysLogAsyncService.java
│ │ │ SysLogService.java
│ │ │ SysMenuService.java
│ │ │ SysRoleService.java
│ │ │ SysUserService.java
│ │ └─impl
│ │ CloudStorageServiceImpl.java
│ │ CosCloudStorageServiceImpl.java
│ │ KodoCloudStorageServiceImpl.java
│ │ OssCloudStorageServiceImpl.java
│ │ SysConfigServiceImpl.java
│ │ SysDepartmentServiceImpl.java
│ │ SysLogAsyncServiceImpl.java
│ │ SysLogServiceImpl.java
│ │ SysMenuServiceImpl.java
│ │ SysRoleServiceImpl.java
│ │ SysUserDetailsServiceImpl.java 登录时验证用户/获取权限
│ │ SysUserServiceImpl.java
│ │ SysUserTokenServiceImpl.java Token处理服务类
│ ├─utils
│ │ FileUtils.java 文件处理操作类
│ │ IpUtils.java 获取客户端请求IP工具类
│ │ JsonUtils.java JSON解析工具类
│ │ JwtUtils.java Token解析/生成工具类
│ │ MakeUtils.java 部门树、菜单树、路由表工具类
│ │ RedisCacheUtils.java Redis缓存工具类
│ │ RegionUtils.java 通过IP地址获取区域工具类
│ │ RsaUtils.java 用于生成RSA公/私钥,用来加密
│ └─vo
│ CloudStorageConfigVo.java 回显云存储结果
│ PermissionVo.java 回显前端权限
│ ResultVo.java 回显前端统一处理结果
│ RoleVo.java 回显角色选中项
│ RouterVo.java 回显前端路由表
│ SysUserInfoVo.java 回显前端系统用户信息
│ TokenVo.java 回显前端Token
│ UploadVo.java 回显上传文件后结果
└─resources
│ application.yml 系统配置
│ banner.txt 启动Banner自定义信息
│ mybatis-config.xml MyBatis配置
├─mapper
│ SysConfigMapper.xml
│ SysDepartmentMapper.xml
│ SysLogMapper.xml
│ SysMenuMapper.xml
│ SysRoleMapper.xml
│ SysUserMapper.xml
└─rsa
rsa_key RSA私钥
rsa_key.pub RSA公钥
# 导入数据库,注意数据库账号和密码
common-admin.sql
# 克隆项目
git clone https://gitee.com/caochenlei/common-admin.git
common-admin-server安装及启动:
# 进入后端
cd common-admin-server
# 安装依赖(注:如果实在安装不上,那就试试:更换阿里云仓库地址)
mvn install
# 运行项目
mvn spring-boot:run
common-admin安装及启动:
# 进入前端
cd common-admin
# 安装依赖(注:如果实在安装不上,那就试试:cnpm install)
npm install
# 运行项目
npm run dev
访问地址:http://localhost:9527/
登录账号:zhangsan
登录密码:123456
为了能够进行快速开发,可以使用我的另一个开源项目《代码生成器》,我已经内置了一套关于《Common-Admin》的开发模板。
软件下载地址:https://gitee.com/caochenlei/code-builder/releases/v1.0.0
但是一定注意:JDK 8,如果JDK不是8可能不会正常运行。
如果你想了解代码生成的整个细节,可以使用CMD
命令行的方式启动。
java -jar CodeBuilder-1.0.0.jar
第一步:获取数据库名,然后选择《common-admin》,最后点击开始生成代码
第二步:修改工程包名,然后选择《Common-Admin》,最后点击一键生成代码
第三步:查看生成代码,然后拷贝到对应前后端工程文件夹,最后保存以后重新启动
问题一:前端组件的路径有没有一定规范?
回答一:有,需要按照《主功能模块名/次功能模块名》这种形式来存放生成出来的views界面,并且需要修改组件名为index.vue。
问题二:如何实现的按钮级别权限管理?
回答二:
@PreAuthorize("hasAuthority('sys:department:add')")
注解来控制后端方法的访问权限v-if="checkPermission(['sys:department:add'])"
方法来控制按钮是否显示到页面问题三:如何生成自己的RSA公/私钥?
回答三:在工程里新建RsaUtilsTest,然后运行以下代码生成即可。
public class RsaUtilsTest {
private String publicFile = "D:\\auth_key\\rsa_key.pub";
private String privateFile = "D:\\auth_key\\rsa_key";
private String secret = "123456789abcdefg";
@Test
public void generateKey() throws Exception {
RsaUtils.generateKey(publicFile, privateFile, secret, 2048);
}
}
生成后的文件可以直接替换工程默认的RSA公/私钥,也可以在application.yml中配置指定路径。
问题四:系统关于时间类型的处理?
回答四:系统后端所有时间字段需要手动加以下两个注解,代码生成器不会生成,第一个是用于返回前端的格式,第二个是序列化时采用的格式。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime createTime;//创建时间
问题五:系统配置要注意的问题?
回答五:系统配置中order_num>0
的配置项默认是通用配置项,而order_num=0
为存储配置,如果你有其他特殊配置,可以让order_num
为负数,并且可以在系统配置选项卡增加一个选项,并且自己实现。
问题六:为什么我配置了云存储,但是上传头像的时候遇到跨域问题?
回答六:相对应的云存储需要开启跨域配置,默认为"*",可参考:点击访问
问题七:@RedisCache注解如何使用?
回答七:@RedisCache应该运用到查询结果经常不会改变的方法上,方法参数最好是基础数据类型,引用类型也是可以的但是不建议,并且在该方法查询数据对应的修改方法上标注此注解,同时开启flush = true
功能,以缓存系统配置为例:
问题八:为什么我分配菜单后刷新当前页面,发现没有生效?
回答八:其实已经生效了,由于组件缓存,所以才没有看到效果,此时只需要CTRL+F5
强制刷新一下就能看到啦。
如果您有其他的问题,请联系作者或者关注CSDN进行私信。
v5.1.0(2022-07-12)
v5.0.0(2022-07-10)
v4.0.0
v3.0.2
v3.0.1
v3.0.0
v2.0.0
v1.0.0
Email:774908833@qq.com
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。