From fbfb353aacb525e04a492713c51785481f7c9fa3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=BC=E5=AD=90=E6=98=8E?= <2513889970@qq.com>
Date: Fri, 21 Mar 2025 23:51:45 +0800
Subject: [PATCH] first commit
---
Dockerfile | 13 +
LICENSE | 21 +
README.md | 122 +
doc/mysql.sql | 311 +
doc/oracle.sql | 302 +
doc/sqlServer.sql | 295 +
pom.xml | 177 +
.../vip/fuck/sm/SolonManagerApplication.java | 25 +
.../common/aop/annotation/LogAnnotation.java | 25 +
.../aop/aspect/LoggingRouterInterceptor.java | 80 +
.../config/GlobalResultInterceptor.java | 55 +
.../config/MetaObjectHandlerConfig.java | 78 +
.../sm/common/config/MyBatisPlusConfig.java | 47 +
.../sm/common/config/StpInterfaceImpl.java | 42 +
.../common/config/SwaggerConfiguration.java | 50 +
.../sm/common/config/WebMvcConfigurer.java | 95 +
.../common/exception/BusinessException.java | 52 +
.../exception/code/BaseResponseCode.java | 59 +
.../exception/code/ResponseCodeInterface.java | 24 +
.../common/exception/handler/AppFilter.java | 45 +
.../vip/fuck/sm/common/utils/AssertUtil.java | 110 +
.../vip/fuck/sm/common/utils/Constant.java | 38 +
.../vip/fuck/sm/common/utils/DataResult.java | 112 +
.../vip/fuck/sm/common/utils/DateUtils.java | 30 +
.../vip/fuck/sm/common/utils/GenUtils.java | 244 +
.../fuck/sm/common/utils/PasswordEncoder.java | 117 +
.../fuck/sm/common/utils/PasswordUtils.java | 47 +
.../fuck/sm/controller/DeptController.java | 96 +
.../fuck/sm/controller/IndexController.java | 145 +
.../sm/controller/PermissionController.java | 148 +
.../fuck/sm/controller/RoleController.java | 141 +
.../sm/controller/SysContentController.java | 75 +
.../fuck/sm/controller/SysDictController.java | 89 +
.../controller/SysDictDetailController.java | 88 +
.../sm/controller/SysFilesController.java | 67 +
.../sm/controller/SysGeneratorController.java | 58 +
.../fuck/sm/controller/SysLogController.java | 64 +
.../fuck/sm/controller/UserController.java | 217 +
.../sm/controller/UserRoleController.java | 36 +
.../sm/controller/api/TestController.java | 44 +
.../vip/fuck/sm/entity/BasePageEntity.java | 38 +
.../java/vip/fuck/sm/entity/ColumnEntity.java | 104 +
.../vip/fuck/sm/entity/SysContentEntity.java | 78 +
src/main/java/vip/fuck/sm/entity/SysDept.java | 54 +
.../fuck/sm/entity/SysDictDetailEntity.java | 68 +
.../vip/fuck/sm/entity/SysDictEntity.java | 51 +
.../vip/fuck/sm/entity/SysFilesEntity.java | 51 +
.../java/vip/fuck/sm/entity/SysGenerator.java | 30 +
src/main/java/vip/fuck/sm/entity/SysLog.java | 48 +
.../vip/fuck/sm/entity/SysPermission.java | 63 +
src/main/java/vip/fuck/sm/entity/SysRole.java | 66 +
.../vip/fuck/sm/entity/SysRoleDeptEntity.java | 49 +
.../vip/fuck/sm/entity/SysRolePermission.java | 30 +
src/main/java/vip/fuck/sm/entity/SysUser.java | 88 +
.../java/vip/fuck/sm/entity/SysUserRole.java | 31 +
.../java/vip/fuck/sm/entity/TableEntity.java | 93 +
.../vip/fuck/sm/mapper/GeneratorMapper.java | 28 +
.../vip/fuck/sm/mapper/SysContentMapper.java | 17 +
.../vip/fuck/sm/mapper/SysDeptMapper.java | 16 +
.../fuck/sm/mapper/SysDictDetailMapper.java | 17 +
.../vip/fuck/sm/mapper/SysDictMapper.java | 17 +
.../vip/fuck/sm/mapper/SysFilesMapper.java | 17 +
.../java/vip/fuck/sm/mapper/SysLogMapper.java | 16 +
.../fuck/sm/mapper/SysPermissionMapper.java | 17 +
.../vip/fuck/sm/mapper/SysRoleDeptMapper.java | 17 +
.../vip/fuck/sm/mapper/SysRoleMapper.java | 17 +
.../sm/mapper/SysRolePermissionMapper.java | 17 +
.../vip/fuck/sm/mapper/SysUserMapper.java | 16 +
.../vip/fuck/sm/mapper/SysUserRoleMapper.java | 17 +
.../java/vip/fuck/sm/service/DeptService.java | 47 +
.../java/vip/fuck/sm/service/HomeService.java | 21 +
.../fuck/sm/service/ISysGeneratorService.java | 32 +
.../java/vip/fuck/sm/service/LogService.java | 14 +
.../fuck/sm/service/PermissionService.java | 86 +
.../sm/service/RolePermissionService.java | 22 +
.../java/vip/fuck/sm/service/RoleService.java | 53 +
.../fuck/sm/service/SysContentService.java | 16 +
.../fuck/sm/service/SysDictDetailService.java | 26 +
.../vip/fuck/sm/service/SysDictService.java | 16 +
.../vip/fuck/sm/service/SysFilesService.java | 36 +
.../fuck/sm/service/SysRoleDeptService.java | 16 +
.../vip/fuck/sm/service/UserRoleService.java | 32 +
.../java/vip/fuck/sm/service/UserService.java | 76 +
.../fuck/sm/service/impl/DeptServiceImpl.java | 214 +
.../fuck/sm/service/impl/HomeServiceImpl.java | 59 +
.../fuck/sm/service/impl/LogServiceImpl.java | 18 +
.../service/impl/PermissionServiceImpl.java | 263 +
.../impl/RolePermissionServiceImpl.java | 36 +
.../fuck/sm/service/impl/RoleServiceImpl.java | 147 +
.../service/impl/SysContentServiceImpl.java | 20 +
.../impl/SysDictDetailServiceImpl.java | 53 +
.../sm/service/impl/SysDictServiceImpl.java | 57 +
.../sm/service/impl/SysFilesServiceImpl.java | 123 +
.../service/impl/SysGeneratorServiceImpl.java | 64 +
.../service/impl/SysRoleDeptServiceImpl.java | 14 +
.../sm/service/impl/UserRoleServiceImpl.java | 55 +
.../fuck/sm/service/impl/UserServiceImpl.java | 237 +
.../vo/req/RolePermissionOperationReqVO.java | 25 +
.../sm/vo/req/UserRoleOperationReqVO.java | 25 +
.../vip/fuck/sm/vo/resp/DeptRespNodeVO.java | 53 +
.../java/vip/fuck/sm/vo/resp/HomeRespVO.java | 22 +
.../java/vip/fuck/sm/vo/resp/LoginRespVO.java | 27 +
.../fuck/sm/vo/resp/PermissionRespNode.java | 53 +
.../vip/fuck/sm/vo/resp/UserInfoRespVO.java | 30 +
.../fuck/sm/vo/resp/UserOwnRoleRespVO.java | 22 +
src/main/resources/app.yml | 80 +
src/main/resources/generator.properties | 61 +
.../mapper/mysql/SysGeneratorMapper.xml | 39 +
.../mapper/oracle/SysGeneratorMapper.xml | 78 +
.../mapper/sqlServer/SysGeneratorMapper.xml | 106 +
src/main/resources/static/css/403.css | 9 +
src/main/resources/static/css/404.css | 9 +
src/main/resources/static/css/500.css | 9 +
src/main/resources/static/css/build.css | 111 +
src/main/resources/static/css/custom.form.css | 38 +
src/main/resources/static/css/home.css | 110 +
src/main/resources/static/css/images/403.png | Bin 0 -> 147566 bytes
src/main/resources/static/css/images/404.png | Bin 0 -> 147186 bytes
src/main/resources/static/css/images/500.png | Bin 0 -> 147716 bytes
src/main/resources/static/css/images/bg.jpg | Bin 0 -> 26174 bytes
src/main/resources/static/css/login.css | 98 +
src/main/resources/static/css/login2.css | 99 +
src/main/resources/static/js/build.js | 167 +
src/main/resources/static/js/core.util.js | 182 +
src/main/resources/static/js/home.js | 369 +
.../js/jq-module/jquery.particleground.min.js | 195 +
.../static/js/jq-module/paigusu.min.js | 1 +
.../jq-module/zyupload/zyupload-1.0.0.min.css | 2 +
.../jq-module/zyupload/zyupload-1.0.0.min.js | 17 +
src/main/resources/static/js/jquery.js | 2 +
.../resources/static/layui-ext/cron/cron.css | 184 +
.../resources/static/layui-ext/cron/cron.js | 1137 ++
.../static/layui-ext/eleTree/eleTree.js | 1 +
.../static/layui-ext/icon/iconPicker.js | 327 +
.../static/layui-ext/tinymce/tinymce.js | 268 +
.../tinymce/icons/default/icons.min.js | 1 +
.../tinymce/tinymce/jquery.tinymce.min.js | 92 +
.../layui-ext/tinymce/tinymce/langs/readme.md | 3 +
.../layui-ext/tinymce/tinymce/langs/zh_CN.js | 419 +
.../layui-ext/tinymce/tinymce/license.txt | 504 +
.../tinymce/tinymce/plugins/advlist/plugin.js | 281 +
.../tinymce/plugins/advlist/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/anchor/plugin.js | 216 +
.../tinymce/plugins/anchor/plugin.min.js | 9 +
.../tinymce/plugins/autolink/plugin.js | 185 +
.../tinymce/plugins/autolink/plugin.min.js | 9 +
.../tinymce/plugins/autoresize/plugin.js | 171 +
.../tinymce/plugins/autoresize/plugin.min.js | 9 +
.../tinymce/plugins/autosave/plugin.js | 214 +
.../tinymce/plugins/autosave/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/bbcode/plugin.js | 99 +
.../tinymce/plugins/bbcode/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/charmap/plugin.js | 1706 +++
.../tinymce/plugins/charmap/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/code/plugin.js | 92 +
.../tinymce/plugins/code/plugin.min.js | 9 +
.../tinymce/plugins/codesample/plugin.js | 1717 +++
.../tinymce/plugins/codesample/plugin.min.js | 9 +
.../tinymce/plugins/colorpicker/plugin.js | 22 +
.../tinymce/plugins/colorpicker/plugin.min.js | 9 +
.../tinymce/plugins/contextmenu/plugin.js | 22 +
.../tinymce/plugins/contextmenu/plugin.min.js | 9 +
.../tinymce/plugins/directionality/plugin.js | 314 +
.../plugins/directionality/plugin.min.js | 9 +
.../tinymce/plugins/emoticons/js/emojis.js | 9015 +++++++++++++++
.../plugins/emoticons/js/emojis.min.js | 2 +
.../tinymce/plugins/emoticons/plugin.js | 564 +
.../tinymce/plugins/emoticons/plugin.min.js | 9 +
.../tinymce/plugins/fullpage/plugin.js | 544 +
.../tinymce/plugins/fullpage/plugin.min.js | 9 +
.../tinymce/plugins/fullscreen/plugin.js | 851 ++
.../tinymce/plugins/fullscreen/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/help/plugin.js | 846 ++
.../tinymce/plugins/help/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/hr/plugin.js | 46 +
.../tinymce/tinymce/plugins/hr/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/image/plugin.js | 1660 +++
.../tinymce/plugins/image/plugin.min.js | 9 +
.../tinymce/plugins/imagetools/plugin.js | 1304 +++
.../tinymce/plugins/imagetools/plugin.min.js | 9 +
.../tinymce/plugins/importcss/plugin.js | 337 +
.../tinymce/plugins/importcss/plugin.min.js | 9 +
.../tinymce/plugins/indent2em/plugin.js | 62 +
.../tinymce/plugins/indent2em/plugin.min.js | 62 +
.../tinymce/plugins/insertdatetime/plugin.js | 177 +
.../plugins/insertdatetime/plugin.min.js | 9 +
.../tinymce/plugins/legacyoutput/plugin.js | 199 +
.../plugins/legacyoutput/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/link/plugin.js | 1219 +++
.../tinymce/plugins/link/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/lists/plugin.js | 2163 ++++
.../tinymce/plugins/lists/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/media/plugin.js | 1315 +++
.../tinymce/plugins/media/plugin.min.js | 9 +
.../tinymce/plugins/nonbreaking/plugin.js | 101 +
.../tinymce/plugins/nonbreaking/plugin.min.js | 9 +
.../tinymce/plugins/noneditable/plugin.js | 117 +
.../tinymce/plugins/noneditable/plugin.min.js | 9 +
.../tinymce/plugins/pagebreak/plugin.js | 107 +
.../tinymce/plugins/pagebreak/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/paste/plugin.js | 1707 +++
.../tinymce/plugins/paste/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/preview/plugin.js | 127 +
.../tinymce/plugins/preview/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/print/plugin.js | 53 +
.../tinymce/plugins/print/plugin.min.js | 9 +
.../tinymce/plugins/quickbars/plugin.js | 488 +
.../tinymce/plugins/quickbars/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/save/plugin.js | 119 +
.../tinymce/plugins/save/plugin.min.js | 9 +
.../tinymce/plugins/searchreplace/plugin.js | 1167 ++
.../plugins/searchreplace/plugin.min.js | 9 +
.../tinymce/plugins/spellchecker/plugin.js | 737 ++
.../plugins/spellchecker/plugin.min.js | 9 +
.../tinymce/plugins/tabfocus/plugin.js | 128 +
.../tinymce/plugins/tabfocus/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/table/plugin.js | 9743 +++++++++++++++++
.../tinymce/plugins/table/plugin.min.js | 9 +
.../tinymce/plugins/template/plugin.js | 562 +
.../tinymce/plugins/template/plugin.min.js | 9 +
.../tinymce/plugins/textcolor/plugin.js | 22 +
.../tinymce/plugins/textcolor/plugin.min.js | 9 +
.../tinymce/plugins/textpattern/plugin.js | 1392 +++
.../tinymce/plugins/textpattern/plugin.min.js | 9 +
.../tinymce/tinymce/plugins/toc/plugin.js | 235 +
.../tinymce/tinymce/plugins/toc/plugin.min.js | 9 +
.../tinymce/plugins/visualblocks/plugin.js | 104 +
.../plugins/visualblocks/plugin.min.js | 9 +
.../tinymce/plugins/visualchars/plugin.js | 541 +
.../tinymce/plugins/visualchars/plugin.min.js | 9 +
.../tinymce/plugins/wordcount/plugin.js | 416 +
.../tinymce/plugins/wordcount/plugin.min.js | 9 +
.../skins/content/dark/content.min.css | 7 +
.../skins/content/default/content.min.css | 7 +
.../skins/content/document/content.min.css | 7 +
.../skins/content/writer/content.min.css | 7 +
.../ui/oxide-dark/content.inline.min.css | 7 +
.../skins/ui/oxide-dark/content.min.css | 7 +
.../ui/oxide-dark/content.mobile.min.css | 7 +
.../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes
.../tinymce/skins/ui/oxide-dark/skin.min.css | 7 +
.../skins/ui/oxide-dark/skin.mobile.min.css | 7 +
.../skins/ui/oxide/content.inline.min.css | 7 +
.../tinymce/skins/ui/oxide/content.min.css | 7 +
.../skins/ui/oxide/content.mobile.min.css | 7 +
.../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes
.../tinymce/skins/ui/oxide/skin.min.css | 7 +
.../skins/ui/oxide/skin.mobile.min.css | 7 +
.../tinymce/themes/mobile/theme.min.js | 9 +
.../tinymce/themes/silver/theme.min.js | 9 +
.../layui-ext/tinymce/tinymce/tinymce.min.js | 9 +
.../layui-ext/treetable-lay/treetable.css | 18 +
.../layui-ext/treetable-lay/treetable.js | 206 +
src/main/resources/static/layui/css/layui.css | 1 +
.../static/layui/css/layui.mobile.css | 2 +
.../static/layui/css/modules/code.css | 1 +
.../css/modules/laydate/default/laydate.css | 1 +
.../css/modules/layer/default/icon-ext.png | Bin 0 -> 5911 bytes
.../layui/css/modules/layer/default/icon.png | Bin 0 -> 11493 bytes
.../layui/css/modules/layer/default/layer.css | 1 +
.../css/modules/layer/default/loading-0.gif | Bin 0 -> 5793 bytes
.../css/modules/layer/default/loading-1.gif | Bin 0 -> 701 bytes
.../css/modules/layer/default/loading-2.gif | Bin 0 -> 1787 bytes
.../resources/static/layui/font/iconfont.eot | Bin 0 -> 54172 bytes
.../resources/static/layui/font/iconfont.svg | 405 +
.../resources/static/layui/font/iconfont.ttf | Bin 0 -> 53996 bytes
.../resources/static/layui/font/iconfont.woff | Bin 0 -> 34624 bytes
.../static/layui/font/iconfont.woff2 | Bin 0 -> 29736 bytes
.../resources/static/layui/images/face/0.gif | Bin 0 -> 2689 bytes
.../resources/static/layui/images/face/1.gif | Bin 0 -> 5514 bytes
.../resources/static/layui/images/face/10.gif | Bin 0 -> 2797 bytes
.../resources/static/layui/images/face/11.gif | Bin 0 -> 4121 bytes
.../resources/static/layui/images/face/12.gif | Bin 0 -> 3361 bytes
.../resources/static/layui/images/face/13.gif | Bin 0 -> 7425 bytes
.../resources/static/layui/images/face/14.gif | Bin 0 -> 2375 bytes
.../resources/static/layui/images/face/15.gif | Bin 0 -> 1793 bytes
.../resources/static/layui/images/face/16.gif | Bin 0 -> 6721 bytes
.../resources/static/layui/images/face/17.gif | Bin 0 -> 4439 bytes
.../resources/static/layui/images/face/18.gif | Bin 0 -> 3017 bytes
.../resources/static/layui/images/face/19.gif | Bin 0 -> 3040 bytes
.../resources/static/layui/images/face/2.gif | Bin 0 -> 3222 bytes
.../resources/static/layui/images/face/20.gif | Bin 0 -> 5144 bytes
.../resources/static/layui/images/face/21.gif | Bin 0 -> 5191 bytes
.../resources/static/layui/images/face/22.gif | Bin 0 -> 9823 bytes
.../resources/static/layui/images/face/23.gif | Bin 0 -> 3792 bytes
.../resources/static/layui/images/face/24.gif | Bin 0 -> 8096 bytes
.../resources/static/layui/images/face/25.gif | Bin 0 -> 3127 bytes
.../resources/static/layui/images/face/26.gif | Bin 0 -> 3291 bytes
.../resources/static/layui/images/face/27.gif | Bin 0 -> 4377 bytes
.../resources/static/layui/images/face/28.gif | Bin 0 -> 2793 bytes
.../resources/static/layui/images/face/29.gif | Bin 0 -> 4854 bytes
.../resources/static/layui/images/face/3.gif | Bin 0 -> 4017 bytes
.../resources/static/layui/images/face/30.gif | Bin 0 -> 2555 bytes
.../resources/static/layui/images/face/31.gif | Bin 0 -> 2002 bytes
.../resources/static/layui/images/face/32.gif | Bin 0 -> 3481 bytes
.../resources/static/layui/images/face/33.gif | Bin 0 -> 2454 bytes
.../resources/static/layui/images/face/34.gif | Bin 0 -> 3700 bytes
.../resources/static/layui/images/face/35.gif | Bin 0 -> 1800 bytes
.../resources/static/layui/images/face/36.gif | Bin 0 -> 2331 bytes
.../resources/static/layui/images/face/37.gif | Bin 0 -> 1513 bytes
.../resources/static/layui/images/face/38.gif | Bin 0 -> 3615 bytes
.../resources/static/layui/images/face/39.gif | Bin 0 -> 6495 bytes
.../resources/static/layui/images/face/4.gif | Bin 0 -> 5689 bytes
.../resources/static/layui/images/face/40.gif | Bin 0 -> 3154 bytes
.../resources/static/layui/images/face/41.gif | Bin 0 -> 3644 bytes
.../resources/static/layui/images/face/42.gif | Bin 0 -> 5305 bytes
.../resources/static/layui/images/face/43.gif | Bin 0 -> 2674 bytes
.../resources/static/layui/images/face/44.gif | Bin 0 -> 4126 bytes
.../resources/static/layui/images/face/45.gif | Bin 0 -> 3417 bytes
.../resources/static/layui/images/face/46.gif | Bin 0 -> 3007 bytes
.../resources/static/layui/images/face/47.gif | Bin 0 -> 2333 bytes
.../resources/static/layui/images/face/48.gif | Bin 0 -> 2689 bytes
.../resources/static/layui/images/face/49.gif | Bin 0 -> 2315 bytes
.../resources/static/layui/images/face/5.gif | Bin 0 -> 4567 bytes
.../resources/static/layui/images/face/50.gif | Bin 0 -> 5866 bytes
.../resources/static/layui/images/face/51.gif | Bin 0 -> 2785 bytes
.../resources/static/layui/images/face/52.gif | Bin 0 -> 777 bytes
.../resources/static/layui/images/face/53.gif | Bin 0 -> 2127 bytes
.../resources/static/layui/images/face/54.gif | Bin 0 -> 2196 bytes
.../resources/static/layui/images/face/55.gif | Bin 0 -> 1971 bytes
.../resources/static/layui/images/face/56.gif | Bin 0 -> 2034 bytes
.../resources/static/layui/images/face/57.gif | Bin 0 -> 2705 bytes
.../resources/static/layui/images/face/58.gif | Bin 0 -> 2258 bytes
.../resources/static/layui/images/face/59.gif | Bin 0 -> 10311 bytes
.../resources/static/layui/images/face/6.gif | Bin 0 -> 2213 bytes
.../resources/static/layui/images/face/60.gif | Bin 0 -> 3245 bytes
.../resources/static/layui/images/face/61.gif | Bin 0 -> 2495 bytes
.../resources/static/layui/images/face/62.gif | Bin 0 -> 2017 bytes
.../resources/static/layui/images/face/63.gif | Bin 0 -> 5871 bytes
.../resources/static/layui/images/face/64.gif | Bin 0 -> 6448 bytes
.../resources/static/layui/images/face/65.gif | Bin 0 -> 3576 bytes
.../resources/static/layui/images/face/66.gif | Bin 0 -> 3029 bytes
.../resources/static/layui/images/face/67.gif | Bin 0 -> 2701 bytes
.../resources/static/layui/images/face/68.gif | Bin 0 -> 1424 bytes
.../resources/static/layui/images/face/69.gif | Bin 0 -> 2431 bytes
.../resources/static/layui/images/face/7.gif | Bin 0 -> 3398 bytes
.../resources/static/layui/images/face/70.gif | Bin 0 -> 4590 bytes
.../resources/static/layui/images/face/71.gif | Bin 0 -> 5304 bytes
.../resources/static/layui/images/face/8.gif | Bin 0 -> 4050 bytes
.../resources/static/layui/images/face/9.gif | Bin 0 -> 4221 bytes
.../static/layui/lay/modules/carousel.js | 2 +
.../static/layui/lay/modules/code.js | 2 +
.../static/layui/lay/modules/colorpicker.js | 2 +
.../static/layui/lay/modules/element.js | 2 +
.../static/layui/lay/modules/flow.js | 2 +
.../static/layui/lay/modules/form.js | 2 +
.../static/layui/lay/modules/jquery.js | 5 +
.../static/layui/lay/modules/laydate.js | 2 +
.../static/layui/lay/modules/layedit.js | 2 +
.../static/layui/lay/modules/layer.js | 2 +
.../static/layui/lay/modules/laypage.js | 2 +
.../static/layui/lay/modules/laytpl.js | 2 +
.../static/layui/lay/modules/mobile.js | 2 +
.../static/layui/lay/modules/rate.js | 2 +
.../static/layui/lay/modules/slider.js | 2 +
.../static/layui/lay/modules/table.js | 2 +
.../static/layui/lay/modules/transfer.js | 2 +
.../static/layui/lay/modules/tree.js | 2 +
.../static/layui/lay/modules/upload.js | 2 +
.../static/layui/lay/modules/util.js | 2 +
src/main/resources/static/layui/layui.js | 1 +
.../resources/template/Controller.java.vm | 87 +
src/main/resources/template/Dao.java.vm | 16 +
src/main/resources/template/Dao.xml.vm | 14 +
src/main/resources/template/Entity.java.vm | 46 +
src/main/resources/template/Service.java.vm | 16 +
.../resources/template/ServiceImpl.java.vm | 15 +
src/main/resources/template/list.html.vm | 235 +
src/main/resources/template/menu.sql.vm | 18 +
src/main/resources/templates/about.html | 50 +
src/main/resources/templates/build.html | 155 +
.../resources/templates/depts/dept_list.html | 265 +
src/main/resources/templates/error/403.html | 18 +
src/main/resources/templates/error/404.html | 24 +
src/main/resources/templates/error/500.html | 20 +
.../resources/templates/generator/list.html | 114 +
src/main/resources/templates/home.html | 230 +
src/main/resources/templates/layout.html | 27 +
src/main/resources/templates/login.html | 98 +
src/main/resources/templates/login2.html | 82 +
src/main/resources/templates/main.html | 173 +
.../resources/templates/menus/menu_list.html | 368 +
.../resources/templates/roles/role_list.html | 291 +
.../resources/templates/syscontent/list.html | 281 +
.../resources/templates/sysdict/list.html | 464 +
.../resources/templates/sysfiles/list.html | 152 +
.../templates/users/update_password.html | 68 +
.../resources/templates/users/user_edit.html | 106 +
.../resources/templates/users/user_list.html | 472 +
389 files changed, 60259 insertions(+)
create mode 100644 Dockerfile
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 doc/mysql.sql
create mode 100644 doc/oracle.sql
create mode 100644 doc/sqlServer.sql
create mode 100644 pom.xml
create mode 100644 src/main/java/vip/fuck/sm/SolonManagerApplication.java
create mode 100644 src/main/java/vip/fuck/sm/common/aop/annotation/LogAnnotation.java
create mode 100644 src/main/java/vip/fuck/sm/common/aop/aspect/LoggingRouterInterceptor.java
create mode 100644 src/main/java/vip/fuck/sm/common/config/GlobalResultInterceptor.java
create mode 100644 src/main/java/vip/fuck/sm/common/config/MetaObjectHandlerConfig.java
create mode 100644 src/main/java/vip/fuck/sm/common/config/MyBatisPlusConfig.java
create mode 100644 src/main/java/vip/fuck/sm/common/config/StpInterfaceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/common/config/SwaggerConfiguration.java
create mode 100644 src/main/java/vip/fuck/sm/common/config/WebMvcConfigurer.java
create mode 100644 src/main/java/vip/fuck/sm/common/exception/BusinessException.java
create mode 100644 src/main/java/vip/fuck/sm/common/exception/code/BaseResponseCode.java
create mode 100644 src/main/java/vip/fuck/sm/common/exception/code/ResponseCodeInterface.java
create mode 100644 src/main/java/vip/fuck/sm/common/exception/handler/AppFilter.java
create mode 100644 src/main/java/vip/fuck/sm/common/utils/AssertUtil.java
create mode 100644 src/main/java/vip/fuck/sm/common/utils/Constant.java
create mode 100644 src/main/java/vip/fuck/sm/common/utils/DataResult.java
create mode 100644 src/main/java/vip/fuck/sm/common/utils/DateUtils.java
create mode 100644 src/main/java/vip/fuck/sm/common/utils/GenUtils.java
create mode 100644 src/main/java/vip/fuck/sm/common/utils/PasswordEncoder.java
create mode 100644 src/main/java/vip/fuck/sm/common/utils/PasswordUtils.java
create mode 100644 src/main/java/vip/fuck/sm/controller/DeptController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/IndexController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/PermissionController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/RoleController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/SysContentController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/SysDictController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/SysDictDetailController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/SysFilesController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/SysGeneratorController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/SysLogController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/UserController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/UserRoleController.java
create mode 100644 src/main/java/vip/fuck/sm/controller/api/TestController.java
create mode 100644 src/main/java/vip/fuck/sm/entity/BasePageEntity.java
create mode 100644 src/main/java/vip/fuck/sm/entity/ColumnEntity.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysContentEntity.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysDept.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysDictDetailEntity.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysDictEntity.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysFilesEntity.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysGenerator.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysLog.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysPermission.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysRole.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysRoleDeptEntity.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysRolePermission.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysUser.java
create mode 100644 src/main/java/vip/fuck/sm/entity/SysUserRole.java
create mode 100644 src/main/java/vip/fuck/sm/entity/TableEntity.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/GeneratorMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysContentMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysDeptMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysDictDetailMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysDictMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysFilesMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysLogMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysPermissionMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysRoleDeptMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysRoleMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysRolePermissionMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysUserMapper.java
create mode 100644 src/main/java/vip/fuck/sm/mapper/SysUserRoleMapper.java
create mode 100644 src/main/java/vip/fuck/sm/service/DeptService.java
create mode 100644 src/main/java/vip/fuck/sm/service/HomeService.java
create mode 100644 src/main/java/vip/fuck/sm/service/ISysGeneratorService.java
create mode 100644 src/main/java/vip/fuck/sm/service/LogService.java
create mode 100644 src/main/java/vip/fuck/sm/service/PermissionService.java
create mode 100644 src/main/java/vip/fuck/sm/service/RolePermissionService.java
create mode 100644 src/main/java/vip/fuck/sm/service/RoleService.java
create mode 100644 src/main/java/vip/fuck/sm/service/SysContentService.java
create mode 100644 src/main/java/vip/fuck/sm/service/SysDictDetailService.java
create mode 100644 src/main/java/vip/fuck/sm/service/SysDictService.java
create mode 100644 src/main/java/vip/fuck/sm/service/SysFilesService.java
create mode 100644 src/main/java/vip/fuck/sm/service/SysRoleDeptService.java
create mode 100644 src/main/java/vip/fuck/sm/service/UserRoleService.java
create mode 100644 src/main/java/vip/fuck/sm/service/UserService.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/DeptServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/HomeServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/LogServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/PermissionServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/RolePermissionServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/RoleServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/SysContentServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/SysDictDetailServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/SysDictServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/SysFilesServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/SysGeneratorServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/SysRoleDeptServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/UserRoleServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/service/impl/UserServiceImpl.java
create mode 100644 src/main/java/vip/fuck/sm/vo/req/RolePermissionOperationReqVO.java
create mode 100644 src/main/java/vip/fuck/sm/vo/req/UserRoleOperationReqVO.java
create mode 100644 src/main/java/vip/fuck/sm/vo/resp/DeptRespNodeVO.java
create mode 100644 src/main/java/vip/fuck/sm/vo/resp/HomeRespVO.java
create mode 100644 src/main/java/vip/fuck/sm/vo/resp/LoginRespVO.java
create mode 100644 src/main/java/vip/fuck/sm/vo/resp/PermissionRespNode.java
create mode 100644 src/main/java/vip/fuck/sm/vo/resp/UserInfoRespVO.java
create mode 100644 src/main/java/vip/fuck/sm/vo/resp/UserOwnRoleRespVO.java
create mode 100644 src/main/resources/app.yml
create mode 100644 src/main/resources/generator.properties
create mode 100644 src/main/resources/mapper/mysql/SysGeneratorMapper.xml
create mode 100644 src/main/resources/mapper/oracle/SysGeneratorMapper.xml
create mode 100644 src/main/resources/mapper/sqlServer/SysGeneratorMapper.xml
create mode 100644 src/main/resources/static/css/403.css
create mode 100644 src/main/resources/static/css/404.css
create mode 100644 src/main/resources/static/css/500.css
create mode 100644 src/main/resources/static/css/build.css
create mode 100644 src/main/resources/static/css/custom.form.css
create mode 100644 src/main/resources/static/css/home.css
create mode 100644 src/main/resources/static/css/images/403.png
create mode 100644 src/main/resources/static/css/images/404.png
create mode 100644 src/main/resources/static/css/images/500.png
create mode 100644 src/main/resources/static/css/images/bg.jpg
create mode 100644 src/main/resources/static/css/login.css
create mode 100644 src/main/resources/static/css/login2.css
create mode 100644 src/main/resources/static/js/build.js
create mode 100644 src/main/resources/static/js/core.util.js
create mode 100644 src/main/resources/static/js/home.js
create mode 100644 src/main/resources/static/js/jq-module/jquery.particleground.min.js
create mode 100644 src/main/resources/static/js/jq-module/paigusu.min.js
create mode 100644 src/main/resources/static/js/jq-module/zyupload/zyupload-1.0.0.min.css
create mode 100644 src/main/resources/static/js/jq-module/zyupload/zyupload-1.0.0.min.js
create mode 100644 src/main/resources/static/js/jquery.js
create mode 100644 src/main/resources/static/layui-ext/cron/cron.css
create mode 100644 src/main/resources/static/layui-ext/cron/cron.js
create mode 100644 src/main/resources/static/layui-ext/eleTree/eleTree.js
create mode 100644 src/main/resources/static/layui-ext/icon/iconPicker.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/icons/default/icons.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/jquery.tinymce.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/langs/readme.md
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/langs/zh_CN.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/license.txt
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/advlist/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/advlist/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/anchor/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/anchor/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/autolink/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/autolink/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/autoresize/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/autoresize/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/autosave/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/autosave/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/bbcode/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/bbcode/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/charmap/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/charmap/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/code/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/code/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/codesample/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/codesample/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/colorpicker/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/colorpicker/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/contextmenu/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/contextmenu/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/directionality/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/directionality/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/emoticons/js/emojis.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/emoticons/js/emojis.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/emoticons/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/emoticons/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/fullpage/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/fullpage/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/fullscreen/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/fullscreen/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/help/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/help/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/hr/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/hr/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/image/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/image/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/imagetools/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/imagetools/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/importcss/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/importcss/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/indent2em/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/indent2em/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/insertdatetime/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/insertdatetime/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/legacyoutput/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/legacyoutput/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/link/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/link/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/lists/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/lists/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/media/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/media/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/nonbreaking/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/nonbreaking/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/noneditable/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/noneditable/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/pagebreak/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/pagebreak/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/paste/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/paste/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/preview/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/preview/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/print/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/print/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/quickbars/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/quickbars/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/save/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/save/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/searchreplace/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/searchreplace/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/spellchecker/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/spellchecker/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/tabfocus/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/tabfocus/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/table/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/table/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/template/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/template/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/textcolor/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/textcolor/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/textpattern/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/textpattern/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/toc/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/toc/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/visualblocks/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/visualblocks/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/visualchars/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/visualchars/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/wordcount/plugin.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/plugins/wordcount/plugin.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/content/dark/content.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/content/default/content.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/content/document/content.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/content/writer/content.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide-dark/content.inline.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide-dark/content.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide-dark/skin.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide/content.inline.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide/content.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide/content.mobile.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide/skin.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/skins/ui/oxide/skin.mobile.min.css
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/themes/mobile/theme.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/themes/silver/theme.min.js
create mode 100644 src/main/resources/static/layui-ext/tinymce/tinymce/tinymce.min.js
create mode 100644 src/main/resources/static/layui-ext/treetable-lay/treetable.css
create mode 100644 src/main/resources/static/layui-ext/treetable-lay/treetable.js
create mode 100644 src/main/resources/static/layui/css/layui.css
create mode 100644 src/main/resources/static/layui/css/layui.mobile.css
create mode 100644 src/main/resources/static/layui/css/modules/code.css
create mode 100644 src/main/resources/static/layui/css/modules/laydate/default/laydate.css
create mode 100644 src/main/resources/static/layui/css/modules/layer/default/icon-ext.png
create mode 100644 src/main/resources/static/layui/css/modules/layer/default/icon.png
create mode 100644 src/main/resources/static/layui/css/modules/layer/default/layer.css
create mode 100644 src/main/resources/static/layui/css/modules/layer/default/loading-0.gif
create mode 100644 src/main/resources/static/layui/css/modules/layer/default/loading-1.gif
create mode 100644 src/main/resources/static/layui/css/modules/layer/default/loading-2.gif
create mode 100644 src/main/resources/static/layui/font/iconfont.eot
create mode 100644 src/main/resources/static/layui/font/iconfont.svg
create mode 100644 src/main/resources/static/layui/font/iconfont.ttf
create mode 100644 src/main/resources/static/layui/font/iconfont.woff
create mode 100644 src/main/resources/static/layui/font/iconfont.woff2
create mode 100644 src/main/resources/static/layui/images/face/0.gif
create mode 100644 src/main/resources/static/layui/images/face/1.gif
create mode 100644 src/main/resources/static/layui/images/face/10.gif
create mode 100644 src/main/resources/static/layui/images/face/11.gif
create mode 100644 src/main/resources/static/layui/images/face/12.gif
create mode 100644 src/main/resources/static/layui/images/face/13.gif
create mode 100644 src/main/resources/static/layui/images/face/14.gif
create mode 100644 src/main/resources/static/layui/images/face/15.gif
create mode 100644 src/main/resources/static/layui/images/face/16.gif
create mode 100644 src/main/resources/static/layui/images/face/17.gif
create mode 100644 src/main/resources/static/layui/images/face/18.gif
create mode 100644 src/main/resources/static/layui/images/face/19.gif
create mode 100644 src/main/resources/static/layui/images/face/2.gif
create mode 100644 src/main/resources/static/layui/images/face/20.gif
create mode 100644 src/main/resources/static/layui/images/face/21.gif
create mode 100644 src/main/resources/static/layui/images/face/22.gif
create mode 100644 src/main/resources/static/layui/images/face/23.gif
create mode 100644 src/main/resources/static/layui/images/face/24.gif
create mode 100644 src/main/resources/static/layui/images/face/25.gif
create mode 100644 src/main/resources/static/layui/images/face/26.gif
create mode 100644 src/main/resources/static/layui/images/face/27.gif
create mode 100644 src/main/resources/static/layui/images/face/28.gif
create mode 100644 src/main/resources/static/layui/images/face/29.gif
create mode 100644 src/main/resources/static/layui/images/face/3.gif
create mode 100644 src/main/resources/static/layui/images/face/30.gif
create mode 100644 src/main/resources/static/layui/images/face/31.gif
create mode 100644 src/main/resources/static/layui/images/face/32.gif
create mode 100644 src/main/resources/static/layui/images/face/33.gif
create mode 100644 src/main/resources/static/layui/images/face/34.gif
create mode 100644 src/main/resources/static/layui/images/face/35.gif
create mode 100644 src/main/resources/static/layui/images/face/36.gif
create mode 100644 src/main/resources/static/layui/images/face/37.gif
create mode 100644 src/main/resources/static/layui/images/face/38.gif
create mode 100644 src/main/resources/static/layui/images/face/39.gif
create mode 100644 src/main/resources/static/layui/images/face/4.gif
create mode 100644 src/main/resources/static/layui/images/face/40.gif
create mode 100644 src/main/resources/static/layui/images/face/41.gif
create mode 100644 src/main/resources/static/layui/images/face/42.gif
create mode 100644 src/main/resources/static/layui/images/face/43.gif
create mode 100644 src/main/resources/static/layui/images/face/44.gif
create mode 100644 src/main/resources/static/layui/images/face/45.gif
create mode 100644 src/main/resources/static/layui/images/face/46.gif
create mode 100644 src/main/resources/static/layui/images/face/47.gif
create mode 100644 src/main/resources/static/layui/images/face/48.gif
create mode 100644 src/main/resources/static/layui/images/face/49.gif
create mode 100644 src/main/resources/static/layui/images/face/5.gif
create mode 100644 src/main/resources/static/layui/images/face/50.gif
create mode 100644 src/main/resources/static/layui/images/face/51.gif
create mode 100644 src/main/resources/static/layui/images/face/52.gif
create mode 100644 src/main/resources/static/layui/images/face/53.gif
create mode 100644 src/main/resources/static/layui/images/face/54.gif
create mode 100644 src/main/resources/static/layui/images/face/55.gif
create mode 100644 src/main/resources/static/layui/images/face/56.gif
create mode 100644 src/main/resources/static/layui/images/face/57.gif
create mode 100644 src/main/resources/static/layui/images/face/58.gif
create mode 100644 src/main/resources/static/layui/images/face/59.gif
create mode 100644 src/main/resources/static/layui/images/face/6.gif
create mode 100644 src/main/resources/static/layui/images/face/60.gif
create mode 100644 src/main/resources/static/layui/images/face/61.gif
create mode 100644 src/main/resources/static/layui/images/face/62.gif
create mode 100644 src/main/resources/static/layui/images/face/63.gif
create mode 100644 src/main/resources/static/layui/images/face/64.gif
create mode 100644 src/main/resources/static/layui/images/face/65.gif
create mode 100644 src/main/resources/static/layui/images/face/66.gif
create mode 100644 src/main/resources/static/layui/images/face/67.gif
create mode 100644 src/main/resources/static/layui/images/face/68.gif
create mode 100644 src/main/resources/static/layui/images/face/69.gif
create mode 100644 src/main/resources/static/layui/images/face/7.gif
create mode 100644 src/main/resources/static/layui/images/face/70.gif
create mode 100644 src/main/resources/static/layui/images/face/71.gif
create mode 100644 src/main/resources/static/layui/images/face/8.gif
create mode 100644 src/main/resources/static/layui/images/face/9.gif
create mode 100644 src/main/resources/static/layui/lay/modules/carousel.js
create mode 100644 src/main/resources/static/layui/lay/modules/code.js
create mode 100644 src/main/resources/static/layui/lay/modules/colorpicker.js
create mode 100644 src/main/resources/static/layui/lay/modules/element.js
create mode 100644 src/main/resources/static/layui/lay/modules/flow.js
create mode 100644 src/main/resources/static/layui/lay/modules/form.js
create mode 100644 src/main/resources/static/layui/lay/modules/jquery.js
create mode 100644 src/main/resources/static/layui/lay/modules/laydate.js
create mode 100644 src/main/resources/static/layui/lay/modules/layedit.js
create mode 100644 src/main/resources/static/layui/lay/modules/layer.js
create mode 100644 src/main/resources/static/layui/lay/modules/laypage.js
create mode 100644 src/main/resources/static/layui/lay/modules/laytpl.js
create mode 100644 src/main/resources/static/layui/lay/modules/mobile.js
create mode 100644 src/main/resources/static/layui/lay/modules/rate.js
create mode 100644 src/main/resources/static/layui/lay/modules/slider.js
create mode 100644 src/main/resources/static/layui/lay/modules/table.js
create mode 100644 src/main/resources/static/layui/lay/modules/transfer.js
create mode 100644 src/main/resources/static/layui/lay/modules/tree.js
create mode 100644 src/main/resources/static/layui/lay/modules/upload.js
create mode 100644 src/main/resources/static/layui/lay/modules/util.js
create mode 100644 src/main/resources/static/layui/layui.js
create mode 100644 src/main/resources/template/Controller.java.vm
create mode 100644 src/main/resources/template/Dao.java.vm
create mode 100644 src/main/resources/template/Dao.xml.vm
create mode 100644 src/main/resources/template/Entity.java.vm
create mode 100644 src/main/resources/template/Service.java.vm
create mode 100644 src/main/resources/template/ServiceImpl.java.vm
create mode 100644 src/main/resources/template/list.html.vm
create mode 100644 src/main/resources/template/menu.sql.vm
create mode 100644 src/main/resources/templates/about.html
create mode 100644 src/main/resources/templates/build.html
create mode 100644 src/main/resources/templates/depts/dept_list.html
create mode 100644 src/main/resources/templates/error/403.html
create mode 100644 src/main/resources/templates/error/404.html
create mode 100644 src/main/resources/templates/error/500.html
create mode 100644 src/main/resources/templates/generator/list.html
create mode 100644 src/main/resources/templates/home.html
create mode 100644 src/main/resources/templates/layout.html
create mode 100644 src/main/resources/templates/login.html
create mode 100644 src/main/resources/templates/login2.html
create mode 100644 src/main/resources/templates/main.html
create mode 100644 src/main/resources/templates/menus/menu_list.html
create mode 100644 src/main/resources/templates/roles/role_list.html
create mode 100644 src/main/resources/templates/syscontent/list.html
create mode 100644 src/main/resources/templates/sysdict/list.html
create mode 100644 src/main/resources/templates/sysfiles/list.html
create mode 100644 src/main/resources/templates/users/update_password.html
create mode 100644 src/main/resources/templates/users/user_edit.html
create mode 100644 src/main/resources/templates/users/user_list.html
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..a1e43ea
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,13 @@
+# 基础镜像
+FROM registry.cn-hangzhou.aliyuncs.com/wb_public/openjdk:8-jre
+# author
+MAINTAINER manager
+# 复制jar文件到路径
+ADD ./target/manager.jar ./
+# 时间
+RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
+RUN echo 'Asia/Shanghai' >/etc/timezone
+# 启动服务
+ENTRYPOINT ["java","-jar","/manager.jar"]
+# 暴露端口
+EXPOSE 8080
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..8eadaac
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 xian.zi.ming@qq.com fuck.vip
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..fe7d69c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,122 @@
+# solon-manager
+
+## 介绍
+基于Solon + Mybatis Plus + SaToken + Thymeleaf + Layui的后台管理系统
+接入Sa-Token,支持菜单权限
+数据库支持 MySQL、Oracle、sqlServer 等主流数据库
+提供代码生成器,基本增删改查无需编写,可快速完成开发任务。
+后台接口RESTful 风格,支持前后端分离,可与app公用一套接口。
+开发最精简,可当脚手架,适合你来 DIY
+**如果喜欢,防止您迷路, 请尽快Star项目。多了您的支持,更多了一份动力!感谢~**
+
+## 特征
+- 后台接口RESTful 风格,支持前后端分离,可与app公用一套接口
+- 采用RBAC的权限控制
+- 统一响应结果封装及生成工具 统一异常处理
+- 拥抱Sa-Token 实现角色权限认证,让鉴权变得简单、优雅!
+- 使用 Solon 集成Druid数据库连接池与监控
+- 集成MyBatis-Plus,实现单表业务零SQL
+- 集成国人风格的knife4j,自动生成接口文档
+- 提供代码生成器(MySQL、Oracle、sqlServer等主流数据库),生成从Html到Mapper,爽歪歪
+
+## 代码仓库 最新请移步gitee, github定期同步
+Gitee地址:[https://gitee.com/uidoer/solon-manager](https://gitee.com/uidoer/solon-manager)
+
+
+## 开发文档&项目演示
+- 开发文档:[开发文档wiki](https://gitee.com/uidoer/solon-manager/wikis/pages)
+- 演示地址:[solon-manager](http://1.94.23.145:9000/login)
+- **账号密码:admin/123456**
+
+
+## 代码结构
+```
+├─main
+│ ├─java
+│ │ └─vip
+│ │ └─fuck
+│ │ └─sm
+│ │ ├─CompanyProjectApplication.java 项目启动类
+│ │ ├─common 公共资源,如注解、切面、全局异常处理、组件集成、通用工具类等
+│ │ ├─controller Controler层
+│ │ ├─entity 实体类
+│ │ ├─mapper DAO层
+│ │ ├─service Service层
+│ │ │ └─impl Service层实现
+│ └─resources
+│ ├── app-dev.yml 开发环境配置文件
+│ ├── app-test.yml 测试环境配置文件
+│ ├── app-prod.yml 生产环境配置文件
+│ ├── app.yml 通用配置文件
+│ ├─mapper Mybatis XML文件
+│ ├─static 静态文件
+│ │ ├─css 通用css文件
+│ │ ├─images 静态图片
+│ │ ├─js 通用js文件
+│ │ ├─layui layui库
+│ │ └─layui-ext layui插件库
+│ ├─template 代码生成模版
+│ └─templates 项目页面目录
+│ ├─depts 部门管理
+│ ├─error 错误页面
+│ ├─generator 代码生成管理
+│ ├─logs 日志管理
+│ ├─menus 菜单管理
+│ ├─roles 角色管理
+│ ├─syscontent 内容管理
+│ ├─sysdict 字典管理
+│ ├─sysfiles 文件管理
+│ └─users 用户管理
+└─test
+ └─java
+ └─vip
+ └─fuck
+ └─sm 单元测试
+```
+
+## 开发建议
+- Model内成员变量建议与表字段数量对应,如需扩展成员变量(比如连表查询)建议创建VO,否则需在扩展的成员变量上加@TableField(exist = false)
+- 建议业务失败直接使用throw new BusinessException("ErrorMessage")抛出,由统一异常处理器来封装业务失败的响应结果,会直接被封装为{"code":500002,"message":"ErrorMessage"}返回,尽情抛出;
+- 数据库基础字段:id(bigint)、remark(varchar)、unable_flag(tinyint)、deleted(tinyint)、create_id(bigint)、update_id(bigint)、create_time(datetime)、update_time(datetime)
+
+## 使用说明
+- 使用IDE导入本项目,IDE需要安装lombok插件
+- 创建数据库, 如mysql数据库导入mysql.sql
+- 配置application-dev.yml中的数据库连接
+- 运行项目
+ 1. 直接运行CompanyProjectApplication.java
+ 2. 项目根目录下执行mvn -X clean package -Dmaven.test.skip=true编译打包,然后执行java -jar manager.jar
+- 登录地址 http://localhost:8080/index/login 用户名密码:admin/123456
+- 代码生成使用
+ 1. 逻辑删除字段,请统一用deleted字段: 0未删 1已删; 主键请统一格式: `id` varchar(50) 类型; 列名请勿使用数据库关键字
+ 2. application.yml中配置: 使用代码生成模块时 指定要生成的表存在于哪种数据库。project.database=mysql
+ 3. 点击[代码生成]菜单,生成一个或多个表的代码,下载到本地
+ 4. 解压下载的代码,直接复制main文件夹到本地项目的src目录下
+ 5. 数据库执行sql,生成菜单
+ 6. admin 刷新页面即刻查看
+
+## 技术文档
+* 核心框架:[Solon](https://spring.io/projects/spring-boot)
+* 持久层框架:[MyBatis-Plus](https://mybatis.plus)
+* 权限认证:[Sa-Token](https://sa-token.cc/doc.html#/)
+* 前端框架: [Layui](https://layui.dev/docs/2/)
+* 数据库连接池:[Alibaba Druid](https://github.com/alibaba/druid/)
+* 模板引擎:[Thymeleaf](https://www.thymeleaf.org/)
+* 阿里巴巴Java开发手册[最新版下载](https://github.com/alibaba/p3c)
+
+## 参与贡献
+1. Fork 本项目
+2. 新建 feature_xxx 分支
+3. 提交代码
+4. 提交 Pull Request
+
+## **效果图**
+
+
+### 捐赠
+> 项目的发展离不开您的支持, 如果您够宽裕,请作者喝杯咖啡吧!
+
+### 交流群
+> 如果大家有疑难杂症,技术交流, 可以加我拉你们进群, 务必备注: 开源
+微信: www_fuck_vip
+
diff --git a/doc/mysql.sql b/doc/mysql.sql
new file mode 100644
index 0000000..71650ea
--- /dev/null
+++ b/doc/mysql.sql
@@ -0,0 +1,311 @@
+-- 部门
+DROP TABLE IF EXISTS sys_dept;
+CREATE TABLE sys_dept (
+ id varchar(64) NOT NULL COMMENT '主键',
+ dept_no varchar(18) DEFAULT NULL COMMENT '部门编号(规则:父级关系编码+自己的编码)',
+ name varchar(300) DEFAULT NULL COMMENT '部门名称',
+ pid varchar(64) NOT NULL COMMENT '父级id',
+ status tinyint(4) COMMENT '状态(1:正常;0:弃用)',
+ relation_code varchar(3000) DEFAULT NULL COMMENT '为了维护更深层级关系',
+ dept_manager_id varchar(64) DEFAULT NULL COMMENT '部门经理user_id',
+ manager_name varchar(255) DEFAULT NULL COMMENT '部门经理名称',
+ phone varchar(20) DEFAULT NULL COMMENT '部门经理联系电话',
+ create_time datetime DEFAULT NULL COMMENT '创建时间',
+ update_time datetime DEFAULT NULL COMMENT '更新时间',
+ deleted tinyint(4) COMMENT '是否删除(1未删除;0已删除)',
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统部门';
+
+-- 系统日志
+DROP TABLE IF EXISTS sys_log;
+CREATE TABLE sys_log (
+ id varchar(64) NOT NULL,
+ user_id varchar(64) DEFAULT NULL COMMENT '用户id',
+ username varchar(50) DEFAULT NULL COMMENT '用户名',
+ operation varchar(50) DEFAULT NULL COMMENT '用户操作',
+ time int(11) DEFAULT NULL COMMENT '响应时间',
+ method varchar(200) DEFAULT NULL COMMENT '请求方法',
+ params varchar(5000) DEFAULT NULL COMMENT '请求参数',
+ ip varchar(64) DEFAULT NULL COMMENT 'IP地址',
+ create_time datetime DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统日志';
+
+-- 菜单权限
+DROP TABLE IF EXISTS sys_permission;
+CREATE TABLE sys_permission (
+ id varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键',
+ name varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单权限名称',
+ perms varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '授权(多个用逗号分隔,如:sys:user:add,sys:user:edit)',
+ icon varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标',
+ url varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '访问地址URL',
+ target varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'a target属性:_self _blank',
+ pid varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父级菜单权限名称',
+ order_num int(11) NULL COMMENT '排序',
+ type tinyint(4) NULL DEFAULT NULL COMMENT '菜单权限类型(1:目录;2:菜单;3:按钮)',
+ status tinyint(4) NULL COMMENT '状态1:正常 0:禁用',
+ create_time datetime NULL DEFAULT NULL COMMENT '创建时间',
+ update_time datetime NULL DEFAULT NULL COMMENT '更新时间',
+ deleted tinyint(4) NULL COMMENT '是否删除(1未删除;0已删除)',
+ PRIMARY KEY (id) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统权限' ROW_FORMAT = Compact;
+
+-- 角色
+DROP TABLE IF EXISTS sys_role;
+CREATE TABLE sys_role (
+ id varchar(64) NOT NULL COMMENT '主键',
+ name varchar(255) DEFAULT NULL COMMENT '角色名称',
+ description varchar(300) DEFAULT NULL,
+ status tinyint(4) COMMENT '状态(1:正常0:弃用)',
+ create_time datetime DEFAULT NULL COMMENT '创建时间',
+ update_time datetime DEFAULT NULL COMMENT '更新时间',
+ deleted tinyint(4) COMMENT '是否删除(1未删除;0已删除)',
+ data_scope int COMMENT '数据范围(1:所有 2:自定义 3: 本部门及以下部门 4:仅本部门 5:自己)',
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统角色';
+
+-- 角色部门
+DROP TABLE IF EXISTS sys_role_dept;
+CREATE TABLE sys_role_dept (
+ id varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键',
+ role_id varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色id',
+ dept_id varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门id',
+ create_time datetime NULL DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (id) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色部门' ROW_FORMAT = Compact;
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+
+-- 角色权限关联
+DROP TABLE IF EXISTS sys_role_permission;
+CREATE TABLE sys_role_permission (
+ id varchar(64) NOT NULL COMMENT '主键',
+ role_id varchar(64) DEFAULT NULL COMMENT '角色id',
+ permission_id varchar(64) DEFAULT NULL COMMENT '菜单权限id',
+ create_time datetime DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- 用户表
+DROP TABLE IF EXISTS sys_user;
+CREATE TABLE sys_user (
+ id varchar(64) NOT NULL COMMENT '用户id',
+ username varchar(50) NOT NULL COMMENT '账户名称',
+ salt varchar(20) DEFAULT NULL COMMENT '加密盐值',
+ password varchar(200) NOT NULL COMMENT '用户密码密文',
+ phone varchar(20) DEFAULT NULL COMMENT '手机号码',
+ dept_id varchar(64) DEFAULT NULL COMMENT '部门id',
+ real_name varchar(60) DEFAULT NULL COMMENT '真实名称',
+ nick_name varchar(60) DEFAULT NULL COMMENT '昵称',
+ email varchar(50) DEFAULT NULL COMMENT '邮箱(唯一)',
+ status tinyint(4) COMMENT '账户状态(1.正常 0.锁定 )',
+ sex tinyint(4) COMMENT '性别(1.男 2.女)',
+ deleted tinyint(4) COMMENT '是否删除(1未删除;0已删除)',
+ create_id varchar(64) DEFAULT NULL COMMENT '创建人',
+ update_id varchar(64) DEFAULT NULL COMMENT '更新人',
+ create_where tinyint(4) COMMENT '创建来源(1.web 2.android 3.ios )',
+ create_time datetime DEFAULT NULL COMMENT '创建时间',
+ update_time datetime DEFAULT NULL,
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统用户';
+
+-- 用户角色关联表
+DROP TABLE IF EXISTS sys_user_role;
+CREATE TABLE sys_user_role (
+ id varchar(64) NOT NULL COMMENT '用户id',
+ user_id varchar(64) DEFAULT NULL,
+ role_id varchar(64) DEFAULT NULL COMMENT '角色id',
+ create_time datetime DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统用户角色';
+
+-- 数据字典表
+DROP TABLE IF EXISTS sys_dict;
+CREATE TABLE sys_dict (
+ id varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ name varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典名称',
+ remark varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述',
+ create_time datetime NULL DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (id) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据字典表' ROW_FORMAT = Compact;
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+
+
+-- 数据字典详情
+DROP TABLE IF EXISTS sys_dict_detail;
+CREATE TABLE sys_dict_detail (
+ id varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ label varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典标签',
+ value varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典值',
+ sort smallint(6) NULL DEFAULT NULL COMMENT '排序',
+ dict_id varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典id',
+ create_time datetime NULL DEFAULT NULL COMMENT '创建日期',
+ PRIMARY KEY (id) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据字典详情' ROW_FORMAT = Compact;
+
+SET FOREIGN_KEY_CHECKS = 1;
+
+
+-- 2020.5.27添加文章管理
+DROP TABLE IF EXISTS sys_content;
+CREATE TABLE sys_content (
+ id varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主键',
+ title varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '标题',
+ one_img varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '单图url',
+ multiple_img varchar(500) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '多图url',
+ keywords varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '关键字',
+ type int(11) DEFAULT NULL COMMENT '文章类型',
+ content longtext CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT '内容',
+ create_time datetime NULL DEFAULT NULL COMMENT '创建时间',
+ create_id varchar(50) NULL DEFAULT NULL COMMENT '创建人',
+ PRIMARY KEY (id) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '文章管理' ROW_FORMAT = Compact;
+
+-- 2020.6.15添加文件管理
+DROP TABLE IF EXISTS sys_files;
+CREATE TABLE sys_files (
+ id varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ url varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'URL地址',
+ create_date datetime NULL DEFAULT NULL COMMENT '创建时间',
+ file_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名称',
+ file_path varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ PRIMARY KEY (id) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '文件上传' ROW_FORMAT = Compact;
+
+
+-- 初始数据
+INSERT INTO sys_dept(id, dept_no, name, pid, status, relation_code, dept_manager_id, manager_name, phone, deleted) VALUES ('1', 'D000001', '总公司', '0', 1, 'D000001', NULL, '小李', '13888888888', 1);
+INSERT INTO sys_permission VALUES ('1', '删除', 'sysGenerator:delete', NULL, 'sysGenerator/delete', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('10', '赋予角色', 'sys:user:role:update', NULL, 'sys/user/roles/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('11', '菜单权限管理', NULL, NULL, 'index/menus', '_self', '51', 98, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('12', '列表', 'sys:dept:list', NULL, 'sys/depts', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('13', '删除', 'sys:role:deleted', NULL, 'sys/role/*', NULL, '53', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('1311115974068449281', '数据权限', 'sys:role:bindDept', '', 'sys/role/bindDept', '_self', '53', 5, 3, 1, '2020-09-30 09:29:42', NULL, 1);
+INSERT INTO sys_permission VALUES ('15', '代码生成', NULL, NULL, 'index/sysGenerator', '_self', '54', 1, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('16', '列表', 'sysGenerator:list', NULL, 'sysGenerator/listByPage', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('17', '详情', 'sys:permission:detail', NULL, 'sys/permission/*', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('19', '列表', 'sys:role:list', NULL, 'sys/roles', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('2', 'SQL 监控', '', '', 'druid/sql.html', '_self', '21', 98, 2, 1, '2020-03-19 13:29:40', '2020-05-07 13:36:59', 1);
+INSERT INTO sys_permission VALUES ('20', '修改', 'sysGenerator:update', NULL, 'sysGenerator/update', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('21', '其他', NULL, 'layui-icon-list', NULL, NULL, '0', 200, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('22', '详情', 'sys:dept:detail', NULL, 'sys/dept/*', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('23', '列表', 'sys:user:list', NULL, 'sys/users', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('24', '用户管理', NULL, NULL, 'index/users', '_self', '51', 100, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('25', '详情', 'sys:user:detail', NULL, 'sys/user/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('26', '删除', 'sys:permission:deleted', NULL, 'sys/permission/*', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('27', '文件管理', '', '', 'index/sysFiles', '_self', '54', 10, 2, 1, NULL, '2020-06-15 16:00:29', 1);
+INSERT INTO sys_permission VALUES ('28', '列表', 'sysFiles:list', NULL, 'sysFiles/listByPage', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('29', '新增', 'sysFiles:add', NULL, 'sysFiles/add', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('3', '新增', 'sys:role:add', NULL, 'sys/role', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('30', '删除', 'sysFiles:delete', NULL, 'sysFiles/delete', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('31', '文章管理', NULL, NULL, 'index/sysContent', '_self', '54', 10, 2, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('32', '列表', 'sysContent:list', NULL, 'sysContent/listByPage', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('33', '新增', 'sysContent:add', NULL, 'sysContent/add', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('34', '修改', 'sysContent:update', NULL, 'sysContent/update', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('35', '删除', 'sysContent:delete', NULL, 'sysContent/delete', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('36', '更新', 'sys:role:update', NULL, 'sys/role', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('38', '更新', 'sys:dept:update', NULL, 'sys/dept', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('39', '详情', 'sys:role:detail', NULL, 'sys/role/*', NULL, '53', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('4', '添加', 'sysGenerator:add', NULL, 'sysGenerator/add', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('40', '编辑', 'sys:permission:update', NULL, 'sys/permission', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('41', '部门管理', NULL, NULL, 'index/depts', '_self', '51', 100, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('42', '新增', 'sys:user:add', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('43', '列表', 'sys:permission:list', NULL, 'sys/permissions', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('44', '新增', 'sys:permission:add', NULL, 'sys/permission', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('45', '字典管理', NULL, '', 'index/sysDict', NULL, '54', 10, 2, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('46', '列表', 'sysDict:list', NULL, 'sysDict/listByPage', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('47', '新增', 'sysDict:add', NULL, 'sysDict/add', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('48', '修改', 'sysDict:update', NULL, 'sysDict/update', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('49', '删除', 'sysDict:delete', NULL, 'sysDict/delete', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('5', '删除', 'sys:dept:deleted', NULL, 'sys/dept/*', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('50', '表单构建', '', '', 'index/build', '_self', '21', 1, 2, 1, '2020-04-22 13:09:41', '2020-05-07 13:36:47', 1);
+INSERT INTO sys_permission VALUES ('51', '组织管理', NULL, 'layui-icon-user', NULL, NULL, '0', 1, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('52', '拥有角色', 'sys:user:role:detail', NULL, 'sys/user/roles/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('53', '角色管理', NULL, NULL, 'index/roles', '_self', '51', 99, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('54', '系统管理', NULL, 'layui-icon-set-fill', NULL, NULL, '0', 98, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('56', '更新', 'sys:user:update', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('57', '删除', 'sys:user:deleted', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('58', '删除', 'sys:log:deleted', NULL, 'sys/logs', NULL, '8', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('6', '接口管理', '', '', 'doc.html', '_blank', '21', 100, 2, 1, '2020-03-19 13:29:40', '2020-05-07 13:36:02', 1);
+INSERT INTO sys_permission VALUES ('7', '列表', 'sys:log:list', NULL, 'sys/logs', NULL, '8', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('8', '日志管理', NULL, NULL, 'index/logs', '_self', '54', 97, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('9', '新增', 'sys:dept:add', NULL, 'sys/dept', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_role(id, name, description, status, create_time, update_time, deleted) VALUES ('1', '超级管理员', '拥有所有权限-不能删除', 1, '2019-11-01 19:26:29', '2020-03-19 13:29:51', 1);
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('1', '1', '1', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('10', '1', '10', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('11', '1', '11', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('12', '1', '12', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('13', '1', '13', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('14', '1', '14', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('15', '1', '15', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('16', '1', '16', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('17', '1', '17', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('18', '1', '18', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('19', '1', '19', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('2', '1', '2', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('20', '1', '20', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('21', '1', '21', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('22', '1', '22', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('23', '1', '23', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('24', '1', '24', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('25', '1', '25', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('26', '1', '26', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('27', '1', '27', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('28', '1', '28', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('29', '1', '29', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('3', '1', '3', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('30', '1', '30', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('31', '1', '31', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('32', '1', '32', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('33', '1', '33', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('34', '1', '34', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('35', '1', '35', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('36', '1', '36', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('38', '1', '38', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('39', '1', '39', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('4', '1', '4', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('40', '1', '40', '2020-06-15 15:21:17');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('41', '1', '41', '2020-06-15 15:21:17');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('42', '1', '42', '2020-06-15 15:21:17');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('43', '1', '43', '2020-06-15 15:21:17');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('44', '1', '44', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('45', '1', '45', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('46', '1', '46', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('47', '1', '47', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('48', '1', '48', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('49', '1', '49', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('5', '1', '5', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('50', '1', '50', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('51', '1', '51', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('52', '1', '52', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('53', '1', '53', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('54', '1', '54', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('55', '1', '55', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('56', '1', '56', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('57', '1', '57', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('58', '1', '58', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('6', '1', '6', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('60', '1', '60', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('61', '1', '61', '2020-05-26 14:21:56');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('62', '1', '62', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('63', '1', '63', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('7', '1', '7', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('8', '1', '8', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('9', '1', '9', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('1311116066716430339', '1', '1311115974068449281', '2020-09-30 09:30:04');
+
+INSERT INTO sys_user(id, username, salt, password, phone, dept_id, real_name, nick_name, email, status, sex, deleted, create_id, update_id, create_where, create_time, update_time) VALUES ('1', 'admin', '324ce32d86224b00a02b', '2102b59a75ab87616b62d0b9432569d0', '13888888888', '1', '爱糖宝', '爱糖宝', 'xxxxxx@163.com', 1, 2, 1, '1', '1', 3, '2019-09-22 19:38:05', '2020-03-18 09:15:22');
+INSERT INTO sys_user_role(id, user_id, role_id, create_time) VALUES ('1', '1', '1', '2020-03-19 02:23:13');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1255790029680242690', 'sex', '性别', '2020-04-30 17:24:09');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1255790029680242691', 'content_keyword', '关键字', '2020-04-30 17:24:09');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1282504369620430849', 'content_type', '文章类型略略略', '2020-07-13 10:37:24');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1255790073535885314', '男', '1', 1, '1255790029680242690', '2020-04-30 17:24:19');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1255790100115189761', '女', '2', 2, '1255790029680242690', '2020-04-30 17:24:25');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282504475715350530', '诗词', '1', 1, '1282504369620430849', '2020-07-13 10:37:49');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282504651729317889', '散文', '2', 2, '1282504369620430849', '2020-07-13 10:38:31');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842369', '剧本', '3', 3, '1282504369620430849', '2020-07-14 09:15:01');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842370', 'java', '1', 1, '1255790029680242691', '2020-07-14 09:15:01');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842371', 'mysql', '2', 2, '1255790029680242691', '2020-07-14 09:15:01');
diff --git a/doc/oracle.sql b/doc/oracle.sql
new file mode 100644
index 0000000..215cf8a
--- /dev/null
+++ b/doc/oracle.sql
@@ -0,0 +1,302 @@
+-- 部门
+CREATE TABLE sys_dept (
+ id varchar2(64),
+ dept_no varchar2(64),
+ name varchar2(64),
+ pid varchar2(64),
+ status NUMBER(10, 0),
+ relation_code varchar2(3000),
+ dept_manager_id varchar2(64),
+ manager_name varchar2(255),
+ phone varchar2(20),
+ create_time date,
+ update_time date,
+ deleted NUMBER(10, 0),
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_dept IS '部门';
+
+-- 日志
+CREATE TABLE sys_log (
+ id varchar2(64),
+ user_id varchar2(64),
+ username varchar2(50),
+ operation varchar2(50),
+ time NUMBER(10, 0),
+ method varchar2(200),
+ params varchar2(1000),
+ ip varchar2(64),
+ create_time date,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_log IS '日志';
+
+-- 菜单权限
+CREATE TABLE sys_permission (
+ id varchar2(64) ,
+ name varchar2(300),
+ perms varchar2(500) ,
+ icon varchar2(255),
+ url varchar2(100),
+ target varchar2(50),
+ pid varchar2(64),
+ order_num NUMBER(10, 0),
+ type NUMBER(10, 0),
+ status NUMBER(10, 0),
+ create_time date,
+ update_time date,
+ deleted NUMBER(10, 0),
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_permission IS '菜单权限';
+
+-- 角色
+CREATE TABLE sys_role (
+ id varchar2(64),
+ name varchar2(255),
+ description varchar2(255),
+ status NUMBER(10, 0),
+ create_time date,
+ update_time date,
+ deleted NUMBER(10, 0),
+ data_scope NUMBER(10, 0),
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_role IS '角色';
+
+-- 角色权限关联表
+CREATE TABLE sys_role_permission (
+ id varchar2(64) ,
+ role_id varchar2(64),
+ permission_id varchar2(64),
+ create_time date,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_role_permission IS '角色权限关联表';
+
+-- 角色部门关联表
+CREATE TABLE sys_role_dept (
+ id varchar2(64) ,
+ role_id varchar2(64),
+ dept_id varchar2(64),
+ create_time date,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_role_permission IS '角色部门关联表';
+
+
+-- 用户
+CREATE TABLE sys_user (
+ id varchar2(64),
+ username varchar2(50),
+ salt varchar2(20),
+ password varchar2(200),
+ phone varchar2(20),
+ dept_id varchar2(64),
+ real_name varchar2(60),
+ nick_name varchar2(60),
+ email varchar2(50),
+ status NUMBER(10, 0),
+ sex NUMBER(10, 0),
+ deleted NUMBER(10, 0),
+ create_id varchar2(64),
+ update_id varchar2(64),
+ create_where NUMBER(10, 0) DEFAULT 1,
+ create_time date,
+ update_time date,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_user IS '用户';
+
+-- 用户角色
+CREATE TABLE sys_user_role (
+ id varchar2(64),
+ user_id varchar2(64),
+ role_id varchar2(64),
+ create_time date,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_user_role IS '用户角色';
+
+
+-- 数据字典
+CREATE TABLE sys_dict (
+ id varchar2(64) ,
+ name varchar2(100) ,
+ remark varchar2(255) ,
+ create_time date,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_dict IS '数据字典';
+
+-- 数据字典明细
+CREATE TABLE sys_dict_detail (
+ id varchar2(50) ,
+ label varchar2(255) ,
+ value varchar2(255) ,
+ sort NUMBER(10, 0) ,
+ dict_id varchar2(50) ,
+ create_time date,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_dict_detail IS '数据字典明细';
+
+-- 文章管理
+ CREATE TABLE sys_content (
+ id varchar2(50),
+ title varchar2(255),
+ one_img varchar2(255),
+ multiple_img varchar2(500),
+ keywords varchar2(255),
+ type NUMBER(10, 0),
+ content VARCHAR2(4000) ,
+ create_time date ,
+ create_id varchar2(50) ,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_content IS '文章管理';
+
+-- 文件管理
+CREATE TABLE sys_files (
+ id varchar2(50) ,
+ url varchar2(200),
+ create_date date ,
+ file_name varchar2(255),
+ file_path varchar2(255) ,
+ PRIMARY KEY (id)
+);
+COMMENT ON TABLE sys_files IS '文件管理';
+
+
+-- 初始数据
+INSERT INTO sys_dept(id, dept_no, name, pid, status, relation_code, dept_manager_id, manager_name, phone, deleted) VALUES ('1', 'D000001', '总公司', '0', 1, 'D000001', NULL, '小李', '13888888888', 1);
+INSERT INTO sys_permission VALUES ('1', '删除', 'sysGenerator:delete', NULL, 'sysGenerator/delete', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('10', '赋予角色', 'sys:user:role:update', NULL, 'sys/user/roles/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('11', '菜单权限管理', NULL, NULL, 'index/menus', '_self', '51', 98, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('12', '列表', 'sys:dept:list', NULL, 'sys/depts', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('13', '删除', 'sys:role:deleted', NULL, 'sys/role/*', NULL, '53', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('1311115974068449281', '数据权限', 'sys:role:bindDept', '', 'sys/role/bindDept', '_self', '53', 5, 3, 1, '2020-09-30 09:29:42', NULL, 1);
+INSERT INTO sys_permission VALUES ('15', '代码生成', NULL, NULL, 'index/sysGenerator', '_self', '54', 1, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('16', '列表', 'sysGenerator:list', NULL, 'sysGenerator/listByPage', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('17', '详情', 'sys:permission:detail', NULL, 'sys/permission/*', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('19', '列表', 'sys:role:list', NULL, 'sys/roles', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('2', 'SQL 监控', '', '', 'druid/sql.html', '_self', '21', 98, 2, 1, '2020-03-19 13:29:40', '2020-05-07 13:36:59', 1);
+INSERT INTO sys_permission VALUES ('20', '修改', 'sysGenerator:update', NULL, 'sysGenerator/update', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('21', '其他', NULL, 'layui-icon-list', NULL, NULL, '0', 200, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('22', '详情', 'sys:dept:detail', NULL, 'sys/dept/*', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('23', '列表', 'sys:user:list', NULL, 'sys/users', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('24', '用户管理', NULL, NULL, 'index/users', '_self', '51', 100, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('25', '详情', 'sys:user:detail', NULL, 'sys/user/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('26', '删除', 'sys:permission:deleted', NULL, 'sys/permission/*', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('27', '文件管理', '', '', 'index/sysFiles', '_self', '54', 10, 2, 1, NULL, '2020-06-15 16:00:29', 1);
+INSERT INTO sys_permission VALUES ('28', '列表', 'sysFiles:list', NULL, 'sysFiles/listByPage', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('29', '新增', 'sysFiles:add', NULL, 'sysFiles/add', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('3', '新增', 'sys:role:add', NULL, 'sys/role', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('30', '删除', 'sysFiles:delete', NULL, 'sysFiles/delete', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('31', '文章管理', NULL, NULL, 'index/sysContent', '_self', '54', 10, 2, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('32', '列表', 'sysContent:list', NULL, 'sysContent/listByPage', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('33', '新增', 'sysContent:add', NULL, 'sysContent/add', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('34', '修改', 'sysContent:update', NULL, 'sysContent/update', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('35', '删除', 'sysContent:delete', NULL, 'sysContent/delete', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('36', '更新', 'sys:role:update', NULL, 'sys/role', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('38', '更新', 'sys:dept:update', NULL, 'sys/dept', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('39', '详情', 'sys:role:detail', NULL, 'sys/role/*', NULL, '53', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('4', '添加', 'sysGenerator:add', NULL, 'sysGenerator/add', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('40', '编辑', 'sys:permission:update', NULL, 'sys/permission', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('41', '部门管理', NULL, NULL, 'index/depts', '_self', '51', 100, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('42', '新增', 'sys:user:add', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('43', '列表', 'sys:permission:list', NULL, 'sys/permissions', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('44', '新增', 'sys:permission:add', NULL, 'sys/permission', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('45', '字典管理', NULL, '', 'index/sysDict', NULL, '54', 10, 2, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('46', '列表', 'sysDict:list', NULL, 'sysDict/listByPage', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('47', '新增', 'sysDict:add', NULL, 'sysDict/add', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('48', '修改', 'sysDict:update', NULL, 'sysDict/update', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('49', '删除', 'sysDict:delete', NULL, 'sysDict/delete', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('5', '删除', 'sys:dept:deleted', NULL, 'sys/dept/*', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('50', '表单构建', '', '', 'index/build', '_self', '21', 1, 2, 1, '2020-04-22 13:09:41', '2020-05-07 13:36:47', 1);
+INSERT INTO sys_permission VALUES ('51', '组织管理', NULL, 'layui-icon-user', NULL, NULL, '0', 1, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('52', '拥有角色', 'sys:user:role:detail', NULL, 'sys/user/roles/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('53', '角色管理', NULL, NULL, 'index/roles', '_self', '51', 99, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('54', '系统管理', NULL, 'layui-icon-set-fill', NULL, NULL, '0', 98, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('56', '更新', 'sys:user:update', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('57', '删除', 'sys:user:deleted', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('58', '删除', 'sys:log:deleted', NULL, 'sys/logs', NULL, '8', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('6', '接口管理', '', '', 'doc.html', '_blank', '21', 100, 2, 1, '2020-03-19 13:29:40', '2020-05-07 13:36:02', 1);
+INSERT INTO sys_permission VALUES ('7', '列表', 'sys:log:list', NULL, 'sys/logs', NULL, '8', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('8', '日志管理', NULL, NULL, 'index/logs', '_self', '54', 97, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('9', '新增', 'sys:dept:add', NULL, 'sys/dept', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_role(id, name, description, status, deleted) VALUES ('1', '超级管理员', '拥有所有权限-不能删除', 1, 1);
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('1', '1', '1');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('10', '1', '10');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('11', '1', '11');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('12', '1', '12');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('13', '1', '13');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('14', '1', '14');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('15', '1', '15');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('16', '1', '16');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('17', '1', '17');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('18', '1', '18');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('19', '1', '19');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('2', '1', '2');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('20', '1', '20');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('21', '1', '21');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('22', '1', '22');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('23', '1', '23');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('24', '1', '24');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('25', '1', '25');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('26', '1', '26');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('27', '1', '27');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('28', '1', '28');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('29', '1', '29');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('3', '1', '3');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('30', '1', '30');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('31', '1', '31');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('32', '1', '32');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('33', '1', '33');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('34', '1', '34');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('35', '1', '35');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('36', '1', '36');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('38', '1', '38');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('39', '1', '39');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('4', '1', '4');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('40', '1', '40');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('41', '1', '41');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('42', '1', '42');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('43', '1', '43');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('44', '1', '44');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('45', '1', '45');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('46', '1', '46');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('47', '1', '47');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('48', '1', '48');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('49', '1', '49');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('5', '1', '5');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('50', '1', '50');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('51', '1', '51');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('52', '1', '52');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('53', '1', '53');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('54', '1', '54');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('55', '1', '55');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('56', '1', '56');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('57', '1', '57');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('58', '1', '58');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('6', '1', '6');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('60', '1', '60');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('61', '1', '61');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('62', '1', '62');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('63', '1', '63');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('7', '1', '7');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('8', '1', '8');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('9', '1', '9');
+INSERT INTO sys_role_permission(id, role_id, permission_id) VALUES ('1311116066716430339', '1', '1311115974068449281');
+INSERT INTO sys_user(id, username, salt, password, phone, dept_id, real_name, nick_name, email, status, sex, deleted, create_id, update_id, create_where) VALUES ('1', 'admin', '324ce32d86224b00a02b', '2102b59a75ab87616b62d0b9432569d0', '13888888888', '1', '爱糖宝', '爱糖宝', 'xxxxxx@163.com', 1, 2, 1, '1', '1', 3);
+INSERT INTO sys_user_role(id, user_id, role_id) VALUES ('1', '1', '1');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1255790029680242690', 'sex', '性别', '2020-04-30 17:24:09');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1255790029680242691', 'content_keyword', '关键字', '2020-04-30 17:24:09');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1282504369620430849', 'content_type', '文章类型略略略', '2020-07-13 10:37:24');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1255790073535885314', '男', '1', 1, '1255790029680242690', '2020-04-30 17:24:19');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1255790100115189761', '女', '2', 2, '1255790029680242690', '2020-04-30 17:24:25');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282504475715350530', '诗词', '1', 1, '1282504369620430849', '2020-07-13 10:37:49');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282504651729317889', '散文', '2', 2, '1282504369620430849', '2020-07-13 10:38:31');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842369', '剧本', '3', 3, '1282504369620430849', '2020-07-14 09:15:01');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842370', 'java', '1', 1, '1255790029680242691', '2020-07-14 09:15:01');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842371', 'mysql', '2', 2, '1255790029680242691', '2020-07-14 09:15:01');
diff --git a/doc/sqlServer.sql b/doc/sqlServer.sql
new file mode 100644
index 0000000..ce8e98d
--- /dev/null
+++ b/doc/sqlServer.sql
@@ -0,0 +1,295 @@
+-- 部门
+CREATE TABLE sys_dept (
+ id varchar(64),
+ dept_no varchar(64),
+ name varchar(64),
+ pid varchar(64),
+ status int,
+ relation_code varchar(3000),
+ dept_manager_id varchar(64),
+ manager_name varchar(255),
+ phone varchar(20),
+ create_time datetime,
+ update_time datetime,
+ deleted int,
+ PRIMARY KEY (id)
+);
+
+-- 日志
+CREATE TABLE sys_log (
+ id varchar(64),
+ user_id varchar(64),
+ username varchar(50),
+ operation varchar(50),
+ time int,
+ method varchar(200),
+ params varchar(1000),
+ ip varchar(64),
+ create_time datetime,
+ PRIMARY KEY (id)
+);
+
+
+-- 菜单权限
+CREATE TABLE sys_permission (
+ id varchar(64) ,
+ name varchar(300),
+ perms varchar(500) ,
+ icon varchar(255),
+ url varchar(100),
+ target varchar(50),
+ pid varchar(64),
+ order_num int,
+ type int,
+ status int,
+ create_time datetime,
+ update_time datetime,
+ deleted int,
+ PRIMARY KEY (id)
+);
+
+
+-- 角色
+CREATE TABLE sys_role (
+ id varchar(64),
+ name varchar(255),
+ description varchar(255),
+ status int,
+ create_time datetime,
+ update_time datetime,
+ deleted int,
+ data_scope int,
+ PRIMARY KEY (id)
+);
+
+-- 角色部门关联表
+CREATE TABLE sys_role_dept (
+ id varchar(64) ,
+ role_id varchar(64),
+ dept_id varchar(64),
+ create_time datetime,
+ PRIMARY KEY (id)
+);
+
+
+
+-- 角色权限关联表
+CREATE TABLE sys_role_permission (
+ id varchar(64) ,
+ role_id varchar(64),
+ permission_id varchar(64),
+ create_time datetime,
+ PRIMARY KEY (id)
+);
+
+
+-- 用户
+CREATE TABLE sys_user (
+ id varchar(64),
+ username varchar(50),
+ salt varchar(20),
+ password varchar(200),
+ phone varchar(20),
+ dept_id varchar(64),
+ real_name varchar(60),
+ nick_name varchar(60),
+ email varchar(50),
+ status int,
+ sex int,
+ deleted int,
+ create_id varchar(64),
+ update_id varchar(64),
+ create_where int DEFAULT 1,
+ create_time datetime,
+ update_time datetime,
+ PRIMARY KEY (id)
+);
+
+
+-- 用户角色
+CREATE TABLE sys_user_role (
+ id varchar(64),
+ user_id varchar(64),
+ role_id varchar(64),
+ create_time datetime,
+ PRIMARY KEY (id)
+);
+
+-- 数据字典
+CREATE TABLE sys_dict (
+ id varchar(64) ,
+ name varchar(100) ,
+ remark varchar(255) ,
+ create_time datetime,
+ PRIMARY KEY (id)
+);
+
+-- 数据字典明细
+CREATE TABLE sys_dict_detail (
+ id varchar(50) ,
+ label varchar(255) ,
+ value varchar(255) ,
+ sort int ,
+ dict_id varchar(50) ,
+ create_time datetime,
+ PRIMARY KEY (id)
+);
+
+-- 文章管理
+ CREATE TABLE sys_content (
+ id varchar(50),
+ title varchar(255),
+ one_img varchar(255),
+ multiple_img varchar(500),
+ keywords varchar(255),
+ type int,
+ content varchar(4000) ,
+ create_time datetime ,
+ create_id varchar(50) ,
+ PRIMARY KEY (id)
+);
+
+-- 文件管理
+CREATE TABLE sys_files (
+ id varchar(50) ,
+ url varchar(200),
+ create_date datetime ,
+ file_name varchar(255),
+ file_path varchar(255) ,
+ PRIMARY KEY (id)
+);
+
+
+-- 初始数据
+-- 初始数据
+INSERT INTO sys_dept(id, dept_no, name, pid, status, relation_code, dept_manager_id, manager_name, phone, create_time, update_time, deleted) VALUES ('1', 'D000001', '总公司', '0', 1, 'D000001', NULL, '小李', '13888888888', '2019-11-07 22:43:33', NULL, 1);
+INSERT INTO sys_permission VALUES ('1', '删除', 'sysGenerator:delete', NULL, 'sysGenerator/delete', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('10', '赋予角色', 'sys:user:role:update', NULL, 'sys/user/roles/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('11', '菜单权限管理', NULL, NULL, 'index/menus', '_self', '51', 98, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('12', '列表', 'sys:dept:list', NULL, 'sys/depts', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('13', '删除', 'sys:role:deleted', NULL, 'sys/role/*', NULL, '53', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('1311115974068449281', '数据权限', 'sys:role:bindDept', '', 'sys/role/bindDept', '_self', '53', 5, 3, 1, '2020-09-30 09:29:42', NULL, 1);
+INSERT INTO sys_permission VALUES ('15', '代码生成', NULL, NULL, 'index/sysGenerator', '_self', '54', 1, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('16', '列表', 'sysGenerator:list', NULL, 'sysGenerator/listByPage', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('17', '详情', 'sys:permission:detail', NULL, 'sys/permission/*', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('19', '列表', 'sys:role:list', NULL, 'sys/roles', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('2', 'SQL 监控', '', '', 'druid/sql.html', '_self', '21', 98, 2, 1, '2020-03-19 13:29:40', '2020-05-07 13:36:59', 1);
+INSERT INTO sys_permission VALUES ('20', '修改', 'sysGenerator:update', NULL, 'sysGenerator/update', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('21', '其他', NULL, 'layui-icon-list', NULL, NULL, '0', 200, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('22', '详情', 'sys:dept:detail', NULL, 'sys/dept/*', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('23', '列表', 'sys:user:list', NULL, 'sys/users', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('24', '用户管理', NULL, NULL, 'index/users', '_self', '51', 100, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('25', '详情', 'sys:user:detail', NULL, 'sys/user/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('26', '删除', 'sys:permission:deleted', NULL, 'sys/permission/*', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('27', '文件管理', '', '', 'index/sysFiles', '_self', '54', 10, 2, 1, NULL, '2020-06-15 16:00:29', 1);
+INSERT INTO sys_permission VALUES ('28', '列表', 'sysFiles:list', NULL, 'sysFiles/listByPage', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('29', '新增', 'sysFiles:add', NULL, 'sysFiles/add', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('3', '新增', 'sys:role:add', NULL, 'sys/role', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('30', '删除', 'sysFiles:delete', NULL, 'sysFiles/delete', NULL, '27', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('31', '文章管理', NULL, NULL, 'index/sysContent', '_self', '54', 10, 2, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('32', '列表', 'sysContent:list', NULL, 'sysContent/listByPage', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('33', '新增', 'sysContent:add', NULL, 'sysContent/add', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('34', '修改', 'sysContent:update', NULL, 'sysContent/update', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('35', '删除', 'sysContent:delete', NULL, 'sysContent/delete', NULL, '31', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('36', '更新', 'sys:role:update', NULL, 'sys/role', NULL, '53', 0, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('38', '更新', 'sys:dept:update', NULL, 'sys/dept', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('39', '详情', 'sys:role:detail', NULL, 'sys/role/*', NULL, '53', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('4', '添加', 'sysGenerator:add', NULL, 'sysGenerator/add', NULL, '15', 1, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('40', '编辑', 'sys:permission:update', NULL, 'sys/permission', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('41', '部门管理', NULL, NULL, 'index/depts', '_self', '51', 100, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('42', '新增', 'sys:user:add', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('43', '列表', 'sys:permission:list', NULL, 'sys/permissions', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('44', '新增', 'sys:permission:add', NULL, 'sys/permission', NULL, '11', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('45', '字典管理', NULL, '', 'index/sysDict', NULL, '54', 10, 2, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('46', '列表', 'sysDict:list', NULL, 'sysDict/listByPage', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('47', '新增', 'sysDict:add', NULL, 'sysDict/add', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('48', '修改', 'sysDict:update', NULL, 'sysDict/update', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('49', '删除', 'sysDict:delete', NULL, 'sysDict/delete', NULL, '45', 0, 3, 1, NULL, NULL, 1);
+INSERT INTO sys_permission VALUES ('5', '删除', 'sys:dept:deleted', NULL, 'sys/dept/*', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('50', '表单构建', '', '', 'index/build', '_self', '21', 1, 2, 1, '2020-04-22 13:09:41', '2020-05-07 13:36:47', 1);
+INSERT INTO sys_permission VALUES ('51', '组织管理', NULL, 'layui-icon-user', NULL, NULL, '0', 1, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('52', '拥有角色', 'sys:user:role:detail', NULL, 'sys/user/roles/*', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('53', '角色管理', NULL, NULL, 'index/roles', '_self', '51', 99, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('54', '系统管理', NULL, 'layui-icon-set-fill', NULL, NULL, '0', 98, 1, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('56', '更新', 'sys:user:update', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('57', '删除', 'sys:user:deleted', NULL, 'sys/user', NULL, '24', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('58', '删除', 'sys:log:deleted', NULL, 'sys/logs', NULL, '8', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('6', '接口管理', '', '', 'doc.html', '_blank', '21', 100, 2, 1, '2020-03-19 13:29:40', '2020-05-07 13:36:02', 1);
+INSERT INTO sys_permission VALUES ('7', '列表', 'sys:log:list', NULL, 'sys/logs', NULL, '8', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('8', '日志管理', NULL, NULL, 'index/logs', '_self', '54', 97, 2, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_permission VALUES ('9', '新增', 'sys:dept:add', NULL, 'sys/dept', NULL, '41', 100, 3, 1, '2020-03-19 13:29:40', '2020-03-19 13:29:40', 1);
+INSERT INTO sys_role(id, name, description, status, create_time, update_time, deleted) VALUES ('1', '超级管理员', '拥有所有权限-不能删除', 1, '2019-11-01 19:26:29', '2020-03-19 13:29:51', 1);
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('1', '1', '1', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('10', '1', '10', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('11', '1', '11', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('12', '1', '12', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('13', '1', '13', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('14', '1', '14', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('15', '1', '15', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('16', '1', '16', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('17', '1', '17', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('18', '1', '18', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('19', '1', '19', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('2', '1', '2', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('20', '1', '20', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('21', '1', '21', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('22', '1', '22', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('23', '1', '23', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('24', '1', '24', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('25', '1', '25', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('26', '1', '26', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('27', '1', '27', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('28', '1', '28', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('29', '1', '29', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('3', '1', '3', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('30', '1', '30', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('31', '1', '31', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('32', '1', '32', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('33', '1', '33', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('34', '1', '34', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('35', '1', '35', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('36', '1', '36', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('38', '1', '38', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('39', '1', '39', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('4', '1', '4', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('40', '1', '40', '2020-06-15 15:21:17');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('41', '1', '41', '2020-06-15 15:21:17');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('42', '1', '42', '2020-06-15 15:21:17');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('43', '1', '43', '2020-06-15 15:21:17');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('44', '1', '44', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('45', '1', '45', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('46', '1', '46', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('47', '1', '47', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('48', '1', '48', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('49', '1', '49', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('5', '1', '5', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('50', '1', '50', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('51', '1', '51', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('52', '1', '52', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('53', '1', '53', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('54', '1', '54', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('55', '1', '55', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('56', '1', '56', '2020-05-26 17:04:21');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('57', '1', '57', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('58', '1', '58', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('6', '1', '6', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('60', '1', '60', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('61', '1', '61', '2020-05-26 14:21:56');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('62', '1', '62', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('63', '1', '63', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('7', '1', '7', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('8', '1', '8', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('9', '1', '9', '2020-04-22 15:48:47');
+INSERT INTO sys_role_permission(id, role_id, permission_id, create_time) VALUES ('1311116066716430339', '1', '1311115974068449281', '2020-09-30 09:30:04');
+INSERT INTO sys_user(id, username, salt, password, phone, dept_id, real_name, nick_name, email, status, sex, deleted, create_id, update_id, create_where, create_time, update_time) VALUES ('1', 'admin', '324ce32d86224b00a02b', '2102b59a75ab87616b62d0b9432569d0', '13888888888', '1', '爱糖宝', '爱糖宝', 'xxxxxx@163.com', 1, 2, 1, '1', '1', 3, '2019-09-22 19:38:05', '2020-03-18 09:15:22');
+INSERT INTO sys_user_role(id, user_id, role_id, create_time) VALUES ('1', '1', '1', '2020-03-19 02:23:13');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1255790029680242690', 'sex', '性别', '2020-04-30 17:24:09');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1255790029680242691', 'content_keyword', '关键字', '2020-04-30 17:24:09');
+INSERT INTO sys_dict(id, name, remark, create_time) VALUES ('1282504369620430849', 'content_type', '文章类型略略略', '2020-07-13 10:37:24');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1255790073535885314', '男', '1', 1, '1255790029680242690', '2020-04-30 17:24:19');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1255790100115189761', '女', '2', 2, '1255790029680242690', '2020-04-30 17:24:25');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282504475715350530', '诗词', '1', 1, '1282504369620430849', '2020-07-13 10:37:49');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282504651729317889', '散文', '2', 2, '1282504369620430849', '2020-07-13 10:38:31');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842369', '剧本', '3', 3, '1282504369620430849', '2020-07-14 09:15:01');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842370', 'java', '1', 1, '1255790029680242691', '2020-07-14 09:15:01');
+INSERT INTO sys_dict_detail(id, label, value, sort, dict_id, create_time) VALUES ('1282846022950842371', 'mysql', '2', 2, '1255790029680242691', '2020-07-14 09:15:01');
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..d8f0c86
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,177 @@
+
+
+ 4.0.0
+
+ org.noear
+ solon-parent
+ 3.1.0
+
+
+ vip.fuck.sm
+ solon-manager
+ 0.0.1-SNAPSHOT
+ solon-manager
+ Demo project for Solon
+
+ 1.8
+ 3.4.0
+ 2.5.5
+ 12.1.0.1-atlassian-hosted
+ 4.0
+ 2.6
+ 2.5
+ 1.10
+ 1.7
+ 1.11.0
+ 1.1.10
+ 1.2.83
+ 2.0.0
+ 2.0.2
+ 1.6.2
+
+
+
+
+ org.noear
+ solon-web
+
+
+
+ org.noear
+ solon-view-thymeleaf
+
+
+ org.noear
+ solon-logging-logback
+
+
+ org.noear
+ solon-serialization-jackson
+
+
+ org.noear
+ solon-security-validation
+
+
+
+ com.baomidou
+ mybatis-plus-solon-plugin
+ 3.5.10.1
+
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser-4.9
+ 3.5.9
+
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+ mysql
+ mysql-connector-java
+ runtime
+ 8.0.33
+
+
+ com.zaxxer
+ HikariCP
+ 4.0.3
+
+
+
+ com.oracle
+ ojdbc6
+ ${ojdbc6.version}
+
+
+ com.microsoft.sqlserver
+ sqljdbc4
+ ${sqlserver.version}
+ runtime
+
+
+
+ org.noear
+ solon-openapi2-knife4j
+
+
+ commons-lang
+ commons-lang
+ ${commons.lang.version}
+
+
+ commons-io
+ commons-io
+ ${commons.io.version}
+
+
+ commons-configuration
+ commons-configuration
+ ${commons.configuration.version}
+
+
+ velocity
+ org.apache.velocity
+ ${velocity.version}
+
+
+ com.github.whvcse
+ easy-captcha
+ ${easy-captcha.version}
+
+
+ commons-codec
+ commons-codec
+ 1.13
+
+
+
+
+ org.noear
+ sa-token-solon-plugin
+
+
+ cn.hutool
+ hutool-all
+ 5.8.22
+
+
+
+
+
+
+
+ manager
+
+
+ org.noear
+ solon-maven-plugin
+
+
+
+
+
+
+ tencent
+ https://mirrors.cloud.tencent.com/nexus/repository/maven-public/
+
+ false
+
+
+
+ aliyun-repos
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+ false
+
+
+
+
+
+
diff --git a/src/main/java/vip/fuck/sm/SolonManagerApplication.java b/src/main/java/vip/fuck/sm/SolonManagerApplication.java
new file mode 100644
index 0000000..13c7893
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/SolonManagerApplication.java
@@ -0,0 +1,25 @@
+package vip.fuck.sm;
+
+import lombok.extern.slf4j.Slf4j;
+import org.noear.solon.Solon;
+import org.noear.solon.annotation.SolonMain;
+import org.noear.solon.web.cors.CrossFilter;
+
+/**
+ * 启动类
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ */
+@Slf4j
+@SolonMain
+public class SolonManagerApplication {
+
+ public static void main(String[] args) throws Exception {
+ Solon.start(SolonManagerApplication.class, args, app->{
+ //例:或者:增加全局处理(用过滤器模式)
+ app.filter(-1, new CrossFilter().allowedOrigins("*")); //加-1 优先级更高
+ });
+
+ }
+
+}
diff --git a/src/main/java/vip/fuck/sm/common/aop/annotation/LogAnnotation.java b/src/main/java/vip/fuck/sm/common/aop/annotation/LogAnnotation.java
new file mode 100644
index 0000000..50ed105
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/aop/annotation/LogAnnotation.java
@@ -0,0 +1,25 @@
+package vip.fuck.sm.common.aop.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * LogAnnotation
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface LogAnnotation {
+ /**
+ * 模块
+ */
+ String title() default "";
+
+ /**
+ * 功能
+ */
+ String action() default "";
+}
diff --git a/src/main/java/vip/fuck/sm/common/aop/aspect/LoggingRouterInterceptor.java b/src/main/java/vip/fuck/sm/common/aop/aspect/LoggingRouterInterceptor.java
new file mode 100644
index 0000000..9e5b125
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/aop/aspect/LoggingRouterInterceptor.java
@@ -0,0 +1,80 @@
+package vip.fuck.sm.common.aop.aspect;
+
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import vip.fuck.sm.common.aop.annotation.LogAnnotation;
+import vip.fuck.sm.entity.SysLog;
+import vip.fuck.sm.mapper.SysLogMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.solon.annotation.Db;
+import org.noear.solon.annotation.Component;
+import org.noear.solon.core.handle.Action;
+import org.noear.solon.core.handle.Context;
+import org.noear.solon.core.handle.Handler;
+import org.noear.solon.core.route.RouterInterceptor;
+import org.noear.solon.core.route.RouterInterceptorChain;
+import org.noear.solon.core.util.MultiMap;
+
+import java.lang.reflect.Parameter;
+
+import static org.noear.solon.validation.annotation.HttpPart.params;
+
+@Component(index = -99)
+@Slf4j
+public class LoggingRouterInterceptor implements RouterInterceptor {
+
+ @Db
+ private SysLogMapper sysLogMapper;
+
+ @Override
+ public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable {
+ LogAnnotation logAnnotation = null;
+ Action action = ctx.action();
+ if (action != null) {
+ logAnnotation = action.method().getAnnotation(LogAnnotation.class);
+
+ }
+
+ if (logAnnotation == null) {
+ //如果没有注解
+ chain.doIntercept(ctx, mainHandler);
+ } else {
+ //1.开始计时
+ long start = System.currentTimeMillis();
+
+ try {
+ chain.doIntercept(ctx, mainHandler);
+ } finally {
+
+
+ //2.获得接口响应时长
+ long timespan = System.currentTimeMillis() - start;
+ JSONObject param = new JSONObject();
+ String body = ctx.body();
+ if(body!=null && JSONUtil.isTypeJSON(body)){
+ param.set("body",JSONUtil.parse(body));
+ }
+ MultiMap keyValues = ctx.paramMap();
+ if(keyValues!=null){
+ param.set("params",JSONUtil.parse(keyValues));
+ }
+ //3.记日志
+ SysLog sysLog = new SysLog();
+ sysLog.setParams(param.toJSONString(0));
+ sysLog.setUsername(ctx.sessionOrDefault("currentUserName",""));
+ //注解上的描述
+ sysLog.setOperation(logAnnotation.title() + "-" + logAnnotation.action());
+ String className = action.controller().clz().getName();
+ String methodName = action.method().getName();
+ sysLog.setMethod(className + "." + methodName + "()");
+ String userId = StpUtil.getLoginIdAsString();
+ sysLog.setUserId(userId);
+ sysLog.setTime((int) timespan);
+ log.info(sysLog.toString());
+ sysLogMapper.insert(sysLog);
+
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/vip/fuck/sm/common/config/GlobalResultInterceptor.java b/src/main/java/vip/fuck/sm/common/config/GlobalResultInterceptor.java
new file mode 100644
index 0000000..34a7a00
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/config/GlobalResultInterceptor.java
@@ -0,0 +1,55 @@
+package vip.fuck.sm.common.config;
+
+import vip.fuck.sm.common.utils.DataResult;
+import org.noear.solon.annotation.Component;
+import org.noear.solon.core.handle.Context;
+import org.noear.solon.core.handle.Handler;
+import org.noear.solon.core.handle.ModelAndView;
+import org.noear.solon.core.route.PathRule;
+import org.noear.solon.core.route.RouterInterceptor;
+import org.noear.solon.core.route.RouterInterceptorChain;
+
+import java.util.Arrays;
+
+@Component
+public class GlobalResultInterceptor implements RouterInterceptor {
+
+ @Override
+ public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable {
+ chain.doIntercept(ctx, mainHandler);
+ }
+
+ private static final PathRule ORG_PATH_RULE = new PathRule();
+ static {
+ ORG_PATH_RULE.include("/favicon.ico",
+ "/doc.html",
+ "/swagger",
+ "/swagger/**",
+ "/swagger-resources",
+ "/swagger-resources/**",
+ "/webjars/**",
+ "/error",
+ "/static/**",
+ "/files/**"
+ );
+ }
+
+ /**
+ * 提交结果( render 执行前调用)//不要做太复杂的事情
+ */
+ @Override
+ public Object postResult(Context ctx, Object result) throws Throwable {
+ String path = ctx.path();
+
+ if(result instanceof Throwable){
+ //异常类型,根据需要处理
+ return result;
+ }else if(result instanceof DataResult || result instanceof ModelAndView){
+ return result;
+ } else if( ORG_PATH_RULE.test(path) ){
+ return result;
+ }else {
+ return DataResult.success(result);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/vip/fuck/sm/common/config/MetaObjectHandlerConfig.java b/src/main/java/vip/fuck/sm/common/config/MetaObjectHandlerConfig.java
new file mode 100644
index 0000000..0067cc3
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/config/MetaObjectHandlerConfig.java
@@ -0,0 +1,78 @@
+package vip.fuck.sm.common.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import vip.fuck.sm.common.utils.Constant;
+import org.apache.ibatis.reflection.MetaObject;
+import org.noear.solon.annotation.Component;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+
+
+/**
+ * mybatis plus 默认值配置
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+@Component
+public class MetaObjectHandlerConfig implements MetaObjectHandler {
+
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ Date currentDate = new Date();
+ String[] setterNames = metaObject.getSetterNames();
+ HashSet setterNameSet = new HashSet<>(Arrays.asList(setterNames));
+ if (setterNameSet.contains("deleted")) {
+ //默认未删除
+ setFieldValByName("deleted", Constant.DATA_NOT_DELETED, metaObject);
+ }
+ if (setterNameSet.contains("createTime")) {
+ //创建时间默认当前时间
+ setFieldValByName("createTime", currentDate, metaObject);
+ }
+ if (setterNameSet.contains("createDate")) {
+ //创建时间默认当前时间
+ setFieldValByName("createDate", currentDate, metaObject);
+ }
+// if (setterNameSet.contains("createId")) {
+// //创建时间默认当前时间
+// setFieldValByName("createId", StpUtil.getLoginIdAsString(), metaObject);
+// }
+// if (setterNameSet.contains("updateId")) {
+// //创建时间默认当前时间
+// setFieldValByName("updateId", StpUtil.getLoginIdAsString(), metaObject);
+// }
+ if (setterNameSet.contains("updateTime")) {
+ //创建时间默认当前时间
+ setFieldValByName("updateTime", currentDate, metaObject);
+ }
+ if (setterNameSet.contains("updateDate")) {
+ //创建时间默认当前时间
+ setFieldValByName("updateDate", currentDate, metaObject);
+ }
+
+
+ }
+
+ @Override
+ public void updateFill(MetaObject metaObject) {
+ Date currentDate = new Date();
+ String[] setterNames = metaObject.getSetterNames();
+ HashSet setterNameSet = new HashSet<>(Arrays.asList(setterNames));
+ if (setterNameSet.contains("updateTime")) {
+ //创建时间默认当前时间
+ setFieldValByName("updateTime", currentDate, metaObject);
+ }
+ if (setterNameSet.contains("updateDate")) {
+ //创建时间默认当前时间
+ setFieldValByName("updateDate", currentDate, metaObject);
+ }
+// if (setterNameSet.contains("updateId")) {
+// //创建时间默认当前时间
+// setFieldValByName("updateId", StpUtil.getLoginIdAsString(), metaObject);
+// }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/vip/fuck/sm/common/config/MyBatisPlusConfig.java b/src/main/java/vip/fuck/sm/common/config/MyBatisPlusConfig.java
new file mode 100644
index 0000000..ae1ec4b
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/config/MyBatisPlusConfig.java
@@ -0,0 +1,47 @@
+package vip.fuck.sm.common.config;
+
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.toolkit.sql.SqlUtils;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.apache.ibatis.solon.annotation.Db;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.annotation.Inject;
+import org.noear.solon.core.util.ResourceUtil;
+
+/**
+ * mybatis plus config
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+@Configuration
+public class MyBatisPlusConfig {
+// /**
+// * 配置mybatis-plus 分页查件
+// */
+// @Bean
+// public PaginationInterceptor paginationInterceptor() {
+// return new PaginationInterceptor();
+// }
+
+ @Bean
+ public void db1_cfg(
+ @Db("master") MybatisConfiguration cfg,
+ @Db("master") GlobalConfig globalConfig) throws Exception {
+
+
+ MybatisPlusInterceptor plusInterceptor = new MybatisPlusInterceptor();
+ plusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+
+ cfg.setCacheEnabled(false);
+ cfg.addInterceptor(plusInterceptor);
+
+// globalConfig.setSqlInjector(new MyLogicSqlInjector());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/vip/fuck/sm/common/config/StpInterfaceImpl.java b/src/main/java/vip/fuck/sm/common/config/StpInterfaceImpl.java
new file mode 100644
index 0000000..448fc73
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/config/StpInterfaceImpl.java
@@ -0,0 +1,42 @@
+package vip.fuck.sm.common.config;
+
+import cn.dev33.satoken.stp.StpInterface;
+import cn.dev33.satoken.stp.StpUtil;
+import vip.fuck.sm.service.PermissionService;
+import org.noear.solon.annotation.Component;
+import org.noear.solon.annotation.Inject;
+
+
+import java.util.List;
+
+/**
+ * SaToken自定义权限加载接口实现类
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ */
+@Component
+public class StpInterfaceImpl implements StpInterface {
+
+ @Inject
+ PermissionService permissionService;
+
+ /**
+ * 返回一个账号所拥有的权限码集合
+ */
+ @Override
+ public List getPermissionList(Object loginId, String loginType) {
+ if (loginType.equals(StpUtil.TYPE)) {
+ return permissionService.getPermissionsByUserId(String.valueOf(loginId));
+ }
+ return null;
+ }
+
+ /**
+ * 返回一个账号所拥有的角色标识集合
+ */
+ @Override
+ public List getRoleList(Object loginId, String loginType) {
+ return null;
+ }
+
+}
diff --git a/src/main/java/vip/fuck/sm/common/config/SwaggerConfiguration.java b/src/main/java/vip/fuck/sm/common/config/SwaggerConfiguration.java
new file mode 100644
index 0000000..081d0f7
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/config/SwaggerConfiguration.java
@@ -0,0 +1,50 @@
+package vip.fuck.sm.common.config;
+
+
+import com.github.xiaoymin.knife4j.solon.extension.OpenApiExtensionResolver;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.annotation.Import;
+import org.noear.solon.annotation.Inject;
+import org.noear.solon.core.handle.Result;
+import org.noear.solon.docs.DocDocket;
+import org.noear.solon.docs.models.ApiContact;
+import org.noear.solon.docs.models.ApiInfo;
+
+/**
+ * SwaggerConfiguration
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+@Configuration
+public class SwaggerConfiguration {
+
+
+
+ // knife4j 的配置,由它承载
+ @Inject
+ OpenApiExtensionResolver openApiExtensionResolver;
+
+ @Bean("adminApi")
+ public DocDocket adminApi() {
+ //根据情况增加 "knife4j.setting" (可选)
+ return new DocDocket()
+ .basicAuth(openApiExtensionResolver.getSetting().getBasic())
+ .vendorExtensions(openApiExtensionResolver.buildExtensions())
+ .groupName("管理端接口")
+ .info(new ApiInfo().title("在线文档")
+ .description("在线API文档")
+ .termsOfService("https://gitee.com/uidoer")
+ .contact(new ApiContact().name("rish")
+ .url("https://gitee.com/uidoer")
+ .email("xian.zi.ming@qq.com"))
+ .version("1.0"))
+// .schemes(Scheme.HTTP, Scheme.HTTPS)
+ .globalResponseInData(true)
+// .globalResult(Result.class)
+ .apis("vip.fuck.sm.controller"); //可以加多条,以包名为单位
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/vip/fuck/sm/common/config/WebMvcConfigurer.java b/src/main/java/vip/fuck/sm/common/config/WebMvcConfigurer.java
new file mode 100644
index 0000000..d15af9d
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/config/WebMvcConfigurer.java
@@ -0,0 +1,95 @@
+package vip.fuck.sm.common.config;
+
+import cn.dev33.satoken.context.SaHolder;
+import cn.dev33.satoken.router.SaRouter;
+import cn.dev33.satoken.solon.integration.SaTokenInterceptor;
+import cn.dev33.satoken.stp.StpUtil;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.annotation.Inject;
+import org.noear.solon.web.staticfiles.StaticMappings;
+import org.noear.solon.web.staticfiles.repository.ClassPathStaticRepository;
+import org.noear.solon.web.staticfiles.repository.FileStaticRepository;
+
+
+import java.io.File;
+import java.math.BigInteger;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * mvc 配置
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+@Configuration
+public class WebMvcConfigurer {
+
+ @Inject("${file.path}")
+ private String filePath;
+
+
+ @Bean
+ public void staticFiles() {
+ StaticMappings.add("/files/", new FileStaticRepository(filePath));
+ StaticMappings.add("/static/", new ClassPathStaticRepository("static"));
+ }
+
+
+ //添加拦截器
+ //web是从管理后台来的接口,不走app那一套校验逻辑
+ @Bean(index = -100) //-100,是顺序位(低值优先)
+ public SaTokenInterceptor saTokenInterceptor() {
+ return new SaTokenInterceptor()
+ // 指定 [拦截路由] 与 [放行路由]
+ .addInclude("/**")
+ .addExclude(
+ "/favicon.ico",
+ "/app/api/**",
+ "/doc.html",
+ "/swagger-resources",
+ "/swagger-resources/**",
+ "/webjars/**",
+ "/error",
+ "/static/**",
+ "/files/**",
+ "/login",
+ "/index/login",
+ "/sys/user/login",
+ "/sys/getVerify"
+ )
+
+ // 认证函数: 每次请求执行
+ .setAuth(req -> {
+ // System.out.println("---------- sa全局认证");
+ SaRouter.match("/**", StpUtil::checkLogin);
+ })
+
+ // 异常处理函数:每次认证函数发生异常时执行此函数 //包括注解异常
+// .setError(e -> {
+// System.out.println("---------- sa全局异常 ");
+// return AjaxJson.getError(e.getMessage());
+// })
+
+ // 前置函数:在每次认证函数之前执行
+ .setBeforeAuth(req -> {
+ // ---------- 设置一些安全响应头 ----------
+// SaHolder.getResponse()
+// // 服务器名称
+// .setServer("sa-server")
+// // 是否可以在iframe显示视图: DENY=不可以 | SAMEORIGIN=同域下可以 | ALLOW-FROM uri=指定域名下可以
+// .setHeader("X-Frame-Options", "SAMEORIGIN")
+// // 是否启用浏览器默认XSS防护: 0=禁用 | 1=启用 | 1; mode=block 启用, 并在检查到XSS攻击时,停止渲染页面
+// .setHeader("X-XSS-Protection", "1; mode=block")
+// // 禁用浏览器内容嗅探
+// .setHeader("X-Content-Type-Options", "nosniff");
+ });
+
+
+ }
+}
+
diff --git a/src/main/java/vip/fuck/sm/common/exception/BusinessException.java b/src/main/java/vip/fuck/sm/common/exception/BusinessException.java
new file mode 100644
index 0000000..343a384
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/exception/BusinessException.java
@@ -0,0 +1,52 @@
+package vip.fuck.sm.common.exception;
+
+import vip.fuck.sm.common.exception.code.BaseResponseCode;
+import vip.fuck.sm.common.exception.code.ResponseCodeInterface;
+
+/**
+ * BusinessException
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+public class BusinessException extends RuntimeException {
+ /**
+ * 异常编号
+ */
+ private final int messageCode;
+
+ /**
+ * 对messageCode 异常信息进行补充说明
+ */
+ private final String detailMessage;
+
+ public BusinessException(int messageCode, String message) {
+ super(message);
+ this.messageCode = messageCode;
+ this.detailMessage = message;
+ }
+
+ public BusinessException(String message) {
+ super(message);
+ this.messageCode = BaseResponseCode.OPERATION_ERRO.getCode();
+ this.detailMessage = message;
+ }
+
+ /**
+ * 构造函数
+ *
+ * @param code 异常码
+ */
+ public BusinessException(ResponseCodeInterface code) {
+ this(code.getCode(), code.getMsg());
+ }
+
+ public int getMessageCode() {
+ return messageCode;
+ }
+
+ public String getDetailMessage() {
+ return detailMessage;
+ }
+}
diff --git a/src/main/java/vip/fuck/sm/common/exception/code/BaseResponseCode.java b/src/main/java/vip/fuck/sm/common/exception/code/BaseResponseCode.java
new file mode 100644
index 0000000..8fbc9c4
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/exception/code/BaseResponseCode.java
@@ -0,0 +1,59 @@
+package vip.fuck.sm.common.exception.code;
+
+
+/**
+ * 错误码
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+public enum BaseResponseCode implements ResponseCodeInterface {
+ /**
+ * 错误码
+ */
+ SUCCESS(0, "操作成功"),
+ SYSTEM_BUSY(500001, "系统繁忙,请稍候再试"),
+ OPERATION_ERRO(500002, "操作失败"),
+ ILLEGAL_DATA(500003, "非法的数据格式"),
+ TOKEN_ERROR(401001, "登录凭证已过期,请重新登录"),
+ DATA_ERROR(401003, "传入数据异常"),
+ NOT_ACCOUNT(401004, "该用户不存在,请先注册"),
+ USER_LOCK(401005, "该用户已被锁定,请联系运营人员"),
+ PASSWORD_ERROR(401006, "用户名或密码错误"),
+ METHODARGUMENTNOTVALIDEXCEPTION(401007, "方法参数校验异常"),
+ UNAUTHORIZED_ERROR(401008, "权鉴校验不通过"),
+ ROLE_PERMISSION_RELATION(401009, "该菜单权限存在子集关联,不允许删除"),
+ OLD_PASSWORD_ERROR(401010, "旧密码不正确"),
+ NOT_PERMISSION_DELETED_DEPT(401011, "该组织机构下还关联着用户,不允许删除"),
+ OPERATION_MENU_PERMISSION_CATALOG_ERROR(401012, "操作后的菜单类型是目录,所属菜单必须为默认顶级菜单或者目录"),
+ OPERATION_MENU_PERMISSION_MENU_ERROR(401013, "操作后的菜单类型是菜单,所属菜单必须为目录类型"),
+ OPERATION_MENU_PERMISSION_BTN_ERROR(401013, "操作后的菜单类型是按钮,所属菜单必须为菜单类型"),
+ OPERATION_MENU_PERMISSION_URL_NOT_NULL(401015, "菜单权限的url不能为空"),
+ OPERATION_MENU_PERMISSION_URL_PERMS_NULL(401016, "菜单权限的标识符不能为空"),
+ ;
+
+ /**
+ * 错误码
+ */
+ private final int code;
+ /**
+ * 错误消息
+ */
+ private final String msg;
+
+ BaseResponseCode(int code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+
+ @Override
+ public int getCode() {
+ return code;
+ }
+
+ @Override
+ public String getMsg() {
+ return msg;
+ }
+}
diff --git a/src/main/java/vip/fuck/sm/common/exception/code/ResponseCodeInterface.java b/src/main/java/vip/fuck/sm/common/exception/code/ResponseCodeInterface.java
new file mode 100644
index 0000000..43a565f
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/exception/code/ResponseCodeInterface.java
@@ -0,0 +1,24 @@
+package vip.fuck.sm.common.exception.code;
+
+/**
+ * ResponseCodeInterface
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+public interface ResponseCodeInterface {
+ /**
+ * 获取code
+ *
+ * @return code
+ */
+ int getCode();
+
+ /**
+ * 获取信息
+ *
+ * @return msg
+ */
+ String getMsg();
+}
diff --git a/src/main/java/vip/fuck/sm/common/exception/handler/AppFilter.java b/src/main/java/vip/fuck/sm/common/exception/handler/AppFilter.java
new file mode 100644
index 0000000..1e37f18
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/exception/handler/AppFilter.java
@@ -0,0 +1,45 @@
+package vip.fuck.sm.common.exception.handler;
+
+import cn.dev33.satoken.exception.NotLoginException;
+import vip.fuck.sm.common.exception.BusinessException;
+import vip.fuck.sm.common.exception.code.BaseResponseCode;
+import vip.fuck.sm.common.utils.DataResult;
+import lombok.extern.slf4j.Slf4j;
+import org.noear.solon.annotation.Component;
+import org.noear.solon.core.exception.StatusException;
+import org.noear.solon.core.handle.*;
+import org.noear.solon.validation.ValidatorException;
+import org.thymeleaf.exceptions.TemplateEngineException;
+
+@Component(index = 0) //index 为顺序位(不加,则默认为0)
+@Slf4j
+public class AppFilter implements Filter {
+ @Override
+ public void doFilter(Context ctx, FilterChain chain) throws Throwable {
+ try {
+ chain.doFilter(ctx);
+ } catch (NotLoginException e){
+ ctx.redirect("/index/login");
+ } catch (ValidatorException e) {
+ ctx.render(DataResult.getResult(
+ BaseResponseCode.METHODARGUMENTNOTVALIDEXCEPTION.getCode(),
+ e.getMessage()));
+ }catch (BusinessException e){
+ ctx.render(new DataResult(e.getMessageCode(), e.getDetailMessage()));
+ } catch (StatusException e){
+ ctx.status(e.getCode());
+ if (e.getCode() == 404){
+ String pathNew = ctx.pathNew();
+ log.error("404:{}",pathNew);
+ ctx.redirect("/index/404");
+ } else {
+ ctx.redirect("/index/500");
+ }
+ } catch (TemplateEngineException e){
+ ctx.render(" /** 【页面异常】 **/");
+ } catch (Throwable e) {
+ log.error(e.getMessage(),e);
+ ctx.render(DataResult.getResult(BaseResponseCode.SYSTEM_BUSY));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/vip/fuck/sm/common/utils/AssertUtil.java b/src/main/java/vip/fuck/sm/common/utils/AssertUtil.java
new file mode 100644
index 0000000..ddb3c4b
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/utils/AssertUtil.java
@@ -0,0 +1,110 @@
+package vip.fuck.sm.common.utils;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import vip.fuck.sm.common.exception.BusinessException;
+
+import java.util.Collection;
+
+/**
+ * 断言工具类
+ */
+public class AssertUtil {
+
+ /**
+ * true不报错
+ *
+ * @param expression
+ * @param message
+ */
+ public static void isTrue(boolean expression, String message) {
+ if (!expression) {
+ throw new BusinessException(message);
+ }
+ }
+
+ /**
+ * true不报错
+ *
+ * @param expression
+ */
+ public static void isTrue(boolean expression) {
+ if (!expression) {
+ throw new BusinessException("参数无效/数据异常");
+ }
+ }
+
+ /**
+ * string为空报错
+ * 不为空不报错
+ *
+ * @param s
+ * @param message
+ */
+ public static void isStringNotBlank(String s, String message) {
+ isTrue(StringUtils.isNotBlank(s), message);
+ }
+
+ public static void isStringNotBlank(String s) {
+ isTrue(StringUtils.isNotBlank(s));
+ }
+
+
+ /**
+ * string为空不报错
+ * 不为空报错
+ *
+ * @param s
+ * @param message
+ */
+ public static void isStringBlank(String s, String message) {
+ isTrue(StringUtils.isBlank(s), message);
+ }
+
+ public static void isStringBlank(String s) {
+ isTrue(StringUtils.isBlank(s));
+ }
+
+ /**
+ * 对象为null, 不报错
+ * 不为null, 报错
+ * @param obj
+ * @param errorMessage
+ */
+ public static void isNull(Object obj, String errorMessage) {
+ isTrue(obj == null, errorMessage);
+ }
+
+ public static void isNull(Object obj) {
+ isTrue(obj == null);
+ }
+
+ /**
+ * 对象不为null, 不报错
+ * 为null, 报错
+ * @param obj
+ * @param errorMessage
+ */
+ public static void isExists(Object obj, String errorMessage) {
+ isTrue(obj != null, errorMessage);
+ }
+
+ public static void isExists(Object obj) {
+ isTrue(obj != null);
+ }
+
+ /**
+ * list或者map 不能为空
+ * @param collection
+ * @param errorMessage
+ */
+ public static void hasElements(Collection> collection, String errorMessage) {
+ isTrue(CollectionUtils.isNotEmpty(collection), errorMessage);
+ }
+
+ public static void hasElements(Object[] array, String errorMessage) {
+ isTrue(array != null && array.length != 0, errorMessage);
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/vip/fuck/sm/common/utils/Constant.java b/src/main/java/vip/fuck/sm/common/utils/Constant.java
new file mode 100644
index 0000000..2d37002
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/utils/Constant.java
@@ -0,0 +1,38 @@
+package vip.fuck.sm.common.utils;
+
+/**
+ * Constant
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+public class Constant {
+
+ /**
+ * 未删除值
+ */
+ public static final Integer DATA_NOT_DELETED = 0;
+
+ /**
+ * 数据库类型
+ */
+ public static final String DB_TYPE_MYSQL = "mysql";
+ public static final String DB_TYPE_ORACLE = "oracle";
+ public static final String DB_TYPE_SQL_SERVER = "sqlServer";
+
+ /**
+ * 定时任务状态
+ */
+ public static final Integer SCHEDULER_STATUS_NORMAL = 0;
+ public static final Integer SCHEDULER_STATUS_PAUSE = 1;
+
+ /**
+ * 数据范围类型 1:所有/2:自定义/3:本部门及一下/4:仅本部门/5:自己
+ */
+ public static final Integer DATA_SCOPE_ALL = 1;
+ public static final Integer DATA_SCOPE_CUSTOM = 2;
+ public static final Integer DATA_SCOPE_DEPT_AND_CHILD = 3;
+ public static final Integer DATA_SCOPE_DEPT = 4;
+ public static final Integer DATA_SCOPE_DEPT_SELF = 5;
+}
diff --git a/src/main/java/vip/fuck/sm/common/utils/DataResult.java b/src/main/java/vip/fuck/sm/common/utils/DataResult.java
new file mode 100644
index 0000000..2964ca3
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/utils/DataResult.java
@@ -0,0 +1,112 @@
+package vip.fuck.sm.common.utils;
+
+import vip.fuck.sm.common.exception.code.BaseResponseCode;
+import vip.fuck.sm.common.exception.code.ResponseCodeInterface;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 返回值DataResult
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+@Data
+public class DataResult {
+
+ /**
+ * 请求响应code,0为成功 其他为失败
+ */
+ @ApiModelProperty(value = "请求响应code,0为成功 其他为失败", name = "code")
+ private int code;
+
+ /**
+ * 响应异常码详细信息
+ */
+ @ApiModelProperty(value = "响应异常码详细信息", name = "msg")
+ private String msg;
+
+ @ApiModelProperty(value = "需要返回的数据", name = "data")
+ private Object data;
+
+ public DataResult(int code, Object data) {
+ this.code = code;
+ this.data = data;
+ this.msg = null;
+ }
+
+ public DataResult(int code, String msg, Object data) {
+ this.code = code;
+ this.msg = msg;
+ this.data = data;
+ }
+
+ public DataResult(int code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ this.data = null;
+ }
+
+
+ public DataResult() {
+ this.code = BaseResponseCode.SUCCESS.getCode();
+ this.msg = BaseResponseCode.SUCCESS.getMsg();
+ this.data = null;
+ }
+
+ public DataResult(Object data) {
+ this.data = data;
+ this.code = BaseResponseCode.SUCCESS.getCode();
+ this.msg = BaseResponseCode.SUCCESS.getMsg();
+ }
+
+ public DataResult(ResponseCodeInterface responseCodeInterface) {
+ this.data = null;
+ this.code = responseCodeInterface.getCode();
+ this.msg = responseCodeInterface.getMsg();
+ }
+
+ public DataResult(ResponseCodeInterface responseCodeInterface, Object data) {
+ this.data = data;
+ this.code = responseCodeInterface.getCode();
+ this.msg = responseCodeInterface.getMsg();
+ }
+
+ /**
+ * 操作成功 data为null
+ */
+ public static DataResult success() {
+ return new DataResult();
+ }
+
+ /**
+ * 操作成功 data 不为null
+ */
+ public static DataResult success(Object data) {
+ return new DataResult(data);
+ }
+
+ /**
+ * 操作失败 data 不为null
+ */
+ public static DataResult fail(String msg) {
+ return new DataResult(BaseResponseCode.OPERATION_ERRO.getCode(), msg);
+ }
+
+ /**
+ * 自定义返回 data为null
+ */
+ public static DataResult getResult(int code, String msg) {
+ return new DataResult(code, msg);
+ }
+
+ /**
+ * 自定义返回 入参一般是异常code枚举 data为空
+ */
+ public static DataResult getResult(BaseResponseCode responseCode) {
+ return new DataResult(responseCode);
+ }
+
+
+}
diff --git a/src/main/java/vip/fuck/sm/common/utils/DateUtils.java b/src/main/java/vip/fuck/sm/common/utils/DateUtils.java
new file mode 100644
index 0000000..893cce3
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/utils/DateUtils.java
@@ -0,0 +1,30 @@
+package vip.fuck.sm.common.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 日期处理
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+public class DateUtils {
+ /**
+ * 时间格式(yyyy-MM-dd HH:mm:ss)
+ */
+ public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
+ /**
+ * 时间格式(yyyyMMdd)
+ */
+ public final static String DATEPATTERN = "yyyyMMdd";
+
+ public static String format(Date date, String pattern) {
+ if (date != null) {
+ SimpleDateFormat df = new SimpleDateFormat(pattern);
+ return df.format(date);
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/vip/fuck/sm/common/utils/GenUtils.java b/src/main/java/vip/fuck/sm/common/utils/GenUtils.java
new file mode 100644
index 0000000..86fe468
--- /dev/null
+++ b/src/main/java/vip/fuck/sm/common/utils/GenUtils.java
@@ -0,0 +1,244 @@
+package vip.fuck.sm.common.utils;
+
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import vip.fuck.sm.common.exception.BusinessException;
+import vip.fuck.sm.entity.ColumnEntity;
+import vip.fuck.sm.entity.TableEntity;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.*;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * 代码生成器 工具类
+ *
+ * @author xian.zi.ming@qq.com fuck.vip
+ * @version V1.0
+ * @date 2020年3月18日
+ */
+public class GenUtils {
+
+ public static List getTemplates() {
+ List templates = new ArrayList<>();
+ templates.add("template/Entity.java.vm");
+ templates.add("template/Dao.java.vm");
+ templates.add("template/Dao.xml.vm");
+ templates.add("template/Service.java.vm");
+ templates.add("template/ServiceImpl.java.vm");
+ templates.add("template/Controller.java.vm");
+ templates.add("template/menu.sql.vm");
+ templates.add("template/list.html.vm");
+
+ return templates;
+ }
+
+ /**
+ * 生成代码
+ */
+ public static void generatorCode(Map table,
+ List