From 728f59cc83dd94bc08a620320a1c0dd38fdcde98 Mon Sep 17 00:00:00 2001 From: jlzhou <12020042@qq.com> Date: Tue, 13 Aug 2024 15:12:12 +0800 Subject: [PATCH] init --- .editorconfig | 18 + .gitignore | 57 + README.md | 67 + admin-ui/.env | 6 + admin-ui/.env.development | 14 + admin-ui/.env.production | 17 + admin-ui/.gitignore | 25 + admin-ui/README.md | 87 + admin-ui/bin/build.bat | 12 + admin-ui/bin/package.bat | 12 + admin-ui/bin/run-web.bat | 12 + admin-ui/db-ddl.html | 47 + admin-ui/game.html | 59 + admin-ui/html/ie.html | 46 + admin-ui/index.html | 133 + admin-ui/jsconfig.json | 15 + admin-ui/package.json | 45 + admin-ui/pnpm-lock.yaml | 3266 +++++++ admin-ui/public/favicon.ico | Bin 0 -> 6647 bytes admin-ui/public/logo.png | Bin 0 -> 18284 bytes admin-ui/src/App.vue | 15 + admin-ui/src/api/demo/demo.js | 54 + admin-ui/src/api/demo/tree.js | 44 + admin-ui/src/api/login.js | 59 + admin-ui/src/api/menu.js | 9 + admin-ui/src/api/monitor/cache.js | 57 + admin-ui/src/api/monitor/logininfor.js | 34 + admin-ui/src/api/monitor/online.js | 18 + admin-ui/src/api/monitor/operlog.js | 26 + admin-ui/src/api/system/config.js | 72 + admin-ui/src/api/system/dept.js | 52 + admin-ui/src/api/system/dict/data.js | 52 + admin-ui/src/api/system/dict/type.js | 60 + admin-ui/src/api/system/links.js | 12 + admin-ui/src/api/system/menu.js | 60 + admin-ui/src/api/system/notice.js | 44 + admin-ui/src/api/system/oss.js | 27 + admin-ui/src/api/system/ossConfig.js | 58 + admin-ui/src/api/system/post.js | 44 + admin-ui/src/api/system/role.js | 119 + admin-ui/src/api/system/user.js | 160 + admin-ui/src/api/tool/gen.js | 85 + admin-ui/src/api/upload.js | 11 + admin-ui/src/assets/401_images/401.gif | Bin 0 -> 164227 bytes admin-ui/src/assets/404_images/404.png | Bin 0 -> 98071 bytes admin-ui/src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes admin-ui/src/assets/css/login.scss | 212 + admin-ui/src/assets/icons/svg/404.svg | 1 + admin-ui/src/assets/icons/svg/bug.svg | 1 + admin-ui/src/assets/icons/svg/build.svg | 1 + admin-ui/src/assets/icons/svg/button.svg | 1 + admin-ui/src/assets/icons/svg/cascader.svg | 1 + admin-ui/src/assets/icons/svg/chart.svg | 1 + admin-ui/src/assets/icons/svg/checkbox.svg | 1 + admin-ui/src/assets/icons/svg/clipboard.svg | 1 + admin-ui/src/assets/icons/svg/code.svg | 1 + admin-ui/src/assets/icons/svg/color.svg | 1 + admin-ui/src/assets/icons/svg/component.svg | 1 + admin-ui/src/assets/icons/svg/dashboard.svg | 1 + admin-ui/src/assets/icons/svg/date-range.svg | 1 + admin-ui/src/assets/icons/svg/date.svg | 1 + admin-ui/src/assets/icons/svg/dict.svg | 1 + .../src/assets/icons/svg/documentation.svg | 1 + admin-ui/src/assets/icons/svg/download.svg | 1 + admin-ui/src/assets/icons/svg/drag.svg | 1 + admin-ui/src/assets/icons/svg/druid.svg | 1 + admin-ui/src/assets/icons/svg/edit.svg | 1 + admin-ui/src/assets/icons/svg/education.svg | 1 + admin-ui/src/assets/icons/svg/email.svg | 1 + admin-ui/src/assets/icons/svg/example.svg | 1 + admin-ui/src/assets/icons/svg/excel.svg | 1 + .../src/assets/icons/svg/exit-fullscreen.svg | 1 + admin-ui/src/assets/icons/svg/eye-open.svg | 1 + admin-ui/src/assets/icons/svg/eye.svg | 1 + admin-ui/src/assets/icons/svg/form.svg | 1 + admin-ui/src/assets/icons/svg/fullscreen.svg | 1 + admin-ui/src/assets/icons/svg/github.svg | 1 + admin-ui/src/assets/icons/svg/guide.svg | 1 + admin-ui/src/assets/icons/svg/icon.svg | 1 + admin-ui/src/assets/icons/svg/input.svg | 1 + .../src/assets/icons/svg/international.svg | 1 + admin-ui/src/assets/icons/svg/job.svg | 1 + admin-ui/src/assets/icons/svg/language.svg | 1 + admin-ui/src/assets/icons/svg/link.svg | 1 + admin-ui/src/assets/icons/svg/list.svg | 1 + admin-ui/src/assets/icons/svg/lock.svg | 1 + admin-ui/src/assets/icons/svg/log.svg | 1 + admin-ui/src/assets/icons/svg/logininfor.svg | 1 + admin-ui/src/assets/icons/svg/message.svg | 1 + admin-ui/src/assets/icons/svg/money.svg | 1 + admin-ui/src/assets/icons/svg/monitor.svg | 2 + admin-ui/src/assets/icons/svg/nested.svg | 1 + admin-ui/src/assets/icons/svg/number.svg | 1 + admin-ui/src/assets/icons/svg/online.svg | 1 + admin-ui/src/assets/icons/svg/password.svg | 1 + admin-ui/src/assets/icons/svg/pdf.svg | 1 + admin-ui/src/assets/icons/svg/people.svg | 1 + admin-ui/src/assets/icons/svg/peoples.svg | 1 + admin-ui/src/assets/icons/svg/phone.svg | 1 + admin-ui/src/assets/icons/svg/post.svg | 1 + admin-ui/src/assets/icons/svg/qq.svg | 1 + admin-ui/src/assets/icons/svg/question.svg | 1 + admin-ui/src/assets/icons/svg/radio.svg | 1 + admin-ui/src/assets/icons/svg/rate.svg | 1 + admin-ui/src/assets/icons/svg/redis-list.svg | 2 + admin-ui/src/assets/icons/svg/redis.svg | 1 + admin-ui/src/assets/icons/svg/row.svg | 1 + admin-ui/src/assets/icons/svg/search.svg | 1 + admin-ui/src/assets/icons/svg/select.svg | 1 + admin-ui/src/assets/icons/svg/server.svg | 1 + admin-ui/src/assets/icons/svg/shopping.svg | 1 + admin-ui/src/assets/icons/svg/size.svg | 1 + admin-ui/src/assets/icons/svg/skill.svg | 1 + admin-ui/src/assets/icons/svg/slider.svg | 1 + admin-ui/src/assets/icons/svg/star.svg | 1 + admin-ui/src/assets/icons/svg/swagger.svg | 1 + admin-ui/src/assets/icons/svg/switch.svg | 1 + admin-ui/src/assets/icons/svg/system.svg | 2 + admin-ui/src/assets/icons/svg/tab.svg | 1 + admin-ui/src/assets/icons/svg/table.svg | 1 + admin-ui/src/assets/icons/svg/textarea.svg | 1 + admin-ui/src/assets/icons/svg/theme.svg | 1 + admin-ui/src/assets/icons/svg/time-range.svg | 1 + admin-ui/src/assets/icons/svg/time.svg | 1 + admin-ui/src/assets/icons/svg/tool.svg | 1 + admin-ui/src/assets/icons/svg/tree-table.svg | 1 + admin-ui/src/assets/icons/svg/tree.svg | 1 + admin-ui/src/assets/icons/svg/upload.svg | 1 + admin-ui/src/assets/icons/svg/user.svg | 1 + admin-ui/src/assets/icons/svg/validCode.svg | 1 + admin-ui/src/assets/icons/svg/wechat.svg | 1 + admin-ui/src/assets/icons/svg/zip.svg | 1 + admin-ui/src/assets/images/avatar.png | Bin 0 -> 48492 bytes admin-ui/src/assets/images/dark.svg | 39 + admin-ui/src/assets/images/light.svg | 39 + .../src/assets/images/login-background.jpg | Bin 0 -> 577784 bytes admin-ui/src/assets/images/login.png | Bin 0 -> 46024 bytes admin-ui/src/assets/images/profile.jpg | Bin 0 -> 81131 bytes admin-ui/src/assets/styles/btn.scss | 99 + admin-ui/src/assets/styles/element-ui.scss | 96 + admin-ui/src/assets/styles/index.scss | 224 + admin-ui/src/assets/styles/mixin.scss | 66 + admin-ui/src/assets/styles/ruoyi.scss | 277 + admin-ui/src/assets/styles/sidebar.scss | 238 + admin-ui/src/assets/styles/transition.scss | 53 + .../src/assets/styles/variables.module.scss | 65 + admin-ui/src/auto/components/WCronInput.vue | 59 + admin-ui/src/auto/components/WImageView.vue | 32 + admin-ui/src/auto/components/WMove.vue | 127 + admin-ui/src/auto/components/WPhone.vue | 58 + admin-ui/src/auto/components/WSensitive.vue | 84 + admin-ui/src/auto/components/WTemplate.vue | 10 + admin-ui/src/auto/components/WUpload.vue | 138 + admin-ui/src/auto/components/WUser.vue | 204 + admin-ui/src/auto/components/WUserSelect.vue | 81 + admin-ui/src/auto/components/vue3Cron.vue | 720 ++ admin-ui/src/auto/custom/READMD.md | 1 + admin-ui/src/auto/index.js | 56 + admin-ui/src/components/Breadcrumb/index.vue | 66 + admin-ui/src/components/DictTag/index.vue | 49 + admin-ui/src/components/Editor/index.vue | 245 + admin-ui/src/components/FileUpload/index.vue | 222 + admin-ui/src/components/Hamburger/index.vue | 41 + .../src/components/HeaderSearch/index.vue | 179 + admin-ui/src/components/IconSelect/index.vue | 74 + .../src/components/IconSelect/requireIcons.js | 8 + .../src/components/ImagePreview/index.vue | 85 + admin-ui/src/components/ImageUpload/index.vue | 223 + admin-ui/src/components/Pagination/index.vue | 103 + admin-ui/src/components/ParentView/index.vue | 3 + .../src/components/RightToolbar/index.vue | 105 + admin-ui/src/components/RuoYi/Doc/index.vue | 13 + admin-ui/src/components/RuoYi/Git/index.vue | 13 + admin-ui/src/components/Screenfull/index.vue | 22 + admin-ui/src/components/SizeSelect/index.vue | 45 + admin-ui/src/components/SvgIcon/index.vue | 53 + admin-ui/src/components/SvgIcon/svgicon.js | 10 + admin-ui/src/components/TopNav/index.vue | 186 + admin-ui/src/components/TreeSelect/index.vue | 156 + admin-ui/src/components/bg/WBg1.vue | 1669 ++++ admin-ui/src/components/iFrame/index.vue | 31 + admin-ui/src/directive/common/copyText.js | 66 + admin-ui/src/directive/index.js | 9 + admin-ui/src/directive/permission/hasPermi.js | 28 + admin-ui/src/directive/permission/hasRole.js | 28 + admin-ui/src/layout/components/AppMain.vue | 53 + .../layout/components/IframeToggle/index.vue | 19 + .../src/layout/components/InnerLink/index.vue | 24 + admin-ui/src/layout/components/Navbar.vue | 201 + .../src/layout/components/Settings/index.vue | 244 + .../src/layout/components/Sidebar/Link.vue | 40 + .../src/layout/components/Sidebar/Logo.vue | 82 + .../layout/components/Sidebar/SidebarItem.vue | 102 + .../src/layout/components/Sidebar/index.vue | 54 + .../layout/components/TagsView/ScrollPane.vue | 105 + .../src/layout/components/TagsView/index.vue | 345 + admin-ui/src/layout/components/index.js | 4 + admin-ui/src/layout/index.vue | 111 + admin-ui/src/main.js | 101 + admin-ui/src/permission.js | 63 + admin-ui/src/plugins/auth.js | 60 + admin-ui/src/plugins/cache.js | 77 + admin-ui/src/plugins/download.js | 65 + admin-ui/src/plugins/index.js | 18 + admin-ui/src/plugins/modal.js | 82 + admin-ui/src/plugins/tab.js | 65 + admin-ui/src/router/index.js | 175 + admin-ui/src/settings.js | 47 + admin-ui/src/store/index.js | 17 + admin-ui/src/store/modules/app.js | 46 + admin-ui/src/store/modules/cache.js | 29 + admin-ui/src/store/modules/dict.js | 57 + admin-ui/src/store/modules/local.js | 31 + admin-ui/src/store/modules/permission.js | 138 + admin-ui/src/store/modules/session.js | 30 + admin-ui/src/store/modules/settings.js | 38 + admin-ui/src/store/modules/tagsView.js | 182 + admin-ui/src/store/modules/user.js | 78 + admin-ui/src/utils/auth.js | 15 + admin-ui/src/utils/dict.js | 24 + admin-ui/src/utils/dynamicTitle.js | 15 + admin-ui/src/utils/errorCode.js | 6 + admin-ui/src/utils/index.js | 398 + admin-ui/src/utils/jsencrypt.js | 30 + admin-ui/src/utils/modules/prototypes.js | 181 + admin-ui/src/utils/modules/timerEvent.js | 25 + admin-ui/src/utils/permission.js | 51 + admin-ui/src/utils/request.js | 234 + admin-ui/src/utils/ruoyi.js | 246 + admin-ui/src/utils/scroll-to.js | 58 + admin-ui/src/utils/theme.js | 49 + admin-ui/src/utils/validate.js | 93 + admin-ui/src/views/WTemplate.vue | 10 + admin-ui/src/views/demo/demo/index.vue | 404 + admin-ui/src/views/demo/tree/index.vue | 281 + admin-ui/src/views/error/401.vue | 82 + admin-ui/src/views/error/404.vue | 227 + admin-ui/src/views/index.vue | 185 + admin-ui/src/views/index/WCount2.vue | 58 + admin-ui/src/views/index/WCount3.vue | 61 + admin-ui/src/views/index/WNoticeList.vue | 96 + admin-ui/src/views/index/count2.js | 82 + admin-ui/src/views/index/count3.js | 83 + admin-ui/src/views/login.vue | 139 + admin-ui/src/views/monitor/admin/index.vue | 13 + admin-ui/src/views/monitor/cache/index.vue | 129 + admin-ui/src/views/monitor/cache/list.vue | 246 + .../src/views/monitor/logininfor/index.vue | 225 + admin-ui/src/views/monitor/online/index.vue | 106 + admin-ui/src/views/monitor/operlog/index.vue | 291 + admin-ui/src/views/monitor/xxljob/index.vue | 13 + admin-ui/src/views/redirect/index.vue | 14 + admin-ui/src/views/register.vue | 219 + admin-ui/src/views/system/config/index.vue | 306 + .../views/system/cron/components/WCronAdd.vue | 67 + .../system/cron/components/WCronEdit.vue | 67 + .../system/cron/components/WCronList.vue | 166 + .../views/system/cron/components/WCronRun.vue | 56 + admin-ui/src/views/system/cron/cron.js | 20 + admin-ui/src/views/system/cron/index.vue | 230 + admin-ui/src/views/system/dept/index.vue | 278 + admin-ui/src/views/system/dict/data.vue | 350 + admin-ui/src/views/system/dict/index.vue | 313 + .../views/system/links/components/WAdd.vue | 101 + .../views/system/links/components/WEdit.vue | 116 + admin-ui/src/views/system/links/index.vue | 128 + admin-ui/src/views/system/menu/index.vue | 441 + admin-ui/src/views/system/notice/index.vue | 283 + admin-ui/src/views/system/oss/config.vue | 382 + admin-ui/src/views/system/oss/index.vue | 374 + admin-ui/src/views/system/post/index.vue | 277 + admin-ui/src/views/system/role/authUser.vue | 172 + admin-ui/src/views/system/role/index.vue | 560 ++ admin-ui/src/views/system/role/selectUser.vue | 140 + admin-ui/src/views/system/user/authRole.vue | 112 + admin-ui/src/views/system/user/index.vue | 658 ++ .../src/views/system/user/profile/index.vue | 87 + .../views/system/user/profile/resetPwd.vue | 57 + .../views/system/user/profile/userAvatar.vue | 171 + .../views/system/user/profile/userInfo.vue | 56 + admin-ui/vite.config.js | 66 + admin-ui/vite/plugins/auto-import.js | 12 + admin-ui/vite/plugins/compression.js | 28 + admin-ui/vite/plugins/index.js | 15 + admin-ui/vite/plugins/setup-extend.js | 5 + admin-ui/vite/plugins/svg-icon.js | 10 + document/Git commit 规范.md | 130 + pom.xml | 466 + ruoyi-admin/Dockerfile | 43 + ruoyi-admin/pom.xml | 178 + .../main/java/com/ruoyi/RuoYiApplication.java | 63 + .../com/ruoyi/RuoYiServletInitializer.java | 18 + .../web/controller/UploadController.java | 56 + .../controller/common/CaptchaController.java | 112 + .../controller/monitor/CacheController.java | 169 + .../monitor/SysLogininforController.java | 88 + .../monitor/SysOperlogController.java | 74 + .../monitor/SysUserOnlineController.java | 90 + .../system/SysConfigController.java | 138 + .../controller/system/SysDeptController.java | 119 + .../system/SysDictDataController.java | 116 + .../system/SysDictTypeController.java | 125 + .../controller/system/SysIndexController.java | 33 + .../controller/system/SysLinksController.java | 115 + .../controller/system/SysLoginController.java | 176 + .../controller/system/SysMenuController.java | 127 + .../system/SysNoticeController.java | 83 + .../system/SysOssConfigController.java | 105 + .../controller/system/SysOssController.java | 117 + .../controller/system/SysPostController.java | 115 + .../system/SysProfileController.java | 161 + .../system/SysRegisterController.java | 40 + .../controller/system/SysRoleController.java | 252 + .../controller/system/SysUserController.java | 291 + .../src/main/resources/application-dev.yml | 126 + .../resources/application-local.yml.template | 126 + .../src/main/resources/application-prod.yml | 122 + .../src/main/resources/application.yml | 317 + ruoyi-admin/src/main/resources/banner.txt | 8 + .../main/resources/i18n/messages.properties | 45 + .../resources/i18n/messages_en_US.properties | 45 + .../resources/i18n/messages_zh_CN.properties | 45 + ruoyi-admin/src/main/resources/logback.xml | 129 + ruoyi-admin/src/main/resources/spy.properties | 28 + .../src/test/java/com/ruoyi/TestSuper.java | 28 + .../java/com/ruoyi/test/AssertUnitTest.java | 45 + .../java/com/ruoyi/test/DemoUnitTest.java | 70 + .../test/java/com/ruoyi/test/ImageTest.java | 91 + .../java/com/ruoyi/test/ParamUnitTest.java | 72 + .../java/com/ruoyi/test/PasswordTest.java | 19 + .../test/java/com/ruoyi/test/TagUnitTest.java | 54 + ruoyi-common/pom.xml | 176 + .../ruoyi/common/annotation/CellMerge.java | 24 + .../ruoyi/common/annotation/DataColumn.java | 28 + .../common/annotation/DataPermission.java | 18 + .../java/com/ruoyi/common/annotation/Dev.java | 9 + .../common/annotation/DictDataMapper.java | 29 + .../ruoyi/common/annotation/EncryptField.java | 44 + .../common/annotation/ExcelDictFormat.java | 32 + .../common/annotation/ExcelEnumFormat.java | 30 + .../common/annotation/IgnoreResponse.java | 24 + .../java/com/ruoyi/common/annotation/Log.java | 47 + .../ruoyi/common/annotation/RateLimiter.java | 41 + .../ruoyi/common/annotation/RepeatSubmit.java | 29 + .../ruoyi/common/annotation/Sensitive.java | 24 + .../ruoyi/common/annotation/Translation.java | 39 + .../common/annotation/TranslationType.java | 21 + .../common/captcha/UnsignedMathGenerator.java | 85 + .../ruoyi/common/config/RSAProperties.java | 47 + .../com/ruoyi/common/config/RuoYiConfig.java | 112 + .../common/config/WxMaConfiguration.java | 129 + .../ruoyi/common/config/WxMaProperties.java | 45 + .../ruoyi/common/constant/CacheConstants.java | 49 + .../com/ruoyi/common/constant/CacheNames.java | 66 + .../com/ruoyi/common/constant/Constants.java | 76 + .../ruoyi/common/constant/GenConstants.java | 193 + .../com/ruoyi/common/constant/HttpStatus.java | 93 + .../ruoyi/common/constant/TransConstant.java | 30 + .../ruoyi/common/constant/UserConstants.java | 132 + .../common/convert/ExcelBigNumberConvert.java | 52 + .../common/convert/ExcelDictConvert.java | 73 + .../common/convert/ExcelEnumConvert.java | 75 + .../core/controller/BaseController.java | 69 + .../ruoyi/common/core/domain/BaseEntity.java | 63 + .../com/ruoyi/common/core/domain/Page.java | 105 + .../ruoyi/common/core/domain/PageQuery.java | 117 + .../java/com/ruoyi/common/core/domain/R.java | 163 + .../ruoyi/common/core/domain/TreeEntity.java | 39 + .../ruoyi/common/core/domain/dto/RoleDTO.java | 38 + .../common/core/domain/dto/UserOnlineDTO.java | 60 + .../common/core/domain/entity/SysDept.java | 80 + .../core/domain/entity/SysDictData.java | 100 + .../core/domain/entity/SysDictType.java | 65 + .../common/core/domain/entity/SysMenu.java | 104 + .../common/core/domain/entity/SysRole.java | 124 + .../common/core/domain/entity/SysUser.java | 170 + .../core/domain/event/LogininforEvent.java | 44 + .../core/domain/event/OperLogEvent.java | 104 + .../common/core/domain/model/LoginBody.java | 42 + .../common/core/domain/model/LoginUser.java | 116 + .../core/domain/model/RegisterBody.java | 17 + .../core/domain/model/SmsLoginBody.java | 28 + .../core/domain/model/XcxLoginUser.java | 24 + .../common/core/domain/query/CountQuery.java | 33 + .../ruoyi/common/core/domain/vo/CountVO.java | 18 + .../common/core/mapper/BaseMapperPlus.java | 192 + .../ruoyi/common/core/page/TableDataInfo.java | 78 + .../common/core/service/ConfigService.java | 18 + .../common/core/service/DeptService.java | 18 + .../common/core/service/DictService.java | 57 + .../ruoyi/common/core/service/OssService.java | 18 + .../common/core/service/SensitiveService.java | 18 + .../common/core/service/UserService.java | 18 + .../ruoyi/common/core/validate/AddGroup.java | 9 + .../ruoyi/common/core/validate/EditGroup.java | 9 + .../common/core/validate/QueryGroup.java | 9 + .../ruoyi/common/encrypt/EncryptContext.java | 41 + .../com/ruoyi/common/encrypt/IEncryptor.java | 35 + .../encrypt/encryptor/AbstractEncryptor.java | 18 + .../encrypt/encryptor/AesEncryptor.java | 69 + .../encrypt/encryptor/Base64Encryptor.java | 48 + .../encrypt/encryptor/RsaEncryptor.java | 65 + .../encrypt/encryptor/Sm2Encryptor.java | 65 + .../encrypt/encryptor/Sm4Encryptor.java | 67 + .../com/ruoyi/common/enums/AlgorithmType.java | 48 + .../ruoyi/common/enums/BusinessStatus.java | 18 + .../com/ruoyi/common/enums/BusinessType.java | 58 + .../ruoyi/common/enums/CaptchaCategory.java | 35 + .../com/ruoyi/common/enums/CaptchaType.java | 29 + .../com/ruoyi/common/enums/DataBaseType.java | 49 + .../com/ruoyi/common/enums/DataScopeType.java | 72 + .../com/ruoyi/common/enums/DeviceType.java | 32 + .../com/ruoyi/common/enums/EncodeType.java | 26 + .../com/ruoyi/common/enums/HttpMethod.java | 32 + .../com/ruoyi/common/enums/LimitType.java | 24 + .../com/ruoyi/common/enums/LoginType.java | 39 + .../com/ruoyi/common/enums/OperatorType.java | 23 + .../ruoyi/common/enums/SensitiveStrategy.java | 49 + .../com/ruoyi/common/enums/UserStatus.java | 26 + .../java/com/ruoyi/common/enums/UserType.java | 47 + .../ruoyi/common/event/SmsResultEvent.java | 49 + .../com/ruoyi/common/event/SmsSendEvent.java | 54 + .../ruoyi/common/excel/CellMergeStrategy.java | 114 + .../common/excel/DefaultExcelListener.java | 106 + .../ruoyi/common/excel/DefautExcelResult.java | 73 + .../com/ruoyi/common/excel/ExcelListener.java | 14 + .../com/ruoyi/common/excel/ExcelResult.java | 26 + .../common/exception/DemoModeException.java | 13 + .../common/exception/GlobalException.java | 52 + .../common/exception/ServiceException.java | 65 + .../ruoyi/common/exception/UtilException.java | 22 + .../common/exception/base/BaseException.java | 75 + .../common/exception/file/FileException.java | 17 + .../FileNameLengthLimitExceededException.java | 14 + .../file/FileSizeLimitExceededException.java | 14 + .../exception/user/CaptchaException.java | 14 + .../user/CaptchaExpireException.java | 14 + .../common/exception/user/UserException.java | 16 + .../user/UserPasswordNotMatchException.java | 14 + ...UserPasswordRetryLimitExceedException.java | 16 + .../ruoyi/common/filter/RepeatableFilter.java | 40 + .../filter/RepeatedlyRequestWrapper.java | 67 + .../com/ruoyi/common/filter/XssFilter.java | 62 + .../filter/XssHttpServletRequestWrapper.java | 97 + .../ruoyi/common/helper/DataBaseHelper.java | 72 + .../common/helper/DataPermissionHelper.java | 93 + .../com/ruoyi/common/helper/LoginHelper.java | 134 + .../jackson/DictDataJsonSerializer.java | 58 + .../jackson/SensitiveJsonSerializer.java | 54 + .../translation/TranslationInterface.java | 17 + .../TranslationBeanSerializerModifier.java | 29 + .../handler/TranslationHandler.java | 65 + .../impl/DeptNameTranslationImpl.java | 25 + .../impl/DictTypeTranslationImpl.java | 29 + .../impl/OssUrlTranslationImpl.java | 25 + .../impl/UserNameTranslationImpl.java | 28 + .../ruoyi/common/type/JSONTypeHandler.java | 61 + .../ruoyi/common/type/ListTypeHandler.java | 61 + .../com/ruoyi/common/type/MapTypeHandler.java | 62 + .../common/type/StringArrayTypeHandler.java | 61 + .../com/ruoyi/common/utils/BeanCopyUtils.java | 204 + .../com/ruoyi/common/utils/ChickenUtil.java | 182 + .../CustomAnnotationBeanNameGenerator.java | 26 + .../com/ruoyi/common/utils/DateUtils.java | 168 + .../ruoyi/common/utils/HttpDownloadUtil.java | 135 + .../java/com/ruoyi/common/utils/IdUtils.java | 213 + .../com/ruoyi/common/utils/JsonUtils.java | 123 + .../com/ruoyi/common/utils/MessageUtils.java | 29 + .../com/ruoyi/common/utils/MongoUtil.java | 539 + .../com/ruoyi/common/utils/ServletUtils.java | 203 + .../com/ruoyi/common/utils/StreamUtils.java | 251 + .../com/ruoyi/common/utils/StringUtils.java | 325 + .../java/com/ruoyi/common/utils/Threads.java | 75 + .../ruoyi/common/utils/TreeBuildUtils.java | 35 + .../ruoyi/common/utils/ValidatorUtils.java | 29 + .../ruoyi/common/utils/WebTemplateTool.java | 8 + .../ruoyi/common/utils/email/MailUtils.java | 468 + .../ruoyi/common/utils/file/FileUtils.java | 52 + .../common/utils/file/MimeTypeUtils.java | 41 + .../ruoyi/common/utils/ip/AddressUtils.java | 60 + .../com/ruoyi/common/utils/poi/ExcelUtil.java | 328 + .../ruoyi/common/utils/redis/CacheUtils.java | 75 + .../ruoyi/common/utils/redis/QueueUtils.java | 180 + .../ruoyi/common/utils/redis/RedisUtils.java | 462 + .../common/utils/reflect/ReflectUtils.java | 56 + .../common/utils/spring/SpringUtils.java | 74 + .../com/ruoyi/common/utils/sql/SqlUtil.java | 57 + .../main/java/com/ruoyi/common/xss/Xss.java | 26 + .../com/ruoyi/common/xss/XssValidator.java | 21 + ruoyi-demo/pom.xml | 44 + .../ruoyi/demo/controller/MailController.java | 52 + .../demo/controller/RedisCacheController.java | 95 + .../demo/controller/RedisLockController.java | 71 + .../controller/RedisPubSubController.java | 47 + .../RedisRateLimiterController.java | 52 + .../ruoyi/demo/controller/SmsController.java | 76 + .../controller/Swagger3DemoController.java | 31 + .../demo/controller/TestBatchController.java | 90 + .../demo/controller/TestDemoController.java | 148 + .../controller/TestEncryptController.java | 55 + .../demo/controller/TestExcelController.java | 97 + .../demo/controller/TestI18nController.java | 71 + .../controller/TestSensitiveController.java | 78 + .../demo/controller/TestTreeController.java | 107 + .../ruoyi/demo/controller/package-info.java | 1 + .../queue/BoundedQueueController.java | 90 + .../queue/DelayedQueueController.java | 90 + .../demo/controller/queue/PriorityDemo.java | 22 + .../queue/PriorityQueueController.java | 89 + .../java/com/ruoyi/demo/domain/TestDemo.java | 66 + .../ruoyi/demo/domain/TestDemoEncrypt.java | 29 + .../java/com/ruoyi/demo/domain/TestTree.java | 58 + .../com/ruoyi/demo/domain/bo/TestDemoBo.java | 59 + .../demo/domain/bo/TestDemoImportVo.java | 53 + .../com/ruoyi/demo/domain/bo/TestTreeBo.java | 47 + .../com/ruoyi/demo/domain/package-info.java | 1 + .../com/ruoyi/demo/domain/vo/TestDemoVo.java | 83 + .../com/ruoyi/demo/domain/vo/TestTreeVo.java | 58 + .../demo/mapper/TestDemoEncryptMapper.java | 13 + .../com/ruoyi/demo/mapper/TestDemoMapper.java | 58 + .../com/ruoyi/demo/mapper/TestTreeMapper.java | 21 + .../com/ruoyi/demo/mapper/package-info.java | 1 + .../ruoyi/demo/service/ITestDemoService.java | 73 + .../ruoyi/demo/service/ITestTreeService.java | 52 + .../service/impl/TestDemoServiceImpl.java | 111 + .../service/impl/TestTreeServiceImpl.java | 87 + .../ruoyi/demo/service/impl/package-info.java | 1 + .../com/ruoyi/demo/service/package-info.java | 1 + .../src/main/resources/excel/单列表.xlsx | Bin 0 -> 10787 bytes .../src/main/resources/excel/多列表.xlsx | Bin 0 -> 10761 bytes .../resources/mapper/demo/TestDemoMapper.xml | 26 + .../resources/mapper/demo/TestTreeMapper.xml | 22 + .../src/main/resources/mapper/package-info.md | 3 + ruoyi-framework/pom.xml | 76 + .../ruoyi/framework/aspectj/DevAspect.java | 25 + .../ruoyi/framework/aspectj/LogAspect.java | 195 + .../framework/aspectj/RateLimiterAspect.java | 121 + .../framework/aspectj/RepeatSubmitAspect.java | 159 + .../framework/config/ApplicationConfig.java | 16 + .../ruoyi/framework/config/AsyncConfig.java | 54 + .../ruoyi/framework/config/CacheConfig.java | 14 + .../ruoyi/framework/config/CaptchaConfig.java | 62 + .../config/CommonResponseBodyAdvice.java | 66 + .../framework/config/EncryptorConfig.java | 39 + .../ruoyi/framework/config/FilterConfig.java | 55 + .../ruoyi/framework/config/I18nConfig.java | 46 + .../ruoyi/framework/config/JacksonConfig.java | 46 + .../ruoyi/framework/config/MailConfig.java | 35 + .../framework/config/MybatisPlusConfig.java | 102 + .../ruoyi/framework/config/RedisConfig.java | 129 + .../framework/config/ResourcesConfig.java | 52 + .../ruoyi/framework/config/SaTokenConfig.java | 85 + .../ruoyi/framework/config/SwaggerConfig.java | 123 + .../framework/config/ThreadPoolConfig.java | 85 + .../framework/config/TranslationConfig.java | 50 + .../framework/config/UndertowConfig.java | 30 + .../framework/config/ValidatorConfig.java | 43 + .../config/properties/CaptchaProperties.java | 38 + .../properties/EncryptorProperties.java | 50 + .../config/properties/MailProperties.java | 71 + .../config/properties/RedissonProperties.java | 137 + .../config/properties/SecurityProperties.java | 23 + .../config/properties/SwaggerProperties.java | 96 + .../properties/ThreadPoolProperties.java | 32 + .../config/properties/XssProperties.java | 32 + .../encrypt/MybatisDecryptInterceptor.java | 113 + .../encrypt/MybatisEncryptInterceptor.java | 118 + .../framework/handler/AllUrlHandler.java | 41 + .../CreateAndUpdateMetaObjectHandler.java | 79 + .../framework/handler/KeyPrefixHandler.java | 50 + .../framework/handler/OpenApiHandler.java | 272 + .../handler/PlusDataPermissionHandler.java | 199 + .../PlusDataPermissionInterceptor.java | 108 + .../PlusWebInvokeTimeInterceptor.java | 94 + .../jackson/BigNumberSerializer.java | 42 + .../listener/UserActionListener.java | 139 + .../framework/manager/EncryptorManager.java | 96 + .../manager/PlusSpringCacheManager.java | 191 + .../framework/manager/ShutdownManager.java | 41 + .../framework/satoken/dao/PlusSaTokenDao.java | 176 + .../satoken/service/SaPermissionImpl.java | 47 + .../web/exception/GlobalExceptionHandler.java | 174 + ruoyi-oss/pom.xml | 33 + .../com/ruoyi/oss/constant/OssConstant.java | 38 + .../java/com/ruoyi/oss/core/OssClient.java | 268 + .../com/ruoyi/oss/entity/UploadResult.java | 24 + .../com/ruoyi/oss/enumd/AccessPolicyType.java | 55 + .../java/com/ruoyi/oss/enumd/PolicyType.java | 35 + .../com/ruoyi/oss/exception/OssException.java | 16 + .../com/ruoyi/oss/factory/OssFactory.java | 63 + .../ruoyi/oss/properties/OssProperties.java | 58 + ruoyi-sms/pom.xml | 40 + .../java/com/ruoyi/sms/api/SmsSendDevApi.java | 37 + .../java/com/ruoyi/sms/config/SmsConfig.java | 56 + .../properties/SmsChineseProperties.java | 21 + .../sms/config/properties/SmsProperties.java | 47 + .../com/ruoyi/sms/core/AliyunSmsTemplate.java | 66 + .../ruoyi/sms/core/ChineseSmsTemplate.java | 90 + .../java/com/ruoyi/sms/core/SmsTemplate.java | 26 + .../ruoyi/sms/core/TencentSmsTemplate.java | 82 + .../java/com/ruoyi/sms/entity/SmsResult.java | 31 + .../com/ruoyi/sms/exception/SmsException.java | 16 + .../com/ruoyi/sms/listener/SendListener.java | 42 + ruoyi-system-cron/README.md | 28 + ruoyi-system-cron/cron.zip | Bin 0 -> 8710 bytes ruoyi-system-cron/pom.xml | 38 + .../src/main/java/com/ruoyi/cron/TaskLog.java | 20 + .../java/com/ruoyi/cron/annotation/Cron.java | 24 + .../ruoyi/cron/annotation/CronComponent.java | 14 + .../com/ruoyi/cron/annotation/CronParam.java | 21 + .../java/com/ruoyi/cron/api/CronTaskApi.java | 156 + .../com/ruoyi/cron/document/CronTask.java | 65 + .../com/ruoyi/cron/document/CronTaskLog.java | 44 + .../ruoyi/cron/event/CronTaskChangeEvent.java | 25 + .../com/ruoyi/cron/event/CronTaskEvent.java | 25 + .../ruoyi/cron/query/CronTaskLogQuery.java | 39 + .../cron/runner/CronBeanPostProcessor.java | 62 + .../com/ruoyi/cron/runner/CronRunner.java | 197 + .../com/ruoyi/cron/runner/TaskLogImpl.java | 27 + .../com/ruoyi/cron/runner/package-info.java | 11 + .../com/ruoyi/cron/task/CronTaskTestTask.java | 57 + .../java/com/ruoyi/cron/vo/CronTaskVo.java | 51 + ruoyi-system/pom.xml | 45 + .../system/config/DownloadFileConfig.java | 75 + .../com/ruoyi/system/domain/SysCache.java | 47 + .../com/ruoyi/system/domain/SysConfig.java | 71 + .../com/ruoyi/system/domain/SysLinks.java | 76 + .../ruoyi/system/domain/SysLogininfor.java | 91 + .../com/ruoyi/system/domain/SysNotice.java | 58 + .../com/ruoyi/system/domain/SysOperLog.java | 142 + .../java/com/ruoyi/system/domain/SysOss.java | 50 + .../com/ruoyi/system/domain/SysOssConfig.java | 89 + .../java/com/ruoyi/system/domain/SysPost.java | 78 + .../com/ruoyi/system/domain/SysRoleDept.java | 29 + .../com/ruoyi/system/domain/SysRoleMenu.java | 29 + .../ruoyi/system/domain/SysUserOnline.java | 54 + .../com/ruoyi/system/domain/SysUserPost.java | 29 + .../com/ruoyi/system/domain/SysUserRole.java | 29 + .../com/ruoyi/system/domain/bo/SysOssBo.java | 46 + .../system/domain/bo/SysOssConfigBo.java | 107 + .../system/domain/query/SysLinksQuery.java | 39 + .../com/ruoyi/system/domain/vo/MetaVo.java | 61 + .../com/ruoyi/system/domain/vo/RouterVo.java | 62 + .../system/domain/vo/SysOssConfigVo.java | 90 + .../com/ruoyi/system/domain/vo/SysOssVo.java | 58 + .../system/domain/vo/SysUserExportVo.java | 91 + .../system/domain/vo/SysUserImportVo.java | 73 + .../system/domain/vo/SysUserSearchVo.java | 40 + .../listener/SysUserImportListener.java | 118 + .../ruoyi/system/mapper/SysConfigMapper.java | 13 + .../ruoyi/system/mapper/SysDeptMapper.java | 45 + .../system/mapper/SysDictDataMapper.java | 24 + .../system/mapper/SysDictTypeMapper.java | 13 + .../ruoyi/system/mapper/SysLinksMapper.java | 17 + .../system/mapper/SysLogininforMapper.java | 13 + .../ruoyi/system/mapper/SysMenuMapper.java | 82 + .../ruoyi/system/mapper/SysNoticeMapper.java | 13 + .../ruoyi/system/mapper/SysOperLogMapper.java | 13 + .../system/mapper/SysOssConfigMapper.java | 16 + .../com/ruoyi/system/mapper/SysOssMapper.java | 13 + .../ruoyi/system/mapper/SysPostMapper.java | 31 + .../system/mapper/SysRoleDeptMapper.java | 13 + .../ruoyi/system/mapper/SysRoleMapper.java | 62 + .../system/mapper/SysRoleMenuMapper.java | 13 + .../ruoyi/system/mapper/SysUserMapper.java | 86 + .../system/mapper/SysUserPostMapper.java | 13 + .../system/mapper/SysUserRoleMapper.java | 17 + .../runner/SystemApplicationRunner.java | 41 + .../com/ruoyi/system/service/FileService.java | 121 + .../system/service/ISysConfigService.java | 106 + .../system/service/ISysDataScopeService.java | 26 + .../ruoyi/system/service/ISysDeptService.java | 129 + .../system/service/ISysDictDataService.java | 66 + .../system/service/ISysDictTypeService.java | 104 + .../system/service/ISysLinksService.java | 31 + .../system/service/ISysLogininforService.java | 46 + .../ruoyi/system/service/ISysMenuService.java | 137 + .../system/service/ISysNoticeService.java | 66 + .../system/service/ISysOperLogService.java | 53 + .../system/service/ISysOssConfigService.java | 65 + .../ruoyi/system/service/ISysOssService.java | 364 + .../ruoyi/system/service/ISysPostService.java | 105 + .../ruoyi/system/service/ISysRoleService.java | 179 + .../ruoyi/system/service/ISysUserService.java | 241 + .../ruoyi/system/service/SysLoginService.java | 383 + .../system/service/SysPermissionService.java | 55 + .../system/service/SysRegisterService.java | 106 + .../system/service/impl/FileServiceImpl.java | 85 + .../service/impl/SysConfigServiceImpl.java | 282 + .../service/impl/SysDataScopeServiceImpl.java | 61 + .../service/impl/SysDeptServiceImpl.java | 320 + .../service/impl/SysDictDataServiceImpl.java | 133 + .../service/impl/SysDictTypeServiceImpl.java | 282 + .../service/impl/SysLinksServiceImpl.java | 56 + .../impl/SysLogininforServiceImpl.java | 155 + .../service/impl/SysMenuServiceImpl.java | 447 + .../service/impl/SysNoticeServiceImpl.java | 108 + .../service/impl/SysOperLogServiceImpl.java | 141 + .../service/impl/SysOssConfigServiceImpl.java | 170 + .../service/impl/SysOssServiceImpl.java | 329 + .../service/impl/SysPostServiceImpl.java | 177 + .../service/impl/SysRoleServiceImpl.java | 406 + .../service/impl/SysSensitiveServiceImpl.java | 28 + .../service/impl/SysUserServiceImpl.java | 529 + .../src/main/resources/mapper/package-info.md | 3 + .../mapper/system/SysConfigMapper.xml | 19 + .../resources/mapper/system/SysDeptMapper.xml | 40 + .../mapper/system/SysDictDataMapper.xml | 23 + .../mapper/system/SysDictTypeMapper.xml | 18 + .../mapper/system/SysLogininforMapper.xml | 19 + .../resources/mapper/system/SysMenuMapper.xml | 105 + .../mapper/system/SysNoticeMapper.xml | 20 + .../mapper/system/SysOperLogMapper.xml | 26 + .../mapper/system/SysOssConfigMapper.xml | 27 + .../resources/mapper/system/SysOssMapper.xml | 18 + .../resources/mapper/system/SysPostMapper.xml | 36 + .../mapper/system/SysRoleDeptMapper.xml | 12 + .../resources/mapper/system/SysRoleMapper.xml | 70 + .../mapper/system/SysRoleMenuMapper.xml | 12 + .../resources/mapper/system/SysUserMapper.xml | 168 + .../mapper/system/SysUserPostMapper.xml | 12 + .../mapper/system/SysUserRoleMapper.xml | 17 + ruoyi.sql | 1061 ++ script/bin/ry.bat | 68 + script/bin/ry.sh | 96 + script/docker/db-admin.sh | 1 + script/docker/db-backup.sh | 32 + script/docker/db/backup/README.md | 1 + script/docker/db/data/README.md | 1 + script/docker/docker-compose.yml | 171 + script/docker/docker环境.md | 185 + script/docker/minio/config/README.md | 1 + script/docker/minio/data/README.md | 1 + script/docker/mongo.sh | 1 + script/docker/mongodb/backup/README.md | 1 + script/docker/mongodb/data/README.md | 1 + script/docker/nginx/cert/README.md | 1 + script/docker/nginx/conf/nginx.conf | 146 + script/docker/nginx/html/README.md | 1 + script/docker/nginx/log/README.md | 1 + script/docker/redis/conf/redis.conf | 30 + script/docker/redis/data/README.md | 1 + script/docker/restart.sh | 14 + script/docker/server1/config/README.md | 1 + .../server1/config/application-prod.yml | 122 + script/docker/server1/log/README.md | 1 + script/docker/server1/tmp/README.md | 1 + script/docker/server1/upload/README.md | 1 + uniapp/.env | 38 + uniapp/.env.development | 31 + uniapp/.env.development.local.template | 29 + uniapp/.env.production | 33 + uniapp/.gitignore | 22 + uniapp/.vscode/css.code-snippets | 398 + uniapp/.vscode/js.code-snippets | 2055 ++++ uniapp/.vscode/settings.json | 3 + uniapp/.vscode/vue-html.code-snippets | 622 ++ uniapp/LICENSE | 73 + uniapp/README.md | 3 + uniapp/index.html | 20 + uniapp/jsconfig.json | 20 + uniapp/package.json | 73 + uniapp/pnpm-lock.yaml | 8699 +++++++++++++++++ uniapp/src/App.vue | 28 + uniapp/src/WebSocket.js | 121 + uniapp/src/api/address/address.js | 8 + uniapp/src/api/address/city.js | 6 + uniapp/src/api/index.js | 18 + uniapp/src/api/system/config.js | 7 + uniapp/src/api/system/dict/data.js | 9 + uniapp/src/api/system/dict/type.js | 60 + uniapp/src/api/system/linksApi.js | 5 + uniapp/src/api/system/notice.js | 12 + uniapp/src/api/system/user.js | 9 + uniapp/src/api/system/user/profile.js | 20 + uniapp/src/api/upload.js | 32 + uniapp/src/api/wx.js | 26 + uniapp/src/components/README.md | 3 + .../components/c-icon-links/c-icon-links.vue | 29 + uniapp/src/components/c-links/c-links.vue | 120 + uniapp/src/components/c-tabs/c-tabs.vue | 52 + uniapp/src/components/c-tag/README.md | 91 + uniapp/src/components/c-tag/c-tag.vue | 66 + uniapp/src/components/c-user/c-user.vue | 147 + .../qiun-data-charts/qiun-data-charts.vue | 1618 +++ .../src/components/qiun-error/qiun-error.vue | 46 + .../src/components/qiun-loading/loading1.vue | 162 + .../src/components/qiun-loading/loading2.vue | 170 + .../src/components/qiun-loading/loading3.vue | 173 + .../src/components/qiun-loading/loading4.vue | 222 + .../src/components/qiun-loading/loading5.vue | 229 + .../components/qiun-loading/qiun-loading.vue | 36 + uniapp/src/custom/README.md | 1 + uniapp/src/custom/c-city-select.vue | 160 + uniapp/src/custom/c-tabbar.vue | 44 + uniapp/src/env.js | 47 + uniapp/src/js_sdk/u-charts/config-echarts.js | 422 + uniapp/src/js_sdk/u-charts/config-ucharts.js | 606 ++ uniapp/src/js_sdk/u-charts/readme.md | 5 + uniapp/src/js_sdk/u-charts/u-charts.js | 7706 +++++++++++++++ uniapp/src/js_sdk/u-charts/u-charts.min.js | 18 + uniapp/src/main.js | 23 + uniapp/src/manifest.json | 87 + uniapp/src/pages.json | 179 + uniapp/src/pages/demo/demo-city-select.vue | 32 + .../pages/demo/demo-x-student-course-day.vue | 64 + .../pages/demo/demo-x-student-course-week.vue | 98 + uniapp/src/pages/demo/demo-x-tabs.vue | 49 + .../pages/demo/demo-x-teacher-course-day.vue | 64 + .../pages/demo/demo-x-teacher-course-week.vue | 98 + uniapp/src/pages/demo/demo-x-weeks.vue | 50 + uniapp/src/pages/demo/demo-x-work-time.vue | 26 + uniapp/src/pages/demo/demo-x-xq-select.vue | 33 + uniapp/src/pages/demo/demo0.vue | 167 + uniapp/src/pages/demo/demo1.vue | 57 + uniapp/src/pages/demo/demo2.vue | 84 + uniapp/src/pages/demo/demo3.vue | 153 + uniapp/src/pages/demo/demo4.vue | 132 + uniapp/src/pages/demo/demo5.vue | 134 + uniapp/src/pages/demo/demo6.vue | 143 + uniapp/src/pages/demo/index.vue | 44 + uniapp/src/pages/demo/template.vue | 24 + uniapp/src/pages/index/index.vue | 52 + uniapp/src/pages/index/launch.vue | 124 + uniapp/src/pages/index/login.vue | 162 + uniapp/src/pages/index/msg.vue | 51 + uniapp/src/pages/index/notice-list.vue | 80 + uniapp/src/pages/index/notice.vue | 71 + uniapp/src/pages/index/qr-code.vue | 81 + uniapp/src/pages/index/webview.vue | 41 + uniapp/src/pages/template.vue | 23 + uniapp/src/pages/user/address.vue | 242 + uniapp/src/pages/user/components/w-clear.vue | 68 + .../pages/user/components/w-set-avatar.vue | 57 + uniapp/src/pages/user/contacts.vue | 106 + uniapp/src/pages/user/index.vue | 218 + uniapp/src/pages/user/select.vue | 143 + uniapp/src/pages/user/set-pwd.vue | 108 + uniapp/src/pages/user/set.vue | 280 + uniapp/src/pages/user/user.vue | 59 + uniapp/src/static/app-plus/echarts.min.js | 23 + uniapp/src/static/avatar.png | Bin 0 -> 48492 bytes uniapp/src/static/favicon.ico | Bin 0 -> 6647 bytes uniapp/src/static/h5/echarts.min.js | 23 + uniapp/src/static/logo.png | Bin 0 -> 18284 bytes uniapp/src/static/mescroll/empty.png | Bin 0 -> 7118 bytes uniapp/src/static/mescroll/totop.png | Bin 0 -> 288 bytes uniapp/src/static/qrcode.svg | 7 + uniapp/src/static/wave.svg | 17 + uniapp/src/store/index.js | 17 + uniapp/src/store/modules/auth.js | 181 + uniapp/src/store/modules/cache.js | 15 + uniapp/src/store/modules/common.js | 34 + uniapp/src/store/modules/config.js | 64 + uniapp/src/store/modules/demo1.js | 30 + uniapp/src/store/modules/demo2.js | 32 + uniapp/src/store/modules/dict.js | 78 + uniapp/src/store/modules/image.js | 37 + uniapp/src/store/modules/persistent.js | 27 + uniapp/src/uni.scss | 81 + .../uni_modules/cc-selectDity/changelog.md | 32 + .../components/cc-selectDity/area.js | 5589 +++++++++++ .../cc-selectDity/cc-selectDity.vue | 302 + .../uni_modules/cc-selectDity/package.json | 85 + .../src/uni_modules/cc-selectDity/readme.md | 222 + .../src/uni_modules/ksp-cropper/changelog.md | 26 + .../components/ksp-cropper/ksp-cropper.vue | 975 ++ .../src/uni_modules/ksp-cropper/package.json | 80 + uniapp/src/uni_modules/ksp-cropper/readme.md | 77 + .../uni_modules/luanqing-search/changelog.md | 2 + .../luanqing-search/luanqing-search.vue | 74 + .../uni_modules/luanqing-search/package.json | 80 + .../src/uni_modules/luanqing-search/readme.md | 21 + .../src/uni_modules/mescroll-uni/changelog.md | 8 + .../mescroll-body/mescroll-body.css | 19 + .../mescroll-body/mescroll-body.vue | 400 + .../beibei/components/mescroll-down.css | 47 + .../beibei/components/mescroll-down.vue | 39 + .../mescroll-diy/beibei/mescroll-body.vue | 360 + .../beibei/mescroll-uni-option.js | 49 + .../mescroll-diy/beibei/mescroll-uni.vue | 434 + .../xinlang/components/mescroll-down.css | 44 + .../xinlang/components/mescroll-down.vue | 53 + .../xinlang/components/mescroll-up.css | 32 + .../xinlang/components/mescroll-up.vue | 40 + .../mescroll-diy/xinlang/mescroll-body.vue | 380 + .../xinlang/mescroll-uni-option.js | 64 + .../mescroll-diy/xinlang/mescroll-uni.vue | 459 + .../mescroll-empty/mescroll-empty.vue | 116 + .../mescroll-uni/components/mescroll-down.css | 55 + .../mescroll-uni/components/mescroll-down.vue | 47 + .../mescroll-uni/components/mescroll-top.vue | 99 + .../mescroll-uni/components/mescroll-up.css | 47 + .../mescroll-uni/components/mescroll-up.vue | 39 + .../components/mescroll-uni/mescroll-i18n.js | 15 + .../mescroll-uni/mescroll-mixins.js | 46 + .../mescroll-uni/mescroll-uni-option.js | 64 + .../components/mescroll-uni/mescroll-uni.css | 36 + .../components/mescroll-uni/mescroll-uni.js | 799 ++ .../components/mescroll-uni/mescroll-uni.vue | 480 + .../mescroll-uni/mixins/mescroll-comp.js | 47 + .../mescroll-uni/mixins/mescroll-more-item.js | 57 + .../mescroll-uni/mixins/mescroll-more.js | 77 + .../components/mescroll-uni/wxs/mixins.js | 109 + .../components/mescroll-uni/wxs/renderjs.js | 92 + .../components/mescroll-uni/wxs/wxs.wxs | 269 + .../mescroll-uni/hooks/useMescroll.js | 66 + .../mescroll-uni/hooks/useMescrollComp.js | 56 + .../mescroll-uni/hooks/useMescrollMore.js | 69 + .../src/uni_modules/mescroll-uni/package.json | 77 + uniapp/src/uni_modules/mescroll-uni/readme.md | 43 + uniapp/src/util/index.js | 28 + uniapp/src/util/modules/file.js | 71 + uniapp/src/util/modules/functions.js | 27 + uniapp/src/util/modules/http.js | 117 + uniapp/src/util/modules/util.js | 551 ++ uniapp/src/w-components/README.md | 1 + .../components/w-banner/w-banner.vue | 49 + .../components/w-bind-phone/w-bind-phone.vue | 221 + .../w-components/components/w-fab/README.md | 3 + .../w-components/components/w-fab/w-fab.vue | 33 + .../components/w-footer/w-footer.vue | 28 + .../components/w-loader/w-loader.vue | 149 + .../components/w-navbar/w-navbar.vue | 138 + .../w-popup-input/w-popup-input.vue | 170 + .../components/w-public/w-public.vue | 68 + .../w-components/components/w-qr-code/1.png | Bin 0 -> 5374 bytes .../w-components/components/w-qr-code/2.png | Bin 0 -> 15099 bytes .../w-components/components/w-qr-code/3.gif | Bin 0 -> 602723 bytes .../components/w-qr-code/README.md | 95 + .../components/w-qr-code/qrcode.js | 2286 +++++ .../components/w-qr-code/w-qr-code.vue | 285 + .../components/w-safe-area/README.md | 10 + .../components/w-safe-area/w-safe-area.vue | 18 + .../components/w-safe-var/README.md | 2 + .../components/w-safe-var/w-safe-var.vue | 11 + .../w-select-time/w-select-time.vue | 59 + .../components/w-wx-login/README.md | 9 + .../components/w-wx-login/w-wx-login.vue | 202 + uniapp/src/w-components/index.js | 69 + uniapp/src/w-components/index.scss | 444 + uniapp/src/w-components/mixins/mp-weixin.js | 24 + .../w-components/modules/PageAnimationType.js | 2 + uniapp/src/w-components/modules/prototypes.js | 184 + uniapp/src/w-components/modules/util.js | 244 + uniapp/src/w-components/props/index.js | 13 + uniapp/src/w-components/theme.scss | 60 + uniapp/vite.config.js | 8 + uniapp/web/README.md | 3 + uniapp/web/imgs/favicon.ico | Bin 0 -> 6647 bytes uniapp/web/imgs/logo.png | Bin 0 -> 18284 bytes uniapp/web/imgs/my.webp | Bin 0 -> 59293 bytes uniapp/web/qa.html | 11 + uniapp/web/us.html | 11 + 954 files changed, 108640 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 README.md create mode 100644 admin-ui/.env create mode 100644 admin-ui/.env.development create mode 100644 admin-ui/.env.production create mode 100644 admin-ui/.gitignore create mode 100644 admin-ui/README.md create mode 100644 admin-ui/bin/build.bat create mode 100644 admin-ui/bin/package.bat create mode 100644 admin-ui/bin/run-web.bat create mode 100644 admin-ui/db-ddl.html create mode 100644 admin-ui/game.html create mode 100644 admin-ui/html/ie.html create mode 100644 admin-ui/index.html create mode 100644 admin-ui/jsconfig.json create mode 100644 admin-ui/package.json create mode 100644 admin-ui/pnpm-lock.yaml create mode 100644 admin-ui/public/favicon.ico create mode 100644 admin-ui/public/logo.png create mode 100644 admin-ui/src/App.vue create mode 100644 admin-ui/src/api/demo/demo.js create mode 100644 admin-ui/src/api/demo/tree.js create mode 100644 admin-ui/src/api/login.js create mode 100644 admin-ui/src/api/menu.js create mode 100644 admin-ui/src/api/monitor/cache.js create mode 100644 admin-ui/src/api/monitor/logininfor.js create mode 100644 admin-ui/src/api/monitor/online.js create mode 100644 admin-ui/src/api/monitor/operlog.js create mode 100644 admin-ui/src/api/system/config.js create mode 100644 admin-ui/src/api/system/dept.js create mode 100644 admin-ui/src/api/system/dict/data.js create mode 100644 admin-ui/src/api/system/dict/type.js create mode 100644 admin-ui/src/api/system/links.js create mode 100644 admin-ui/src/api/system/menu.js create mode 100644 admin-ui/src/api/system/notice.js create mode 100644 admin-ui/src/api/system/oss.js create mode 100644 admin-ui/src/api/system/ossConfig.js create mode 100644 admin-ui/src/api/system/post.js create mode 100644 admin-ui/src/api/system/role.js create mode 100644 admin-ui/src/api/system/user.js create mode 100644 admin-ui/src/api/tool/gen.js create mode 100644 admin-ui/src/api/upload.js create mode 100644 admin-ui/src/assets/401_images/401.gif create mode 100644 admin-ui/src/assets/404_images/404.png create mode 100644 admin-ui/src/assets/404_images/404_cloud.png create mode 100644 admin-ui/src/assets/css/login.scss create mode 100644 admin-ui/src/assets/icons/svg/404.svg create mode 100644 admin-ui/src/assets/icons/svg/bug.svg create mode 100644 admin-ui/src/assets/icons/svg/build.svg create mode 100644 admin-ui/src/assets/icons/svg/button.svg create mode 100644 admin-ui/src/assets/icons/svg/cascader.svg create mode 100644 admin-ui/src/assets/icons/svg/chart.svg create mode 100644 admin-ui/src/assets/icons/svg/checkbox.svg create mode 100644 admin-ui/src/assets/icons/svg/clipboard.svg create mode 100644 admin-ui/src/assets/icons/svg/code.svg create mode 100644 admin-ui/src/assets/icons/svg/color.svg create mode 100644 admin-ui/src/assets/icons/svg/component.svg create mode 100644 admin-ui/src/assets/icons/svg/dashboard.svg create mode 100644 admin-ui/src/assets/icons/svg/date-range.svg create mode 100644 admin-ui/src/assets/icons/svg/date.svg create mode 100644 admin-ui/src/assets/icons/svg/dict.svg create mode 100644 admin-ui/src/assets/icons/svg/documentation.svg create mode 100644 admin-ui/src/assets/icons/svg/download.svg create mode 100644 admin-ui/src/assets/icons/svg/drag.svg create mode 100644 admin-ui/src/assets/icons/svg/druid.svg create mode 100644 admin-ui/src/assets/icons/svg/edit.svg create mode 100644 admin-ui/src/assets/icons/svg/education.svg create mode 100644 admin-ui/src/assets/icons/svg/email.svg create mode 100644 admin-ui/src/assets/icons/svg/example.svg create mode 100644 admin-ui/src/assets/icons/svg/excel.svg create mode 100644 admin-ui/src/assets/icons/svg/exit-fullscreen.svg create mode 100644 admin-ui/src/assets/icons/svg/eye-open.svg create mode 100644 admin-ui/src/assets/icons/svg/eye.svg create mode 100644 admin-ui/src/assets/icons/svg/form.svg create mode 100644 admin-ui/src/assets/icons/svg/fullscreen.svg create mode 100644 admin-ui/src/assets/icons/svg/github.svg create mode 100644 admin-ui/src/assets/icons/svg/guide.svg create mode 100644 admin-ui/src/assets/icons/svg/icon.svg create mode 100644 admin-ui/src/assets/icons/svg/input.svg create mode 100644 admin-ui/src/assets/icons/svg/international.svg create mode 100644 admin-ui/src/assets/icons/svg/job.svg create mode 100644 admin-ui/src/assets/icons/svg/language.svg create mode 100644 admin-ui/src/assets/icons/svg/link.svg create mode 100644 admin-ui/src/assets/icons/svg/list.svg create mode 100644 admin-ui/src/assets/icons/svg/lock.svg create mode 100644 admin-ui/src/assets/icons/svg/log.svg create mode 100644 admin-ui/src/assets/icons/svg/logininfor.svg create mode 100644 admin-ui/src/assets/icons/svg/message.svg create mode 100644 admin-ui/src/assets/icons/svg/money.svg create mode 100644 admin-ui/src/assets/icons/svg/monitor.svg create mode 100644 admin-ui/src/assets/icons/svg/nested.svg create mode 100644 admin-ui/src/assets/icons/svg/number.svg create mode 100644 admin-ui/src/assets/icons/svg/online.svg create mode 100644 admin-ui/src/assets/icons/svg/password.svg create mode 100644 admin-ui/src/assets/icons/svg/pdf.svg create mode 100644 admin-ui/src/assets/icons/svg/people.svg create mode 100644 admin-ui/src/assets/icons/svg/peoples.svg create mode 100644 admin-ui/src/assets/icons/svg/phone.svg create mode 100644 admin-ui/src/assets/icons/svg/post.svg create mode 100644 admin-ui/src/assets/icons/svg/qq.svg create mode 100644 admin-ui/src/assets/icons/svg/question.svg create mode 100644 admin-ui/src/assets/icons/svg/radio.svg create mode 100644 admin-ui/src/assets/icons/svg/rate.svg create mode 100644 admin-ui/src/assets/icons/svg/redis-list.svg create mode 100644 admin-ui/src/assets/icons/svg/redis.svg create mode 100644 admin-ui/src/assets/icons/svg/row.svg create mode 100644 admin-ui/src/assets/icons/svg/search.svg create mode 100644 admin-ui/src/assets/icons/svg/select.svg create mode 100644 admin-ui/src/assets/icons/svg/server.svg create mode 100644 admin-ui/src/assets/icons/svg/shopping.svg create mode 100644 admin-ui/src/assets/icons/svg/size.svg create mode 100644 admin-ui/src/assets/icons/svg/skill.svg create mode 100644 admin-ui/src/assets/icons/svg/slider.svg create mode 100644 admin-ui/src/assets/icons/svg/star.svg create mode 100644 admin-ui/src/assets/icons/svg/swagger.svg create mode 100644 admin-ui/src/assets/icons/svg/switch.svg create mode 100644 admin-ui/src/assets/icons/svg/system.svg create mode 100644 admin-ui/src/assets/icons/svg/tab.svg create mode 100644 admin-ui/src/assets/icons/svg/table.svg create mode 100644 admin-ui/src/assets/icons/svg/textarea.svg create mode 100644 admin-ui/src/assets/icons/svg/theme.svg create mode 100644 admin-ui/src/assets/icons/svg/time-range.svg create mode 100644 admin-ui/src/assets/icons/svg/time.svg create mode 100644 admin-ui/src/assets/icons/svg/tool.svg create mode 100644 admin-ui/src/assets/icons/svg/tree-table.svg create mode 100644 admin-ui/src/assets/icons/svg/tree.svg create mode 100644 admin-ui/src/assets/icons/svg/upload.svg create mode 100644 admin-ui/src/assets/icons/svg/user.svg create mode 100644 admin-ui/src/assets/icons/svg/validCode.svg create mode 100644 admin-ui/src/assets/icons/svg/wechat.svg create mode 100644 admin-ui/src/assets/icons/svg/zip.svg create mode 100644 admin-ui/src/assets/images/avatar.png create mode 100644 admin-ui/src/assets/images/dark.svg create mode 100644 admin-ui/src/assets/images/light.svg create mode 100644 admin-ui/src/assets/images/login-background.jpg create mode 100644 admin-ui/src/assets/images/login.png create mode 100644 admin-ui/src/assets/images/profile.jpg create mode 100644 admin-ui/src/assets/styles/btn.scss create mode 100644 admin-ui/src/assets/styles/element-ui.scss create mode 100644 admin-ui/src/assets/styles/index.scss create mode 100644 admin-ui/src/assets/styles/mixin.scss create mode 100644 admin-ui/src/assets/styles/ruoyi.scss create mode 100644 admin-ui/src/assets/styles/sidebar.scss create mode 100644 admin-ui/src/assets/styles/transition.scss create mode 100644 admin-ui/src/assets/styles/variables.module.scss create mode 100644 admin-ui/src/auto/components/WCronInput.vue create mode 100644 admin-ui/src/auto/components/WImageView.vue create mode 100644 admin-ui/src/auto/components/WMove.vue create mode 100644 admin-ui/src/auto/components/WPhone.vue create mode 100644 admin-ui/src/auto/components/WSensitive.vue create mode 100644 admin-ui/src/auto/components/WTemplate.vue create mode 100644 admin-ui/src/auto/components/WUpload.vue create mode 100644 admin-ui/src/auto/components/WUser.vue create mode 100644 admin-ui/src/auto/components/WUserSelect.vue create mode 100644 admin-ui/src/auto/components/vue3Cron.vue create mode 100644 admin-ui/src/auto/custom/READMD.md create mode 100644 admin-ui/src/auto/index.js create mode 100644 admin-ui/src/components/Breadcrumb/index.vue create mode 100644 admin-ui/src/components/DictTag/index.vue create mode 100644 admin-ui/src/components/Editor/index.vue create mode 100644 admin-ui/src/components/FileUpload/index.vue create mode 100644 admin-ui/src/components/Hamburger/index.vue create mode 100644 admin-ui/src/components/HeaderSearch/index.vue create mode 100644 admin-ui/src/components/IconSelect/index.vue create mode 100644 admin-ui/src/components/IconSelect/requireIcons.js create mode 100644 admin-ui/src/components/ImagePreview/index.vue create mode 100644 admin-ui/src/components/ImageUpload/index.vue create mode 100644 admin-ui/src/components/Pagination/index.vue create mode 100644 admin-ui/src/components/ParentView/index.vue create mode 100644 admin-ui/src/components/RightToolbar/index.vue create mode 100644 admin-ui/src/components/RuoYi/Doc/index.vue create mode 100644 admin-ui/src/components/RuoYi/Git/index.vue create mode 100644 admin-ui/src/components/Screenfull/index.vue create mode 100644 admin-ui/src/components/SizeSelect/index.vue create mode 100644 admin-ui/src/components/SvgIcon/index.vue create mode 100644 admin-ui/src/components/SvgIcon/svgicon.js create mode 100644 admin-ui/src/components/TopNav/index.vue create mode 100644 admin-ui/src/components/TreeSelect/index.vue create mode 100644 admin-ui/src/components/bg/WBg1.vue create mode 100644 admin-ui/src/components/iFrame/index.vue create mode 100644 admin-ui/src/directive/common/copyText.js create mode 100644 admin-ui/src/directive/index.js create mode 100644 admin-ui/src/directive/permission/hasPermi.js create mode 100644 admin-ui/src/directive/permission/hasRole.js create mode 100644 admin-ui/src/layout/components/AppMain.vue create mode 100644 admin-ui/src/layout/components/IframeToggle/index.vue create mode 100644 admin-ui/src/layout/components/InnerLink/index.vue create mode 100644 admin-ui/src/layout/components/Navbar.vue create mode 100644 admin-ui/src/layout/components/Settings/index.vue create mode 100644 admin-ui/src/layout/components/Sidebar/Link.vue create mode 100644 admin-ui/src/layout/components/Sidebar/Logo.vue create mode 100644 admin-ui/src/layout/components/Sidebar/SidebarItem.vue create mode 100644 admin-ui/src/layout/components/Sidebar/index.vue create mode 100644 admin-ui/src/layout/components/TagsView/ScrollPane.vue create mode 100644 admin-ui/src/layout/components/TagsView/index.vue create mode 100644 admin-ui/src/layout/components/index.js create mode 100644 admin-ui/src/layout/index.vue create mode 100644 admin-ui/src/main.js create mode 100644 admin-ui/src/permission.js create mode 100644 admin-ui/src/plugins/auth.js create mode 100644 admin-ui/src/plugins/cache.js create mode 100644 admin-ui/src/plugins/download.js create mode 100644 admin-ui/src/plugins/index.js create mode 100644 admin-ui/src/plugins/modal.js create mode 100644 admin-ui/src/plugins/tab.js create mode 100644 admin-ui/src/router/index.js create mode 100644 admin-ui/src/settings.js create mode 100644 admin-ui/src/store/index.js create mode 100644 admin-ui/src/store/modules/app.js create mode 100644 admin-ui/src/store/modules/cache.js create mode 100644 admin-ui/src/store/modules/dict.js create mode 100644 admin-ui/src/store/modules/local.js create mode 100644 admin-ui/src/store/modules/permission.js create mode 100644 admin-ui/src/store/modules/session.js create mode 100644 admin-ui/src/store/modules/settings.js create mode 100644 admin-ui/src/store/modules/tagsView.js create mode 100644 admin-ui/src/store/modules/user.js create mode 100644 admin-ui/src/utils/auth.js create mode 100644 admin-ui/src/utils/dict.js create mode 100644 admin-ui/src/utils/dynamicTitle.js create mode 100644 admin-ui/src/utils/errorCode.js create mode 100644 admin-ui/src/utils/index.js create mode 100644 admin-ui/src/utils/jsencrypt.js create mode 100644 admin-ui/src/utils/modules/prototypes.js create mode 100644 admin-ui/src/utils/modules/timerEvent.js create mode 100644 admin-ui/src/utils/permission.js create mode 100644 admin-ui/src/utils/request.js create mode 100644 admin-ui/src/utils/ruoyi.js create mode 100644 admin-ui/src/utils/scroll-to.js create mode 100644 admin-ui/src/utils/theme.js create mode 100644 admin-ui/src/utils/validate.js create mode 100644 admin-ui/src/views/WTemplate.vue create mode 100644 admin-ui/src/views/demo/demo/index.vue create mode 100644 admin-ui/src/views/demo/tree/index.vue create mode 100644 admin-ui/src/views/error/401.vue create mode 100644 admin-ui/src/views/error/404.vue create mode 100644 admin-ui/src/views/index.vue create mode 100644 admin-ui/src/views/index/WCount2.vue create mode 100644 admin-ui/src/views/index/WCount3.vue create mode 100644 admin-ui/src/views/index/WNoticeList.vue create mode 100644 admin-ui/src/views/index/count2.js create mode 100644 admin-ui/src/views/index/count3.js create mode 100644 admin-ui/src/views/login.vue create mode 100644 admin-ui/src/views/monitor/admin/index.vue create mode 100644 admin-ui/src/views/monitor/cache/index.vue create mode 100644 admin-ui/src/views/monitor/cache/list.vue create mode 100644 admin-ui/src/views/monitor/logininfor/index.vue create mode 100644 admin-ui/src/views/monitor/online/index.vue create mode 100644 admin-ui/src/views/monitor/operlog/index.vue create mode 100644 admin-ui/src/views/monitor/xxljob/index.vue create mode 100644 admin-ui/src/views/redirect/index.vue create mode 100644 admin-ui/src/views/register.vue create mode 100644 admin-ui/src/views/system/config/index.vue create mode 100644 admin-ui/src/views/system/cron/components/WCronAdd.vue create mode 100644 admin-ui/src/views/system/cron/components/WCronEdit.vue create mode 100644 admin-ui/src/views/system/cron/components/WCronList.vue create mode 100644 admin-ui/src/views/system/cron/components/WCronRun.vue create mode 100644 admin-ui/src/views/system/cron/cron.js create mode 100644 admin-ui/src/views/system/cron/index.vue create mode 100644 admin-ui/src/views/system/dept/index.vue create mode 100644 admin-ui/src/views/system/dict/data.vue create mode 100644 admin-ui/src/views/system/dict/index.vue create mode 100644 admin-ui/src/views/system/links/components/WAdd.vue create mode 100644 admin-ui/src/views/system/links/components/WEdit.vue create mode 100644 admin-ui/src/views/system/links/index.vue create mode 100644 admin-ui/src/views/system/menu/index.vue create mode 100644 admin-ui/src/views/system/notice/index.vue create mode 100644 admin-ui/src/views/system/oss/config.vue create mode 100644 admin-ui/src/views/system/oss/index.vue create mode 100644 admin-ui/src/views/system/post/index.vue create mode 100644 admin-ui/src/views/system/role/authUser.vue create mode 100644 admin-ui/src/views/system/role/index.vue create mode 100644 admin-ui/src/views/system/role/selectUser.vue create mode 100644 admin-ui/src/views/system/user/authRole.vue create mode 100644 admin-ui/src/views/system/user/index.vue create mode 100644 admin-ui/src/views/system/user/profile/index.vue create mode 100644 admin-ui/src/views/system/user/profile/resetPwd.vue create mode 100644 admin-ui/src/views/system/user/profile/userAvatar.vue create mode 100644 admin-ui/src/views/system/user/profile/userInfo.vue create mode 100644 admin-ui/vite.config.js create mode 100644 admin-ui/vite/plugins/auto-import.js create mode 100644 admin-ui/vite/plugins/compression.js create mode 100644 admin-ui/vite/plugins/index.js create mode 100644 admin-ui/vite/plugins/setup-extend.js create mode 100644 admin-ui/vite/plugins/svg-icon.js create mode 100644 document/Git commit 规范.md create mode 100644 pom.xml create mode 100644 ruoyi-admin/Dockerfile create mode 100644 ruoyi-admin/pom.xml create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/UploadController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLinksController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssConfigController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java create mode 100644 ruoyi-admin/src/main/resources/application-dev.yml create mode 100644 ruoyi-admin/src/main/resources/application-local.yml.template create mode 100644 ruoyi-admin/src/main/resources/application-prod.yml create mode 100644 ruoyi-admin/src/main/resources/application.yml create mode 100644 ruoyi-admin/src/main/resources/banner.txt create mode 100644 ruoyi-admin/src/main/resources/i18n/messages.properties create mode 100644 ruoyi-admin/src/main/resources/i18n/messages_en_US.properties create mode 100644 ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties create mode 100644 ruoyi-admin/src/main/resources/logback.xml create mode 100644 ruoyi-admin/src/main/resources/spy.properties create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/TestSuper.java create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/AssertUnitTest.java create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/DemoUnitTest.java create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/ImageTest.java create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/ParamUnitTest.java create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/PasswordTest.java create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/TagUnitTest.java create mode 100644 ruoyi-common/pom.xml create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/CellMerge.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataColumn.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataPermission.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Dev.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/DictDataMapper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/EncryptField.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/ExcelDictFormat.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/ExcelEnumFormat.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/IgnoreResponse.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Sensitive.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Translation.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/TranslationType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/captcha/UnsignedMathGenerator.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/RSAProperties.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaConfiguration.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/WxMaProperties.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/HttpStatus.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/TransConstant.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelBigNumberConvert.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelDictConvert.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/convert/ExcelEnumConvert.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/Page.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/PageQuery.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/RoleDTO.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/UserOnlineDTO.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/event/LogininforEvent.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/event/OperLogEvent.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/SmsLoginBody.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/XcxLoginUser.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/query/CountQuery.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/vo/CountVO.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/service/ConfigService.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/service/DeptService.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/service/DictService.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/service/OssService.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/service/SensitiveService.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/service/UserService.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/validate/AddGroup.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/validate/EditGroup.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/validate/QueryGroup.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/encrypt/EncryptContext.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/encrypt/IEncryptor.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/encrypt/encryptor/AbstractEncryptor.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/encrypt/encryptor/AesEncryptor.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/encrypt/encryptor/Base64Encryptor.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/encrypt/encryptor/RsaEncryptor.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/encrypt/encryptor/Sm2Encryptor.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/encrypt/encryptor/Sm4Encryptor.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/AlgorithmType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/CaptchaCategory.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/CaptchaType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/DataBaseType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/DataScopeType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/DeviceType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/EncodeType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/LoginType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/SensitiveStrategy.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/event/SmsResultEvent.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/event/SmsSendEvent.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/excel/CellMergeStrategy.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/excel/DefaultExcelListener.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/excel/DefautExcelResult.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/excel/ExcelListener.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/excel/ExcelResult.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordRetryLimitExceedException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/helper/DataBaseHelper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/helper/DataPermissionHelper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/jackson/DictDataJsonSerializer.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/jackson/SensitiveJsonSerializer.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/translation/TranslationInterface.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/translation/handler/TranslationBeanSerializerModifier.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/translation/handler/TranslationHandler.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/translation/impl/DeptNameTranslationImpl.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/translation/impl/DictTypeTranslationImpl.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/translation/impl/OssUrlTranslationImpl.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/translation/impl/UserNameTranslationImpl.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/type/JSONTypeHandler.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/type/ListTypeHandler.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/type/MapTypeHandler.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/type/StringArrayTypeHandler.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ChickenUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/CustomAnnotationBeanNameGenerator.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpDownloadUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/IdUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/MessageUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/MongoUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/StreamUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/Threads.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeBuildUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ValidatorUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/WebTemplateTool.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/email/MailUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/CacheUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/QueueUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/spring/SpringUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java create mode 100644 ruoyi-demo/pom.xml create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/MailController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisLockController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisPubSubController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisRateLimiterController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/SmsController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/Swagger3DemoController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestBatchController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestEncryptController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestExcelController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestSensitiveController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestTreeController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/package-info.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/BoundedQueueController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/DelayedQueueController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityDemo.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/queue/PriorityQueueController.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemoEncrypt.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestTree.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoBo.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoImportVo.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestTreeBo.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/package-info.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestDemoVo.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/vo/TestTreeVo.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoEncryptMapper.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/package-info.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestTreeService.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestTreeServiceImpl.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/package-info.java create mode 100644 ruoyi-demo/src/main/java/com/ruoyi/demo/service/package-info.java create mode 100644 ruoyi-demo/src/main/resources/excel/单列表.xlsx create mode 100644 ruoyi-demo/src/main/resources/excel/多列表.xlsx create mode 100644 ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml create mode 100644 ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml create mode 100644 ruoyi-demo/src/main/resources/mapper/package-info.md create mode 100644 ruoyi-framework/pom.xml create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DevAspect.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RepeatSubmitAspect.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/AsyncConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/CacheConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/CaptchaConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/CommonResponseBodyAdvice.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/I18nConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/JacksonConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MailConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SaTokenConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SwaggerConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/TranslationConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/UndertowConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ValidatorConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/CaptchaProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/EncryptorProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/MailProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/RedissonProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/SecurityProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/SwaggerProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/ThreadPoolProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/XssProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/handler/AllUrlHandler.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/handler/CreateAndUpdateMetaObjectHandler.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/handler/KeyPrefixHandler.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/handler/OpenApiHandler.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/handler/PlusDataPermissionHandler.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusDataPermissionInterceptor.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/PlusWebInvokeTimeInterceptor.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/jackson/BigNumberSerializer.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/listener/UserActionListener.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/EncryptorManager.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/PlusSpringCacheManager.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/dao/PlusSaTokenDao.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/satoken/service/SaPermissionImpl.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java create mode 100644 ruoyi-oss/pom.xml create mode 100644 ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java create mode 100644 ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java create mode 100644 ruoyi-oss/src/main/java/com/ruoyi/oss/entity/UploadResult.java create mode 100644 ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/AccessPolicyType.java create mode 100644 ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java create mode 100644 ruoyi-oss/src/main/java/com/ruoyi/oss/exception/OssException.java create mode 100644 ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java create mode 100644 ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java create mode 100644 ruoyi-sms/pom.xml create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/api/SmsSendDevApi.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/config/SmsConfig.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/config/properties/SmsChineseProperties.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/config/properties/SmsProperties.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/core/AliyunSmsTemplate.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/core/ChineseSmsTemplate.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/core/SmsTemplate.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/core/TencentSmsTemplate.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/entity/SmsResult.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/exception/SmsException.java create mode 100644 ruoyi-sms/src/main/java/com/ruoyi/sms/listener/SendListener.java create mode 100644 ruoyi-system-cron/README.md create mode 100644 ruoyi-system-cron/cron.zip create mode 100644 ruoyi-system-cron/pom.xml create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/TaskLog.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/annotation/Cron.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/annotation/CronComponent.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/annotation/CronParam.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/api/CronTaskApi.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/document/CronTask.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/document/CronTaskLog.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/event/CronTaskChangeEvent.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/event/CronTaskEvent.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/query/CronTaskLogQuery.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/runner/CronBeanPostProcessor.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/runner/CronRunner.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/runner/TaskLogImpl.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/runner/package-info.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/task/CronTaskTestTask.java create mode 100644 ruoyi-system-cron/src/main/java/com/ruoyi/cron/vo/CronTaskVo.java create mode 100644 ruoyi-system/pom.xml create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/config/DownloadFileConfig.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysCache.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysConfig.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLinks.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysNotice.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOss.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysPost.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleDept.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysRoleMenu.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserOnline.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserPost.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserRole.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssBo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/query/SysLinksQuery.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/RouterVo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssVo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserExportVo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserImportVo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysUserSearchVo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLinksMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssConfigMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOssMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/runner/SystemApplicationRunner.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/FileService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDataScopeService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLinksService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssConfigService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FileServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDataScopeServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLinksServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysSensitiveServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java create mode 100644 ruoyi-system/src/main/resources/mapper/package-info.md create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysOssConfigMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml create mode 100644 ruoyi.sql create mode 100644 script/bin/ry.bat create mode 100644 script/bin/ry.sh create mode 100644 script/docker/db-admin.sh create mode 100644 script/docker/db-backup.sh create mode 100644 script/docker/db/backup/README.md create mode 100644 script/docker/db/data/README.md create mode 100644 script/docker/docker-compose.yml create mode 100644 script/docker/docker环境.md create mode 100644 script/docker/minio/config/README.md create mode 100644 script/docker/minio/data/README.md create mode 100644 script/docker/mongo.sh create mode 100644 script/docker/mongodb/backup/README.md create mode 100644 script/docker/mongodb/data/README.md create mode 100644 script/docker/nginx/cert/README.md create mode 100644 script/docker/nginx/conf/nginx.conf create mode 100644 script/docker/nginx/html/README.md create mode 100644 script/docker/nginx/log/README.md create mode 100644 script/docker/redis/conf/redis.conf create mode 100644 script/docker/redis/data/README.md create mode 100644 script/docker/restart.sh create mode 100644 script/docker/server1/config/README.md create mode 100644 script/docker/server1/config/application-prod.yml create mode 100644 script/docker/server1/log/README.md create mode 100644 script/docker/server1/tmp/README.md create mode 100644 script/docker/server1/upload/README.md create mode 100644 uniapp/.env create mode 100644 uniapp/.env.development create mode 100644 uniapp/.env.development.local.template create mode 100644 uniapp/.env.production create mode 100644 uniapp/.gitignore create mode 100644 uniapp/.vscode/css.code-snippets create mode 100644 uniapp/.vscode/js.code-snippets create mode 100644 uniapp/.vscode/settings.json create mode 100644 uniapp/.vscode/vue-html.code-snippets create mode 100644 uniapp/LICENSE create mode 100644 uniapp/README.md create mode 100644 uniapp/index.html create mode 100644 uniapp/jsconfig.json create mode 100644 uniapp/package.json create mode 100644 uniapp/pnpm-lock.yaml create mode 100644 uniapp/src/App.vue create mode 100644 uniapp/src/WebSocket.js create mode 100644 uniapp/src/api/address/address.js create mode 100644 uniapp/src/api/address/city.js create mode 100644 uniapp/src/api/index.js create mode 100644 uniapp/src/api/system/config.js create mode 100644 uniapp/src/api/system/dict/data.js create mode 100644 uniapp/src/api/system/dict/type.js create mode 100644 uniapp/src/api/system/linksApi.js create mode 100644 uniapp/src/api/system/notice.js create mode 100644 uniapp/src/api/system/user.js create mode 100644 uniapp/src/api/system/user/profile.js create mode 100644 uniapp/src/api/upload.js create mode 100644 uniapp/src/api/wx.js create mode 100644 uniapp/src/components/README.md create mode 100644 uniapp/src/components/c-icon-links/c-icon-links.vue create mode 100644 uniapp/src/components/c-links/c-links.vue create mode 100644 uniapp/src/components/c-tabs/c-tabs.vue create mode 100644 uniapp/src/components/c-tag/README.md create mode 100644 uniapp/src/components/c-tag/c-tag.vue create mode 100644 uniapp/src/components/c-user/c-user.vue create mode 100644 uniapp/src/components/qiun-data-charts/qiun-data-charts.vue create mode 100644 uniapp/src/components/qiun-error/qiun-error.vue create mode 100644 uniapp/src/components/qiun-loading/loading1.vue create mode 100644 uniapp/src/components/qiun-loading/loading2.vue create mode 100644 uniapp/src/components/qiun-loading/loading3.vue create mode 100644 uniapp/src/components/qiun-loading/loading4.vue create mode 100644 uniapp/src/components/qiun-loading/loading5.vue create mode 100644 uniapp/src/components/qiun-loading/qiun-loading.vue create mode 100644 uniapp/src/custom/README.md create mode 100644 uniapp/src/custom/c-city-select.vue create mode 100644 uniapp/src/custom/c-tabbar.vue create mode 100644 uniapp/src/env.js create mode 100644 uniapp/src/js_sdk/u-charts/config-echarts.js create mode 100644 uniapp/src/js_sdk/u-charts/config-ucharts.js create mode 100644 uniapp/src/js_sdk/u-charts/readme.md create mode 100644 uniapp/src/js_sdk/u-charts/u-charts.js create mode 100644 uniapp/src/js_sdk/u-charts/u-charts.min.js create mode 100644 uniapp/src/main.js create mode 100644 uniapp/src/manifest.json create mode 100644 uniapp/src/pages.json create mode 100644 uniapp/src/pages/demo/demo-city-select.vue create mode 100644 uniapp/src/pages/demo/demo-x-student-course-day.vue create mode 100644 uniapp/src/pages/demo/demo-x-student-course-week.vue create mode 100644 uniapp/src/pages/demo/demo-x-tabs.vue create mode 100644 uniapp/src/pages/demo/demo-x-teacher-course-day.vue create mode 100644 uniapp/src/pages/demo/demo-x-teacher-course-week.vue create mode 100644 uniapp/src/pages/demo/demo-x-weeks.vue create mode 100644 uniapp/src/pages/demo/demo-x-work-time.vue create mode 100644 uniapp/src/pages/demo/demo-x-xq-select.vue create mode 100644 uniapp/src/pages/demo/demo0.vue create mode 100644 uniapp/src/pages/demo/demo1.vue create mode 100644 uniapp/src/pages/demo/demo2.vue create mode 100644 uniapp/src/pages/demo/demo3.vue create mode 100644 uniapp/src/pages/demo/demo4.vue create mode 100644 uniapp/src/pages/demo/demo5.vue create mode 100644 uniapp/src/pages/demo/demo6.vue create mode 100644 uniapp/src/pages/demo/index.vue create mode 100644 uniapp/src/pages/demo/template.vue create mode 100644 uniapp/src/pages/index/index.vue create mode 100644 uniapp/src/pages/index/launch.vue create mode 100644 uniapp/src/pages/index/login.vue create mode 100644 uniapp/src/pages/index/msg.vue create mode 100644 uniapp/src/pages/index/notice-list.vue create mode 100644 uniapp/src/pages/index/notice.vue create mode 100644 uniapp/src/pages/index/qr-code.vue create mode 100644 uniapp/src/pages/index/webview.vue create mode 100644 uniapp/src/pages/template.vue create mode 100644 uniapp/src/pages/user/address.vue create mode 100644 uniapp/src/pages/user/components/w-clear.vue create mode 100644 uniapp/src/pages/user/components/w-set-avatar.vue create mode 100644 uniapp/src/pages/user/contacts.vue create mode 100644 uniapp/src/pages/user/index.vue create mode 100644 uniapp/src/pages/user/select.vue create mode 100644 uniapp/src/pages/user/set-pwd.vue create mode 100644 uniapp/src/pages/user/set.vue create mode 100644 uniapp/src/pages/user/user.vue create mode 100644 uniapp/src/static/app-plus/echarts.min.js create mode 100644 uniapp/src/static/avatar.png create mode 100644 uniapp/src/static/favicon.ico create mode 100644 uniapp/src/static/h5/echarts.min.js create mode 100644 uniapp/src/static/logo.png create mode 100644 uniapp/src/static/mescroll/empty.png create mode 100644 uniapp/src/static/mescroll/totop.png create mode 100644 uniapp/src/static/qrcode.svg create mode 100644 uniapp/src/static/wave.svg create mode 100644 uniapp/src/store/index.js create mode 100644 uniapp/src/store/modules/auth.js create mode 100644 uniapp/src/store/modules/cache.js create mode 100644 uniapp/src/store/modules/common.js create mode 100644 uniapp/src/store/modules/config.js create mode 100644 uniapp/src/store/modules/demo1.js create mode 100644 uniapp/src/store/modules/demo2.js create mode 100644 uniapp/src/store/modules/dict.js create mode 100644 uniapp/src/store/modules/image.js create mode 100644 uniapp/src/store/modules/persistent.js create mode 100644 uniapp/src/uni.scss create mode 100644 uniapp/src/uni_modules/cc-selectDity/changelog.md create mode 100644 uniapp/src/uni_modules/cc-selectDity/components/cc-selectDity/area.js create mode 100644 uniapp/src/uni_modules/cc-selectDity/components/cc-selectDity/cc-selectDity.vue create mode 100644 uniapp/src/uni_modules/cc-selectDity/package.json create mode 100644 uniapp/src/uni_modules/cc-selectDity/readme.md create mode 100644 uniapp/src/uni_modules/ksp-cropper/changelog.md create mode 100644 uniapp/src/uni_modules/ksp-cropper/components/ksp-cropper/ksp-cropper.vue create mode 100644 uniapp/src/uni_modules/ksp-cropper/package.json create mode 100644 uniapp/src/uni_modules/ksp-cropper/readme.md create mode 100644 uniapp/src/uni_modules/luanqing-search/changelog.md create mode 100644 uniapp/src/uni_modules/luanqing-search/components/luanqing-search/luanqing-search.vue create mode 100644 uniapp/src/uni_modules/luanqing-search/package.json create mode 100644 uniapp/src/uni_modules/luanqing-search/readme.md create mode 100644 uniapp/src/uni_modules/mescroll-uni/changelog.md create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.css create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/beibei/components/mescroll-down.css create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/beibei/components/mescroll-down.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/beibei/mescroll-body.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/beibei/mescroll-uni-option.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/beibei/mescroll-uni.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/components/mescroll-down.css create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/components/mescroll-down.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/components/mescroll-up.css create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/components/mescroll-up.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/mescroll-body.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/mescroll-uni-option.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/mescroll-uni.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.css create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.css create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-i18n.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni-option.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.css create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.vue create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-comp.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/wxs/mixins.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/wxs/renderjs.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs create mode 100644 uniapp/src/uni_modules/mescroll-uni/hooks/useMescroll.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/hooks/useMescrollComp.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/hooks/useMescrollMore.js create mode 100644 uniapp/src/uni_modules/mescroll-uni/package.json create mode 100644 uniapp/src/uni_modules/mescroll-uni/readme.md create mode 100644 uniapp/src/util/index.js create mode 100644 uniapp/src/util/modules/file.js create mode 100644 uniapp/src/util/modules/functions.js create mode 100644 uniapp/src/util/modules/http.js create mode 100644 uniapp/src/util/modules/util.js create mode 100644 uniapp/src/w-components/README.md create mode 100644 uniapp/src/w-components/components/w-banner/w-banner.vue create mode 100644 uniapp/src/w-components/components/w-bind-phone/w-bind-phone.vue create mode 100644 uniapp/src/w-components/components/w-fab/README.md create mode 100644 uniapp/src/w-components/components/w-fab/w-fab.vue create mode 100644 uniapp/src/w-components/components/w-footer/w-footer.vue create mode 100644 uniapp/src/w-components/components/w-loader/w-loader.vue create mode 100644 uniapp/src/w-components/components/w-navbar/w-navbar.vue create mode 100644 uniapp/src/w-components/components/w-popup-input/w-popup-input.vue create mode 100644 uniapp/src/w-components/components/w-public/w-public.vue create mode 100644 uniapp/src/w-components/components/w-qr-code/1.png create mode 100644 uniapp/src/w-components/components/w-qr-code/2.png create mode 100644 uniapp/src/w-components/components/w-qr-code/3.gif create mode 100644 uniapp/src/w-components/components/w-qr-code/README.md create mode 100644 uniapp/src/w-components/components/w-qr-code/qrcode.js create mode 100644 uniapp/src/w-components/components/w-qr-code/w-qr-code.vue create mode 100644 uniapp/src/w-components/components/w-safe-area/README.md create mode 100644 uniapp/src/w-components/components/w-safe-area/w-safe-area.vue create mode 100644 uniapp/src/w-components/components/w-safe-var/README.md create mode 100644 uniapp/src/w-components/components/w-safe-var/w-safe-var.vue create mode 100644 uniapp/src/w-components/components/w-select-time/w-select-time.vue create mode 100644 uniapp/src/w-components/components/w-wx-login/README.md create mode 100644 uniapp/src/w-components/components/w-wx-login/w-wx-login.vue create mode 100644 uniapp/src/w-components/index.js create mode 100644 uniapp/src/w-components/index.scss create mode 100644 uniapp/src/w-components/mixins/mp-weixin.js create mode 100644 uniapp/src/w-components/modules/PageAnimationType.js create mode 100644 uniapp/src/w-components/modules/prototypes.js create mode 100644 uniapp/src/w-components/modules/util.js create mode 100644 uniapp/src/w-components/props/index.js create mode 100644 uniapp/src/w-components/theme.scss create mode 100644 uniapp/vite.config.js create mode 100644 uniapp/web/README.md create mode 100644 uniapp/web/imgs/favicon.ico create mode 100644 uniapp/web/imgs/logo.png create mode 100644 uniapp/web/imgs/my.webp create mode 100644 uniapp/web/qa.html create mode 100644 uniapp/web/us.html diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f94929f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +# http://editorconfig.org +root = true + +# 空格替代Tab缩进在各种编辑工具下效果一致 +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +end_of_line = lf +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{json,yml,yaml}] +indent_size = 2 + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7607145 --- /dev/null +++ b/.gitignore @@ -0,0 +1,57 @@ +###################################################################### +# 本地环境配置 +/logs/* +*-local.* +*.local +**/temp/* +.temp +!*.template + +###################################################################### +# Build Tools + +.gradle +/build/ +!gradle/wrapper/gradle-wrapper.jar + +target/ +!.mvn/wrapper/maven-wrapper.jar + +###################################################################### +# IDE + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + + +### JRebel ### +rebel.xml + +### NetBeans ### +nbproject/private/ +build/* +nbbuild/ +nbdist/ +.nb-gradle/ + +###################################################################### +# Others +*.log +*.xml.versionsBackup +*.swp + +!*/build/*.java +!*/build/*.html +!*/build/*.xml +/.metadata/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..c3193b2 --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# 某某系统 + +> 全局文本替换: qanything,192.168.3.205 + + + +## Git Commit message 与自动构建与发布 + +- 如果需要SpringBoot工程的自动构建与发布,在Git Commit message的后面加`-buildboot` +- 如果需要管理端前端工程的自动构建与发布,在Git Commit message的后面加`-buildadmin` +- 如果需要用户端h5工程的自动构建与发布,在Git Commit message的后面加`-buildh5` + + + +## 项目预览地址 + +- 管理后端: [https://admin.xxx.xxx.cn/](https://admin.xxx.xxx.cn/) +- 用户移动web端: [https://h5.xxx.xxx.cn/](https://h5.xxx.evolvecloud.cn/) + + + +## 开发环境 + +- [OpenJDK-17+](https://mirrors.tuna.tsinghua.edu.cn/Adoptium/17/jdk/x64/) +- [MariaDB-10+](https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.11.6/) +- [Redis-7+](https://redis.io/download/) +- [MongoDB-7+](https://www.mongodb.com/zh-cn) + + + + +## 开发工具 + +- java开发工具: [IntelliJ IDEA](https://www.jetbrains.com.cn/idea/) + +- java开发工具: **[STS4](https://spring.io/tools/) Spring官方工具** + +- 前端开发工具: [VSCode](https://code.visualstudio.com/) + +- 数据库开发工具: [Navicat-16](https://www.navicat.com.cn/navicat-16-highlights) + +- Redis工具: [RedisFront](https://gitee.com/dromara/redisfront) + +- MongoDB工具: [NoSQLBooster for MongoDB](https://www.nosqlbooster.com/) + +- MQTT工具: [emqx](https://www.emqx.io/) + + + +## 参考网站 + +### 核心 +- [Dromara开源社区](https://dromara.org/zh/) +- [RuoYi-Vue-Plu](https://plus-doc.dromara.org/) +- [MyBatis-Plus](https://www.baomidou.com/) +- [HuTool工具类](https://doc.hutool.cn/pages/index/) +- [sa-token安全认证框架](https://sa-token.cc/) +- [xxl-job分布式任务调度平台](https://www.xuxueli.com/xxl-job/) +- [Redisson](https://redisson.org/) +- [WxJava微信开发工具包](https://gitee.com/binary/weixin-java-tools/) + +### 备选 +- [sms4j短信集成库](https://gitee.com/dromara/sms4j) +- [x-file-storage文件存储库](https://x-file-storage.xuyanwu.cn/) +- [payment-spring-boot集成支付](https://felord.gitee.io/payment-spring-boot) +- [JustAuth第三方登录集成库](https://www.justauth.cn/) + diff --git a/admin-ui/.env b/admin-ui/.env new file mode 100644 index 0000000..bc8256e --- /dev/null +++ b/admin-ui/.env @@ -0,0 +1,6 @@ +# 页面标题 +VITE_APP_TITLE = 某某系统 + +VITE_APP_COPY = Copyright © 2023 xxx.xxx.cn All Rights Reserved. + +VITE_APP_COLOR = #257fbd \ No newline at end of file diff --git a/admin-ui/.env.development b/admin-ui/.env.development new file mode 100644 index 0000000..9194ea6 --- /dev/null +++ b/admin-ui/.env.development @@ -0,0 +1,14 @@ +# 开发环境配置 +VITE_APP_ENV = 'development' + +# 若依管理系统/开发环境 +VITE_APP_BASE_API = '/dev-api' + +# 应用访问路径 例如使用前缀 /admin/ +VITE_APP_CONTEXT_PATH = '/' + +# 监控地址 +VITE_APP_MONITRO_ADMIN = 'http://localhost:9090/admin/login' + +# xxl-job 控制台地址 +VITE_APP_XXL_JOB_ADMIN = 'http://localhost:9100/xxl-job-admin' diff --git a/admin-ui/.env.production b/admin-ui/.env.production new file mode 100644 index 0000000..04ddb12 --- /dev/null +++ b/admin-ui/.env.production @@ -0,0 +1,17 @@ +# 生产环境配置 +VITE_APP_ENV = 'production' + +# 应用访问路径 例如使用前缀 /admin/ +VITE_APP_CONTEXT_PATH = '/admin/' + +# 监控地址 +VITE_APP_MONITRO_ADMIN = '/monitor/login' + +# 监控地址 +VITE_APP_XXL_JOB_ADMIN = '/xxljob/' + +# 若依管理系统/生产环境 +VITE_APP_BASE_API = '/api' + +# 是否在打包时开启压缩,支持 gzip 和 brotli +VITE_BUILD_COMPRESS = gzip \ No newline at end of file diff --git a/admin-ui/.gitignore b/admin-ui/.gitignore new file mode 100644 index 0000000..e92f34b --- /dev/null +++ b/admin-ui/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +*.local + +**/*.log + +tests/**/coverage/ +tests/e2e/reports +selenium-debug.log + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.local + +package-lock.json +yarn.lock diff --git a/admin-ui/README.md b/admin-ui/README.md new file mode 100644 index 0000000..16564cc --- /dev/null +++ b/admin-ui/README.md @@ -0,0 +1,87 @@ +## 平台简介 + + +* 本仓库为前端技术栈 [Vue3](https://v3.cn.vuejs.org) + [Element Plus](https://element-plus.org/zh-CN) + [Vite](https://cn.vitejs.dev) 版本。 +* 配套后端代码仓库地址[RuoYi-Vue-Plus 4.X(注意版本号)](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus) +* 5.X后端需要使用此项目 [plus-ui](https://gitee.com/JavaLionLi/plus-ui) + +## 前端运行 + +```bash +# 克隆项目 +git clone https://gitee.com/JavaLionLi/RuoYi-Vue-Plus-UI.git + +# 进入项目目录 +cd RuoYi-Vue-Plus-UI + +# 安装依赖 +npm install --registry=https://registry.npmmirror.com + +# 启动服务 +npm run dev + +# 构建测试环境 yarn build:stage +# 构建生产环境 yarn build:prod +# 前端访问地址 http://localhost:80 +``` + +## 后端改造 +参考后端代码内 `ruoyi-generator/resources/vm/vue/v3/readme.txt` 说明 + +## 内置功能 + +1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 +2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 +3. 岗位管理:配置系统用户所属担任职务。 +4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 +5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 +6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 +7. 参数管理:对系统动态配置常用参数。 +8. 通知公告:系统通知公告信息发布维护。 +9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 +10. 登录日志:系统登录日志记录查询包含登录异常。 +11. 在线用户:当前系统中活跃用户状态监控。 +12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 +13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 +14. 系统接口:根据业务代码自动生成相关的api接口文档。 +15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 +16. 缓存监控:对系统的缓存信息查询,命令统计等。 +17. 在线构建器:拖动表单元素生成相应的HTML代码。 +18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 + +## 演示图 + +
![]() |
+ ![]() |
+
![]() |
+ ![]() |
+
![]() |
+ ![]() |
+
![]() |
+ ![]() |
+
![]() |
+ ![]() |
+
![]() |
+ ![]() |
+
![]() |
+ ![]() |
+
![]() |
+ ![]() |
+
+ ++ + + \ No newline at end of file diff --git a/admin-ui/game.html b/admin-ui/game.html new file mode 100644 index 0000000..5117702 --- /dev/null +++ b/admin-ui/game.html @@ -0,0 +1,59 @@ + + + + + +
您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。
+自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明 。
+推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。
+ +
p#!f|5*(HHB>tVHiF{>sdC}yHHH!2mPEw2i*f#zA%TX?08+oRL6IO0Mh!{1LzpL7 zI4SRqK8+f)LrELlHP_*pMMZ!VC__M{y?m(oU+h-O&NV7NJs^R0?MuN33Zg8EdSP|D zX*puLop;3OCtrUqYHzshkjEc*@|*Xgu)GO7|CaId0n7*R;_6v~<5$a7{(Qpj^>=P^ z(m|g@jo;~n?pr9jLUn%8v`x|(58r?8&)-i8mztHn9HD_93$gBQ{7#Z=We?;(6JjE#tGfYS*Xb@De_G7ZazYl)Dkl+86 z@8ZoO0F}_k7?iBw-Z^zbTTsxTT~%|fgd}RLdM3ZE7eU=oqg{f@cEv
Z(nx*Imf@U %8QUR -bTp+=!!y%4D_u6z8>i8UMEGP`=%@Vu%4 z!+@=YxDpa#EYiJcM*Ya$U+llbi@X2ksk4{7#C?}sIJ>Txe~O6!*3e=xh+3b)Egz;p zaA*!cYnNiSn0c{efrMO$X!(SO1(1-0_6$G@MkwG}O`Mm>9 zd|US>(HQ?p0iTtOcZb}v;~R^WZ&fA)OYy zFWfqIpEvIK^RcJh|HmhW^l(YOQrY_YC-0utXT6{1xdxP4uwy9k)l1G mRkXk`13aL}D4k(F3Dgx`A2Mrh^p)^| 4am_l1Tl9i*;ZYL@C!wP%QRp5L z&N7k&?Ya){^jh!O-EMgB+V0o-`}s#cy;j@D5A@G1!ie0*w_ShS4=Wsu3IGn*KYY19 zt^3rMVlxB^&H>h1IF}-I{_sRAf>Z>FD5Rp0K*2hOSc0 gH#5}l>rMt+*PUu-;zajt0AY#(KQ|b5Kr7dNC2_ZfQukh zgv-pUvvnUF$wU6}%6+fw|I(v>yW}f5u4P$r@g--i`%(2;V+x#wu}L61iqB+9Ih|Dr zJB4}jEp1y>4c_d%@fmyH^yuN03yRpcPX6AZ-=Fv5P7^nub7uGNT8t2~&7FH*JGo}& znSj8MLKX~7NjPMQeMFB4niL{M(D0eS2tGKYNkY=chm;irwJ|WG2s}Br0MemX4%yIM zFMM~XMh@nnzd D0W05YD7N*``MMVh&FkH8$UZmpsEyrfleH<@a`Zo5_$VIr zEg}a8f>l7u=*lSsBwHO4O#$NsPj7QN#>logi;no{uj`Mw@~kf{(_bv8xkI|u@3KiI zUm{yMWWiU@dw0((BA@ZH&gaZ+cy7JHNZvLeha!2}bX!UA$|4JB17Qb8zEihx1Z_2x z)6h=)By!;Q`wAb2@@Zh*rF*EgoU--epAO%g+W)PB?T~;Wa3u|0>07v1vwj7V2sUa4 z_ny9EcIYdAdi2FZ9(v+W&kX4C0 Ke^o~Z|Yi@KeL_63o$a$K5uOyD%doa(-f ze;K;@CCmH1FK_}k{OxWJOzl1MAY&uMVxg6P;wph1W*^;y4+oczV2fCMz=k|~2q4sG z!IX{!ueCD_BGg!eI+yt@o9H(w;g1|)c9OV`IIgOJxB*2jj>zfax(Ss=I_2spO28%o z5h2SORj@uP3E#ueM1&gW&lA+j!LWrgKn4~uBJYZ7f zr++F!#Dok0u=QJ8+u9TJQ_kDvkYl##T+szx5!v~ghsS+Tz0T;Ij(m fSRURRqyp=N|+W0CIpe1_KK7)1w!>ve^}9{OrADediaNBkkO_<&|@@3lC_C^F{@7 zh~H n@(YH&Upsx{_UhKnI v1fG`W z-9uYWhy$cNiGzHQ%kM&5A+88fAioqrrfJ&__eKM-h5)c3>Fp1D=++svYaLspER-t& zq~Lw8vMqzIC%>Dg %CL!XC5ZR z& !+0 z?Rb6HkbGTk@B-c3KU*UMic}bt+G2xNZU9B4exhuBCU(_IBpZX3Hr{E~?4XqmTFf5= ztym$00*vx$U;`kdG?;u!TC*p(C@^f2b<(!MmHY2_=Y=af{x6erF23 b7J{l?9Xy>0wb z6HZG7z@;~gUGMhBhu-+yEUb g;oSatPlY(l)@lI%o@yuK`rat zKK|gxPFNEYx0vh>ef6l@YU{V1SKFL#?b8`8=;vyRHJ#KP^)-VxR8dmfT>2!JF;T?M zH7G8chMMXIrAS$uf&j{hlIm;~i9@MWYMUDqEkIiTxhie-KL_k`{_CrI$akN)d+&RC z|8(@Cc<3)aGrh7x{)k&ggp|uhF#&8~wU5bo_K^n2+gvtmwGyJKm2!9xL>z<^>XSBn zXU@O3dh)CvEj3)c)c$xEoqqO|=kJ P*(%WE8*=5|zcgs+wT{mI{ESP#e6QR6Kax@WPN; zLO>ECgI!#Cf;a*}`#iHNvuS( QnarhupfyR(0Esd-CKhzWKuIllyIb zX)F4S5KGWW3bq6m1+oAqK$Hr~NAijY#1g379XIUum6!;L=QzUC(%>B6QhzN8S|R5C z%No}*J7gYo!U4_q-t^Q7^P-lgTH`jPqM*d@{f+|1JQyQF-Zk_rdIfSRoFiKuWtvv! zB>r!d^UgSW$g2bQIqsu f%@Af#s1S;a2^w0PmRX;; z+#b27e!AC5zZ(9hEk3N7vtcP1CQ2kU=U{Jaz`>9Tp(+Qhfy9YwZSU;8`lj?hUv50{ z$cE=e?7Q#m+JQe^*njWs+v8qr*#MM+k-`bX ~aBc)McmSCf_{!$otGoFVBgaGO2j_w>S%j zP;$lAUy6L|b_GUCgd$w^@~(g3#pjQFqq)zvsO`OW>h$nj(HW2yCK6^Xk%0?`y~0`N zl2r1nZAYZ76EXQxYV(nj0;fr#u9g?Ix3(^bT*+oS7cSVYMlU$++ACMvaWYGjF;`!^ z-t#TBJLP&0-lc8*leg=LdiC$r5gZYWIFO_$lCLeyb|$FJ<)OqO6%IZ;{F5KVKj%J{ z0@tnSby*gR`YidH*9hfSd2l7vbk6zHZFm29nYD;L>XLo!DObPw(Ql7F<)8ZP@hwpf za0~^4ku pQ!AW!~mrrO1g?bN%_v9%I}vfe$Oo*A 4NYrX5%|H~rk(-0*|Irj%2^(q^y<)(_=5D< |vHdQRH1=?ouGW{Tz@8!?A{jLtT3toFhOPe;=VY0TWenIu#O3AW>Fo5k3FZ z|C`Er)ULVl{7Z*&g{D)$ptesY|M2bKoD1y!rE9vvR{GzL{p08@J4TJIORA6;flFhg zR-xoPb*w0Y)FpuBg6=RAm;C%Y$ d7m z3_);_{IM$p+8_?3Hieqx)CIt^FA;T8eMm%`UOoQTxpcx*jM>jcK$oU zxy5jRWedl?V+d8ADFp$;I*&6(1W*ic91LLvA>*4cC<`kV76Qi%A&V$qfO6uyn+d}a zgS{F6x$>#(zDYL=hwt;E9AI2H&jFrr3vqDHf~*ClA&O`XVwcC-ty8A#-t^wiH(mOR z9`#sQX+Qmmqwc(BZ@cYwBTECHi)}3uPGQlBOcG<0{6-Ux%^fp($#PXYg%BSES{gs$9NKd5`*w9=2L zTz2k=!49ZvD}sU#uUyGfyc|K``}j!eK&cBs9ThZ%2c09&!L$;17vw@EvkD#pA(Q0M zzc{yb{kHdRKJMMIJKS{kPkY>8V})#hC1w0iZ=48VmmTjocK3yyAMTgcYQQG(#uM)x zbmPs~`HLL SX_&Cd(6X^!-eN0t z^dcy;ZV2dVJI4aY)D?S|FisK(rCnv_6+kIan!pr_5cX#Xh!9fCFq}tK+Bq*1$xOEN zaluKOMUqL`#EwiIQrFkUQKqQ0A|2I|kk4;2lPFz?5-C-=j+QF2FG$D2m$z&A*QD#l zUN;liZ<+VG)Or3&8%6$cOZwKk=S*xz{Wiw=n!D~wpsOXkxAx1;9sxqa2%Rn{oM|MX zdRGAy0T2))oFmk=*lFlCUe2Lc46ShO%84R@O$61|BOoR3)+)ykawsW5s)DMfD$j)o z2W$&F&!P^;x{?5nv&go$VDP7(fKMLk9}g |UwNm{gD)L_(DdTq2TC>$QOqtyZo2`X z-0{1@e$id@FNP15S`i585E}L8`nvGB^4_1auIzLE$e7SY6ruYEhbP>HbNf{2Eezjr z%Q=Fv3c`YtvapIlqCpggz6NCgi0=zTDx9J!u%ywjXb}d?pMz8>Kpcj~%`b0lUq0~S z%WhmF%`{h3zVcZ80~a0p;84{%fsh1JgI&xPsBFPYSp1$M6^uV}o_ Lv2@&=>Qu*!f~LqmtNl?6oU7jH1!fQYB9Mb6s{ zmIbwFd-LS_iM#)&EI#lx0000U8}_qfM)1OWHI 85Zv!wqQ2oPZb zC8%<@G$1YZiSoa@P8931Mg3DR;s51~Cxj}VLgj)i0NK!kP=fInm^hVh@*T=Z1Qv`K zrF6Zjd8h1k`nWa9D_l|eda`xLw%I4HJnSdKY1Zj=)LsDj6mz*hzE!?wp97UyCjRL! z@7umAq|18$f9+jua8%V9e%^EL-OVQ1HGzc4mm`KzrWrD*I3d_6Q_EB vCJ&ZJVLRtimLaHcJzQ>JRQ (nK z-gEBWd`&BaY(n<=lk6nBbMM{fp8KBn<9P&I#@g*05W3qlRZ(!%1~XJ);|V*`E!i_b z3F9%yqK^&{E0`(8|3}u8!e$luC(qLngfZU+08bK FM9OH|AAG3p5-_~09}{cU0S75gW!(UTT@=V#K$eZFqk#+m*rf`wK8;#G(( z>a63pg-@&v -G9w-`{xTPd})+ z>k7PAJu&&g?gFpV12~upmA=eHw|T?RzMaSfa^X)M7y}F$>Y5OMD{01ILz|vDlW0 7KIg#$g&aA6|?)zkpR6e>kVvDXndHN|q*N zqSO~ItkZ|xoZKUCftx_^%^seR?d<^C000K8Nkl FWCBV< z0y|u(G)$Wt6U&qi*q7J{O%jDfp9}$5beai(pi*fTCx^X=W}Z3r%8?D98M-E$MT}Yk zgt6?~Pu+Z46y4J$C)}KL;+LhIJZMsZYlkm}Ab_+fV4g76f;0QvXNOFHN#=G1NB$mV zs&V`~i(gnXN*|o4N=p-$s3@Q%gy31kw9jT+BnfE{rln84bNto0*W!6S$i6YV7!w4r zSpDFJ8K?6rmUYCYtn6~~Z%By(q|BXc7iU&06q$X#FsUTFt1!8Hkm +(ClAyGM7`5rD_J$>YSbyj5vvuu;!k8jJ zfPEyFzVhV!w!(?aJEHN`tyEZ=5_!-N5G0T`UlLo%_>jhkNdth8fMmLGCXoOE2ova~ z&8&khAVG>C1r4nO(}|>1@DK$l7d8^GTg$-eTH5WU#I)40hGT21=M6s4nLUh60)+7M zt&d#(J9YKKW-(!Pr${X9bPL?Hh?xEnPSkMbPQW9UnUjJoWPR&9WTtUg78YRncL9>h zG`~`?{A)9s uH8{pR0m4}M z*pDll{F0iUXwizUXrjD>3XygkxIRl>q)iRk6>dNP>nxHqQnB1>&3y-KH 3>8I!e$<9vfJz!Eq*66yya zXa`XJ{EU60Qo<{OKoq^G`uNb-{`|m_QIiz9Bnc44=Iz^O9-u21waCeLbw~29O^SSO ztQ017+(l$zzq+FJGC-~fUO~Md>f=2@pTi?K_ zqG`B*%7b r3o&fgFq7in>InA{OsR%99e(M#%!FYMUDVNfQYbs`|ic>=S|*ls$kMh?QSuY zCJ^zI5kgZ)mHE1JP;;h?nVqt>r}_(o-Y-Tfy=>b&~ng4)6_Wtbb| zMF20}vF)eThZ2?R&$vY^+oJ`JM=o6L8|AV7?;Ft0I5?D#wn%Z&>+zXu0c;uO!~egL zTLC@+zP#y)>;E<7x`)oj%GR{F2`C{Uly7ncfG32pY-J3#0`zHI5e}wxo&5LSXBW?& z^ZKb_@e2B+$PwT?@Yv6Ox!~8y8MRHZ2`f4xMV$3l9+V>y-W6(vU^{8sO_a#IBq=bl zw^z^o=&v{IdwAu+5kC=(f|jtch%IaHeC^Qs8*6TAdbRrM?#4X@eml|*Cw}^%UoTqU z&SU_Z&=qm0Gq2>fi+|LEBS(M>zzdJoHoUX0dg=8|e_T}FaiZZeuN#6K_)?lGBR8Y) zDr-l&xv!Ah(G^mVXohoDw$33(fMLM?P4~ZabnCoNS2e$O_w B?15AWLFlZ|7{5nzO{x&HBM-i=P5ci?EtwvO_7Q-m8w#pxpl-io}i2;ce5 vkm~6d8#w}ubL4`+agH1T#yN5X80Yve=}CpqD*gWm00000NkvXXu0mjf7-!e! literal 0 HcmV?d00001 diff --git a/admin-ui/src/App.vue b/admin-ui/src/App.vue new file mode 100644 index 0000000..31839f2 --- /dev/null +++ b/admin-ui/src/App.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/admin-ui/src/api/demo/demo.js b/admin-ui/src/api/demo/demo.js new file mode 100644 index 0000000..04d4025 --- /dev/null +++ b/admin-ui/src/api/demo/demo.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 查询测试单表列表 +export function listDemo(query) { + return request({ + url: '/demo/demo/list', + method: 'get', + params: query + }) +} + +// 自定义分页接口 +export function pageDemo(query) { + return request({ + url: '/demo/demo/page', + method: 'get', + params: query + }) +} + +// 查询测试单表详细 +export function getDemo(id) { + return request({ + url: '/demo/demo/' + id, + method: 'get' + }) +} + +// 新增测试单表 +export function addDemo(data) { + return request({ + url: '/demo/demo', + method: 'post', + data: data + }) +} + +// 修改测试单表 +export function updateDemo(data) { + return request({ + url: '/demo/demo', + method: 'put', + data: data + }) +} + +// 删除测试单表 +export function delDemo(id) { + return request({ + url: '/demo/demo/' + id, + method: 'delete' + }) +} + diff --git a/admin-ui/src/api/demo/tree.js b/admin-ui/src/api/demo/tree.js new file mode 100644 index 0000000..4c7ebc0 --- /dev/null +++ b/admin-ui/src/api/demo/tree.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询测试树表列表 +export function listTree(query) { + return request({ + url: '/demo/tree/list', + method: 'get', + params: query + }) +} + +// 查询测试树表详细 +export function getTree(id) { + return request({ + url: '/demo/tree/' + id, + method: 'get' + }) +} + +// 新增测试树表 +export function addTree(data) { + return request({ + url: '/demo/tree', + method: 'post', + data: data + }) +} + +// 修改测试树表 +export function updateTree(data) { + return request({ + url: '/demo/tree', + method: 'put', + data: data + }) +} + +// 删除测试树表 +export function delTree(id) { + return request({ + url: '/demo/tree/' + id, + method: 'delete' + }) +} diff --git a/admin-ui/src/api/login.js b/admin-ui/src/api/login.js new file mode 100644 index 0000000..649f59c --- /dev/null +++ b/admin-ui/src/api/login.js @@ -0,0 +1,59 @@ +import request from '@/utils/request' + +// 登录方法 +export function login(username, password, code, uuid) { + const data = { + username, + password, + code, + uuid + } + return request({ + url: '/login', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 注册方法 +export function register(data) { + return request({ + url: '/register', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 获取用户详细信息 +export function getInfo() { + return request({ + url: '/getInfo', + method: 'get' + }) +} + +// 退出方法 +export function logout() { + return request({ + url: '/logout', + method: 'post' + }) +} + +// 获取验证码 +export function getCodeImg() { + return request({ + url: '/captchaImage', + headers: { + isToken: false + }, + method: 'get', + timeout: 20000 + }) +} \ No newline at end of file diff --git a/admin-ui/src/api/menu.js b/admin-ui/src/api/menu.js new file mode 100644 index 0000000..faef101 --- /dev/null +++ b/admin-ui/src/api/menu.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 获取路由 +export const getRouters = () => { + return request({ + url: '/getRouters', + method: 'get' + }) +} \ No newline at end of file diff --git a/admin-ui/src/api/monitor/cache.js b/admin-ui/src/api/monitor/cache.js new file mode 100644 index 0000000..45a9003 --- /dev/null +++ b/admin-ui/src/api/monitor/cache.js @@ -0,0 +1,57 @@ +import request from '@/utils/request' + +// 查询缓存详细 +export function getCache() { + return request({ + url: '/monitor/cache', + method: 'get' + }) +} + +// 查询缓存名称列表 +export function listCacheName() { + return request({ + url: '/monitor/cache/getNames', + method: 'get' + }) +} + +// 查询缓存键名列表 +export function listCacheKey(cacheName) { + return request({ + url: '/monitor/cache/getKeys/' + cacheName, + method: 'get' + }) +} + +// 查询缓存内容 +export function getCacheValue(cacheName, cacheKey) { + return request({ + url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey, + method: 'get' + }) +} + +// 清理指定名称缓存 +export function clearCacheName(cacheName) { + return request({ + url: '/monitor/cache/clearCacheName/' + cacheName, + method: 'delete' + }) +} + +// 清理指定键名缓存 +export function clearCacheKey(cacheName, cacheKey) { + return request({ + url: '/monitor/cache/clearCacheKey/' + cacheName + '/' + cacheKey, + method: 'delete' + }) +} + +// 清理全部缓存 +export function clearCacheAll() { + return request({ + url: '/monitor/cache/clearCacheAll', + method: 'delete' + }) +} diff --git a/admin-ui/src/api/monitor/logininfor.js b/admin-ui/src/api/monitor/logininfor.js new file mode 100644 index 0000000..4d112b7 --- /dev/null +++ b/admin-ui/src/api/monitor/logininfor.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +// 查询登录日志列表 +export function list(query) { + return request({ + url: '/monitor/logininfor/list', + method: 'get', + params: query + }) +} + +// 删除登录日志 +export function delLogininfor(infoId) { + return request({ + url: '/monitor/logininfor/' + infoId, + method: 'delete' + }) +} + +// 解锁用户登录状态 +export function unlockLogininfor(userName) { + return request({ + url: '/monitor/logininfor/unlock/' + userName, + method: 'get' + }) +} + +// 清空登录日志 +export function cleanLogininfor() { + return request({ + url: '/monitor/logininfor/clean', + method: 'delete' + }) +} diff --git a/admin-ui/src/api/monitor/online.js b/admin-ui/src/api/monitor/online.js new file mode 100644 index 0000000..bd22137 --- /dev/null +++ b/admin-ui/src/api/monitor/online.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 查询在线用户列表 +export function list(query) { + return request({ + url: '/monitor/online/list', + method: 'get', + params: query + }) +} + +// 强退用户 +export function forceLogout(tokenId) { + return request({ + url: '/monitor/online/' + tokenId, + method: 'delete' + }) +} diff --git a/admin-ui/src/api/monitor/operlog.js b/admin-ui/src/api/monitor/operlog.js new file mode 100644 index 0000000..a04bca8 --- /dev/null +++ b/admin-ui/src/api/monitor/operlog.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 查询操作日志列表 +export function list(query) { + return request({ + url: '/monitor/operlog/list', + method: 'get', + params: query + }) +} + +// 删除操作日志 +export function delOperlog(operId) { + return request({ + url: '/monitor/operlog/' + operId, + method: 'delete' + }) +} + +// 清空操作日志 +export function cleanOperlog() { + return request({ + url: '/monitor/operlog/clean', + method: 'delete' + }) +} diff --git a/admin-ui/src/api/system/config.js b/admin-ui/src/api/system/config.js new file mode 100644 index 0000000..9b93886 --- /dev/null +++ b/admin-ui/src/api/system/config.js @@ -0,0 +1,72 @@ +import request from '@/utils/request' + +// 查询参数列表 +export function listConfig(query) { + return request({ + url: '/system/config/list', + method: 'get', + params: query + }) +} + +// 查询参数详细 +export function getConfig(configId) { + return request({ + url: '/system/config/' + configId, + method: 'get' + }) +} + +// 根据参数键名查询参数值 +export function getConfigKey(configKey) { + return request({ + url: '/system/config/configKey/' + configKey, + method: 'get' + }) +} + +// 新增参数配置 +export function addConfig(data) { + return request({ + url: '/system/config', + method: 'post', + data: data + }) +} + +// 修改参数配置 +export function updateConfig(data) { + return request({ + url: '/system/config', + method: 'put', + data: data + }) +} + +// 修改参数配置 +export function updateConfigByKey(key, value) { + return request({ + url: '/system/config/updateByKey', + method: 'put', + data: { + configKey: key, + configValue: value + } + }) +} + +// 删除参数配置 +export function delConfig(configId) { + return request({ + url: '/system/config/' + configId, + method: 'delete' + }) +} + +// 刷新参数缓存 +export function refreshCache() { + return request({ + url: '/system/config/refreshCache', + method: 'delete' + }) +} diff --git a/admin-ui/src/api/system/dept.js b/admin-ui/src/api/system/dept.js new file mode 100644 index 0000000..fc943cd --- /dev/null +++ b/admin-ui/src/api/system/dept.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询部门列表 +export function listDept(query) { + return request({ + url: '/system/dept/list', + method: 'get', + params: query + }) +} + +// 查询部门列表(排除节点) +export function listDeptExcludeChild(deptId) { + return request({ + url: '/system/dept/list/exclude/' + deptId, + method: 'get' + }) +} + +// 查询部门详细 +export function getDept(deptId) { + return request({ + url: '/system/dept/' + deptId, + method: 'get' + }) +} + +// 新增部门 +export function addDept(data) { + return request({ + url: '/system/dept', + method: 'post', + data: data + }) +} + +// 修改部门 +export function updateDept(data) { + return request({ + url: '/system/dept', + method: 'put', + data: data + }) +} + +// 删除部门 +export function delDept(deptId) { + return request({ + url: '/system/dept/' + deptId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/admin-ui/src/api/system/dict/data.js b/admin-ui/src/api/system/dict/data.js new file mode 100644 index 0000000..6c9eb79 --- /dev/null +++ b/admin-ui/src/api/system/dict/data.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询字典数据列表 +export function listData(query) { + return request({ + url: '/system/dict/data/list', + method: 'get', + params: query + }) +} + +// 查询字典数据详细 +export function getData(dictCode) { + return request({ + url: '/system/dict/data/' + dictCode, + method: 'get' + }) +} + +// 根据字典类型查询字典数据信息 +export function getDicts(dictType) { + return request({ + url: '/system/dict/data/type/' + dictType, + method: 'get' + }) +} + +// 新增字典数据 +export function addData(data) { + return request({ + url: '/system/dict/data', + method: 'post', + data: data + }) +} + +// 修改字典数据 +export function updateData(data) { + return request({ + url: '/system/dict/data', + method: 'put', + data: data + }) +} + +// 删除字典数据 +export function delData(dictCode) { + return request({ + url: '/system/dict/data/' + dictCode, + method: 'delete' + }) +} diff --git a/admin-ui/src/api/system/dict/type.js b/admin-ui/src/api/system/dict/type.js new file mode 100644 index 0000000..a0254ba --- /dev/null +++ b/admin-ui/src/api/system/dict/type.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询字典类型列表 +export function listType(query) { + return request({ + url: '/system/dict/type/list', + method: 'get', + params: query + }) +} + +// 查询字典类型详细 +export function getType(dictId) { + return request({ + url: '/system/dict/type/' + dictId, + method: 'get' + }) +} + +// 新增字典类型 +export function addType(data) { + return request({ + url: '/system/dict/type', + method: 'post', + data: data + }) +} + +// 修改字典类型 +export function updateType(data) { + return request({ + url: '/system/dict/type', + method: 'put', + data: data + }) +} + +// 删除字典类型 +export function delType(dictId) { + return request({ + url: '/system/dict/type/' + dictId, + method: 'delete' + }) +} + +// 刷新字典缓存 +export function refreshCache() { + return request({ + url: '/system/dict/type/refreshCache', + method: 'delete' + }) +} + +// 获取字典选择框列表 +export function optionselect() { + return request({ + url: '/system/dict/type/optionselect', + method: 'get' + }) +} diff --git a/admin-ui/src/api/system/links.js b/admin-ui/src/api/system/links.js new file mode 100644 index 0000000..0f14b5f --- /dev/null +++ b/admin-ui/src/api/system/links.js @@ -0,0 +1,12 @@ +import request from '@/utils/request' +const base = "/system/links/"; + +export const doAdd = (data)=>request.post(base,data); + +export const doUpdate=(data)=>request.put(base,data); + +export const doPage= (params)=>request.get(base+"page",{params}); + +export const doGet=(id)=>request.get(base+id); + +export const doDelete=(id)=>request.delete(base+id); \ No newline at end of file diff --git a/admin-ui/src/api/system/menu.js b/admin-ui/src/api/system/menu.js new file mode 100644 index 0000000..f6415c6 --- /dev/null +++ b/admin-ui/src/api/system/menu.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询菜单列表 +export function listMenu(query) { + return request({ + url: '/system/menu/list', + method: 'get', + params: query + }) +} + +// 查询菜单详细 +export function getMenu(menuId) { + return request({ + url: '/system/menu/' + menuId, + method: 'get' + }) +} + +// 查询菜单下拉树结构 +export function treeselect() { + return request({ + url: '/system/menu/treeselect', + method: 'get' + }) +} + +// 根据角色ID查询菜单下拉树结构 +export function roleMenuTreeselect(roleId) { + return request({ + url: '/system/menu/roleMenuTreeselect/' + roleId, + method: 'get' + }) +} + +// 新增菜单 +export function addMenu(data) { + return request({ + url: '/system/menu', + method: 'post', + data: data + }) +} + +// 修改菜单 +export function updateMenu(data) { + return request({ + url: '/system/menu', + method: 'put', + data: data + }) +} + +// 删除菜单 +export function delMenu(menuId) { + return request({ + url: '/system/menu/' + menuId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/admin-ui/src/api/system/notice.js b/admin-ui/src/api/system/notice.js new file mode 100644 index 0000000..c274ea5 --- /dev/null +++ b/admin-ui/src/api/system/notice.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询公告列表 +export function listNotice(query) { + return request({ + url: '/system/notice/list', + method: 'get', + params: query + }) +} + +// 查询公告详细 +export function getNotice(noticeId) { + return request({ + url: '/system/notice/' + noticeId, + method: 'get' + }) +} + +// 新增公告 +export function addNotice(data) { + return request({ + url: '/system/notice', + method: 'post', + data: data + }) +} + +// 修改公告 +export function updateNotice(data) { + return request({ + url: '/system/notice', + method: 'put', + data: data + }) +} + +// 删除公告 +export function delNotice(noticeId) { + return request({ + url: '/system/notice/' + noticeId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/admin-ui/src/api/system/oss.js b/admin-ui/src/api/system/oss.js new file mode 100644 index 0000000..7d80026 --- /dev/null +++ b/admin-ui/src/api/system/oss.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +// 查询OSS对象存储列表 +export function listOss(query) { + return request({ + url: '/system/oss/list', + method: 'get', + params: query + }) +} + +// 查询OSS对象基于id串 +export function listByIds(ossId) { + return request({ + url: '/system/oss/listByIds/' + ossId, + method: 'get' + }) +} + +// 删除OSS对象存储 +export function delOss(ossId) { + return request({ + url: '/system/oss/' + ossId, + method: 'delete' + }) +} + diff --git a/admin-ui/src/api/system/ossConfig.js b/admin-ui/src/api/system/ossConfig.js new file mode 100644 index 0000000..f290762 --- /dev/null +++ b/admin-ui/src/api/system/ossConfig.js @@ -0,0 +1,58 @@ +import request from '@/utils/request' + +// 查询对象存储配置列表 +export function listOssConfig(query) { + return request({ + url: '/system/oss/config/list', + method: 'get', + params: query + }) +} + +// 查询对象存储配置详细 +export function getOssConfig(ossConfigId) { + return request({ + url: '/system/oss/config/' + ossConfigId, + method: 'get' + }) +} + +// 新增对象存储配置 +export function addOssConfig(data) { + return request({ + url: '/system/oss/config', + method: 'post', + data: data + }) +} + +// 修改对象存储配置 +export function updateOssConfig(data) { + return request({ + url: '/system/oss/config', + method: 'put', + data: data + }) +} + +// 删除对象存储配置 +export function delOssConfig(ossConfigId) { + return request({ + url: '/system/oss/config/' + ossConfigId, + method: 'delete' + }) +} + +// 对象存储状态修改 +export function changeOssConfigStatus(ossConfigId, status, configKey) { + const data = { + ossConfigId, + status, + configKey + } + return request({ + url: '/system/oss/config/changeStatus', + method: 'put', + data: data + }) +} diff --git a/admin-ui/src/api/system/post.js b/admin-ui/src/api/system/post.js new file mode 100644 index 0000000..1a8e9ca --- /dev/null +++ b/admin-ui/src/api/system/post.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询岗位列表 +export function listPost(query) { + return request({ + url: '/system/post/list', + method: 'get', + params: query + }) +} + +// 查询岗位详细 +export function getPost(postId) { + return request({ + url: '/system/post/' + postId, + method: 'get' + }) +} + +// 新增岗位 +export function addPost(data) { + return request({ + url: '/system/post', + method: 'post', + data: data + }) +} + +// 修改岗位 +export function updatePost(data) { + return request({ + url: '/system/post', + method: 'put', + data: data + }) +} + +// 删除岗位 +export function delPost(postId) { + return request({ + url: '/system/post/' + postId, + method: 'delete' + }) +} diff --git a/admin-ui/src/api/system/role.js b/admin-ui/src/api/system/role.js new file mode 100644 index 0000000..f13e6f4 --- /dev/null +++ b/admin-ui/src/api/system/role.js @@ -0,0 +1,119 @@ +import request from '@/utils/request' + +// 查询角色列表 +export function listRole(query) { + return request({ + url: '/system/role/list', + method: 'get', + params: query + }) +} + +// 查询角色详细 +export function getRole(roleId) { + return request({ + url: '/system/role/' + roleId, + method: 'get' + }) +} + +// 新增角色 +export function addRole(data) { + return request({ + url: '/system/role', + method: 'post', + data: data + }) +} + +// 修改角色 +export function updateRole(data) { + return request({ + url: '/system/role', + method: 'put', + data: data + }) +} + +// 角色数据权限 +export function dataScope(data) { + return request({ + url: '/system/role/dataScope', + method: 'put', + data: data + }) +} + +// 角色状态修改 +export function changeRoleStatus(roleId, status) { + const data = { + roleId, + status + } + return request({ + url: '/system/role/changeStatus', + method: 'put', + data: data + }) +} + +// 删除角色 +export function delRole(roleId) { + return request({ + url: '/system/role/' + roleId, + method: 'delete' + }) +} + +// 查询角色已授权用户列表 +export function allocatedUserList(query) { + return request({ + url: '/system/role/authUser/allocatedList', + method: 'get', + params: query + }) +} + +// 查询角色未授权用户列表 +export function unallocatedUserList(query) { + return request({ + url: '/system/role/authUser/unallocatedList', + method: 'get', + params: query + }) +} + +// 取消用户授权角色 +export function authUserCancel(data) { + return request({ + url: '/system/role/authUser/cancel', + method: 'put', + data: data + }) +} + +// 批量取消用户授权角色 +export function authUserCancelAll(data) { + return request({ + url: '/system/role/authUser/cancelAll', + method: 'put', + params: data + }) +} + +// 授权用户选择 +export function authUserSelectAll(data) { + return request({ + url: '/system/role/authUser/selectAll', + method: 'put', + params: data + }) +} + +// 根据角色ID查询部门树结构 +export function deptTreeSelect(roleId) { + return request({ + url: '/system/role/deptTree/' + roleId, + method: 'get' + }) +} diff --git a/admin-ui/src/api/system/user.js b/admin-ui/src/api/system/user.js new file mode 100644 index 0000000..5a25294 --- /dev/null +++ b/admin-ui/src/api/system/user.js @@ -0,0 +1,160 @@ +import request from '@/utils/request' +import { parseStrEmpty } from "@/utils/ruoyi"; + +// 查询用户列表 +export function listUser(query) { + return request({ + url: '/system/user/list', + method: 'get', + params: query + }) +} + +// 查询用户详细 +export function getUser(userId) { + return request({ + url: '/system/user/' + parseStrEmpty(userId), + method: 'get' + }) +} + +// 新增用户 +export function addUser(data) { + return request({ + url: '/system/user', + method: 'post', + data: data + }) +} + +// 修改用户 +export function updateUser(data) { + return request({ + url: '/system/user', + method: 'put', + data: data + }) +} + +// 解绑 +export function unbindUser(userId) { + return request({ + url: '/system/user/unbind-' + userId, + method: 'put' + }) +} + +// 删除用户 +export function delUser(userId) { + return request({ + url: '/system/user/' + userId, + method: 'delete' + }) +} + +// 用户密码重置 +export function resetUserPwd(userId, password) { + const data = { + userId, + password + } + return request({ + url: '/system/user/resetPwd', + method: 'put', + data: data + }) +} + +// 用户状态修改 +export function changeUserStatus(userId, status) { + const data = { + userId, + status + } + return request({ + url: '/system/user/changeStatus', + method: 'put', + data: data + }) +} + +// 查询用户个人信息 +export function getUserProfile() { + return request({ + url: '/system/user/profile', + method: 'get' + }) +} + +// 修改用户个人信息 +export function updateUserProfile(data) { + return request({ + url: '/system/user/profile', + method: 'put', + data: data + }) +} + +// 用户密码重置 +export function updateUserPwd(oldPassword, newPassword) { + const data = { + oldPassword, + newPassword + } + return request({ + url: '/system/user/profile/updatePwd', + method: 'put', + params: data + }) +} + +// 用户头像上传 +export function uploadAvatar(data) { + return request({ + url: '/system/user/profile/avatar', + method: 'post', + data: data + }) +} + +// 查询授权角色 +export function getAuthRole(userId) { + return request({ + url: '/system/user/authRole/' + userId, + method: 'get' + }) +} + +// 保存授权角色 +export function updateAuthRole(data) { + return request({ + url: '/system/user/authRole', + method: 'put', + params: data + }) +} + +// 查询部门下拉树结构 +export function deptTreeSelect() { + return request({ + url: '/system/user/deptTree', + method: 'get' + }) +} + + +export function searchUsers(query) { + return request({ + url: '/system/user/search', + method: 'get', + params: query + }) +} + + +export function searchUser(id) { + return request({ + url: '/system/user/search/' + id, + method: 'get' + }) +} diff --git a/admin-ui/src/api/tool/gen.js b/admin-ui/src/api/tool/gen.js new file mode 100644 index 0000000..441791c --- /dev/null +++ b/admin-ui/src/api/tool/gen.js @@ -0,0 +1,85 @@ +import request from '@/utils/request' + +// 查询生成表数据 +export function listTable(query) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen/list', + method: 'get', + params: query + }) +} +// 查询db数据库列表 +export function listDbTable(query) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen/db/list', + method: 'get', + params: query + }) +} + +// 查询表详细信息 +export function getGenTable(tableId) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen/' + tableId, + method: 'get' + }) +} + +// 修改代码生成信息 +export function updateGenTable(data) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen', + method: 'put', + data: data + }) +} + +// 导入表 +export function importTable(data) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen/importTable', + method: 'post', + params: data + }) +} + +// 预览生成代码 +export function previewTable(tableId) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen/preview/' + tableId, + method: 'get' + }) +} + +// 删除表数据 +export function delTable(tableId) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen/' + tableId, + method: 'delete' + }) +} + +// 生成代码(自定义路径) +export function genCode(tableName) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen/genCode/' + tableName, + method: 'get' + }) +} + +// 同步数据库 +export function synchDb(tableName) { + return request({ + headers: { 'datasource': localStorage.getItem("dataName") }, + url: '/tool/gen/synchDb/' + tableName, + method: 'get' + }) +} diff --git a/admin-ui/src/api/upload.js b/admin-ui/src/api/upload.js new file mode 100644 index 0000000..0823381 --- /dev/null +++ b/admin-ui/src/api/upload.js @@ -0,0 +1,11 @@ +import request from '@/utils/request' + +/** + * 上传单个文件 + * @param {FormData} formData 文件项file + * @param {Funmction} onUploadProgress 进度处理函数 + * @param {Boolean} showLoading 是否打开loading,true + * @param {Number} timeout 上传超时时间,60000 + * @returns + */ +export const upload = (url,formData, onUploadProgress,showLoading=true,timeout=600000)=> request.post(url,formData,{onUploadProgress,timeout,showLoading}); \ No newline at end of file diff --git a/admin-ui/src/assets/401_images/401.gif b/admin-ui/src/assets/401_images/401.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd6e0d9433421b3f29d0ec0c40f755e354728000 GIT binary patch literal 164227 zcmeFZWmH>j*Dkt}AW4u?O0nV^C JJ??B{WLN%@& ckY+J4b9iZvx<3D_n2&|&Z&h4vq*>(t`hn@MF%=w~&6z}y zqP(U8LV`?U5=a3N2|;mT9wtG40Z~4FVLkx~UI8K0^+%YW=^qEn^=Qs!7AS2+rGJcd zeI?Ce>FVl;;^T97cSpJlAsw7wUAL8x;NutM6BOjVuEFc#Y42*{!E5ir`p+H|&0S2L ztsGsg9PF9?>e1w-!)sS*mg|}ReF=7s|LWG>1^Kt-AWa?Y_&iJ;`2>*se=X^s6*V;e z->cf${j0W%tG4-n&G&!o*yV|*qdA|pxr@VVXH)a*>a2ea<%m*nHaBr~aDL+8VEfOz zsAcKk>fmDO;K-z)@Yh`vL5eUTG)zpb?Efm}`dd2<4U~$#i>ryfskw@xG|P2QNGmHd zl!SnSh`fT5khrj-kbuB_QF#SHMF}|}5d{S$1u-QFrGK_nbTEBwXKwHM&$ed&)mHdF zw*3ndc8=F0E1El7xtW_OIXl=f{cY(etN%O~f&bXwKiZo8=eb jScm6 zwKdgMmG3Ib%Sua%iwX^&K2DM^%sxR|Jju#lhtKOd5p=PoxFf|G-tjg^I&iIIVx?hY*t zH5KJ;id*D2$!?I65EH>+P(lKHJO~&B0L+(o_z-{*-~q0Wzw8o#kIUhVHnYmIEUUEL z>2%~7cePvas66mKz+rP7m3cl>P=r9bpJ-F`m$<6F(|e{Ih=<+t0+IKfs3OzHH{*M1 zNSYT8#i>kGz8+lsvLgxoiE{v;T3$iHA@1Jj2sA+YIy5#eUJg!49+`?JH%-XO&OzFw zq!l`o2IiKPXNMP6`MFlq)dy8pH~V86+B h3h@(M9LZkB{V|mw?>p%0QGnHXw(N zY&W=islbdV0OY7VIe`tGo`3qyBN!|l*}U&WXQjlfYz|e%m9^I%upwc0O*Q>Crzq4@ z#lt2lO08awWy`u9o2}j|nWUEw5k(CPKhQ4p2^Y=eUg3HoE>>#&cJg>Tui`~-8UNPn zN2)cJk34wVl+EUv*ko!+PH))jl|SpAd#mQQpHBSd-0<`cfbPdywvGJ=nb{Zb0TGKf zmd}*84MiVi;W5z&=@U99k{;VWlQYjsR(Un{^|^??nQCea=}2(#?rgot a{6I%ywPw8+ZNrUMfmMG0Dd(DLv)qSymlC zNkBb{VvN(m=<|z{9U~(T;om9Mdz_2t%lBXAd@1~t7IFT>t( dN z$fY8eJ=W>1%33TESv4o*QXGQ`(HSmTkBT$hk5x Ng6uiMO9Rr2 vi6YE&o)&p`!!{ISv$d06>ay_BeL5+FPHCjZk_G$V&!#>`CD3bO89yR zguEzwWysR4D{mi!AbYmm?qI#CzsPpGN090BhRm{jvl(z~d?85ES4J#Q$t)yZ^MPLY z>%pMVhGT7v*v9bEfYi@2{x-Rl94B{Cg^UybL=KIkDUjuyE1Y!Th21;jUj4-}opT 6%CyY^G5hl}1ZwL%9# zMy|{F@BO!;`yP9$_6~n`+T91eVcjvhe|}!PpuOkUIc|sxem0y9G^}+n@H+Tlcj%`G z24%M!2A$x>03I;_BIq+$2zt&05lgB3-LgS{+ZYWZ#-fSP5g?f3b1=_E$8C_YI$dP$ zH&QG;oJJ8uwwMa44`zlW@Pc>)9}<`#dRg@B!NQS@_|Cebw+MzqeACes#p3r_^#pvi zD{f2AuXK`%$Ep!Gvy4LlQJjDtsVyEq>$pb>y~zF!aAqw_`+ZXo-1jKpr7%Ffm4cA$ zuK{^0&M>Y~4=Osr!d(Mb7&mm4@6Fd>3X zB=^V+(L=ZWP{0{i`{dRr$M|XKBU_&*x&)&|_XoJNlWT-@rfjY9$hoH#+0i*#s$0S; zdegT>H9)BQMKU&CQ|~}e3utazfx}Va-kL6jv+7tiLU)bWp1Ok8KCWK>?bbp~ts;um zvYkdxl>73HWah$kjR%;|=T8AY7P9hh h6;59nHh% z$fb0gY|KHVydSWI*6+aePxTdFsDY>V%d3$HJNv?908-tEPc?Jb;SvA0u17i~w`?mv zg%g1?uH1}pDQk8wVv^A-J+dIGlpGMb?EG<>dmve}>`QzbnO3A2{#R)R>pjPhXB=nl zN7C~y#fN&6@6S582Oaip)d=X;54wQ;3Lr`?XbLIb&A)koE>{bjC3Wl~L&~Y+H$OSp z&H FRAbXpu z&V2$J!aE$bo66p1cl4hX$=cV7W~q-}s-_YW=m_>8yv>;dbw9}L)!wB0rcDr$3TMeE z0u_0!bLr>2$M7K2zj_BjdoIJ@n`7T@@!(Vbq;90h5XxqC0>S>YK-A39;e^se(-z5- z<&HSvf(Yg o1dYm#|)bu^7 x~5>u4l9 z#?JE2PckM3W-qF@d2nN6@V9-p#&iSa*X3Wq_50nAp20Q2DKrW oj3)-fTE0aU{sB@5$EFHtjC(<5xetF&*)v&r1y;=_LN zC3CBZF%TgVmz%@NK1d~fFm4FUMlAm5X5?J%)&4a{#dJCIP!g!P_mCcNO8F{zK09 z_ij4l`q!$CQ4`?pVZ`HK{d~B~4cx(LfY0yl*S;G!h5me)#^JUte1k%KalD6buQs$I zUs3)3@&=eePjH~U9-w)coC!Cz%&4e|Jlt+?py@2V$(zA@&-@@*-~J}Q6GDJQ3&1z_ zKYiux-|xe+sl}%Ih9~9ihX+o8r8lV +@Oqul{oWUAiJZWz(}2e}1MhJL%{&Vv7YiJG5XAK=NE{t>y6R2W9rVWC$E?}u z^gNjSRj?SD|84ProQ `iUyeM;zO=iw8MaEeKRq;rNX)w{@AhB=k^;hMst5pUc!eXN^ RF+ z NqR)!`>AyH(&CE4Lqu+}^Nr{bCsf*h2 z2)i+%Cbi;u7XY2=3J1=Fv-!n*uZsaL+)-?AsQ59bh;S1>3{t@pp8D3AHAWPOU72~i zi4ddoj2%jj9UF+fACHcbi-q2b6V>IT6Mr`L1;hapASfm0ZsFqz^A 6?5*Zw&jf@UQ8GOV_w`$><~;$eCDCz z`R412H#{e?MevScD#Dn{!`m{^c_o$)o#gHu?N*aSKau2po^;wI?YsqcRbfwnCOV(^ zI*TWj4q%Y)A+ljfdQd8lOJ5LK5Uw}{YMMO%AQ_=T8*7y^(u8sDP2^_6SY9SOOr~bh zMC3ddrF{;$QJSa#OAVSugV4_Shk+!Psa=J^me1oQYLc!HaqGqDKYP+OY0_&;qkANL z`$~C>B>XhF=&>ysBU}2BGzodBl+!Ai8|Py0R3HRo39~hs-@;;LN+Hj!;$p(6ZAz2Z ztX#wEvTDua(!=iTU1qJ*q)8dajfX|u56hOm6vL@MhtNIGKD*2Y!o8EGv$-ZxRyNZg zIAz1i-q7TT>svq;+2c 2e! zE}vH#cWa*i29Oq{$Kh`(lV(be2Qo@ToX*^ZsHW%y Q!ZCi$$4_x$r6o1sFCJEcL;z54 IKUF_NJ&qe#iN&@vtf~~y?`N1LmMP&K%&uOU*B|ssl(geNIWHGP?N;axY z9-WpU r0`Ji|DUPartv)m0qPC=1Qw^!n38BI*_uewDMNHvKp`Z zb;G4xX~NBA<$b8K_PKJMC%pC642BXB@2@HvUg>s*^N ewB#v> zSm&z*yqnXj{8eNusQ9i6AGE|>DWy=kUiPl`zPY&zPuG2UvSA9t+0Y}}s?;xFmim%8 zZNtqU??mq#?9rB}^j7`WtHfP_mqg`-IP8}>3Pk$#oBa*h6RMunRFV9wnY6?&P+=cb zp<^JbMU;bX>{z%9a&o5EGM3B8S93I!CFwxw5a}g4)f|4cRUa ny}?u;WLbU%yQzx^dj7|YKzC|1y4V?FHM_0qRDt+<7#)-VDiD;G(E;V z-R)I6#_Gjun-{TmJB_a>6B%in=nfn2S~basG>Mls@eed FTJr1KNWQkQpP{f{t9pn`G|JlEr@tFWH~wCR z_;9C6!%g>)wj&AE;rqDbvs&rQU9q{gj*z(y^OKIn7bSsT^~OI`ue~U}n{J}gFSOm( z89&!aw*HLhZr6L&E;5dnM-g2?WnDPfStoR*t8crNpTi){#;KIZ7+k>%Yj1hh|MbQ$ z2cit)UXkv7oo-l?wsA!F2R92uJs 3l~834~*{Mj+Ze zkf+}76)^9gNR{Y}yq8#f&tLuiB{81aFR+DozYL}yS>10N`91*k-kiAK>07@`#d|mJ z0cTrp*NXl(BLk?#eqLa}-y0G*0uJ^b6u}JMtsab&f<#w uD`$LnWE` }$uzO7 zKEYu;@jY^aJ!fKOWP)vRVw!l8m1%NJeUim^awu|=A!qXauhEhAv9riACi+np>8WtN zsn6b1h&>S9-sEw`)Yp+I#P2C#=_yf?ab69u1h3f9uVHBe(R=TPlo756MSelgnRThRWfsGpKc2E_7jqKdd++K=kBNN_D|0YKIsmBGRXYIq48PL z?(>}Br`X-kLxG>2GZBuXgRj4X+}{p*c6{;w_Jx(VU;uxH0sX=uZG`1qgAsq`HlY6H zVi %QasWHAJHOoLYJ0|5HBn?pF%|MJ*@wDo+DrOn@=d3bg4|b F@I-qUf8D1?l;QIC2PPW&j^l#XGod=TKp;iOXjftY%UJYdWyY z&vpzon`^dz1aQZ 7R8EpLK>lChM$?$mMlU!*!{w zmBW5IO2-YqtPRU789y0rbk?R#<*NE0%8;=YOx9+^7~*a8#u%6&nPF4aa8tu+Gn;fP zHJS^T{%3t>d8;sMBlpiOI2q_2=@$1qTWRMy+-0ZEex1m%6Uw~P#<007#C>#gvw@T? zhGDl|W@8E19nRVqU|=&^bpL3$=X1WxYrpsTPs^Jz {Xrf=vk&3pYtZCd zH9m(#j7Q`#2OaYi%GE2kvacCqw+cy_gx Nt{+U%pAB(8j2X{f-a9ihI ^oJKLm25%_Gf&$Kki_m3e4m z1QOr-VU&Rh1eQw u%@q%~O>%57OLFXElwgJBd($d=WafhxX&M z^?E_>>>n1+Md@h?P*{Y=TSt<+ddnrG8!%8LzXqUb8HMhYIc@+=K~bd$0~{KbTGc4X zMH){Y+tg`85fmQM^_~@88s5;~$w1oEMlsSkSX4J%H8znjG?T&bJ-v0lu)C^nHGv_z z60^0vba1R(^6|uf{OlZk*+lshJu`bnSRIXhhDTJ^vi^{nJ{Ure{H6n!l@EJ`aIOs% zi0ap%lXRweMU<(``@;~2PyM=fEfiogV3BBkls3X6Ac4>CIjt=6nE&?aNL+5_Xzl}T zdp#}+t~g>)Qmc#VL-~&?>ZKOBjv|v|`Fb%-n{Wh>U9E?SEi|QMnJduQtGByyv(Xo^ zV4rwrBZi&hak aMS*dHpbd^w63OXu W|y7$(YB_81#AEjqh@>a(aK=_U8Aw~mXnQ%e6?)N zj@BPLGj%o#V;ybh2aCNCj1N28FHbh7%Z E@CwargPg|3SkOHEQhisSuTemib|Hl zc^aXH0my#DN~G}T& t8s_ z$}g_u+5QL4*vfSiR(?`MybQWa8#8F8UbxB3Mviucqgm)E6P-WodEMuZV1;8;*h%-? zNA1&7QW2Hg)U5{|h2bpsbhsEi{R0Hmq2@0DC_FGK+L*!HhWvR ^39 zloFf)NAGgnc`bS8>f7>^Hjt*!u_|QEYo#5p*<@L}8N4x7!kPQ>so>L>)9;KbZ^9iZ zc+$(=2UW>leU7N9mwMm$`#6c@xwp$#1YnW;Dzn||#@4CxIp1O`K;ZDm=HgHt79M-Z zv*uA@R+|{5lqKipViA^N;(GQgb#ZgLK&{+xw6)>?Pn;=JFGizN*|C(U+v1 7l&E*LGzvIkuB}#nV(m&|F7BxKtMZi^Xlb+aWHCDNQ z&^YWq$JT1R76aa@1D3W)N w)uqcQ$jZ`zol9Uzkq l{L(}j_7;?n@)KUB^-}FN)arkbfexg`?@ZqCaiMmNGVMY zx2h`?x&Ik Gf^iwy!ixzKW^P&lL1dUh`bxZB)P>PVv{76gP#(0iG1cOFv{nm8J z 1ELe~<6X%W!4$Mf>CN&0hwSdxcs6032yRk_xU&9b&sQ=ZRI8zfryytlZ9 zYs-@~abv5$;M#IO-iLsDGbfPJdNVhaqii!TQgnMWAKMMvDoA*l_sYeC<>tTnX> lMb*z@XI%-RU4 zo)-+S_8L7? mHBo6gxM&|X=Mtm$^7FUTCMADp;T8}Psp?JYtc8wBNEG(=F#<@# zld`f?Vhz(Xvx_24Q>_b%-vuBs?f^w)gGY6UJBYlnvD1Kovc&@w-!<^CI?oQE92{3? zaP)7R_>3~`_X5>@nHTBq_4~B2##J5pZESs)tu!iq@0hXs!`J1Ld1QUm_T}2<)%%~t z4?$qnZ}m65MF|#i075D~8{M!B#bEeul#9pYXX>bP)Jwe7fjng+#=AIYDbMhi_d (Bu+XqGr0Pn z;vBe9+~s`g3%#cGxTjN=79@Q~TC2pSt a7I{Ujx`-R4N-)dvlAxhJyqK&qx(a?#RC%;s zTG(9}?e=zGRgTZ$R-(zo)fT$FvZ;)=? x6ELnV zC|AFQzeD7-Z1@BOI}ik6n;NQ#?&DL*9{P1!Jk `JTlcx?2VEBFkX|B_TW=?~tjt zhjx0BF>St~T3B)kmn)CO;zvCJTo~>}XbIoZ@Rh|*8}m;n56M5!IG|O)sr;ZKh#Von zdeY_m_+sR$QO^Vs>JehFRtrC)dPU?c%&I12*YnK?p#ome`qrU5Z;sOln`Kp(4qXgr zr>~pNY9{ociX@VEYvQW!fPPL<;5nmJb&vMPeTpJOwn7tc^mxues%2dm-c{vX(3?EY zLvI<7kx3H8pH#Q)x)*c~;xoO;l_WtkR`nimk8~=HQBW=5pKu-i_JWO7$x6e&l;^f^ zMsIXV!)DvE o$ z@CzRgdKL-M$$K+%g8#cht`(QdgjPy74oG;_tn)EieOO^(%N7F=S27#Z^E2BLV}rhy zVw}luf$$8QX(+GBJo{o1>Zr_05S;^NufPL6#K_a$#^6cO1(Irz_1&hA#e*xeFc6&e z-4qs3oOmopVKoTmuFL`JSE%Ec>4I?~L9uu+G8&o(Iq17nmZ3ry$#)Vl=+JjJ4X1ui zl0To|hm6D$yw+c&ckt++B6h@ZmH=DF;@}jyMer{n5E&6H9WV0e7EdzaiqUlkD4LKXxAm1(>_qnPgYUSycx*wv y-eoTukEtVxI(+W}js7l$8O(|Wbojm-p2=$}%l8Ng{vFfKXy&q+|qh&fx z!=Ea>ev})Nl zC?R{vp+xq?_0}tA&p=X`F+PTk_hYq(`ucO;S>DQWp0_XbH? zWge+f-|pbz?g<2T^qE#b-xOuPA9;lQFhtWf`cYB`I|NL8`j*D j^I-1yP>ZPI|3onQr>+xSj4CXkx%PO zCLpMAVu`Y=Vu1qXM{FQmmTeMwTx;Tpo`2wT;{5(7VNcJ&P4ZV`&&f49QwL5swTR@^ z=!MIsS!LbS6=n-Ig}7Cp1k>pivOkVNmAsHsky50v)m1lGDN*py*;Q<)8ENe3+g{N! zcWKd9roEpDY4POaYQ}%2v-q46!S%ycw-~?e$-033ZgZqrW5QEAG8c)HSx?3bFHP}> z6PD$L55Ee%WfdX%T=u40=8>11?No!o!u)9ZbM$D3uRkfnb`v$w7^Yx-2)ams U>^S_}tJT5v-> zZ*dj=APr*{B V$k;Ij)YggmwrtO&)4fk?a^@SM({G2%m&l_Ieu-RlB=veY-lg3{Fga2!c>e@JBqq zY$#urhS6>);FI;GVF}Un+Hy?nXq$)rDlZogp_l%({6vSE>bGL*lC)}!gNRF<81N$b zooQffks)24haSgwq>^kyL02+)&eQ>h5g{Wacj9D6;RmrxAIw&VPZ$^(dz^ha$ujd` z4|YJHi69>O2bG!;em|In6?(7?kKC!kd{MoVKUj?poB&VrgAupSCK>NeS#M$Y2tar< z^kScs(_cU!-aAe;3*2mWgQM#Nl_7*yw|xA+#Sk0z13atm9?WR$n268WYZ*e;&Cpq% zI691iwqJ*thhfXDq_0e^Fs~D|I73{>5en9no`ZrZZrD51q1E1FyGM5CPd54$=-Wsi z7ccvLs&C(agBTrmMhQ%b#beh?5r7=utdP)8_Ale)GJG(+stNp(;<#T2^=w*i#m39Q zSEnH(2Rwg*5u~i31DA{&sA?%GGO`y`cT>2DtE;DPYe~YH7!V&h!T6dm9?Hl-5SFEz z?sYZZnxx_t#Va&n*?Is+GXP&=x`%t46G&y|2S1vSr>r &9ntRA7#-0&6^(B5=<^yEgFQlNrn6>xbUI75>0CB_$WQhf%~GcRNP1 zBJ!EtLX~a}I(R>#&Y~JOLo-A(2impE(J$#j&ekSjgwrfkkG1X#jvd9Y$ #J!AqH`8@9%Tr&^<(Hi@WFt8zu5Pp-Q#frGZ=&Nhy@hIUC zZBmIe+15_~#s=c=RT* d{TadFkXUlvsQQ34NyYy}3tv z@cM#aG<0@TsI$*T^5 &C)Z{hggx#ahM z lis_`FAe5I+1c0Zo9ytNguElDP^IGu|fYOcP z&NY`DL R KCTc#rNg{eR^g%%;moyCgZeZe@NZ~tsf>T(-6Rlu{@+obmN3*rXdhd=S +CL{8M0fZH2vo`R-zKVgsA3o*9eyJaV%CqLY9ddJ9`xQUPX z==5nQkyqh$@$4)ChnHl?r#rHzYZFCFiA8cK5&4fC%2jTEQz;z*?|y?5to?ijY3L=1 zRNNtf5sHlOkMafKYBFlXV%{6?lnp>B7IhA^gziWMzS;1x{B^>1OGaH+Gb`ruL<$vZ zydX37=0c)2BE_&v5`HM^;cnz>gombchU_zC AnS;dspxptN<(oM4z66cj K$eR-$q;3fvLCd)olF=>JAl_Z+A0q;$oQ96$RE!QRkcP} zTi2wY4inXcO1}r(mgvwNx8V9fH;(X&j@HLIPB!db(e^BDbg`hmF#!Lf^m?DEhyEvR zwIEv#ugMN26&uIVSX&t37OlK2=UB^~2OY7{bpp_0EKI3qxqoS|^LPKvrLIq~aA ((k=mymXo6WoDg&0))xU>-Rp0%Nw;0*B z?8=Fm*7ksfq&rKP^xJC6<2DMYF`oJh*7nUp9{2hqHd!$YVOvXx-_W)91%_>Rt3UXJ zf?9o{KR*|cElM5@PLqp5h@lKH2pOBBlnYE;^7oxj@j&;FcDYLQiMK4!0G%2imIY%b ze0t8_*B&&$i5-2vUhJHh0H5wQ-!t9e$hfBj-hSZ+o=9dp8kGf2#v3*5Ke$Kn1dX<> zrH4^WwBK;N@s_Ma7V?;^OHIHy;O+z!o`x15EN$^k>&rV_r^V%fj6>ifmt5vw$x`I{ zK%j}NG07vc#%YnI=kSc%SN1b_a6QKmaWocR-2-grcOy)Qi3!jDf&5Lpo8h`6d6Z3q z?~z_d5yr&%)C0=>IKi}|NK5s6+Ao9sqOC_!j* 4U8yq~Q@kN(CD?p@f>;XTg}Jj8Av%WQSCJ&|!n&>}-28fd<<{DS~9{Oi#By z+^8mx7`Ns4qDZM^PO2TRhM*JeP*%6vo=oSI<+#%XyXKOK$U ()A-gUDj& z;BzIn;m7z}?Hf#cDg*l4kE1{TDwZWwo$wE?NjBXrlA{`)2u7Xel0}s$a;i>->-~*O zXdq>e_*h8l^G!xxF}xpA@)>6OZ_x(fb+qyGe`g5(e= oIe%oIRfzqgA zln0mSRj~vf4PEP8QpxNJ9bDMW`qn%50cQ}f++O+h;BIoyk!C-=tA~Gpr56RcCW!pS zb$&tBi!}6MI65XdMOen$2uQk)HdtccW@hJ=M5h-T`TCVsyCLIjoG5CVZIB^u;gl^{ zBN?bW2;|Z|q|sK<05lCxqF%;(gip }%`WiBeDeRYxX$@<^gS@YvCmi+-QRbx zk6ih7@ngno`}6Kk>|U$ch#c18h+$MRWfWi9bB$W5?E!yYpBV*gyDju?{ ?{k587WY{@qm$Egj~ zdnF&MJ|?#`F3%YIBSCB%@baN2O}_KD!d0#z)hK){Pt-BFX-1p1%#uWX-(=An>-mhU z#qBRSFaDm#ss!tDw(_cC3BRiYbc-az=MJ2N90?rrgBMO5y~#q1tG`;}V4sU`m1WUu zhTQ0F5EBE@J-9erF3m ADn;_HRjE^7A35b11wKgajwz9^PQAHZhr z;~?VH%?xi@#Y>pz@P?U~VW4o#QlP4>E;v9{c7`!T cp$9Hp{}07nbqk+FJ8RT`VZWroq;;V{aU`B)A*pnzB bG)v84SP+K2lk9pZRW%0)0WoZ$K?Y?7Srq5_ <83~EgFkhP ~^M^;6JcVjKLyCw@jQ0<_+!F_HX;zzd#n97Gc%d@Jhsj9&l!C1zH*u!XOI=?d& zLM*SU4YqMLILz1kYjDJ)Jza>F`Ud&QyHZzmSDxFFQ-_mmJl{jXOhUXp6Ry8A6eptD z-l}|jXl&sBB}(@l DR{Dm`%bqYd~MQ+aLZtVjus|{x=?}d z+G0!YJJmuT<-i1NSQIsE#^ =-! z(lYq*qUVpgN6+nveaP(;LlV*%`RJ%c@Sv({udZ${!_{GkEO8!Lh;knb?NO+*dLDW5 zU>^tSC`>CdkD^%lJ-6ObxNiHy5hlk@o}`=zLv=qwHfp8$+ZmOSmS!Nxn1??FcdW0K zI*2-cv7e=%FIo$mPwY|hfcor+-0akZ9v2!SL0%im+Q&*ai5V29J&y5XV`Ka&t|F~d z` -d)JgzAPg*8#1yYiyvFtF((h@HW|Eo*8?U=( zpE|rOvbB$uCzE1?KyWfiXoih1Sw+!2Pax52myOitviH$^PRhuL1#M>O-*m2r1svjj z;v-IJCmBuh9H=itf77`RBa5XrRK~sLPO>gWie=89$D}-ukNXvv2jqkW{CiM94?uyz z|A)!H7MQC4p4yN)@cO&J6ayt(Gfn-G^_ReOyCb+iZA$yv eISaN>g{C_EITolLa4&K4PtjN>#!o36~NTD#!7pw)AZXSg672@;}vc z?U)Q_N a7GzT&q|b>Kbh3tIX{>uF@lV<{n={H|Ee6 cYn=pHCARUqN;!YdOIsnQv~{@e#f}XL!8` z9B_7r6r&EiJrW@ji8o%(|GJ2VeJpes-q%+R*_{*eJ3zMf;_WOQp{q!PS`SYHKi3@y z$SJyB*shK*Ov(lN{Br;GfPpkCgV5NUi`Wu^^EjY~_WL3bgYv-dC?GfBu|74k7e~b_ zreGt>6s8cikI#DEGVL>=;Ve@V;~`v{lg2RKTH`#JQ2(GpG#jQF{D6GB84~kH&S?dv z2!Ae*$6b-a*=H6|TL5X$Chw9zf-Vm0#%a(^#yLqdCTecIi z$U6j59MI;=*U+$Llfj6P`mL-(Br~pT(vEGjF}JcUhE5#}3Y1;sWyY_|t>(DGr&DTw zG&FF?dM6%TMM3>aU3Fkoj{KPQ=7#wZEvJGyFP!v2&%p $#O4nCv&my^%YGDmn0;^rjc=YJ5_N|E@3sco~r5 zX)NeR&($!Ex^O%bg8blc^ff+Xf(>enekaY7KL28%DlI>s3P@ipM?U`EJ-;F!ZA3`+ zM5}u`U)@FmFQ#`^?mMHSPbH4^wyR9h4C52vf*!VM?Z0W@ws-|g*@#6ivL{5Z?;<{q zDJ>W$=b%@oxc*%KNx`%+aKOcnX?M1BDHpp yVt^XzUg5jb}3$(h&hYu^s!r3~4KGHkl ze_rteQ)9a}r1`xWClZg4gWaTFhXG8)xzGp7J>+SJfe7_n__M(t%GSdm{>WV7SIWJ# zbBDna&EE)|#KG%Fhaplk%w!Mv+c|YHPBL^aN6RpZH$`g*gIP`R$vEZMD;GnHoEIqq zFR=JJ0)YTt9+gAM`)Q UgepHukS6;HTTzgs6Zul8h%k56_t5+00n)b}*^3>(mAp6y)A@A5wj8sFf@x%MQ0w z8L>F4O`Y&w63SQ6Fn;>C)P_LaKT{jU;se(L)1RQEb#+dX#Ou^X|9)CmAG75BP&G?} zli+jLVrcBp|6u1Y{+nyRyU}s@^&cs0y9!;35H00PgjxGvu07I}l2D!nq+11SD=+O{ z+j)Z#IsE#OxNAHAC%POJSg29;^%+0hn+g!$NBi0FlUk^PKvw<{kq;Rtp~32J??)vi z3-Ngwy(QI8xpwW-!ZUob^GYKMY%)vAs$Kag3#}`!U3)$_^mSNbOSeH FX1Te~+~?15y0_zU)3i;NPLli0(Inmd*fM3DAv{bl zWf;x#VtM!#Y*HmP=lHv;#m!e0R+3RaPE)5KK{@ZhW=yDQ1r>+Gl<+*2nCvIIvgNAP z?jptDf()|69h69Zj*D519`N-(&zJh-5}gFH+xBA(w;#^(qI5PJI&?iJYi6mcOQai7 zG-D0STmYT}RfsilKZn^+H==3Jg~r8#4 EXa(F@tJ~&lvE#@uj%9tkSe61lHdmwj7-w z5PG;w6I;cs;^l?fd1W^6XFmDhg7vV9pAYQ)TSs&=L|$z4_l6<>{>GGpgU!eCXZ!U` zR%gIA K_a6sM((s#dQ0gmfY8BiqAJP_16LOTekvL3ZYI(06KDFLEj&>XBE zq}%Etn-6Sm-OmX(v@E5KwYZW4qPPX*A}sxf2TQW@m=N^&ZrjU6rH1|`+(5I}Q+zXe z$HHrQhaU`SUiP;EtELEaSIlCp#qc(g3{JLJ0PCHF 5v5B) zx`kor9+2+t?sfoaL_lvrL>amp0RiPV?!C`B_ukKWp6mBF%yq5Ln%8@+^)(acVj!7z zVW%h<8yu=HK{v2NOO2I56gR0F$2ghCBf2F6C--?c)*Vo9Q=GR4hEwrkKV>#M9|5{e zQczESuN8Gde`i_JgNjf!Hu$rUaqMmf8bUVw@uqid@E0xYxc+Ay?bsInm;Ioi*$QVz z&==>MfF{A4Gu5E)dHgI|ME9f3y`ZRL(iZ;L!LHu7WUkjeMO{+Q&%u%4M?Mo-3rfhf z>~PVJYkL-MQzR&_)x{TF{x%iW9b$1L{;}GAMrnmjG9VmioFB*gjT@=kN!1pO#U2dN zIw_C2)7()e8U}-}pdHdmRV@O>@Yl|>m3i3t&+!r}jUJ*pXb>s?gWyfL`-i^6s4cR4 zAJ#Il?p1rwIJ?G(SJ)r~AGID|Ti)t0*^MPz5W (- zQ`pVM)DDuKRaBhglpj}I8UH5P%#OUGs>%CKl8aq%bC=8O+A^xf?stz^>8N~xK*+#^ zD~vH@tn )euC*X>aklXsqXB5lL^uMk=PR>b-O01YPu8$ 95} z)n)kGYxLnX9~!F6?R>HaZJ!wF42>4ZU3wPZvbwpQ(RcA odb*{~E z`+K(v(ow6+4tjpjseyv_8j|smuVM-R8etQ$*;@hp*vKd`*$?UxJ5`u#-G)pq2LISk z=!+gY1k3uWZ_Rv_xdvYNDIBhTbiVGr{3Z68s7@*1;{83)>+5zU+% (cgPbmMzoh;%UEg0H()RQRj^?WV{xq?FU z928b4s9s^4=WcW{2u#y~3b0ZGCi%j0>H5lTXrCnBE$~%32&$aGzC;6UnVZVUNk1jp zlV?xd>;)FLAh!iOkJij;g-FLVh(>$x=%(uBQ5DDgdz{ Uv#8dKH8Ur%sU=`tvkx3`03=dr zaAF0kG>9=1+G^Ghn5mLRb|ocZUJVsvpQ*R82eP|zP?KaJM??LesrQ>JFprE-ja-qA zn^YN(4#nffK|n=nm18bZc{4W(0`~hVljqZY4UO9I7)ffqSA92Q)n;6Ocs(__=|1AS z!E8N~$$)t&dzY_GYBsFu*JA&}Mv=35_nBWxVDDPA*F3`#nGz8#66?~+rtcgC^r`*Q z`-KaMm1cmCBl?IUUwu&;h53tw0i8IU)|LbimonEB)}_dw>oJ9SD4Y|rZg!=x@XQ^` zt(MRMi~IWPC3S6X9u{ZKi}NJu&jjGl>goagMA-h3pMvRLI~Tl_Lp94MVfqieHhm*% zIw7<1^}fdo!GV6%<%uQ%P$+4o0y+J7k0RM{Zea7p@p|p`@2j(Yd|aLspD _8w2AQoyw~}iNISyj_$C+iq ;Ntl@fP<5ZKQ9=CnREGFUeq@xZ7`aavfE*T` zl&pt%WQCXOHz~P!LI{XmW_EsAxse*9TS-nueN=3GaaLVJyN4)Ev#VcvN1v@IT_`Ht zrGM;+7^KHNylwoGO4m>j_OGwXg;AMQALo|^XQJm;Hdk3ctY>W<@D9u_L>!)p#wBl@ z9f($6I{i2 4<0mLQ8rsGsHR VdH51td+Wkjjc!rWB-R?`K$C~IorxwbYCpat>4pSz&Eh#u2s+0~&-)gd>%==WR zln>(fmHI28RHfe|`^L@8;re<^fP50%(Wqh=@Wdn2Kxx{ 6`5{gv<)-24)z4%ob>4&Pdm!0ld@9Ix zp{6Osi_@p#jhF3G7kqPirt#ICfB{0vv(*o!@p4@e7Z<-0(SEnzohiKnrc9x(DG2v4 zxe#LBw0j})l4T&tEseA t__9XoX>jd)6=JF@vqhdHbNc9mC90G zSmi7W0t -4n0RlA4XjR}OeM{3sRWD^6ex)jT;i?dafb= 8jIsiA2aIGcOjS=Dz;_DM< zXPtR?%qUJG;a1CK>45maha_zhl>Z>%4h8EaO41S3=}H(W2ZEG%9uz)o=F#eRKr!C0 zbZzbnL?XllpUxb5P)LU_xe1dR<6kqIKqPWbsVduGs{CDd?6>x$?wIdosv_f`8vMy* zx-D)ldvzXiv&%@a3fHL5@J*6I78reE`xY-JMt@Ej=#gJsZxp3E$=e*-uGL0Bl!- zXM^6s9PVp?s0^_eRgIZ>ot);WdDy+Gj@RgwCo(xQQ20BYoI`$nQ@ b7=2n9 z{8K0V&Zi(uj4hl6JYY*Kb3qZSoX52}mqsk;I}&4n<*NG3@Qw=JK 0H6S+|POI4~Fx<947Lly+|=W8@vN>waw;6v+e6^lw?nbWoDUi@_ng% zLUl+`OPEbliO|%|FirSPU=24IsW9&NkSbVb1?RHseY`iF+O4_<2@!Ztb>oe{po5iE zHFn(5;ARG&{~CGO&)x@`H