1
13693261870
2024-08-16 bcfcdaa601fe6a4143568077390a3490eb699f87
1
已重命名284个文件
已添加42个文件
4059 ■■■■■ 文件已修改
se-api/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/pom.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysFile.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLogininfor.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/pom.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/RemoteFileService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/RemoteLogService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/RemoteUserService.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysDept.java 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysDictData.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysDictType.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysFile.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysLogininfor.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysOperLog.java 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysRole.java 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysUser.java 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/factory/RemoteFileFallbackFactory.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/factory/RemoteLogFallbackFactory.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/factory/RemoteUserFallbackFactory.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/java/com/se/system/api/model/LoginUser.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/se-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/.editorconfig 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/.env.development 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/.env.production 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/.env.staging 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/.eslintignore 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/.eslintrc.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/.gitignore 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/README.md 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/babel.config.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/bin/build.bat 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/bin/package.bat 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/bin/run-web.bat 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/build/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/package.json 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/public/html/ie.html 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/public/index.html 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/public/robots.txt 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/App.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/login.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/menu.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/monitor/job.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/monitor/jobLog.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/monitor/online.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/config.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/dept.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/dict/data.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/dict/type.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/logininfor.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/menu.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/notice.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/operlog.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/post.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/role.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/system/user.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/api/tool/gen.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/401_images/401.gif 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/404_images/404.png 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/404_images/404_cloud.png 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/404.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/bug.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/build.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/button.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/cascader.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/chart.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/checkbox.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/client.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/clipboard.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/code.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/color.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/component.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/dashboard.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/date-range.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/date.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/dict.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/documentation.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/download.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/drag.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/druid.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/edit.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/education.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/email.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/example.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/excel.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/exit-fullscreen.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/eye-open.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/eye.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/form.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/fullscreen.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/github.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/guide.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/icon.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/input.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/international.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/job.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/language.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/link.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/list.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/lock.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/log.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/logininfor.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/message.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/money.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/monitor.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/nacos.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/nested.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/number.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/online.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/password.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/pdf.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/people.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/peoples.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/phone.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/post.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/qq.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/question.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/radio.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/rate.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/row.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/search.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/select.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/sentinel.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/server.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/shopping.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/size.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/skill.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/slider.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/star.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/swagger.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/switch.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/system.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/tab.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/table.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/textarea.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/theme.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/time-range.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/time.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/tool.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/tree-table.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/tree.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/upload.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/user.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/validCode.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/wechat.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svg/zip.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/icons/svgo.yml 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/images/dark.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/images/light.svg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/images/login-background.jpg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/images/pay.png 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/images/profile.jpg 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/logo/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/btn.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/element-ui.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/element-variables.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/index.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/mixin.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/ruoyi.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/sidebar.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/transition.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/assets/styles/variables.scss 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Breadcrumb/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/day.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/hour.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/min.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/month.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/result.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/second.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/week.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Crontab/year.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/DictData/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/DictTag/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Editor/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/FileUpload/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Hamburger/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/HeaderSearch/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/IconSelect/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/IconSelect/requireIcons.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/ImagePreview/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/ImageUpload/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Pagination/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/PanThumb/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/ParentView/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/RightPanel/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/RightToolbar/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/RuoYi/Doc/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/RuoYi/Git/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/Screenfull/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/SizeSelect/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/SvgIcon/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/ThemePicker/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/TopNav/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/components/iFrame/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/directive/dialog/drag.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/directive/dialog/dragHeight.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/directive/dialog/dragWidth.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/directive/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/directive/module/clipboard.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/directive/permission/hasPermi.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/directive/permission/hasRole.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/AppMain.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/IframeToggle/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/InnerLink/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/Navbar.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/Settings/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/Sidebar/FixiOSBug.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/Sidebar/Item.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/Sidebar/Link.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/Sidebar/Logo.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/Sidebar/SidebarItem.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/Sidebar/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/TagsView/ScrollPane.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/TagsView/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/components/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/layout/mixin/ResizeHandler.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/main.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/permission.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/plugins/auth.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/plugins/cache.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/plugins/download.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/plugins/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/plugins/modal.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/plugins/tab.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/router/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/settings.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/store/getters.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/store/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/store/modules/app.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/store/modules/dict.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/store/modules/permission.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/store/modules/settings.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/store/modules/tagsView.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/store/modules/user.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/auth.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/dict/Dict.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/dict/DictConverter.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/dict/DictData.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/dict/DictMeta.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/dict/DictOptions.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/dict/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/errorCode.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/generator/config.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/generator/css.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/generator/drawingDefault.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/generator/html.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/generator/icon.json 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/generator/js.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/generator/render.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/index.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/jsencrypt.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/permission.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/request.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/ruoyi.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/scroll-to.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/utils/validate.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/dashboard/BarChart.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/dashboard/LineChart.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/dashboard/PanelGroup.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/dashboard/PieChart.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/dashboard/RaddarChart.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/dashboard/mixins/resize.js 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/error/401.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/error/404.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/index_v1.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/login.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/monitor/job/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/monitor/job/log.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/monitor/online/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/redirect.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/register.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/config/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/dept/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/dict/data.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/dict/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/logininfor/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/menu/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/notice/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/operlog/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/post/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/role/authUser.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/role/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/role/selectUser.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/user/authRole.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/user/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/user/profile/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/user/profile/resetPwd.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/user/profile/userAvatar.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/system/user/profile/userInfo.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/build/CodeTypeDialog.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/build/DraggableItem.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/build/IconsDialog.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/build/RightPanel.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/build/TreeNodeDialog.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/build/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/gen/basicInfoForm.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/gen/editTable.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/gen/genInfoForm.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/gen/importTable.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/src/views/tool/gen/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
se-ui/vue.config.js 补丁 | 查看 | 原始文档 | blame | 历史
se-visual/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-visual/ruoyi-monitor/pom.xml 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-visual/ruoyi-monitor/src/main/resources/banner.txt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-visual/ruoyi-monitor/src/main/resources/bootstrap.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-visual/ruoyi-monitor/src/main/resources/logback.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi</artifactId>
        <version>3.6.4</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <modules>
        <module>ruoyi-api-system</module>
    </modules>
    <artifactId>ruoyi-api</artifactId>
    <packaging>pom</packaging>
    <description>
        se-api系统接口
    </description>
</project>
se-api/ruoyi-api-system/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi-api</artifactId>
        <version>3.6.4</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ruoyi-api-system</artifactId>
    <description>
        ruoyi-api-system系统接口模块
    </description>
    <dependencies>
        <!-- RuoYi Common Core-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-common-core</artifactId>
        </dependency>
    </dependencies>
</project>
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.system.api;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.SysFile;
import com.ruoyi.system.api.factory.RemoteFileFallbackFactory;
/**
 * æ–‡ä»¶æœåŠ¡
 *
 * @author ruoyi
 */
@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class)
public interface RemoteFileService
{
    /**
     * ä¸Šä¼ æ–‡ä»¶
     *
     * @param file æ–‡ä»¶ä¿¡æ¯
     * @return ç»“æžœ
     */
    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file);
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.system.api;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.SysLogininfor;
import com.ruoyi.system.api.domain.SysOperLog;
import com.ruoyi.system.api.factory.RemoteLogFallbackFactory;
/**
 * æ—¥å¿—服务
 *
 * @author ruoyi
 */
@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class)
public interface RemoteLogService
{
    /**
     * ä¿å­˜ç³»ç»Ÿæ—¥å¿—
     *
     * @param sysOperLog æ—¥å¿—实体
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @PostMapping("/operlog")
    public R<Boolean> saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception;
    /**
     * ä¿å­˜è®¿é—®è®°å½•
     *
     * @param sysLogininfor è®¿é—®å®žä½“
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @PostMapping("/logininfor")
    public R<Boolean> saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ruoyi.system.api;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
import com.ruoyi.system.api.model.LoginUser;
/**
 * ç”¨æˆ·æœåŠ¡
 *
 * @author ruoyi
 */
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteUserService
{
    /**
     * é€šè¿‡ç”¨æˆ·åæŸ¥è¯¢ç”¨æˆ·ä¿¡æ¯
     *
     * @param username ç”¨æˆ·å
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @GetMapping("/user/info/{username}")
    public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * æ³¨å†Œç”¨æˆ·ä¿¡æ¯
     *
     * @param sysUser ç”¨æˆ·ä¿¡æ¯
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @PostMapping("/user/register")
    public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * è®°å½•用户登录IP地址和登录时间
     *
     * @param sysUser ç”¨æˆ·ä¿¡æ¯
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @PutMapping("/user/recordlogin")
    public R<Boolean> recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDept.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,203 @@
package com.ruoyi.system.api.domain;
import java.util.ArrayList;
import java.util.List;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * éƒ¨é—¨è¡¨ sys_dept
 *
 * @author ruoyi
 */
public class SysDept extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** éƒ¨é—¨ID */
    private Long deptId;
    /** çˆ¶éƒ¨é—¨ID */
    private Long parentId;
    /** ç¥–级列表 */
    private String ancestors;
    /** éƒ¨é—¨åç§° */
    private String deptName;
    /** æ˜¾ç¤ºé¡ºåº */
    private Integer orderNum;
    /** è´Ÿè´£äºº */
    private String leader;
    /** è”系电话 */
    private String phone;
    /** é‚®ç®± */
    private String email;
    /** éƒ¨é—¨çŠ¶æ€:0正常,1停用 */
    private String status;
    /** åˆ é™¤æ ‡å¿—(0代表存在 2代表删除) */
    private String delFlag;
    /** çˆ¶éƒ¨é—¨åç§° */
    private String parentName;
    /** å­éƒ¨é—¨ */
    private List<SysDept> children = new ArrayList<SysDept>();
    public Long getDeptId()
    {
        return deptId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }
    public Long getParentId()
    {
        return parentId;
    }
    public void setParentId(Long parentId)
    {
        this.parentId = parentId;
    }
    public String getAncestors()
    {
        return ancestors;
    }
    public void setAncestors(String ancestors)
    {
        this.ancestors = ancestors;
    }
    @NotBlank(message = "部门名称不能为空")
    @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
    public String getDeptName()
    {
        return deptName;
    }
    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }
    @NotNull(message = "显示顺序不能为空")
    public Integer getOrderNum()
    {
        return orderNum;
    }
    public void setOrderNum(Integer orderNum)
    {
        this.orderNum = orderNum;
    }
    public String getLeader()
    {
        return leader;
    }
    public void setLeader(String leader)
    {
        this.leader = leader;
    }
    @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
    public String getPhone()
    {
        return phone;
    }
    public void setPhone(String phone)
    {
        this.phone = phone;
    }
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    public String getEmail()
    {
        return email;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getDelFlag()
    {
        return delFlag;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
    public String getParentName()
    {
        return parentName;
    }
    public void setParentName(String parentName)
    {
        this.parentName = parentName;
    }
    public List<SysDept> getChildren()
    {
        return children;
    }
    public void setChildren(List<SysDept> children)
    {
        this.children = children;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("deptId", getDeptId())
            .append("parentId", getParentId())
            .append("ancestors", getAncestors())
            .append("deptName", getDeptName())
            .append("orderNum", getOrderNum())
            .append("leader", getLeader())
            .append("phone", getPhone())
            .append("email", getEmail())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,176 @@
package com.ruoyi.system.api.domain;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * å­—典数据表 sys_dict_data
 *
 * @author ruoyi
 */
public class SysDictData extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** å­—典编码 */
    @Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
    private Long dictCode;
    /** å­—典排序 */
    @Excel(name = "字典排序", cellType = ColumnType.NUMERIC)
    private Long dictSort;
    /** å­—典标签 */
    @Excel(name = "字典标签")
    private String dictLabel;
    /** å­—典键值 */
    @Excel(name = "字典键值")
    private String dictValue;
    /** å­—典类型 */
    @Excel(name = "字典类型")
    private String dictType;
    /** æ ·å¼å±žæ€§ï¼ˆå…¶ä»–样式扩展) */
    private String cssClass;
    /** è¡¨æ ¼å­—典样式 */
    private String listClass;
    /** æ˜¯å¦é»˜è®¤ï¼ˆY是 N否) */
    @Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
    private String isDefault;
    /** çŠ¶æ€ï¼ˆ0正常 1停用) */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private String status;
    public Long getDictCode()
    {
        return dictCode;
    }
    public void setDictCode(Long dictCode)
    {
        this.dictCode = dictCode;
    }
    public Long getDictSort()
    {
        return dictSort;
    }
    public void setDictSort(Long dictSort)
    {
        this.dictSort = dictSort;
    }
    @NotBlank(message = "字典标签不能为空")
    @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
    public String getDictLabel()
    {
        return dictLabel;
    }
    public void setDictLabel(String dictLabel)
    {
        this.dictLabel = dictLabel;
    }
    @NotBlank(message = "字典键值不能为空")
    @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
    public String getDictValue()
    {
        return dictValue;
    }
    public void setDictValue(String dictValue)
    {
        this.dictValue = dictValue;
    }
    @NotBlank(message = "字典类型不能为空")
    @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
    public String getDictType()
    {
        return dictType;
    }
    public void setDictType(String dictType)
    {
        this.dictType = dictType;
    }
    @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
    public String getCssClass()
    {
        return cssClass;
    }
    public void setCssClass(String cssClass)
    {
        this.cssClass = cssClass;
    }
    public String getListClass()
    {
        return listClass;
    }
    public void setListClass(String listClass)
    {
        this.listClass = listClass;
    }
    public boolean getDefault()
    {
        return UserConstants.YES.equals(this.isDefault);
    }
    public String getIsDefault()
    {
        return isDefault;
    }
    public void setIsDefault(String isDefault)
    {
        this.isDefault = isDefault;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("dictCode", getDictCode())
            .append("dictSort", getDictSort())
            .append("dictLabel", getDictLabel())
            .append("dictValue", getDictValue())
            .append("dictType", getDictType())
            .append("cssClass", getCssClass())
            .append("listClass", getListClass())
            .append("isDefault", getIsDefault())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysDictType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.ruoyi.system.api.domain;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * å­—典类型表 sys_dict_type
 *
 * @author ruoyi
 */
public class SysDictType extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** å­—典主键 */
    @Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
    private Long dictId;
    /** å­—典名称 */
    @Excel(name = "字典名称")
    private String dictName;
    /** å­—典类型 */
    @Excel(name = "字典类型")
    private String dictType;
    /** çŠ¶æ€ï¼ˆ0正常 1停用) */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private String status;
    public Long getDictId()
    {
        return dictId;
    }
    public void setDictId(Long dictId)
    {
        this.dictId = dictId;
    }
    @NotBlank(message = "字典名称不能为空")
    @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
    public String getDictName()
    {
        return dictName;
    }
    public void setDictName(String dictName)
    {
        this.dictName = dictName;
    }
    @NotBlank(message = "字典类型不能为空")
    @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
    @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
    public String getDictType()
    {
        return dictType;
    }
    public void setDictType(String dictType)
    {
        this.dictType = dictType;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("dictId", getDictId())
            .append("dictName", getDictName())
            .append("dictType", getDictType())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.system.api.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
 * æ–‡ä»¶ä¿¡æ¯
 *
 * @author ruoyi
 */
public class SysFile
{
    /**
     * æ–‡ä»¶åç§°
     */
    private String name;
    /**
     * æ–‡ä»¶åœ°å€
     */
    private String url;
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getUrl()
    {
        return url;
    }
    public void setUrl(String url)
    {
        this.url = url;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("name", getName())
            .append("url", getUrl())
            .toString();
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLogininfor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package com.ruoyi.system.api.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * ç³»ç»Ÿè®¿é—®è®°å½•表 sys_logininfor
 *
 * @author ruoyi
 */
public class SysLogininfor extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ID */
    @Excel(name = "序号", cellType = ColumnType.NUMERIC)
    private Long infoId;
    /** ç”¨æˆ·è´¦å· */
    @Excel(name = "用户账号")
    private String userName;
    /** çŠ¶æ€ 0成功 1失败 */
    @Excel(name = "状态", readConverterExp = "0=成功,1=失败")
    private String status;
    /** åœ°å€ */
    @Excel(name = "地址")
    private String ipaddr;
    /** æè¿° */
    @Excel(name = "描述")
    private String msg;
    /** è®¿é—®æ—¶é—´ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date accessTime;
    public Long getInfoId()
    {
        return infoId;
    }
    public void setInfoId(Long infoId)
    {
        this.infoId = infoId;
    }
    public String getUserName()
    {
        return userName;
    }
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getIpaddr()
    {
        return ipaddr;
    }
    public void setIpaddr(String ipaddr)
    {
        this.ipaddr = ipaddr;
    }
    public String getMsg()
    {
        return msg;
    }
    public void setMsg(String msg)
    {
        this.msg = msg;
    }
    public Date getAccessTime()
    {
        return accessTime;
    }
    public void setAccessTime(Date accessTime)
    {
        this.accessTime = accessTime;
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,255 @@
package com.ruoyi.system.api.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * æ“ä½œæ—¥å¿—记录表 oper_log
 *
 * @author ruoyi
 */
public class SysOperLog extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** æ—¥å¿—主键 */
    @Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
    private Long operId;
    /** æ“ä½œæ¨¡å— */
    @Excel(name = "操作模块")
    private String title;
    /** ä¸šåŠ¡ç±»åž‹ï¼ˆ0其它 1新增 2修改 3删除) */
    @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
    private Integer businessType;
    /** ä¸šåŠ¡ç±»åž‹æ•°ç»„ */
    private Integer[] businessTypes;
    /** è¯·æ±‚方法 */
    @Excel(name = "请求方法")
    private String method;
    /** è¯·æ±‚方式 */
    @Excel(name = "请求方式")
    private String requestMethod;
    /** æ“ä½œç±»åˆ«ï¼ˆ0其它 1后台用户 2手机端用户) */
    @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
    private Integer operatorType;
    /** æ“ä½œäººå‘˜ */
    @Excel(name = "操作人员")
    private String operName;
    /** éƒ¨é—¨åç§° */
    @Excel(name = "部门名称")
    private String deptName;
    /** è¯·æ±‚url */
    @Excel(name = "请求地址")
    private String operUrl;
    /** æ“ä½œåœ°å€ */
    @Excel(name = "操作地址")
    private String operIp;
    /** è¯·æ±‚参数 */
    @Excel(name = "请求参数")
    private String operParam;
    /** è¿”回参数 */
    @Excel(name = "返回参数")
    private String jsonResult;
    /** æ“ä½œçŠ¶æ€ï¼ˆ0正常 1异常) */
    @Excel(name = "状态", readConverterExp = "0=正常,1=异常")
    private Integer status;
    /** é”™è¯¯æ¶ˆæ¯ */
    @Excel(name = "错误消息")
    private String errorMsg;
    /** æ“ä½œæ—¶é—´ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date operTime;
    /** æ¶ˆè€—æ—¶é—´ */
    @Excel(name = "消耗时间", suffix = "毫秒")
    private Long costTime;
    public Long getOperId()
    {
        return operId;
    }
    public void setOperId(Long operId)
    {
        this.operId = operId;
    }
    public String getTitle()
    {
        return title;
    }
    public void setTitle(String title)
    {
        this.title = title;
    }
    public Integer getBusinessType()
    {
        return businessType;
    }
    public void setBusinessType(Integer businessType)
    {
        this.businessType = businessType;
    }
    public Integer[] getBusinessTypes()
    {
        return businessTypes;
    }
    public void setBusinessTypes(Integer[] businessTypes)
    {
        this.businessTypes = businessTypes;
    }
    public String getMethod()
    {
        return method;
    }
    public void setMethod(String method)
    {
        this.method = method;
    }
    public String getRequestMethod()
    {
        return requestMethod;
    }
    public void setRequestMethod(String requestMethod)
    {
        this.requestMethod = requestMethod;
    }
    public Integer getOperatorType()
    {
        return operatorType;
    }
    public void setOperatorType(Integer operatorType)
    {
        this.operatorType = operatorType;
    }
    public String getOperName()
    {
        return operName;
    }
    public void setOperName(String operName)
    {
        this.operName = operName;
    }
    public String getDeptName()
    {
        return deptName;
    }
    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }
    public String getOperUrl()
    {
        return operUrl;
    }
    public void setOperUrl(String operUrl)
    {
        this.operUrl = operUrl;
    }
    public String getOperIp()
    {
        return operIp;
    }
    public void setOperIp(String operIp)
    {
        this.operIp = operIp;
    }
    public String getOperParam()
    {
        return operParam;
    }
    public void setOperParam(String operParam)
    {
        this.operParam = operParam;
    }
    public String getJsonResult()
    {
        return jsonResult;
    }
    public void setJsonResult(String jsonResult)
    {
        this.jsonResult = jsonResult;
    }
    public Integer getStatus()
    {
        return status;
    }
    public void setStatus(Integer status)
    {
        this.status = status;
    }
    public String getErrorMsg()
    {
        return errorMsg;
    }
    public void setErrorMsg(String errorMsg)
    {
        this.errorMsg = errorMsg;
    }
    public Date getOperTime()
    {
        return operTime;
    }
    public void setOperTime(Date operTime)
    {
        this.operTime = operTime;
    }
    public Long getCostTime()
    {
        return costTime;
    }
    public void setCostTime(Long costTime)
    {
        this.costTime = costTime;
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,241 @@
package com.ruoyi.system.api.domain;
import java.util.Set;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * è§’色表 sys_role
 *
 * @author ruoyi
 */
public class SysRole extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** è§’色ID */
    @Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
    private Long roleId;
    /** è§’色名称 */
    @Excel(name = "角色名称")
    private String roleName;
    /** è§’色权限 */
    @Excel(name = "角色权限")
    private String roleKey;
    /** è§’色排序 */
    @Excel(name = "角色排序")
    private Integer roleSort;
    /** æ•°æ®èŒƒå›´ï¼ˆ1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) */
    @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
    private String dataScope;
    /** èœå•树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) */
    private boolean menuCheckStrictly;
    /** éƒ¨é—¨æ ‘选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ï¼‰ */
    private boolean deptCheckStrictly;
    /** è§’色状态(0正常 1停用) */
    @Excel(name = "角色状态", readConverterExp = "0=正常,1=停用")
    private String status;
    /** åˆ é™¤æ ‡å¿—(0代表存在 2代表删除) */
    private String delFlag;
    /** ç”¨æˆ·æ˜¯å¦å­˜åœ¨æ­¤è§’色标识 é»˜è®¤ä¸å­˜åœ¨ */
    private boolean flag = false;
    /** èœå•组 */
    private Long[] menuIds;
    /** éƒ¨é—¨ç»„(数据权限) */
    private Long[] deptIds;
    /** è§’色菜单权限 */
    private Set<String> permissions;
    public SysRole()
    {
    }
    public SysRole(Long roleId)
    {
        this.roleId = roleId;
    }
    public Long getRoleId()
    {
        return roleId;
    }
    public void setRoleId(Long roleId)
    {
        this.roleId = roleId;
    }
    public boolean isAdmin()
    {
        return isAdmin(this.roleId);
    }
    public static boolean isAdmin(Long roleId)
    {
        return roleId != null && 1L == roleId;
    }
    @NotBlank(message = "角色名称不能为空")
    @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
    public String getRoleName()
    {
        return roleName;
    }
    public void setRoleName(String roleName)
    {
        this.roleName = roleName;
    }
    @NotBlank(message = "权限字符不能为空")
    @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
    public String getRoleKey()
    {
        return roleKey;
    }
    public void setRoleKey(String roleKey)
    {
        this.roleKey = roleKey;
    }
    @NotNull(message = "显示顺序不能为空")
    public Integer getRoleSort()
    {
        return roleSort;
    }
    public void setRoleSort(Integer roleSort)
    {
        this.roleSort = roleSort;
    }
    public String getDataScope()
    {
        return dataScope;
    }
    public void setDataScope(String dataScope)
    {
        this.dataScope = dataScope;
    }
    public boolean isMenuCheckStrictly()
    {
        return menuCheckStrictly;
    }
    public void setMenuCheckStrictly(boolean menuCheckStrictly)
    {
        this.menuCheckStrictly = menuCheckStrictly;
    }
    public boolean isDeptCheckStrictly()
    {
        return deptCheckStrictly;
    }
    public void setDeptCheckStrictly(boolean deptCheckStrictly)
    {
        this.deptCheckStrictly = deptCheckStrictly;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getDelFlag()
    {
        return delFlag;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
    public boolean isFlag()
    {
        return flag;
    }
    public void setFlag(boolean flag)
    {
        this.flag = flag;
    }
    public Long[] getMenuIds()
    {
        return menuIds;
    }
    public void setMenuIds(Long[] menuIds)
    {
        this.menuIds = menuIds;
    }
    public Long[] getDeptIds()
    {
        return deptIds;
    }
    public void setDeptIds(Long[] deptIds)
    {
        this.deptIds = deptIds;
    }
    public Set<String> getPermissions()
    {
        return permissions;
    }
    public void setPermissions(Set<String> permissions)
    {
        this.permissions = permissions;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("roleId", getRoleId())
            .append("roleName", getRoleName())
            .append("roleKey", getRoleKey())
            .append("roleSort", getRoleSort())
            .append("dataScope", getDataScope())
            .append("menuCheckStrictly", isMenuCheckStrictly())
            .append("deptCheckStrictly", isDeptCheckStrictly())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,323 @@
package com.ruoyi.system.api.domain;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.annotation.Excel.Type;
import com.ruoyi.common.core.annotation.Excels;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.core.xss.Xss;
/**
 * ç”¨æˆ·å¯¹è±¡ sys_user
 *
 * @author ruoyi
 */
public class SysUser extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ç”¨æˆ·ID */
    @Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号")
    private Long userId;
    /** éƒ¨é—¨ID */
    @Excel(name = "部门编号", type = Type.IMPORT)
    private Long deptId;
    /** ç”¨æˆ·è´¦å· */
    @Excel(name = "登录名称")
    private String userName;
    /** ç”¨æˆ·æ˜µç§° */
    @Excel(name = "用户名称")
    private String nickName;
    /** ç”¨æˆ·é‚®ç®± */
    @Excel(name = "用户邮箱")
    private String email;
    /** æ‰‹æœºå·ç  */
    @Excel(name = "手机号码", cellType = ColumnType.TEXT)
    private String phonenumber;
    /** ç”¨æˆ·æ€§åˆ« */
    @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
    private String sex;
    /** ç”¨æˆ·å¤´åƒ */
    private String avatar;
    /** å¯†ç  */
    private String password;
    /** å¸å·çŠ¶æ€ï¼ˆ0正常 1停用) */
    @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
    private String status;
    /** åˆ é™¤æ ‡å¿—(0代表存在 2代表删除) */
    private String delFlag;
    /** æœ€åŽç™»å½•IP */
    @Excel(name = "最后登录IP", type = Type.EXPORT)
    private String loginIp;
    /** æœ€åŽç™»å½•æ—¶é—´ */
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date loginDate;
    /** éƒ¨é—¨å¯¹è±¡ */
    @Excels({
        @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
        @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
    })
    private SysDept dept;
    /** è§’色对象 */
    private List<SysRole> roles;
    /** è§’色组 */
    private Long[] roleIds;
    /** å²—位组 */
    private Long[] postIds;
    /** è§’色ID */
    private Long roleId;
    public SysUser()
    {
    }
    public SysUser(Long userId)
    {
        this.userId = userId;
    }
    public Long getUserId()
    {
        return userId;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }
    public boolean isAdmin()
    {
        return isAdmin(this.userId);
    }
    public static boolean isAdmin(Long userId)
    {
        return userId != null && 1L == userId;
    }
    public Long getDeptId()
    {
        return deptId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }
    @Xss(message = "用户昵称不能包含脚本字符")
    @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
    public String getNickName()
    {
        return nickName;
    }
    public void setNickName(String nickName)
    {
        this.nickName = nickName;
    }
    @Xss(message = "用户账号不能包含脚本字符")
    @NotBlank(message = "用户账号不能为空")
    @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
    public String getUserName()
    {
        return userName;
    }
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    public String getEmail()
    {
        return email;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }
    @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
    public String getPhonenumber()
    {
        return phonenumber;
    }
    public void setPhonenumber(String phonenumber)
    {
        this.phonenumber = phonenumber;
    }
    public String getSex()
    {
        return sex;
    }
    public void setSex(String sex)
    {
        this.sex = sex;
    }
    public String getAvatar()
    {
        return avatar;
    }
    public void setAvatar(String avatar)
    {
        this.avatar = avatar;
    }
    public String getPassword()
    {
        return password;
    }
    public void setPassword(String password)
    {
        this.password = password;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getDelFlag()
    {
        return delFlag;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
    public String getLoginIp()
    {
        return loginIp;
    }
    public void setLoginIp(String loginIp)
    {
        this.loginIp = loginIp;
    }
    public Date getLoginDate()
    {
        return loginDate;
    }
    public void setLoginDate(Date loginDate)
    {
        this.loginDate = loginDate;
    }
    public SysDept getDept()
    {
        return dept;
    }
    public void setDept(SysDept dept)
    {
        this.dept = dept;
    }
    public List<SysRole> getRoles()
    {
        return roles;
    }
    public void setRoles(List<SysRole> roles)
    {
        this.roles = roles;
    }
    public Long[] getRoleIds()
    {
        return roleIds;
    }
    public void setRoleIds(Long[] roleIds)
    {
        this.roleIds = roleIds;
    }
    public Long[] getPostIds()
    {
        return postIds;
    }
    public void setPostIds(Long[] postIds)
    {
        this.postIds = postIds;
    }
    public Long getRoleId()
    {
        return roleId;
    }
    public void setRoleId(Long roleId)
    {
        this.roleId = roleId;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("userId", getUserId())
            .append("deptId", getDeptId())
            .append("userName", getUserName())
            .append("nickName", getNickName())
            .append("email", getEmail())
            .append("phonenumber", getPhonenumber())
            .append("sex", getSex())
            .append("avatar", getAvatar())
            .append("password", getPassword())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("loginIp", getLoginIp())
            .append("loginDate", getLoginDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("dept", getDept())
            .toString();
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.system.api.factory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.RemoteFileService;
import com.ruoyi.system.api.domain.SysFile;
/**
 * æ–‡ä»¶æœåŠ¡é™çº§å¤„ç†
 *
 * @author ruoyi
 */
@Component
public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService>
{
    private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class);
    @Override
    public RemoteFileService create(Throwable throwable)
    {
        log.error("文件服务调用失败:{}", throwable.getMessage());
        return new RemoteFileService()
        {
            @Override
            public R<SysFile> upload(MultipartFile file)
            {
                return R.fail("上传文件失败:" + throwable.getMessage());
            }
        };
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.system.api.factory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.RemoteLogService;
import com.ruoyi.system.api.domain.SysLogininfor;
import com.ruoyi.system.api.domain.SysOperLog;
/**
 * æ—¥å¿—服务降级处理
 *
 * @author ruoyi
 */
@Component
public class RemoteLogFallbackFactory implements FallbackFactory<RemoteLogService>
{
    private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class);
    @Override
    public RemoteLogService create(Throwable throwable)
    {
        log.error("日志服务调用失败:{}", throwable.getMessage());
        return new RemoteLogService()
        {
            @Override
            public R<Boolean> saveLog(SysOperLog sysOperLog, String source)
            {
                return R.fail("保存操作日志失败:" + throwable.getMessage());
            }
            @Override
            public R<Boolean> saveLogininfor(SysLogininfor sysLogininfor, String source)
            {
                return R.fail("保存登录日志失败:" + throwable.getMessage());
            }
        };
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.ruoyi.system.api.factory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
/**
 * ç”¨æˆ·æœåŠ¡é™çº§å¤„ç†
 *
 * @author ruoyi
 */
@Component
public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService>
{
    private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
    @Override
    public RemoteUserService create(Throwable throwable)
    {
        log.error("用户服务调用失败:{}", throwable.getMessage());
        return new RemoteUserService()
        {
            @Override
            public R<LoginUser> getUserInfo(String username, String source)
            {
                return R.fail("获取用户失败:" + throwable.getMessage());
            }
            @Override
            public R<Boolean> registerUserInfo(SysUser sysUser, String source)
            {
                return R.fail("注册用户失败:" + throwable.getMessage());
            }
            @Override
            public R<Boolean> recordUserLogin(SysUser sysUser, String source)
            {
                return R.fail("记录用户登录信息失败:" + throwable.getMessage());
            }
        };
    }
}
se-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,150 @@
package com.ruoyi.system.api.model;
import java.io.Serializable;
import java.util.Set;
import com.ruoyi.system.api.domain.SysUser;
/**
 * ç”¨æˆ·ä¿¡æ¯
 *
 * @author ruoyi
 */
public class LoginUser implements Serializable
{
    private static final long serialVersionUID = 1L;
    /**
     * ç”¨æˆ·å”¯ä¸€æ ‡è¯†
     */
    private String token;
    /**
     * ç”¨æˆ·åid
     */
    private Long userid;
    /**
     * ç”¨æˆ·å
     */
    private String username;
    /**
     * ç™»å½•æ—¶é—´
     */
    private Long loginTime;
    /**
     * è¿‡æœŸæ—¶é—´
     */
    private Long expireTime;
    /**
     * ç™»å½•IP地址
     */
    private String ipaddr;
    /**
     * æƒé™åˆ—表
     */
    private Set<String> permissions;
    /**
     * è§’色列表
     */
    private Set<String> roles;
    /**
     * ç”¨æˆ·ä¿¡æ¯
     */
    private SysUser sysUser;
    public String getToken()
    {
        return token;
    }
    public void setToken(String token)
    {
        this.token = token;
    }
    public Long getUserid()
    {
        return userid;
    }
    public void setUserid(Long userid)
    {
        this.userid = userid;
    }
    public String getUsername()
    {
        return username;
    }
    public void setUsername(String username)
    {
        this.username = username;
    }
    public Long getLoginTime()
    {
        return loginTime;
    }
    public void setLoginTime(Long loginTime)
    {
        this.loginTime = loginTime;
    }
    public Long getExpireTime()
    {
        return expireTime;
    }
    public void setExpireTime(Long expireTime)
    {
        this.expireTime = expireTime;
    }
    public String getIpaddr()
    {
        return ipaddr;
    }
    public void setIpaddr(String ipaddr)
    {
        this.ipaddr = ipaddr;
    }
    public Set<String> getPermissions()
    {
        return permissions;
    }
    public void setPermissions(Set<String> permissions)
    {
        this.permissions = permissions;
    }
    public Set<String> getRoles()
    {
        return roles;
    }
    public void setRoles(Set<String> roles)
    {
        this.roles = roles;
    }
    public SysUser getSysUser()
    {
        return sysUser;
    }
    public void setSysUser(SysUser sysUser)
    {
        this.sysUser = sysUser;
    }
}
se-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
com.ruoyi.system.api.factory.RemoteUserFallbackFactory
com.ruoyi.system.api.factory.RemoteLogFallbackFactory
com.ruoyi.system.api.factory.RemoteFileFallbackFactory
se-api/se-api-system/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi-api</artifactId>
        <version>3.6.4</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ruoyi-api-system</artifactId>
    <description>
        ruoyi-api-system系统接口模块
    </description>
    <dependencies>
        <!-- RuoYi Common Core-->
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-common-core</artifactId>
        </dependency>
    </dependencies>
</project>
se-api/se-api-system/src/main/java/com/se/system/api/RemoteFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.se.system.api;
import com.se.system.api.domain.SysFile;
import com.se.system.api.factory.RemoteFileFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
/**
 * æ–‡ä»¶æœåŠ¡
 *
 * @author admin
 */
@FeignClient(contextId = "remoteFileService", value = ServiceNameConstants.FILE_SERVICE, fallbackFactory = RemoteFileFallbackFactory.class)
public interface RemoteFileService
{
    /**
     * ä¸Šä¼ æ–‡ä»¶
     *
     * @param file æ–‡ä»¶ä¿¡æ¯
     * @return ç»“æžœ
     */
    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file);
}
se-api/se-api-system/src/main/java/com/se/system/api/RemoteLogService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.se.system.api;
import com.se.system.api.domain.SysLogininfor;
import com.se.system.api.domain.SysOperLog;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.se.system.api.factory.RemoteLogFallbackFactory;
/**
 * æ—¥å¿—服务
 *
 * @author admin
 */
@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteLogFallbackFactory.class)
public interface RemoteLogService
{
    /**
     * ä¿å­˜ç³»ç»Ÿæ—¥å¿—
     *
     * @param sysOperLog æ—¥å¿—实体
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @PostMapping("/operlog")
    public R<Boolean> saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception;
    /**
     * ä¿å­˜è®¿é—®è®°å½•
     *
     * @param sysLogininfor è®¿é—®å®žä½“
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @PostMapping("/logininfor")
    public R<Boolean> saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
se-api/se-api-system/src/main/java/com/se/system/api/RemoteUserService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.se.system.api;
import com.se.system.api.domain.SysUser;
import com.se.system.api.model.LoginUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.se.system.api.factory.RemoteUserFallbackFactory;
/**
 * ç”¨æˆ·æœåŠ¡
 *
 * @author admin
 */
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteUserService
{
    /**
     * é€šè¿‡ç”¨æˆ·åæŸ¥è¯¢ç”¨æˆ·ä¿¡æ¯
     *
     * @param username ç”¨æˆ·å
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @GetMapping("/user/info/{username}")
    public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * æ³¨å†Œç”¨æˆ·ä¿¡æ¯
     *
     * @param sysUser ç”¨æˆ·ä¿¡æ¯
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @PostMapping("/user/register")
    public R<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * è®°å½•用户登录IP地址和登录时间
     *
     * @param sysUser ç”¨æˆ·ä¿¡æ¯
     * @param source è¯·æ±‚来源
     * @return ç»“æžœ
     */
    @PutMapping("/user/recordlogin")
    public R<Boolean> recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysDept.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,203 @@
package com.se.system.api.domain;
import java.util.ArrayList;
import java.util.List;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * éƒ¨é—¨è¡¨ sys_dept
 *
 * @author admin
 */
public class SysDept extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** éƒ¨é—¨ID */
    private Long deptId;
    /** çˆ¶éƒ¨é—¨ID */
    private Long parentId;
    /** ç¥–级列表 */
    private String ancestors;
    /** éƒ¨é—¨åç§° */
    private String deptName;
    /** æ˜¾ç¤ºé¡ºåº */
    private Integer orderNum;
    /** è´Ÿè´£äºº */
    private String leader;
    /** è”系电话 */
    private String phone;
    /** é‚®ç®± */
    private String email;
    /** éƒ¨é—¨çŠ¶æ€:0正常,1停用 */
    private String status;
    /** åˆ é™¤æ ‡å¿—(0代表存在 2代表删除) */
    private String delFlag;
    /** çˆ¶éƒ¨é—¨åç§° */
    private String parentName;
    /** å­éƒ¨é—¨ */
    private List<SysDept> children = new ArrayList<SysDept>();
    public Long getDeptId()
    {
        return deptId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }
    public Long getParentId()
    {
        return parentId;
    }
    public void setParentId(Long parentId)
    {
        this.parentId = parentId;
    }
    public String getAncestors()
    {
        return ancestors;
    }
    public void setAncestors(String ancestors)
    {
        this.ancestors = ancestors;
    }
    @NotBlank(message = "部门名称不能为空")
    @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
    public String getDeptName()
    {
        return deptName;
    }
    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }
    @NotNull(message = "显示顺序不能为空")
    public Integer getOrderNum()
    {
        return orderNum;
    }
    public void setOrderNum(Integer orderNum)
    {
        this.orderNum = orderNum;
    }
    public String getLeader()
    {
        return leader;
    }
    public void setLeader(String leader)
    {
        this.leader = leader;
    }
    @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
    public String getPhone()
    {
        return phone;
    }
    public void setPhone(String phone)
    {
        this.phone = phone;
    }
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    public String getEmail()
    {
        return email;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getDelFlag()
    {
        return delFlag;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
    public String getParentName()
    {
        return parentName;
    }
    public void setParentName(String parentName)
    {
        this.parentName = parentName;
    }
    public List<SysDept> getChildren()
    {
        return children;
    }
    public void setChildren(List<SysDept> children)
    {
        this.children = children;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("deptId", getDeptId())
            .append("parentId", getParentId())
            .append("ancestors", getAncestors())
            .append("deptName", getDeptName())
            .append("orderNum", getOrderNum())
            .append("leader", getLeader())
            .append("phone", getPhone())
            .append("email", getEmail())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysDictData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,176 @@
package com.se.system.api.domain;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * å­—典数据表 sys_dict_data
 *
 * @author admin
 */
public class SysDictData extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** å­—典编码 */
    @Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
    private Long dictCode;
    /** å­—典排序 */
    @Excel(name = "字典排序", cellType = ColumnType.NUMERIC)
    private Long dictSort;
    /** å­—典标签 */
    @Excel(name = "字典标签")
    private String dictLabel;
    /** å­—典键值 */
    @Excel(name = "字典键值")
    private String dictValue;
    /** å­—典类型 */
    @Excel(name = "字典类型")
    private String dictType;
    /** æ ·å¼å±žæ€§ï¼ˆå…¶ä»–样式扩展) */
    private String cssClass;
    /** è¡¨æ ¼å­—典样式 */
    private String listClass;
    /** æ˜¯å¦é»˜è®¤ï¼ˆY是 N否) */
    @Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
    private String isDefault;
    /** çŠ¶æ€ï¼ˆ0正常 1停用) */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private String status;
    public Long getDictCode()
    {
        return dictCode;
    }
    public void setDictCode(Long dictCode)
    {
        this.dictCode = dictCode;
    }
    public Long getDictSort()
    {
        return dictSort;
    }
    public void setDictSort(Long dictSort)
    {
        this.dictSort = dictSort;
    }
    @NotBlank(message = "字典标签不能为空")
    @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
    public String getDictLabel()
    {
        return dictLabel;
    }
    public void setDictLabel(String dictLabel)
    {
        this.dictLabel = dictLabel;
    }
    @NotBlank(message = "字典键值不能为空")
    @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
    public String getDictValue()
    {
        return dictValue;
    }
    public void setDictValue(String dictValue)
    {
        this.dictValue = dictValue;
    }
    @NotBlank(message = "字典类型不能为空")
    @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
    public String getDictType()
    {
        return dictType;
    }
    public void setDictType(String dictType)
    {
        this.dictType = dictType;
    }
    @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
    public String getCssClass()
    {
        return cssClass;
    }
    public void setCssClass(String cssClass)
    {
        this.cssClass = cssClass;
    }
    public String getListClass()
    {
        return listClass;
    }
    public void setListClass(String listClass)
    {
        this.listClass = listClass;
    }
    public boolean getDefault()
    {
        return UserConstants.YES.equals(this.isDefault);
    }
    public String getIsDefault()
    {
        return isDefault;
    }
    public void setIsDefault(String isDefault)
    {
        this.isDefault = isDefault;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("dictCode", getDictCode())
            .append("dictSort", getDictSort())
            .append("dictLabel", getDictLabel())
            .append("dictValue", getDictValue())
            .append("dictType", getDictType())
            .append("cssClass", getCssClass())
            .append("listClass", getListClass())
            .append("isDefault", getIsDefault())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysDictType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.se.system.api.domain;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * å­—典类型表 sys_dict_type
 *
 * @author admin
 */
public class SysDictType extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** å­—典主键 */
    @Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
    private Long dictId;
    /** å­—典名称 */
    @Excel(name = "字典名称")
    private String dictName;
    /** å­—典类型 */
    @Excel(name = "字典类型")
    private String dictType;
    /** çŠ¶æ€ï¼ˆ0正常 1停用) */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private String status;
    public Long getDictId()
    {
        return dictId;
    }
    public void setDictId(Long dictId)
    {
        this.dictId = dictId;
    }
    @NotBlank(message = "字典名称不能为空")
    @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
    public String getDictName()
    {
        return dictName;
    }
    public void setDictName(String dictName)
    {
        this.dictName = dictName;
    }
    @NotBlank(message = "字典类型不能为空")
    @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
    @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
    public String getDictType()
    {
        return dictType;
    }
    public void setDictType(String dictType)
    {
        this.dictType = dictType;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("dictId", getDictId())
            .append("dictName", getDictName())
            .append("dictType", getDictType())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.se.system.api.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
 * æ–‡ä»¶ä¿¡æ¯
 *
 * @author admin
 */
public class SysFile
{
    /**
     * æ–‡ä»¶åç§°
     */
    private String name;
    /**
     * æ–‡ä»¶åœ°å€
     */
    private String url;
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public String getUrl()
    {
        return url;
    }
    public void setUrl(String url)
    {
        this.url = url;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("name", getName())
            .append("url", getUrl())
            .toString();
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysLogininfor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package com.se.system.api.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * ç³»ç»Ÿè®¿é—®è®°å½•表 sys_logininfor
 *
 * @author admin
 */
public class SysLogininfor extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ID */
    @Excel(name = "序号", cellType = ColumnType.NUMERIC)
    private Long infoId;
    /** ç”¨æˆ·è´¦å· */
    @Excel(name = "用户账号")
    private String userName;
    /** çŠ¶æ€ 0成功 1失败 */
    @Excel(name = "状态", readConverterExp = "0=成功,1=失败")
    private String status;
    /** åœ°å€ */
    @Excel(name = "地址")
    private String ipaddr;
    /** æè¿° */
    @Excel(name = "描述")
    private String msg;
    /** è®¿é—®æ—¶é—´ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date accessTime;
    public Long getInfoId()
    {
        return infoId;
    }
    public void setInfoId(Long infoId)
    {
        this.infoId = infoId;
    }
    public String getUserName()
    {
        return userName;
    }
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getIpaddr()
    {
        return ipaddr;
    }
    public void setIpaddr(String ipaddr)
    {
        this.ipaddr = ipaddr;
    }
    public String getMsg()
    {
        return msg;
    }
    public void setMsg(String msg)
    {
        this.msg = msg;
    }
    public Date getAccessTime()
    {
        return accessTime;
    }
    public void setAccessTime(Date accessTime)
    {
        this.accessTime = accessTime;
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysOperLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,255 @@
package com.se.system.api.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * æ“ä½œæ—¥å¿—记录表 oper_log
 *
 * @author admin
 */
public class SysOperLog extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** æ—¥å¿—主键 */
    @Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
    private Long operId;
    /** æ“ä½œæ¨¡å— */
    @Excel(name = "操作模块")
    private String title;
    /** ä¸šåŠ¡ç±»åž‹ï¼ˆ0其它 1新增 2修改 3删除) */
    @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
    private Integer businessType;
    /** ä¸šåŠ¡ç±»åž‹æ•°ç»„ */
    private Integer[] businessTypes;
    /** è¯·æ±‚方法 */
    @Excel(name = "请求方法")
    private String method;
    /** è¯·æ±‚方式 */
    @Excel(name = "请求方式")
    private String requestMethod;
    /** æ“ä½œç±»åˆ«ï¼ˆ0其它 1后台用户 2手机端用户) */
    @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
    private Integer operatorType;
    /** æ“ä½œäººå‘˜ */
    @Excel(name = "操作人员")
    private String operName;
    /** éƒ¨é—¨åç§° */
    @Excel(name = "部门名称")
    private String deptName;
    /** è¯·æ±‚url */
    @Excel(name = "请求地址")
    private String operUrl;
    /** æ“ä½œåœ°å€ */
    @Excel(name = "操作地址")
    private String operIp;
    /** è¯·æ±‚参数 */
    @Excel(name = "请求参数")
    private String operParam;
    /** è¿”回参数 */
    @Excel(name = "返回参数")
    private String jsonResult;
    /** æ“ä½œçŠ¶æ€ï¼ˆ0正常 1异常) */
    @Excel(name = "状态", readConverterExp = "0=正常,1=异常")
    private Integer status;
    /** é”™è¯¯æ¶ˆæ¯ */
    @Excel(name = "错误消息")
    private String errorMsg;
    /** æ“ä½œæ—¶é—´ */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date operTime;
    /** æ¶ˆè€—æ—¶é—´ */
    @Excel(name = "消耗时间", suffix = "毫秒")
    private Long costTime;
    public Long getOperId()
    {
        return operId;
    }
    public void setOperId(Long operId)
    {
        this.operId = operId;
    }
    public String getTitle()
    {
        return title;
    }
    public void setTitle(String title)
    {
        this.title = title;
    }
    public Integer getBusinessType()
    {
        return businessType;
    }
    public void setBusinessType(Integer businessType)
    {
        this.businessType = businessType;
    }
    public Integer[] getBusinessTypes()
    {
        return businessTypes;
    }
    public void setBusinessTypes(Integer[] businessTypes)
    {
        this.businessTypes = businessTypes;
    }
    public String getMethod()
    {
        return method;
    }
    public void setMethod(String method)
    {
        this.method = method;
    }
    public String getRequestMethod()
    {
        return requestMethod;
    }
    public void setRequestMethod(String requestMethod)
    {
        this.requestMethod = requestMethod;
    }
    public Integer getOperatorType()
    {
        return operatorType;
    }
    public void setOperatorType(Integer operatorType)
    {
        this.operatorType = operatorType;
    }
    public String getOperName()
    {
        return operName;
    }
    public void setOperName(String operName)
    {
        this.operName = operName;
    }
    public String getDeptName()
    {
        return deptName;
    }
    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }
    public String getOperUrl()
    {
        return operUrl;
    }
    public void setOperUrl(String operUrl)
    {
        this.operUrl = operUrl;
    }
    public String getOperIp()
    {
        return operIp;
    }
    public void setOperIp(String operIp)
    {
        this.operIp = operIp;
    }
    public String getOperParam()
    {
        return operParam;
    }
    public void setOperParam(String operParam)
    {
        this.operParam = operParam;
    }
    public String getJsonResult()
    {
        return jsonResult;
    }
    public void setJsonResult(String jsonResult)
    {
        this.jsonResult = jsonResult;
    }
    public Integer getStatus()
    {
        return status;
    }
    public void setStatus(Integer status)
    {
        this.status = status;
    }
    public String getErrorMsg()
    {
        return errorMsg;
    }
    public void setErrorMsg(String errorMsg)
    {
        this.errorMsg = errorMsg;
    }
    public Date getOperTime()
    {
        return operTime;
    }
    public void setOperTime(Date operTime)
    {
        this.operTime = operTime;
    }
    public Long getCostTime()
    {
        return costTime;
    }
    public void setCostTime(Long costTime)
    {
        this.costTime = costTime;
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysRole.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,241 @@
package com.se.system.api.domain;
import java.util.Set;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.web.domain.BaseEntity;
/**
 * è§’色表 sys_role
 *
 * @author admin
 */
public class SysRole extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** è§’色ID */
    @Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
    private Long roleId;
    /** è§’色名称 */
    @Excel(name = "角色名称")
    private String roleName;
    /** è§’色权限 */
    @Excel(name = "角色权限")
    private String roleKey;
    /** è§’色排序 */
    @Excel(name = "角色排序")
    private Integer roleSort;
    /** æ•°æ®èŒƒå›´ï¼ˆ1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) */
    @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
    private String dataScope;
    /** èœå•树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) */
    private boolean menuCheckStrictly;
    /** éƒ¨é—¨æ ‘选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ï¼‰ */
    private boolean deptCheckStrictly;
    /** è§’色状态(0正常 1停用) */
    @Excel(name = "角色状态", readConverterExp = "0=正常,1=停用")
    private String status;
    /** åˆ é™¤æ ‡å¿—(0代表存在 2代表删除) */
    private String delFlag;
    /** ç”¨æˆ·æ˜¯å¦å­˜åœ¨æ­¤è§’色标识 é»˜è®¤ä¸å­˜åœ¨ */
    private boolean flag = false;
    /** èœå•组 */
    private Long[] menuIds;
    /** éƒ¨é—¨ç»„(数据权限) */
    private Long[] deptIds;
    /** è§’色菜单权限 */
    private Set<String> permissions;
    public SysRole()
    {
    }
    public SysRole(Long roleId)
    {
        this.roleId = roleId;
    }
    public Long getRoleId()
    {
        return roleId;
    }
    public void setRoleId(Long roleId)
    {
        this.roleId = roleId;
    }
    public boolean isAdmin()
    {
        return isAdmin(this.roleId);
    }
    public static boolean isAdmin(Long roleId)
    {
        return roleId != null && 1L == roleId;
    }
    @NotBlank(message = "角色名称不能为空")
    @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
    public String getRoleName()
    {
        return roleName;
    }
    public void setRoleName(String roleName)
    {
        this.roleName = roleName;
    }
    @NotBlank(message = "权限字符不能为空")
    @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
    public String getRoleKey()
    {
        return roleKey;
    }
    public void setRoleKey(String roleKey)
    {
        this.roleKey = roleKey;
    }
    @NotNull(message = "显示顺序不能为空")
    public Integer getRoleSort()
    {
        return roleSort;
    }
    public void setRoleSort(Integer roleSort)
    {
        this.roleSort = roleSort;
    }
    public String getDataScope()
    {
        return dataScope;
    }
    public void setDataScope(String dataScope)
    {
        this.dataScope = dataScope;
    }
    public boolean isMenuCheckStrictly()
    {
        return menuCheckStrictly;
    }
    public void setMenuCheckStrictly(boolean menuCheckStrictly)
    {
        this.menuCheckStrictly = menuCheckStrictly;
    }
    public boolean isDeptCheckStrictly()
    {
        return deptCheckStrictly;
    }
    public void setDeptCheckStrictly(boolean deptCheckStrictly)
    {
        this.deptCheckStrictly = deptCheckStrictly;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getDelFlag()
    {
        return delFlag;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
    public boolean isFlag()
    {
        return flag;
    }
    public void setFlag(boolean flag)
    {
        this.flag = flag;
    }
    public Long[] getMenuIds()
    {
        return menuIds;
    }
    public void setMenuIds(Long[] menuIds)
    {
        this.menuIds = menuIds;
    }
    public Long[] getDeptIds()
    {
        return deptIds;
    }
    public void setDeptIds(Long[] deptIds)
    {
        this.deptIds = deptIds;
    }
    public Set<String> getPermissions()
    {
        return permissions;
    }
    public void setPermissions(Set<String> permissions)
    {
        this.permissions = permissions;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("roleId", getRoleId())
            .append("roleName", getRoleName())
            .append("roleKey", getRoleKey())
            .append("roleSort", getRoleSort())
            .append("dataScope", getDataScope())
            .append("menuCheckStrictly", isMenuCheckStrictly())
            .append("deptCheckStrictly", isDeptCheckStrictly())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/domain/SysUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,323 @@
package com.se.system.api.domain;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.annotation.Excel.Type;
import com.ruoyi.common.core.annotation.Excels;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.core.xss.Xss;
/**
 * ç”¨æˆ·å¯¹è±¡ sys_user
 *
 * @author admin
 */
public class SysUser extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ç”¨æˆ·ID */
    @Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号")
    private Long userId;
    /** éƒ¨é—¨ID */
    @Excel(name = "部门编号", type = Type.IMPORT)
    private Long deptId;
    /** ç”¨æˆ·è´¦å· */
    @Excel(name = "登录名称")
    private String userName;
    /** ç”¨æˆ·æ˜µç§° */
    @Excel(name = "用户名称")
    private String nickName;
    /** ç”¨æˆ·é‚®ç®± */
    @Excel(name = "用户邮箱")
    private String email;
    /** æ‰‹æœºå·ç  */
    @Excel(name = "手机号码", cellType = ColumnType.TEXT)
    private String phonenumber;
    /** ç”¨æˆ·æ€§åˆ« */
    @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
    private String sex;
    /** ç”¨æˆ·å¤´åƒ */
    private String avatar;
    /** å¯†ç  */
    private String password;
    /** å¸å·çŠ¶æ€ï¼ˆ0正常 1停用) */
    @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
    private String status;
    /** åˆ é™¤æ ‡å¿—(0代表存在 2代表删除) */
    private String delFlag;
    /** æœ€åŽç™»å½•IP */
    @Excel(name = "最后登录IP", type = Type.EXPORT)
    private String loginIp;
    /** æœ€åŽç™»å½•æ—¶é—´ */
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
    private Date loginDate;
    /** éƒ¨é—¨å¯¹è±¡ */
    @Excels({
        @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
        @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
    })
    private SysDept dept;
    /** è§’色对象 */
    private List<SysRole> roles;
    /** è§’色组 */
    private Long[] roleIds;
    /** å²—位组 */
    private Long[] postIds;
    /** è§’色ID */
    private Long roleId;
    public SysUser()
    {
    }
    public SysUser(Long userId)
    {
        this.userId = userId;
    }
    public Long getUserId()
    {
        return userId;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }
    public boolean isAdmin()
    {
        return isAdmin(this.userId);
    }
    public static boolean isAdmin(Long userId)
    {
        return userId != null && 1L == userId;
    }
    public Long getDeptId()
    {
        return deptId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }
    @Xss(message = "用户昵称不能包含脚本字符")
    @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
    public String getNickName()
    {
        return nickName;
    }
    public void setNickName(String nickName)
    {
        this.nickName = nickName;
    }
    @Xss(message = "用户账号不能包含脚本字符")
    @NotBlank(message = "用户账号不能为空")
    @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
    public String getUserName()
    {
        return userName;
    }
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    public String getEmail()
    {
        return email;
    }
    public void setEmail(String email)
    {
        this.email = email;
    }
    @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
    public String getPhonenumber()
    {
        return phonenumber;
    }
    public void setPhonenumber(String phonenumber)
    {
        this.phonenumber = phonenumber;
    }
    public String getSex()
    {
        return sex;
    }
    public void setSex(String sex)
    {
        this.sex = sex;
    }
    public String getAvatar()
    {
        return avatar;
    }
    public void setAvatar(String avatar)
    {
        this.avatar = avatar;
    }
    public String getPassword()
    {
        return password;
    }
    public void setPassword(String password)
    {
        this.password = password;
    }
    public String getStatus()
    {
        return status;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }
    public String getDelFlag()
    {
        return delFlag;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }
    public String getLoginIp()
    {
        return loginIp;
    }
    public void setLoginIp(String loginIp)
    {
        this.loginIp = loginIp;
    }
    public Date getLoginDate()
    {
        return loginDate;
    }
    public void setLoginDate(Date loginDate)
    {
        this.loginDate = loginDate;
    }
    public SysDept getDept()
    {
        return dept;
    }
    public void setDept(SysDept dept)
    {
        this.dept = dept;
    }
    public List<SysRole> getRoles()
    {
        return roles;
    }
    public void setRoles(List<SysRole> roles)
    {
        this.roles = roles;
    }
    public Long[] getRoleIds()
    {
        return roleIds;
    }
    public void setRoleIds(Long[] roleIds)
    {
        this.roleIds = roleIds;
    }
    public Long[] getPostIds()
    {
        return postIds;
    }
    public void setPostIds(Long[] postIds)
    {
        this.postIds = postIds;
    }
    public Long getRoleId()
    {
        return roleId;
    }
    public void setRoleId(Long roleId)
    {
        this.roleId = roleId;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("userId", getUserId())
            .append("deptId", getDeptId())
            .append("userName", getUserName())
            .append("nickName", getNickName())
            .append("email", getEmail())
            .append("phonenumber", getPhonenumber())
            .append("sex", getSex())
            .append("avatar", getAvatar())
            .append("password", getPassword())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("loginIp", getLoginIp())
            .append("loginDate", getLoginDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("dept", getDept())
            .toString();
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/factory/RemoteFileFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.se.system.api.factory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.domain.R;
import com.se.system.api.RemoteFileService;
import com.se.system.api.domain.SysFile;
/**
 * æ–‡ä»¶æœåŠ¡é™çº§å¤„ç†
 *
 * @author admin
 */
@Component
public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileService>
{
    private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class);
    @Override
    public RemoteFileService create(Throwable throwable)
    {
        log.error("文件服务调用失败:{}", throwable.getMessage());
        return new RemoteFileService()
        {
            @Override
            public R<SysFile> upload(MultipartFile file)
            {
                return R.fail("上传文件失败:" + throwable.getMessage());
            }
        };
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/factory/RemoteLogFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.se.system.api.factory;
import com.se.system.api.RemoteLogService;
import com.se.system.api.domain.SysLogininfor;
import com.se.system.api.domain.SysOperLog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.domain.R;
/**
 * æ—¥å¿—服务降级处理
 *
 * @author admin
 */
@Component
public class RemoteLogFallbackFactory implements FallbackFactory<RemoteLogService>
{
    private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class);
    @Override
    public RemoteLogService create(Throwable throwable)
    {
        log.error("日志服务调用失败:{}", throwable.getMessage());
        return new RemoteLogService()
        {
            @Override
            public R<Boolean> saveLog(SysOperLog sysOperLog, String source)
            {
                return R.fail("保存操作日志失败:" + throwable.getMessage());
            }
            @Override
            public R<Boolean> saveLogininfor(SysLogininfor sysLogininfor, String source)
            {
                return R.fail("保存登录日志失败:" + throwable.getMessage());
            }
        };
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/factory/RemoteUserFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.se.system.api.factory;
import com.se.system.api.RemoteUserService;
import com.se.system.api.domain.SysUser;
import com.se.system.api.model.LoginUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.domain.R;
/**
 * ç”¨æˆ·æœåŠ¡é™çº§å¤„ç†
 *
 * @author admin
 */
@Component
public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService>
{
    private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
    @Override
    public RemoteUserService create(Throwable throwable)
    {
        log.error("用户服务调用失败:{}", throwable.getMessage());
        return new RemoteUserService()
        {
            @Override
            public R<LoginUser> getUserInfo(String username, String source)
            {
                return R.fail("获取用户失败:" + throwable.getMessage());
            }
            @Override
            public R<Boolean> registerUserInfo(SysUser sysUser, String source)
            {
                return R.fail("注册用户失败:" + throwable.getMessage());
            }
            @Override
            public R<Boolean> recordUserLogin(SysUser sysUser, String source)
            {
                return R.fail("记录用户登录信息失败:" + throwable.getMessage());
            }
        };
    }
}
se-api/se-api-system/src/main/java/com/se/system/api/model/LoginUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,150 @@
package com.se.system.api.model;
import java.io.Serializable;
import java.util.Set;
import com.se.system.api.domain.SysUser;
/**
 * ç”¨æˆ·ä¿¡æ¯
 *
 * @author admin
 */
public class LoginUser implements Serializable
{
    private static final long serialVersionUID = 1L;
    /**
     * ç”¨æˆ·å”¯ä¸€æ ‡è¯†
     */
    private String token;
    /**
     * ç”¨æˆ·åid
     */
    private Long userid;
    /**
     * ç”¨æˆ·å
     */
    private String username;
    /**
     * ç™»å½•æ—¶é—´
     */
    private Long loginTime;
    /**
     * è¿‡æœŸæ—¶é—´
     */
    private Long expireTime;
    /**
     * ç™»å½•IP地址
     */
    private String ipaddr;
    /**
     * æƒé™åˆ—表
     */
    private Set<String> permissions;
    /**
     * è§’色列表
     */
    private Set<String> roles;
    /**
     * ç”¨æˆ·ä¿¡æ¯
     */
    private SysUser sysUser;
    public String getToken()
    {
        return token;
    }
    public void setToken(String token)
    {
        this.token = token;
    }
    public Long getUserid()
    {
        return userid;
    }
    public void setUserid(Long userid)
    {
        this.userid = userid;
    }
    public String getUsername()
    {
        return username;
    }
    public void setUsername(String username)
    {
        this.username = username;
    }
    public Long getLoginTime()
    {
        return loginTime;
    }
    public void setLoginTime(Long loginTime)
    {
        this.loginTime = loginTime;
    }
    public Long getExpireTime()
    {
        return expireTime;
    }
    public void setExpireTime(Long expireTime)
    {
        this.expireTime = expireTime;
    }
    public String getIpaddr()
    {
        return ipaddr;
    }
    public void setIpaddr(String ipaddr)
    {
        this.ipaddr = ipaddr;
    }
    public Set<String> getPermissions()
    {
        return permissions;
    }
    public void setPermissions(Set<String> permissions)
    {
        this.permissions = permissions;
    }
    public Set<String> getRoles()
    {
        return roles;
    }
    public void setRoles(Set<String> roles)
    {
        this.roles = roles;
    }
    public SysUser getSysUser()
    {
        return sysUser;
    }
    public void setSysUser(SysUser sysUser)
    {
        this.sysUser = sysUser;
    }
}
se-api/se-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
RemoteUserFallbackFactory
RemoteLogFallbackFactory
RemoteFileFallbackFactory
se-ui/.editorconfig
se-ui/.env.development
se-ui/.env.production
se-ui/.env.staging
se-ui/.eslintignore
se-ui/.eslintrc.js
se-ui/.gitignore
se-ui/README.md
se-ui/babel.config.js
se-ui/bin/build.bat
se-ui/bin/package.bat
se-ui/bin/run-web.bat
se-ui/build/index.js
se-ui/package.json
se-ui/public/favicon.ico

se-ui/public/html/ie.html
se-ui/public/index.html
se-ui/public/robots.txt
se-ui/src/App.vue
se-ui/src/api/login.js
se-ui/src/api/menu.js
se-ui/src/api/monitor/job.js
se-ui/src/api/monitor/jobLog.js
se-ui/src/api/monitor/online.js
se-ui/src/api/system/config.js
se-ui/src/api/system/dept.js
se-ui/src/api/system/dict/data.js
se-ui/src/api/system/dict/type.js
se-ui/src/api/system/logininfor.js
se-ui/src/api/system/menu.js
se-ui/src/api/system/notice.js
se-ui/src/api/system/operlog.js
se-ui/src/api/system/post.js
se-ui/src/api/system/role.js
se-ui/src/api/system/user.js
se-ui/src/api/tool/gen.js
se-ui/src/assets/401_images/401.gif

se-ui/src/assets/404_images/404.png

se-ui/src/assets/404_images/404_cloud.png

se-ui/src/assets/icons/index.js
se-ui/src/assets/icons/svg/404.svg
se-ui/src/assets/icons/svg/bug.svg
se-ui/src/assets/icons/svg/build.svg
se-ui/src/assets/icons/svg/button.svg
se-ui/src/assets/icons/svg/cascader.svg
se-ui/src/assets/icons/svg/chart.svg
se-ui/src/assets/icons/svg/checkbox.svg
se-ui/src/assets/icons/svg/client.svg
se-ui/src/assets/icons/svg/clipboard.svg
se-ui/src/assets/icons/svg/code.svg
se-ui/src/assets/icons/svg/color.svg
se-ui/src/assets/icons/svg/component.svg
se-ui/src/assets/icons/svg/dashboard.svg
se-ui/src/assets/icons/svg/date-range.svg
se-ui/src/assets/icons/svg/date.svg
se-ui/src/assets/icons/svg/dict.svg
se-ui/src/assets/icons/svg/documentation.svg
se-ui/src/assets/icons/svg/download.svg
se-ui/src/assets/icons/svg/drag.svg
se-ui/src/assets/icons/svg/druid.svg
se-ui/src/assets/icons/svg/edit.svg
se-ui/src/assets/icons/svg/education.svg
se-ui/src/assets/icons/svg/email.svg
se-ui/src/assets/icons/svg/example.svg
se-ui/src/assets/icons/svg/excel.svg
se-ui/src/assets/icons/svg/exit-fullscreen.svg
se-ui/src/assets/icons/svg/eye-open.svg
se-ui/src/assets/icons/svg/eye.svg
se-ui/src/assets/icons/svg/form.svg
se-ui/src/assets/icons/svg/fullscreen.svg
se-ui/src/assets/icons/svg/github.svg
se-ui/src/assets/icons/svg/guide.svg
se-ui/src/assets/icons/svg/icon.svg
se-ui/src/assets/icons/svg/input.svg
se-ui/src/assets/icons/svg/international.svg
se-ui/src/assets/icons/svg/job.svg
se-ui/src/assets/icons/svg/language.svg
se-ui/src/assets/icons/svg/link.svg
se-ui/src/assets/icons/svg/list.svg
se-ui/src/assets/icons/svg/lock.svg
se-ui/src/assets/icons/svg/log.svg
se-ui/src/assets/icons/svg/logininfor.svg
se-ui/src/assets/icons/svg/message.svg
se-ui/src/assets/icons/svg/money.svg
se-ui/src/assets/icons/svg/monitor.svg
se-ui/src/assets/icons/svg/nacos.svg
se-ui/src/assets/icons/svg/nested.svg
se-ui/src/assets/icons/svg/number.svg
se-ui/src/assets/icons/svg/online.svg
se-ui/src/assets/icons/svg/password.svg
se-ui/src/assets/icons/svg/pdf.svg
se-ui/src/assets/icons/svg/people.svg
se-ui/src/assets/icons/svg/peoples.svg
se-ui/src/assets/icons/svg/phone.svg
se-ui/src/assets/icons/svg/post.svg
se-ui/src/assets/icons/svg/qq.svg
se-ui/src/assets/icons/svg/question.svg
se-ui/src/assets/icons/svg/radio.svg
se-ui/src/assets/icons/svg/rate.svg
se-ui/src/assets/icons/svg/row.svg
se-ui/src/assets/icons/svg/search.svg
se-ui/src/assets/icons/svg/select.svg
se-ui/src/assets/icons/svg/sentinel.svg
se-ui/src/assets/icons/svg/server.svg
se-ui/src/assets/icons/svg/shopping.svg
se-ui/src/assets/icons/svg/size.svg
se-ui/src/assets/icons/svg/skill.svg
se-ui/src/assets/icons/svg/slider.svg
se-ui/src/assets/icons/svg/star.svg
se-ui/src/assets/icons/svg/swagger.svg
se-ui/src/assets/icons/svg/switch.svg
se-ui/src/assets/icons/svg/system.svg
se-ui/src/assets/icons/svg/tab.svg
se-ui/src/assets/icons/svg/table.svg
se-ui/src/assets/icons/svg/textarea.svg
se-ui/src/assets/icons/svg/theme.svg
se-ui/src/assets/icons/svg/time-range.svg
se-ui/src/assets/icons/svg/time.svg
se-ui/src/assets/icons/svg/tool.svg
se-ui/src/assets/icons/svg/tree-table.svg
se-ui/src/assets/icons/svg/tree.svg
se-ui/src/assets/icons/svg/upload.svg
se-ui/src/assets/icons/svg/user.svg
se-ui/src/assets/icons/svg/validCode.svg
se-ui/src/assets/icons/svg/wechat.svg
se-ui/src/assets/icons/svg/zip.svg
se-ui/src/assets/icons/svgo.yml
se-ui/src/assets/images/dark.svg
se-ui/src/assets/images/light.svg
se-ui/src/assets/images/login-background.jpg

se-ui/src/assets/images/pay.png

se-ui/src/assets/images/profile.jpg

se-ui/src/assets/logo/logo.png

se-ui/src/assets/styles/btn.scss
se-ui/src/assets/styles/element-ui.scss
se-ui/src/assets/styles/element-variables.scss
se-ui/src/assets/styles/index.scss
se-ui/src/assets/styles/mixin.scss
se-ui/src/assets/styles/ruoyi.scss
se-ui/src/assets/styles/sidebar.scss
se-ui/src/assets/styles/transition.scss
se-ui/src/assets/styles/variables.scss
se-ui/src/components/Breadcrumb/index.vue
se-ui/src/components/Crontab/day.vue
se-ui/src/components/Crontab/hour.vue
se-ui/src/components/Crontab/index.vue
se-ui/src/components/Crontab/min.vue
se-ui/src/components/Crontab/month.vue
se-ui/src/components/Crontab/result.vue
se-ui/src/components/Crontab/second.vue
se-ui/src/components/Crontab/week.vue
se-ui/src/components/Crontab/year.vue
se-ui/src/components/DictData/index.js
se-ui/src/components/DictTag/index.vue
se-ui/src/components/Editor/index.vue
se-ui/src/components/FileUpload/index.vue
se-ui/src/components/Hamburger/index.vue
se-ui/src/components/HeaderSearch/index.vue
se-ui/src/components/IconSelect/index.vue
se-ui/src/components/IconSelect/requireIcons.js
se-ui/src/components/ImagePreview/index.vue
se-ui/src/components/ImageUpload/index.vue
se-ui/src/components/Pagination/index.vue
se-ui/src/components/PanThumb/index.vue
se-ui/src/components/ParentView/index.vue
se-ui/src/components/RightPanel/index.vue
se-ui/src/components/RightToolbar/index.vue
se-ui/src/components/RuoYi/Doc/index.vue
se-ui/src/components/RuoYi/Git/index.vue
se-ui/src/components/Screenfull/index.vue
se-ui/src/components/SizeSelect/index.vue
se-ui/src/components/SvgIcon/index.vue
se-ui/src/components/ThemePicker/index.vue
se-ui/src/components/TopNav/index.vue
se-ui/src/components/iFrame/index.vue
se-ui/src/directive/dialog/drag.js
se-ui/src/directive/dialog/dragHeight.js
se-ui/src/directive/dialog/dragWidth.js
se-ui/src/directive/index.js
se-ui/src/directive/module/clipboard.js
se-ui/src/directive/permission/hasPermi.js
se-ui/src/directive/permission/hasRole.js
se-ui/src/layout/components/AppMain.vue
se-ui/src/layout/components/IframeToggle/index.vue
se-ui/src/layout/components/InnerLink/index.vue
se-ui/src/layout/components/Navbar.vue
se-ui/src/layout/components/Settings/index.vue
se-ui/src/layout/components/Sidebar/FixiOSBug.js
se-ui/src/layout/components/Sidebar/Item.vue
se-ui/src/layout/components/Sidebar/Link.vue
se-ui/src/layout/components/Sidebar/Logo.vue
se-ui/src/layout/components/Sidebar/SidebarItem.vue
se-ui/src/layout/components/Sidebar/index.vue
se-ui/src/layout/components/TagsView/ScrollPane.vue
se-ui/src/layout/components/TagsView/index.vue
se-ui/src/layout/components/index.js
se-ui/src/layout/index.vue
se-ui/src/layout/mixin/ResizeHandler.js
se-ui/src/main.js
se-ui/src/permission.js
se-ui/src/plugins/auth.js
se-ui/src/plugins/cache.js
se-ui/src/plugins/download.js
se-ui/src/plugins/index.js
se-ui/src/plugins/modal.js
se-ui/src/plugins/tab.js
se-ui/src/router/index.js
se-ui/src/settings.js
se-ui/src/store/getters.js
se-ui/src/store/index.js
se-ui/src/store/modules/app.js
se-ui/src/store/modules/dict.js
se-ui/src/store/modules/permission.js
se-ui/src/store/modules/settings.js
se-ui/src/store/modules/tagsView.js
se-ui/src/store/modules/user.js
se-ui/src/utils/auth.js
se-ui/src/utils/dict/Dict.js
se-ui/src/utils/dict/DictConverter.js
se-ui/src/utils/dict/DictData.js
se-ui/src/utils/dict/DictMeta.js
se-ui/src/utils/dict/DictOptions.js
se-ui/src/utils/dict/index.js
se-ui/src/utils/errorCode.js
se-ui/src/utils/generator/config.js
se-ui/src/utils/generator/css.js
se-ui/src/utils/generator/drawingDefault.js
se-ui/src/utils/generator/html.js
se-ui/src/utils/generator/icon.json
se-ui/src/utils/generator/js.js
se-ui/src/utils/generator/render.js
se-ui/src/utils/index.js
se-ui/src/utils/jsencrypt.js
se-ui/src/utils/permission.js
se-ui/src/utils/request.js
se-ui/src/utils/ruoyi.js
se-ui/src/utils/scroll-to.js
se-ui/src/utils/validate.js
se-ui/src/views/dashboard/BarChart.vue
se-ui/src/views/dashboard/LineChart.vue
se-ui/src/views/dashboard/PanelGroup.vue
se-ui/src/views/dashboard/PieChart.vue
se-ui/src/views/dashboard/RaddarChart.vue
se-ui/src/views/dashboard/mixins/resize.js
se-ui/src/views/error/401.vue
se-ui/src/views/error/404.vue
se-ui/src/views/index.vue
se-ui/src/views/index_v1.vue
se-ui/src/views/login.vue
se-ui/src/views/monitor/job/index.vue
se-ui/src/views/monitor/job/log.vue
se-ui/src/views/monitor/online/index.vue
se-ui/src/views/redirect.vue
se-ui/src/views/register.vue
se-ui/src/views/system/config/index.vue
se-ui/src/views/system/dept/index.vue
se-ui/src/views/system/dict/data.vue
se-ui/src/views/system/dict/index.vue
se-ui/src/views/system/logininfor/index.vue
se-ui/src/views/system/menu/index.vue
se-ui/src/views/system/notice/index.vue
se-ui/src/views/system/operlog/index.vue
se-ui/src/views/system/post/index.vue
se-ui/src/views/system/role/authUser.vue
se-ui/src/views/system/role/index.vue
se-ui/src/views/system/role/selectUser.vue
se-ui/src/views/system/user/authRole.vue
se-ui/src/views/system/user/index.vue
se-ui/src/views/system/user/profile/index.vue
se-ui/src/views/system/user/profile/resetPwd.vue
se-ui/src/views/system/user/profile/userAvatar.vue
se-ui/src/views/system/user/profile/userInfo.vue
se-ui/src/views/tool/build/CodeTypeDialog.vue
se-ui/src/views/tool/build/DraggableItem.vue
se-ui/src/views/tool/build/IconsDialog.vue
se-ui/src/views/tool/build/RightPanel.vue
se-ui/src/views/tool/build/TreeNodeDialog.vue
se-ui/src/views/tool/build/index.vue
se-ui/src/views/tool/gen/basicInfoForm.vue
se-ui/src/views/tool/gen/editTable.vue
se-ui/src/views/tool/gen/genInfoForm.vue
se-ui/src/views/tool/gen/importTable.vue
se-ui/src/views/tool/gen/index.vue
se-ui/vue.config.js
se-visual/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi</artifactId>
        <version>3.6.4</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <modules>
        <module>ruoyi-monitor</module>
    </modules>
    <artifactId>ruoyi-visual</artifactId>
    <packaging>pom</packaging>
    <description>
        ruoyi-visual图形化管理模块
    </description>
</project>
se-visual/ruoyi-monitor/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.ruoyi</groupId>
        <artifactId>ruoyi-visual</artifactId>
        <version>3.6.4</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ruoyi-visual-monitor</artifactId>
    <description>
        ruoyi-visual-monitor监控中心
    </description>
    <dependencies>
        <!-- SpringBoot Admin -->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>${spring-boot-admin.version}</version>
        </dependency>
        <!-- SpringCloud Alibaba Nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringCloud Alibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- SpringCloud Alibaba Sentinel -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <!-- SpringBoot Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Spring Security -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.ruoyi.modules.monitor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
/**
 * ç›‘控中心
 *
 * @author admin
 */
@EnableAdminServer
@SpringBootApplication
public class RuoYiMonitorApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(RuoYiMonitorApplication.class, args);
        System.out.println("(♥◠‿◠)ノ゙  ç›‘控中心启动成功   áƒš(´ڡ`ლ)゙  \n" +
                " .-------.       ____     __        \n" +
                " |  _ _   \\      \\   \\   /  /    \n" +
                " | ( ' )  |       \\  _. /  '       \n" +
                " |(_ o _) /        _( )_ .'         \n" +
                " | (_,_).' __  ___(_ o _)'          \n" +
                " |  |\\ \\  |  ||   |(_,_)'         \n" +
                " |  | \\ `'   /|   `-'  /           \n" +
                " |  |  \\    /  \\      /           \n" +
                " ''-'   `'-'    `-..-'              ");
    }
}
se-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/config/WebSecurityConfigurer.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.ruoyi.modules.monitor.config;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
/**
 * ç›‘控权限配置
 *
 * @author admin
 */
@EnableWebSecurity
public class WebSecurityConfigurer
{
    private final String adminContextPath;
    public WebSecurityConfigurer(AdminServerProperties adminServerProperties)
    {
        this.adminContextPath = adminServerProperties.getContextPath();
    }
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception
    {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");
        return httpSecurity
                .headers().frameOptions().disable()
                .and().authorizeRequests()
                .antMatchers(adminContextPath + "/assets/**"
                        , adminContextPath + "/login"
                        , adminContextPath + "/actuator/**"
                        , adminContextPath + "/instances/**"
                ).permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage(adminContextPath + "/login")
                .successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout")
                .and()
                .httpBasic().and()
                .csrf()
                .disable()
                .build();
    }
}
se-visual/ruoyi-monitor/src/main/resources/banner.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
                            _                                   _  _
                           (_)                                 (_)| |
 _ __  _   _   ___   _   _  _  ______  _ __ ___    ___   _ __   _ | |_   ___   _ __
| '__|| | | | / _ \ | | | || ||______|| '_ ` _ \  / _ \ | '_ \ | || __| / _ \ | '__|
| |   | |_| || (_) || |_| || |        | | | | | || (_) || | | || || |_ | (_) || |
|_|    \__,_| \___/  \__, ||_|        |_| |_| |_| \___/ |_| |_||_| \__| \___/ |_|
                      __/ |
                     |___/
se-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
# Tomcat
server:
  port: 9100
# Spring
spring:
  application:
    # åº”用名称
    name: ruoyi-monitor
  profiles:
    # çŽ¯å¢ƒé…ç½®
    active: dev
  cloud:
    nacos:
      discovery:
        # æœåŠ¡æ³¨å†Œåœ°å€
        server-addr: 127.0.0.1:8848
      config:
        # é…ç½®ä¸­å¿ƒåœ°å€
        server-addr: 127.0.0.1:8848
        # é…ç½®æ–‡ä»¶æ ¼å¼
        file-extension: yml
        # å…±äº«é…ç½®
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
se-visual/ruoyi-monitor/src/main/resources/logback.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- æ—¥å¿—存放路径 -->
    <property name="log.path" value="logs/ruoyi-visual-monitor" />
   <!-- æ—¥å¿—输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
    <!-- æŽ§åˆ¶å°è¾“出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <!-- ç³»ç»Ÿæ—¥å¿—输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <!-- å¾ªçŽ¯æ”¿ç­–ï¼šåŸºäºŽæ—¶é—´åˆ›å»ºæ—¥å¿—æ–‡ä»¶ -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- æ—¥å¿—文件名格式 -->
            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- æ—¥å¿—最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- è¿‡æ»¤çš„级别 -->
            <level>INFO</level>
            <!-- åŒ¹é…æ—¶çš„æ“ä½œï¼šæŽ¥æ”¶ï¼ˆè®°å½•) -->
            <onMatch>ACCEPT</onMatch>
            <!-- ä¸åŒ¹é…æ—¶çš„æ“ä½œï¼šæ‹’绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- å¾ªçŽ¯æ”¿ç­–ï¼šåŸºäºŽæ—¶é—´åˆ›å»ºæ—¥å¿—æ–‡ä»¶ -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- æ—¥å¿—文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- æ—¥å¿—最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- è¿‡æ»¤çš„级别 -->
            <level>ERROR</level>
            <!-- åŒ¹é…æ—¶çš„æ“ä½œï¼šæŽ¥æ”¶ï¼ˆè®°å½•) -->
            <onMatch>ACCEPT</onMatch>
            <!-- ä¸åŒ¹é…æ—¶çš„æ“ä½œï¼šæ‹’绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- ç³»ç»Ÿæ¨¡å—日志级别控制  -->
    <logger name="com.ruoyi" level="info" />
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn" />
    <root level="info">
        <appender-ref ref="console" />
    </root>
    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>
</configuration>