{"id":14982977,"url":"https://github.com/kalvingit/kvf-admin","last_synced_at":"2025-04-04T22:08:42.300Z","repository":{"id":36577584,"uuid":"190966995","full_name":"kalvinGit/kvf-admin","owner":"kalvinGit","description":"kvf-admin是一套基于springboot、mybatis、shiro及layui的轻量级快速开发框架、脚手架、后台管理系统、权限系统、基于activiti6整合的工作流OA系统，上手简单，拿来即用。","archived":false,"fork":false,"pushed_at":"2023-02-22T07:48:31.000Z","size":10346,"stargazers_count":477,"open_issues_count":6,"forks_count":171,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-04T22:08:35.221Z","etag":null,"topics":["activiti6","admin","code-generator","docker","layui-admin","mybatis-plus","spring-boot","spring-mvc"],"latest_commit_sha":null,"homepage":"http://kvfadmin.kalvinbg.cn","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kalvinGit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-09T05:15:30.000Z","updated_at":"2025-03-27T12:19:53.000Z","dependencies_parsed_at":"2024-11-06T22:45:11.630Z","dependency_job_id":null,"html_url":"https://github.com/kalvinGit/kvf-admin","commit_stats":{"total_commits":96,"total_committers":4,"mean_commits":24.0,"dds":0.34375,"last_synced_commit":"f12a94dc1ebb7d1c51ee978a85e4c7ed75c620ff"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalvinGit%2Fkvf-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalvinGit%2Fkvf-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalvinGit%2Fkvf-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalvinGit%2Fkvf-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kalvinGit","download_url":"https://codeload.github.com/kalvinGit/kvf-admin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247256115,"owners_count":20909240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["activiti6","admin","code-generator","docker","layui-admin","mybatis-plus","spring-boot","spring-mvc"],"created_at":"2024-09-24T14:06:31.452Z","updated_at":"2025-04-04T22:08:42.267Z","avatar_url":"https://github.com/kalvinGit.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"http://cloud.kalvinbg.cn/image/kvf-admin-logo.png\" alt=\"kvf-admin-logo\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/kalvinGit/kvf-admin/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/mashape/apistatus.svg\" alt=\"license\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://spring.io/projects/spring-boot\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/springboot-v2.2.4-green\" alt=\"springboot\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://mp.baomidou.com\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/mybatis--plus-v3.3.0-blue\" alt=\"mybatis-plus\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/kalvinGit/kvf-admin/wiki/kvf%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E5%99%A8%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3\" rel=\"nofollow\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/code--generator-wiki-orange\" alt=\"code-generator\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.layui.com/doc/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/layui-v2.5.6-brightgreen\" alt=\"layui\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.hutool.cn/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/hutool--all-v4.5.1%20-yellow\" alt=\"hutool\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.activiti.org/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/activiti-v6.0.0-lightgrey\" alt=\"activiti6\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# kvf-admin\nkvf-admin是一套快速开发框架、脚手架、后台管理系统、权限系统，上手简单，拿来即用。为广大开发者去除大部分重复繁锁的代码工作，让开发者拥有更多的时间陪恋人、家人和朋友。\u003cbr\u003e**技术交流群：214768328**\n\u003ca href=\"http://cloud.kalvinbg.cn/image/kvf_code.png\" target=\"_blank\"\u003e\n   \u003cimg src=\"https://img.shields.io/badge/%E6%8A%80%E6%9C%AF%E4%BA%A4%E6%B5%81%E7%BE%A4-%E4%BA%8C%E7%BB%B4%E7%A0%81-blue\" alt=\"二维码\"\u003e\n\u003c/a\u003e\n* 后端采用spring boot、mybatis(已集成mybatis-plus增强插件，开发更迅速，可查看官方文档了解更多：[mybatis-plus](https://mp.baomidou.com/))、shiro框架\n* 前端采用layui作为UI框架，实现90%的移动端自适应，支持主题更换\n* 提供代码生成器([wiki使用文档](https://github.com/kalvinGit/kvf-admin/wiki/kvf%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E5%99%A8%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3))，只需编写20%左右的代码，剩下全部自动生成；支持一键及批量功能模块生成，并支持一定程度上的自定义配置并生成代码，相对比较灵活\n#### 基础框架功能模块\n* [x] 用户管理\n* [x] 部门管理\n* [x] 菜单管理\n* [x] 角色管理\n* [x] 字典管理\n* [x] 操作日志\n* [x] 代码生成\n* [x] 组件管理\n## kvf-admin-activiti（工作流OA版本）\nkvf-admin-activiti是基于kvf-admin脚手架集成了工作流引擎（activiti6），并封装了核心工作流程（OA）功能模块。如下：\n目前工作流（OA）模块还处于初始阶段，代码也比较粗糙，后续再不断完善优化。\u003cbr\u003e\n备注：工作流版本在【activiti】分支\n* [x] 核心API（支持启动流程、提交任务、驳回、驳回任意环节、驳回首环节、撤回、挂起/激活流程等API）\n* [x] 流程管理（支持流程在线设计器、发布/部署、挂起、激活、导出/导入、配置表单、启动、删除）\n* [x] 表单管理（支持快速表单在线设计器、增/删/改/查、预览表单）\n* [x] 我的流程（发起流程申请）\n* [x] 我的待办（支持快速办理、查看任务表单办理、历史审批意见、流程实时流转图等）\n* [x] 我的已办（支持撤回功能）\n* [x] 我的申请（查看所有当前用户申请过的流程情况）\n* [ ] 下一步计划，期待大家的反馈意见！\n\n### 更新日志\n[👳👉‍点我点我点我](https://github.com/kalvinGit/kvf-admin/wiki/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97)\n\n### 项目结构树\n````\nkvf-admin\n│\n│ pom.xml maven依赖管理pom文件\n│  \n├─sql\n│      kvf_sys.sql  项目初始化数据表及基础数据sql脚本\n│      \n└─src\n    ├─main\n    │  ├─java\n    │  │  └─com\n    │  │      └─kalvin\n    │  │          └─kvf\n    │  │              │  KvfAdminApplication.java   项目启动类\n    │  │              │  \n    │  │              ├─common  通用模块\n    │  │              └─modules 功能模块\n    │  │                  ├─generator   代码生成器模块\n    │  │                  └─sys 系统模块（核心）\n    │  └─resources\n    │      │  application.yml   spring boot 配置文件\n    │      │  ehcache.xml   ehcache缓存配置文件\n    │      │  \n    │      ├─mapper mybatis mapper文件\n    │      ├─static 静态资料\n    │      └─templates  模板\n    │          │  403.html  403页面\n    │          │  home.html 系统首页页面\n    │          │  index.html   主页\n    │          │  login.html   登录页\n    │          │  \n    │          ├─common 通用模板\n    │          │      base.html\n    │          │      sys_tpl.html\n    │          │      \n    │          ├─generator  生成器模板\n    │          │          \n    │          └─sys    系统页面模板\n    │                  \n    └─test  单元测试块\n\n````\n\n### 软件需求\n* jdk8+\n* mysql5.7+\n\n### 所用技术\n#### 前端\n* jQuery \n* [layui v2.5.6](https://www.layui.com/doc/) (UI框架)\n\n#### 后端\n* spring boot v2.2.4.RELEASE\n* Mybatis\n* [Mybatis-plus v3.3.0](https://mp.baomidou.com/guide/wrapper.html#abstractwrapper) (mybatis增强插件，无侵入。非常强大的插件，除了联表操作，几乎都可以使用它的sql条件构造器完成)\n* Shiro v1.4.0\n* Druid v1.1.21\n* ehcache\n* redis\n* [hutool-all v4.5.1](https://hutool.cn/docs/#/) (java通用工具类，此包几乎包括了所有常用的工具方法，你也可以按需引入相应工具模块包)\n\n### 项目特点\n* 非常精简且轻量级的权限系统，代码简洁易懂，无论学习还是项目中应用，都是非常简单易上手的项目\n* 拥有界面配置化代码生成器，支持一键生成及简单自定义配置生成代码\n* 自动过滤输入的非法字符串，防止XSS攻击\n* 使用ehcache + redis作为缓存，对需要加入缓存的方法上添加@Cacheable注解即可（你也可以使用redisTemplate添加获取缓存），提升系统运行速度\n* 支持日志记录，可在需要加入日志操作记录的controller方法上添加@Log(\"业务操作备注\")即可完成日志记录\n* 系统全局统一异常处理，所有异常信息统一处理返回R对象，前端处理提示信息更方便\n* 支持工作流（OA）功能\n* 完美支持多种部署方式（jar、tomcat、docker等）\n\n### 本地部署\n* 通过git/gitee下载源码(推荐使用git，因为gitee不是实时更新的)，若是工作流OA版本，请clone activiti分支\n* 创建数据库：执行sql/kvf_admin.sql脚本创建数据库及表并初始化系统基础数据，若是工作流OA版本需要额外执行sql/kvf_admin_activiti.sql脚本\n* 修改开发环境配置文件application-dev.yml，配置数据库账号和密码\n* 开发工具idea或eclipse还需要安装lombok插件，否则会提示找不到实体类的的get/set方法\n* 运行KvfAdminApplication.java，启动项目【kvf-admin】\n* idea启动访问：http://localhost/【一般idea都会自动去掉项目名】【这里使用80端口】\n* eclipse启动访问：http://localhost/kvf-admin【这里使用80端口】\n* 账号密码：admin/123456\n\n\n### linux部署\n注意：以下三种方式部署前，记得初始化数据库哦\n#### 打包\n###### 开发环境(dev)：\n```\nmvn package -P dev\n```\n###### 测试环境(test)：\n```\nmvn package -P test -Dmaven.test.skip=true\n```\n###### 生产环境(prod)：\n```\nmvn package -P prod -Dmaven.test.skip=true\n```\n#### jar包方式部署\n项目已解决以jar包运行的情况下，无法读取文件等各种问题，所以放心使用\n\n###### 运行\n```\nnohup java -jar kvf-admin.jar \u0026\n```\n#### tomcat部署\n打包前先修改pom.xml的打包方式为war\n```\n\u003cpackaging\u003ewar\u003c/packaging\u003e\n```\n##### 运行\n##### 把war包拷贝到tomcat的webapps目录下，然后进入bin目录执行：\n```\n./startup.sh\n```\n\n### docker部署\n前提：安装docker及docker-compose\u003cbr\u003e\n\n##### 进入kvf-admin目录，在已打包(上面打包步骤)的情况下，构建docker镜像\n```\nmvn docker:build\n```\n##### 进入./docker-compose目录\n修改相应docker-compose配置（可选）\n```\nvim docker-compose.yml\nvim .env\n```\n##### 运行（启动所有镜像）\n```\ndocker-compose up -d\n```\n##### 或者启动指定镜像\n```\ndocker-compose up -d kvf-admin\n```\n\n\n### 项目演示\n* 演示地址：http://kvfadmin.kalvinbg.cn\n* 账号密码：test/123456\n\n### 系统效果图展示\n\n![系统效果图](http://cloud.kalvinbg.cn/image/kvf-admin.png)\n![系统效果图](http://cloud.kalvinbg.cn/image/kvf-admin1.png)\n![系统效果图](http://cloud.kalvinbg.cn/image/kvf-admin2.png)\n![系统效果图](http://cloud.kalvinbg.cn/image/kvf-admin3.png)\n![系统效果图](http://cloud.kalvinbg.cn/image/kvf-admin4.png)\n\n### 开发指南\n* 前端通用配置js【kconfig.js】\n* 前端通用工具js【kcommon.js】\n* 前端静态文件引用统一管理配置【base.html】，在需要引用里面的配置的页面上引用即可，如引用通用的css：`\u003clink th:replace=\"common/base::static\"/\u003e`\n* 后端自定义日志注解@Log(\"业务操作说明\")[com.kalvin.kvf.common.annotation.Log]，在需要加入日志的controller方法上加这个注解即可\n* 缓存使用[点我](https://my.oschina.net/sdlvzg/blog/1608871)：对需要加入缓存的方法上添加`@Cacheable(value=\"cache_name\")`注解即可，同时需要在对应的方法上加上更新或删除缓存注解`@CacheEvict(value = \"cache_name\", allEntries = true)`;也可以使用redisTemplate添加删除更新缓存\n* 代码生成器使用文档[点我](https://github.com/kalvinGit/kvf-admin/wiki/kvf%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E5%99%A8%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3)\n* Spring上下文工具【SpringContextKit.java】，可使用它手动获取指定bean。如`IUserService userService = SpringContextKit.getBean(IUserService.class);`\n* 自定义异常处理类【KvfException.java】，可用于业务层【service】抛出业务异常，如：`throw new KvfException(\"不存在的任务ID\");` ，前端可接收到这个提示信息\n* 统一接口返回数据封装类【R.java】，可用于控制层【controller】返回成功或失败等数据。如`R.ok(data); 或 R.fail(\"验证码不正确\");`\n* 开发环境【dev】默认关闭登录验证码，若需要开启验证码登录可在application-dev.yml配置开启\n* 通用文件上传接口：CommonController-\u003efileUpload\n\n### 敬请期待\n* vue-admin版本\n\n### 常见问题\n**1.有些人访问报错：`org.apache.ibatis.binding.BindingException: Parameter 'xxx' not found,Available parameters are [0, 1, param1, param2]`**\n\n为什么会出现部分人报错，有些却不报错呢？\n答案参考这篇分析文章：[点我](https://blog.csdn.net/u011821334/article/details/101763001)\n\n####解决方案：\n* 方案一：\n可能是使用低版本的idea，因为低版本的idea默认是没有加上-parameters选项的，需要手动加上；（上面的分析文章有详细说明）\n或者升级idea版本\n\n* 方案二：\n在mapper的方法参数上加上@Param注解\n\n\n**2.mybatisPlus自带的crud方法默认会根据实体类字段驼峰自动转下划线匹配数据表字段，如果不需要自动转下划线该如何配置**\n#### 全局配置：\n可在配置项`map-underscore-to-camel-case`配置：\n配置为`true`时，mybatisplus会根据实体类字段驼峰自动转下划线匹配数据表字段如：myColumn(实体字段) -\u003e my_column(表字段)\u003cbr\u003e\n`map-underscore-to-camel-case:true`\u003cbr\u003e\n同理，配置为`false`时：myColumn(实体字段) -\u003e myColumn(表字段)\u003cbr\u003e\n`map-underscore-to-camel-case:false`\n![全局配置](https://images.gitee.com/uploads/images/2020/0404/110427_012b323d_1235987.png \"微信截图_20200404110317.png\")\n\n#### 局部配置：\n如果只是部分表或字段需要，可在实体类的字段上配置@TableField(value=\"表字段\")注解指定数据表字段名称如：\n\n```\n@TableField(value = \"myColumn\")\nprivate String myColumn;\n```\n\n\n\n\n### 交流反馈\n* github仓库：https://github.com/kalvinGit/kvf-admin\n* gitee仓库：https://gitee.com/kalvinmy/kvf-admin\n* 如需关注项目最新动态，请Watch、Star项目，同时也是对项目最好的支持\n* 交流群：214768328\n\u003cp\u003e\n    \u003cimg width=\"150\" src=\"http://cloud.kalvinbg.cn/image/kvf_code.png\" alt=\"技术交流群\"\u003e\n\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkalvingit%2Fkvf-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkalvingit%2Fkvf-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkalvingit%2Fkvf-admin/lists"}