├── ruoyi-ui
├── src
│ ├── api
│ │ ├── system
│ │ │ ├── purchase
│ │ │ │ ├── data.js
│ │ │ │ └── type.js
│ │ │ ├── reg.js
│ │ │ ├── post.js
│ │ │ ├── pati.js
│ │ │ ├── cost.js
│ │ │ ├── drug.js
│ │ │ ├── depts.js
│ │ │ ├── notice.js
│ │ │ ├── cost2.js
│ │ │ ├── docters.js
│ │ │ ├── factory.js
│ │ │ ├── student.js
│ │ │ ├── supplier.js
│ │ │ ├── purchase.js
│ │ │ ├── addpati.js
│ │ │ ├── dept.js
│ │ │ ├── dict
│ │ │ │ ├── data.js
│ │ │ │ └── type.js
│ │ │ ├── menu.js
│ │ │ └── config.js
│ │ ├── menu.js
│ │ ├── monitor
│ │ │ ├── server.js
│ │ │ ├── online.js
│ │ │ ├── jobLog.js
│ │ │ ├── operlog.js
│ │ │ ├── logininfor.js
│ │ │ ├── drug.js
│ │ │ └── cache.js
│ │ ├── remote-search.js
│ │ ├── his
│ │ │ ├── Data.js
│ │ │ ├── depts.js
│ │ │ ├── docters.js
│ │ │ ├── drug.js
│ │ │ ├── puradd.js
│ │ │ ├── chargedetail.js
│ │ │ └── purchase
│ │ │ │ ├── purchase.js
│ │ │ │ └── data.js
│ │ └── login.js
│ ├── components
│ │ ├── ParentView
│ │ │ └── index.vue
│ │ ├── IconSelect
│ │ │ └── requireIcons.js
│ │ ├── RuoYi
│ │ │ ├── Doc
│ │ │ │ └── index.vue
│ │ │ └── Git
│ │ │ │ └── index.vue
│ │ ├── iFrame
│ │ │ └── index.vue
│ │ ├── Screenfull
│ │ │ └── index.vue
│ │ └── Hamburger
│ │ │ └── index.vue
│ ├── assets
│ │ ├── logo
│ │ │ └── logo.png
│ │ ├── 401_images
│ │ │ └── 401.gif
│ │ ├── 404_images
│ │ │ ├── 404.png
│ │ │ └── 404_cloud.png
│ │ ├── images
│ │ │ ├── profile.jpg
│ │ │ ├── weichat.png
│ │ │ └── login-background.jpg
│ │ ├── icons
│ │ │ ├── svg
│ │ │ │ ├── chart.svg
│ │ │ │ ├── size.svg
│ │ │ │ ├── link.svg
│ │ │ │ ├── guide.svg
│ │ │ │ ├── money.svg
│ │ │ │ ├── email.svg
│ │ │ │ ├── drag.svg
│ │ │ │ ├── documentation.svg
│ │ │ │ ├── fullscreen.svg
│ │ │ │ ├── user.svg
│ │ │ │ ├── lock.svg
│ │ │ │ ├── excel.svg
│ │ │ │ ├── example.svg
│ │ │ │ ├── star.svg
│ │ │ │ ├── slider.svg
│ │ │ │ ├── table.svg
│ │ │ │ ├── search.svg
│ │ │ │ ├── education.svg
│ │ │ │ ├── tab.svg
│ │ │ │ ├── message.svg
│ │ │ │ ├── switch.svg
│ │ │ │ ├── theme.svg
│ │ │ │ ├── code.svg
│ │ │ │ ├── druid.svg
│ │ │ │ ├── peoples.svg
│ │ │ │ ├── input.svg
│ │ │ │ ├── server.svg
│ │ │ │ ├── textarea.svg
│ │ │ │ ├── time.svg
│ │ │ │ ├── edit.svg
│ │ │ │ ├── nested.svg
│ │ │ │ ├── row.svg
│ │ │ │ ├── monitor.svg
│ │ │ │ ├── tree-table.svg
│ │ │ │ ├── eye.svg
│ │ │ │ ├── build.svg
│ │ │ │ ├── clipboard.svg
│ │ │ │ ├── list.svg
│ │ │ │ ├── download.svg
│ │ │ │ ├── icon.svg
│ │ │ │ ├── international.svg
│ │ │ │ ├── question.svg
│ │ │ │ ├── wechat.svg
│ │ │ │ ├── skill.svg
│ │ │ │ ├── people.svg
│ │ │ │ ├── post.svg
│ │ │ │ ├── checkbox.svg
│ │ │ │ ├── language.svg
│ │ │ │ ├── eye-open.svg
│ │ │ │ ├── validCode.svg
│ │ │ │ ├── radio.svg
│ │ │ │ └── select.svg
│ │ │ ├── index.js
│ │ │ └── svgo.yml
│ │ └── styles
│ │ │ ├── element-variables.scss
│ │ │ └── transition.scss
│ ├── utils
│ │ ├── errorCode.js
│ │ ├── dict
│ │ │ ├── DictData.js
│ │ │ ├── DictConverter.js
│ │ │ ├── index.js
│ │ │ └── DictMeta.js
│ │ ├── auth.js
│ │ ├── generator
│ │ │ ├── css.js
│ │ │ └── drawingDefault.js
│ │ └── jsencrypt.js
│ ├── layout
│ │ └── components
│ │ │ ├── index.js
│ │ │ ├── IframeToggle
│ │ │ └── index.vue
│ │ │ ├── Sidebar
│ │ │ ├── FixiOSBug.js
│ │ │ ├── Item.vue
│ │ │ └── Link.vue
│ │ │ └── InnerLink
│ │ │ └── index.vue
│ ├── views
│ │ ├── redirect.vue
│ │ ├── components
│ │ │ └── icons
│ │ │ │ └── svg-icons.js
│ │ ├── monitor
│ │ │ └── druid
│ │ │ │ └── index.vue
│ │ ├── tool
│ │ │ └── swagger
│ │ │ │ └── index.vue
│ │ └── his
│ │ │ └── chat
│ │ │ └── index.vue
│ ├── plugins
│ │ └── index.js
│ ├── store
│ │ ├── index.js
│ │ ├── getters.js
│ │ └── modules
│ │ │ └── dict.js
│ ├── App.vue
│ ├── directive
│ │ ├── permission
│ │ │ ├── hasRole.js
│ │ │ └── hasPermi.js
│ │ ├── index.js
│ │ └── dialog
│ │ │ └── dragWidth.js
│ └── settings.js
├── public
│ ├── robots.txt
│ └── favicon.ico
├── bin
│ ├── build.bat
│ ├── package.bat
│ └── run-web.bat
├── .env.production
├── .env.staging
├── .eslintignore
├── .env.development
├── .gitignore
├── .editorconfig
├── README.md
├── babel.config.js
└── build
│ └── index.js
├── ry.bat
├── .github
└── FUNDING.yml
├── bin
├── run.bat
├── clean.bat
└── package.bat
├── doc
└── 若依环境使用手册.docx
├── ruoyi-admin
└── src
│ └── main
│ ├── resources
│ ├── META-INF
│ │ └── spring-devtools.properties
│ ├── mybatis
│ │ └── mybatis-config.xml
│ └── i18n
│ │ └── messages.properties
│ └── java
│ └── com
│ └── ruoyi
│ ├── web
│ ├── his
│ │ └── LoadingController.java
│ ├── webSocket
│ │ └── WebSocketConfig.java
│ └── controller
│ │ ├── tool
│ │ └── SwaggerController.java
│ │ ├── system
│ │ └── SysIndexController.java
│ │ └── monitor
│ │ └── ServerController.java
│ ├── RuoYiServletInitializer.java
│ └── RuoYiApplication.java
├── ruoyi-generator
├── src
│ └── main
│ │ ├── resources
│ │ ├── vm
│ │ │ ├── vue
│ │ │ │ └── v3
│ │ │ │ │ └── readme.txt
│ │ │ └── js
│ │ │ │ └── api.js.vm
│ │ └── generator.yml
│ │ └── java
│ │ └── com
│ │ └── ruoyi
│ │ └── generator
│ │ ├── util
│ │ └── VelocityInitializer.java
│ │ └── service
│ │ └── IGenTableColumnService.java
└── pom.xml
├── ruoyi-common
└── src
│ └── main
│ └── java
│ └── com
│ └── ruoyi
│ └── common
│ ├── core
│ └── domain
│ │ └── model
│ │ ├── RegisterBody.java
│ │ └── LoginBody.java
│ ├── enums
│ ├── DataSourceType.java
│ ├── BusinessStatus.java
│ ├── LimitType.java
│ ├── OperatorType.java
│ ├── UserStatus.java
│ ├── BusinessType.java
│ └── HttpMethod.java
│ ├── exception
│ ├── DemoModeException.java
│ ├── user
│ │ ├── CaptchaException.java
│ │ ├── CaptchaExpireException.java
│ │ ├── UserPasswordNotMatchException.java
│ │ ├── UserException.java
│ │ └── UserPasswordRetryLimitExceedException.java
│ ├── file
│ │ ├── FileException.java
│ │ ├── FileSizeLimitExceededException.java
│ │ └── FileNameLengthLimitExceededException.java
│ ├── UtilException.java
│ ├── job
│ │ └── TaskException.java
│ └── GlobalException.java
│ ├── utils
│ ├── LogUtils.java
│ ├── poi
│ │ └── ExcelHandlerAdapter.java
│ ├── MessageUtils.java
│ ├── bean
│ │ └── BeanValidators.java
│ ├── PageUtils.java
│ ├── ExceptionUtil.java
│ └── uuid
│ │ └── IdUtils.java
│ ├── annotation
│ ├── Excels.java
│ ├── Anonymous.java
│ ├── RepeatSubmit.java
│ ├── DataSource.java
│ ├── DataScope.java
│ ├── RateLimiter.java
│ └── Log.java
│ ├── filter
│ └── PropertyPreExcludeFilter.java
│ ├── xss
│ ├── Xss.java
│ └── XssValidator.java
│ └── constant
│ ├── CacheConstants.java
│ └── ScheduleConstants.java
├── ruoyi-quartz
├── src
│ └── main
│ │ └── java
│ │ └── com
│ │ └── ruoyi
│ │ └── quartz
│ │ ├── util
│ │ ├── QuartzJobExecution.java
│ │ └── QuartzDisallowConcurrentExecution.java
│ │ ├── task
│ │ └── RyTask.java
│ │ └── service
│ │ └── ISysJobLogService.java
└── pom.xml
├── ruoyi-framework
└── src
│ └── main
│ └── java
│ └── com
│ └── ruoyi
│ └── framework
│ ├── security
│ └── context
│ │ ├── AuthenticationContextHolder.java
│ │ └── PermissionContextHolder.java
│ ├── datasource
│ ├── DynamicDataSource.java
│ └── DynamicDataSourceContextHolder.java
│ ├── manager
│ ├── ShutdownManager.java
│ └── AsyncManager.java
│ ├── config
│ ├── ServerConfig.java
│ └── ApplicationConfig.java
│ └── web
│ └── domain
│ └── server
│ └── Mem.java
├── .gitignore
├── ruoyi-system
├── src
│ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── ruoyi
│ │ │ ├── system
│ │ │ ├── service
│ │ │ │ ├── ISysLogininforService.java
│ │ │ │ ├── ISysOperLogService.java
│ │ │ │ ├── ISysUserOnlineService.java
│ │ │ │ ├── ISysNoticeService.java
│ │ │ │ ├── IDrugService.java
│ │ │ │ ├── IHisRegService.java
│ │ │ │ └── IMedPatiService.java
│ │ │ ├── mapper
│ │ │ │ ├── SysLogininforMapper.java
│ │ │ │ ├── SysRoleMenuMapper.java
│ │ │ │ ├── SysUserPostMapper.java
│ │ │ │ ├── SysRoleDeptMapper.java
│ │ │ │ ├── SysOperLogMapper.java
│ │ │ │ ├── SysNoticeMapper.java
│ │ │ │ ├── DrugMapper.java
│ │ │ │ ├── HisRegMapper.java
│ │ │ │ └── MedPatiMapper.java
│ │ │ └── domain
│ │ │ │ ├── SysRoleDept.java
│ │ │ │ ├── SysRoleMenu.java
│ │ │ │ ├── SysUserPost.java
│ │ │ │ └── SysUserRole.java
│ │ │ └── his
│ │ │ └── mapper
│ │ │ └── HisPurMapper.java
│ │ └── resources
│ │ └── mapper
│ │ └── system
│ │ ├── SysUserPostMapper.xml
│ │ ├── SysRoleMenuMapper.xml
│ │ └── SysRoleDeptMapper.xml
└── pom.xml
└── LICENSE
/ruoyi-ui/src/api/system/purchase/data.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
--------------------------------------------------------------------------------
/ry.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ry.bat
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | custom: http://doc.ruoyi.vip/ruoyi-vue/other/donate.html
2 |
--------------------------------------------------------------------------------
/bin/run.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/bin/run.bat
--------------------------------------------------------------------------------
/bin/clean.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/bin/clean.bat
--------------------------------------------------------------------------------
/bin/package.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/bin/package.bat
--------------------------------------------------------------------------------
/doc/若依环境使用手册.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/doc/若依环境使用手册.docx
--------------------------------------------------------------------------------
/ruoyi-ui/src/components/ParentView/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ruoyi-ui/bin/build.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/bin/build.bat
--------------------------------------------------------------------------------
/ruoyi-ui/bin/package.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/bin/package.bat
--------------------------------------------------------------------------------
/ruoyi-ui/bin/run-web.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/bin/run-web.bat
--------------------------------------------------------------------------------
/ruoyi-admin/src/main/resources/META-INF/spring-devtools.properties:
--------------------------------------------------------------------------------
1 | restart.include.json=/com.alibaba.fastjson.*.jar
--------------------------------------------------------------------------------
/ruoyi-ui/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/public/favicon.ico
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/logo/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/src/assets/logo/logo.png
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/401_images/401.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/src/assets/401_images/401.gif
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/404_images/404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/src/assets/404_images/404.png
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/images/profile.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/src/assets/images/profile.jpg
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/images/weichat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/src/assets/images/weichat.png
--------------------------------------------------------------------------------
/ruoyi-admin/src/main/java/com/ruoyi/web/his/LoadingController.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.web.his;
2 |
3 | public class LoadingController {
4 | }
5 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/404_images/404_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/src/assets/404_images/404_cloud.png
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/images/login-background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-ui/src/assets/images/login-background.jpg
--------------------------------------------------------------------------------
/ruoyi-ui/.env.production:
--------------------------------------------------------------------------------
1 | # 页面标题
2 | VUE_APP_TITLE = 医疗信息管理系统
3 |
4 | # 生产环境配置
5 | ENV = 'production'
6 |
7 | # 医疗信息管理系统/生产环境
8 | VUE_APP_BASE_API = '/prod-api'
9 |
--------------------------------------------------------------------------------
/ruoyi-generator/src/main/resources/vm/vue/v3/readme.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jay-l23/Medical-platform/HEAD/ruoyi-generator/src/main/resources/vm/vue/v3/readme.txt
--------------------------------------------------------------------------------
/ruoyi-ui/src/utils/errorCode.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '401': '认证失败,无法访问系统资源',
3 | '403': '当前操作没有权限',
4 | '404': '访问资源不存在',
5 | 'default': '系统未知错误,请反馈给管理员'
6 | }
7 |
--------------------------------------------------------------------------------
/ruoyi-ui/.env.staging:
--------------------------------------------------------------------------------
1 | # 页面标题
2 | VUE_APP_TITLE = 医疗信息管理系统
3 |
4 | NODE_ENV = production
5 |
6 | # 测试环境配置
7 | ENV = 'staging'
8 |
9 | # 医疗信息管理系统/测试环境
10 | VUE_APP_BASE_API = '/stage-api'
11 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/api/menu.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 获取路由
4 | export const getRouters = () => {
5 | return request({
6 | url: '/getRouters',
7 | method: 'get'
8 | })
9 | }
--------------------------------------------------------------------------------
/ruoyi-ui/src/api/monitor/server.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 获取服务信息
4 | export function getServer() {
5 | return request({
6 | url: '/monitor/server',
7 | method: 'get'
8 | })
9 | }
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/chart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/.eslintignore:
--------------------------------------------------------------------------------
1 | # 忽略build目录下类型为js的文件的语法检查
2 | build/*.js
3 | # 忽略src/assets目录下文件的语法检查
4 | src/assets
5 | # 忽略public目录下文件的语法检查
6 | public
7 | # 忽略当前目录下为js的文件的语法检查
8 | *.js
9 | # 忽略当前目录下为vue的文件的语法检查
10 | *.vue
--------------------------------------------------------------------------------
/ruoyi-ui/.env.development:
--------------------------------------------------------------------------------
1 | # 页面标题
2 | VUE_APP_TITLE = 医疗信息管理系统
3 |
4 | # 开发环境配置
5 | ENV = 'development'
6 |
7 | # 医疗信息管理系统/开发环境
8 | VUE_APP_BASE_API = '/dev-api'
9 |
10 | # 路由懒加载
11 | VUE_CLI_BABEL_TRANSPILE_MODULES = true
12 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/size.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.core.domain.model;
2 |
3 | /**
4 | * 用户注册对象
5 | *
6 | * @author ruoyi
7 | */
8 | public class RegisterBody extends LoginBody
9 | {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/ruoyi-generator/src/main/resources/generator.yml:
--------------------------------------------------------------------------------
1 | # 代码生成
2 | gen:
3 | # 作者
4 | author: ruoyi
5 | # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
6 | packageName: com.ruoyi.system
7 | # 自动去除表前缀,默认是false
8 | autoRemovePre: false
9 | # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
10 | tablePrefix: sys_
--------------------------------------------------------------------------------
/ruoyi-ui/src/layout/components/index.js:
--------------------------------------------------------------------------------
1 | export { default as AppMain } from './AppMain'
2 | export { default as Navbar } from './Navbar'
3 | export { default as Settings } from './Settings'
4 | export { default as Sidebar } from './Sidebar/index.vue'
5 | export { default as TagsView } from './TagsView/index.vue'
6 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.enums;
2 |
3 | /**
4 | * 数据源
5 | *
6 | * @author ruoyi
7 | */
8 | public enum DataSourceType
9 | {
10 | /**
11 | * 主库
12 | */
13 | MASTER,
14 |
15 | /**
16 | * 从库
17 | */
18 | SLAVE
19 | }
20 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/views/redirect.vue:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.enums;
2 |
3 | /**
4 | * 操作状态
5 | *
6 | * @author ruoyi
7 | *
8 | */
9 | public enum BusinessStatus
10 | {
11 | /**
12 | * 成功
13 | */
14 | SUCCESS,
15 |
16 | /**
17 | * 失败
18 | */
19 | FAIL,
20 | }
21 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.enums;
2 |
3 | /**
4 | * 限流类型
5 | *
6 | * @author ruoyi
7 | */
8 |
9 | public enum LimitType
10 | {
11 | /**
12 | * 默认策略全局限流
13 | */
14 | DEFAULT,
15 |
16 | /**
17 | * 根据请求者IP进行限流
18 | */
19 | IP
20 | }
21 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/components/IconSelect/requireIcons.js:
--------------------------------------------------------------------------------
1 |
2 | const req = require.context('../../assets/icons/svg', false, /\.svg$/)
3 | const requireAll = requireContext => requireContext.keys()
4 |
5 | const re = /\.\/(.*)\.svg/
6 |
7 | const icons = requireAll(req).map(i => {
8 | return i.match(re)[1]
9 | })
10 |
11 | export default icons
12 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/utils/dict/DictData.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @classdesc 字典数据
3 | * @property {String} label 标签
4 | * @property {*} value 标签
5 | * @property {Object} raw 原始数据
6 | */
7 | export default class DictData {
8 | constructor(label, value, raw) {
9 | this.label = label
10 | this.value = value
11 | this.raw = raw
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/views/components/icons/svg-icons.js:
--------------------------------------------------------------------------------
1 | const req = require.context('../../../assets/icons/svg', false, /\.svg$/)
2 | const requireAll = requireContext => requireContext.keys()
3 |
4 | const re = /\.\/(.*)\.svg/
5 |
6 | const svgIcons = requireAll(req).map(i => {
7 | return i.match(re)[1]
8 | })
9 |
10 | export default svgIcons
11 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/guide.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import SvgIcon from '@/components/SvgIcon'// svg component
3 |
4 | // register globally
5 | Vue.component('svg-icon', SvgIcon)
6 |
7 | const req = require.context('./svg', false, /\.svg$/)
8 | const requireAll = requireContext => requireContext.keys().map(requireContext)
9 | requireAll(req)
10 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/utils/auth.js:
--------------------------------------------------------------------------------
1 | import Cookies from 'js-cookie'
2 |
3 | const TokenKey = 'Admin-Token'
4 |
5 | export function getToken() {
6 | return Cookies.get(TokenKey)
7 | }
8 |
9 | export function setToken(token) {
10 | return Cookies.set(TokenKey, token)
11 | }
12 |
13 | export function removeToken() {
14 | return Cookies.remove(TokenKey)
15 | }
16 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/money.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception;
2 |
3 | /**
4 | * 演示模式异常
5 | *
6 | * @author ruoyi
7 | */
8 | public class DemoModeException extends RuntimeException
9 | {
10 | private static final long serialVersionUID = 1L;
11 |
12 | public DemoModeException()
13 | {
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/email.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | **/*.log
8 |
9 | tests/**/coverage/
10 | tests/e2e/reports
11 | selenium-debug.log
12 |
13 | # Editor directories and files
14 | .idea
15 | .vscode
16 | *.suo
17 | *.ntvs*
18 | *.njsproj
19 | *.sln
20 | *.local
21 |
22 | package-lock.json
23 | yarn.lock
24 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svgo.yml:
--------------------------------------------------------------------------------
1 | # replace default config
2 |
3 | # multipass: true
4 | # full: true
5 |
6 | plugins:
7 |
8 | # - name
9 | #
10 | # or:
11 | # - name: false
12 | # - name: true
13 | #
14 | # or:
15 | # - name:
16 | # param1: 1
17 | # param2: 2
18 |
19 | - removeAttrs:
20 | attrs:
21 | - 'fill'
22 | - 'fill-rule'
23 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/drag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/views/monitor/druid/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/views/tool/swagger/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
16 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.enums;
2 |
3 | /**
4 | * 操作人类别
5 | *
6 | * @author ruoyi
7 | */
8 | public enum OperatorType
9 | {
10 | /**
11 | * 其它
12 | */
13 | OTHER,
14 |
15 | /**
16 | * 后台用户
17 | */
18 | MANAGE,
19 |
20 | /**
21 | * 手机端用户
22 | */
23 | MOBILE
24 | }
25 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/utils/LogUtils.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.utils;
2 |
3 | /**
4 | * 处理并记录日志文件
5 | *
6 | * @author ruoyi
7 | */
8 | public class LogUtils
9 | {
10 | public static String getBlock(Object msg)
11 | {
12 | if (msg == null)
13 | {
14 | msg = "";
15 | }
16 | return "[" + msg.toString() + "]";
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/api/monitor/online.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 查询在线用户列表
4 | export function list(query) {
5 | return request({
6 | url: '/monitor/online/list',
7 | method: 'get',
8 | params: query
9 | })
10 | }
11 |
12 | // 强退用户
13 | export function forceLogout(tokenId) {
14 | return request({
15 | url: '/monitor/online/' + tokenId,
16 | method: 'delete'
17 | })
18 | }
19 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/api/remote-search.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export function searchUser(name) {
4 | return request({
5 | url: '/vue-element-admin/search/user',
6 | method: 'get',
7 | params: { name }
8 | })
9 | }
10 |
11 | export function transactionList(query) {
12 | return request({
13 | url: '/system/order/list',
14 | method: 'get',
15 | params: query
16 | })
17 | }
18 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/components/RuoYi/Doc/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.user;
2 |
3 | /**
4 | * 验证码错误异常类
5 | *
6 | * @author ruoyi
7 | */
8 | public class CaptchaException extends UserException
9 | {
10 | private static final long serialVersionUID = 1L;
11 |
12 | public CaptchaException()
13 | {
14 | super("user.jcaptcha.error", null);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.user;
2 |
3 | /**
4 | * 验证码失效异常类
5 | *
6 | * @author ruoyi
7 | */
8 | public class CaptchaExpireException extends UserException
9 | {
10 | private static final long serialVersionUID = 1L;
11 |
12 | public CaptchaExpireException()
13 | {
14 | super("user.jcaptcha.expire", null);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/documentation.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/fullscreen.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/components/RuoYi/Git/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
22 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelHandlerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.utils.poi;
2 |
3 | /**
4 | * Excel数据格式处理适配器
5 | *
6 | * @author ruoyi
7 | */
8 | public interface ExcelHandlerAdapter
9 | {
10 | /**
11 | * 格式化
12 | *
13 | * @param value 单元格数据值
14 | * @param args excel注解args参数组
15 | *
16 | * @return 处理后的值
17 | */
18 | Object format(Object value, String[] args);
19 | }
20 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/.editorconfig:
--------------------------------------------------------------------------------
1 | # 告诉EditorConfig插件,这是根文件,不用继续往上查找
2 | root = true
3 |
4 | # 匹配全部文件
5 | [*]
6 | # 设置字符集
7 | charset = utf-8
8 | # 缩进风格,可选space、tab
9 | indent_style = space
10 | # 缩进的空格数
11 | indent_size = 2
12 | # 结尾换行符,可选lf、cr、crlf
13 | end_of_line = lf
14 | # 在文件结尾插入新行
15 | insert_final_newline = true
16 | # 删除一行中的前后空格
17 | trim_trailing_whitespace = true
18 |
19 | # 匹配md结尾的文件
20 | [*.md]
21 | insert_final_newline = false
22 | trim_trailing_whitespace = false
23 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.user;
2 |
3 | /**
4 | * 用户密码不正确或不符合规范异常类
5 | *
6 | * @author ruoyi
7 | */
8 | public class UserPasswordNotMatchException extends UserException
9 | {
10 | private static final long serialVersionUID = 1L;
11 |
12 | public UserPasswordNotMatchException()
13 | {
14 | super("user.password.not.match", null);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/excel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excels.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | /**
9 | * Excel注解集
10 | *
11 | * @author ruoyi
12 | */
13 | @Target(ElementType.FIELD)
14 | @Retention(RetentionPolicy.RUNTIME)
15 | public @interface Excels
16 | {
17 | public Excel[] value();
18 | }
19 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.user;
2 |
3 | import com.ruoyi.common.exception.base.BaseException;
4 |
5 | /**
6 | * 用户信息异常类
7 | *
8 | * @author ruoyi
9 | */
10 | public class UserException extends BaseException
11 | {
12 | private static final long serialVersionUID = 1L;
13 |
14 | public UserException(String code, Object[] args)
15 | {
16 | super("user", code, args, null);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/ruoyi-ui/README.md:
--------------------------------------------------------------------------------
1 | ## 开发
2 |
3 | ```bash
4 | # 克隆项目
5 | git clone https://gitee.com/y_project/RuoYi-Vue
6 |
7 | # 进入项目目录
8 | cd ruoyi-ui
9 |
10 | # 安装依赖
11 | npm install
12 |
13 | # 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
14 | npm install --registry=https://registry.npmmirror.com
15 |
16 | # 启动服务
17 | npm run dev
18 | ```
19 |
20 | 浏览器访问 http://localhost:80
21 |
22 | ## 发布
23 |
24 | ```bash
25 | # 构建测试环境
26 | npm run build:stage
27 |
28 | # 构建生产环境
29 | npm run build:prod
30 | ```
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.file;
2 |
3 | import com.ruoyi.common.exception.base.BaseException;
4 |
5 | /**
6 | * 文件信息异常类
7 | *
8 | * @author ruoyi
9 | */
10 | public class FileException extends BaseException
11 | {
12 | private static final long serialVersionUID = 1L;
13 |
14 | public FileException(String code, Object[] args)
15 | {
16 | super("file", code, args, null);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.file;
2 |
3 | /**
4 | * 文件名大小限制异常类
5 | *
6 | * @author ruoyi
7 | */
8 | public class FileSizeLimitExceededException extends FileException
9 | {
10 | private static final long serialVersionUID = 1L;
11 |
12 | public FileSizeLimitExceededException(long defaultMaxSize)
13 | {
14 | super("upload.exceed.maxSize", new Object[] { defaultMaxSize });
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/example.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/plugins/index.js:
--------------------------------------------------------------------------------
1 | import tab from './tab'
2 | import auth from './auth'
3 | import cache from './cache'
4 | import modal from './modal'
5 | import download from './download'
6 |
7 | export default {
8 | install(Vue) {
9 | // 页签操作
10 | Vue.prototype.$tab = tab
11 | // 认证对象
12 | Vue.prototype.$auth = auth
13 | // 缓存对象
14 | Vue.prototype.$cache = cache
15 | // 模态框对象
16 | Vue.prototype.$modal = modal
17 | // 下载文件
18 | Vue.prototype.$download = download
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/ruoyi-ui/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
4 | '@vue/cli-plugin-babel/preset'
5 | ],
6 | 'env': {
7 | 'development': {
8 | // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
9 | // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
10 | 'plugins': ['dynamic-import-node']
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzJobExecution.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.quartz.util;
2 |
3 | import org.quartz.JobExecutionContext;
4 | import com.ruoyi.quartz.domain.SysJob;
5 |
6 | /**
7 | * 定时任务处理(允许并发执行)
8 | *
9 | * @author ruoyi
10 | *
11 | */
12 | public class QuartzJobExecution extends AbstractQuartzJob
13 | {
14 | @Override
15 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
16 | {
17 | JobInvokeUtil.invokeMethod(sysJob);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.file;
2 |
3 | /**
4 | * 文件名称超长限制异常类
5 | *
6 | * @author ruoyi
7 | */
8 | public class FileNameLengthLimitExceededException extends FileException
9 | {
10 | private static final long serialVersionUID = 1L;
11 |
12 | public FileNameLengthLimitExceededException(int defaultFileNameLength)
13 | {
14 | super("upload.filename.exceed.length", new Object[] { defaultFileNameLength });
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/annotation/Anonymous.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * 匿名访问不鉴权注解
11 | *
12 | * @author ruoyi
13 | */
14 | @Target({ ElementType.METHOD, ElementType.TYPE })
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Documented
17 | public @interface Anonymous
18 | {
19 | }
20 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordRetryLimitExceedException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.user;
2 |
3 | /**
4 | * 用户错误最大次数异常类
5 | *
6 | * @author ruoyi
7 | */
8 | public class UserPasswordRetryLimitExceedException extends UserException
9 | {
10 | private static final long serialVersionUID = 1L;
11 |
12 | public UserPasswordRetryLimitExceedException(int retryLimitCount, int lockTime)
13 | {
14 | super("user.password.retry.limit.exceed", new Object[] { retryLimitCount, lockTime });
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/star.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/api/monitor/jobLog.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 查询调度日志列表
4 | export function listJobLog(query) {
5 | return request({
6 | url: '/monitor/jobLog/list',
7 | method: 'get',
8 | params: query
9 | })
10 | }
11 |
12 | // 删除调度日志
13 | export function delJobLog(jobLogId) {
14 | return request({
15 | url: '/monitor/jobLog/' + jobLogId,
16 | method: 'delete'
17 | })
18 | }
19 |
20 | // 清空调度日志
21 | export function cleanJobLog() {
22 | return request({
23 | url: '/monitor/jobLog/clean',
24 | method: 'delete'
25 | })
26 | }
27 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/api/monitor/operlog.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 查询操作日志列表
4 | export function list(query) {
5 | return request({
6 | url: '/monitor/operlog/list',
7 | method: 'get',
8 | params: query
9 | })
10 | }
11 |
12 | // 删除操作日志
13 | export function delOperlog(operId) {
14 | return request({
15 | url: '/monitor/operlog/' + operId,
16 | method: 'delete'
17 | })
18 | }
19 |
20 | // 清空操作日志
21 | export function cleanOperlog() {
22 | return request({
23 | url: '/monitor/operlog/clean',
24 | method: 'delete'
25 | })
26 | }
27 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/slider.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/utils/generator/css.js:
--------------------------------------------------------------------------------
1 | const styles = {
2 | 'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}',
3 | 'el-upload': '.el-upload__tip{line-height: 1.2;}'
4 | }
5 |
6 | function addCss(cssList, el) {
7 | const css = styles[el.tag]
8 | css && cssList.indexOf(css) === -1 && cssList.push(css)
9 | if (el.children) {
10 | el.children.forEach(el2 => addCss(cssList, el2))
11 | }
12 | }
13 |
14 | export function makeUpCss(conf) {
15 | const cssList = []
16 | conf.fields.forEach(el => addCss(cssList, el))
17 | return cssList.join('\n')
18 | }
19 |
--------------------------------------------------------------------------------
/ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi;
2 |
3 | import org.springframework.boot.builder.SpringApplicationBuilder;
4 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
5 |
6 | /**
7 | * web容器中进行部署
8 | *
9 | * @author ruoyi
10 | */
11 | public class RuoYiServletInitializer extends SpringBootServletInitializer
12 | {
13 | @Override
14 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
15 | {
16 | return application.sources(RuoYiApplication.class);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import app from './modules/app'
4 | import dict from './modules/dict'
5 | import user from './modules/user'
6 | import tagsView from './modules/tagsView'
7 | import permission from './modules/permission'
8 | import settings from './modules/settings'
9 | import getters from './getters'
10 |
11 | Vue.use(Vuex)
12 |
13 | const store = new Vuex.Store({
14 | modules: {
15 | app,
16 | dict,
17 | user,
18 | tagsView,
19 | permission,
20 | settings
21 | },
22 | getters
23 | })
24 |
25 | export default store
26 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-admin/src/main/java/com/ruoyi/web/webSocket/WebSocketConfig.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.web.webSocket;
2 |
3 | import org.springframework.context.annotation.Bean;
4 | import org.springframework.context.annotation.Configuration;
5 | import org.springframework.web.socket.server.standard.ServerEndpointExporter;
6 |
7 | @Configuration
8 | public class WebSocketConfig {
9 | /**
10 | * 先新建ServerEndpointExporter对象,作为websocket服务器端点
11 | *
12 | * @return
13 | */
14 | @Bean
15 | public ServerEndpointExporter serverEndpointExporter() {
16 | return new ServerEndpointExporter();
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.enums;
2 |
3 | /**
4 | * 用户状态
5 | *
6 | * @author ruoyi
7 | */
8 | public enum UserStatus
9 | {
10 | OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除");
11 |
12 | private final String code;
13 | private final String info;
14 |
15 | UserStatus(String code, String info)
16 | {
17 | this.code = code;
18 | this.info = info;
19 | }
20 |
21 | public String getCode()
22 | {
23 | return code;
24 | }
25 |
26 | public String getInfo()
27 | {
28 | return info;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/QuartzDisallowConcurrentExecution.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.quartz.util;
2 |
3 | import org.quartz.DisallowConcurrentExecution;
4 | import org.quartz.JobExecutionContext;
5 | import com.ruoyi.quartz.domain.SysJob;
6 |
7 | /**
8 | * 定时任务处理(禁止并发执行)
9 | *
10 | * @author ruoyi
11 | *
12 | */
13 | @DisallowConcurrentExecution
14 | public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob
15 | {
16 | @Override
17 | protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
18 | {
19 | JobInvokeUtil.invokeMethod(sysJob);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/education.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception;
2 |
3 | /**
4 | * 工具类异常
5 | *
6 | * @author ruoyi
7 | */
8 | public class UtilException extends RuntimeException
9 | {
10 | private static final long serialVersionUID = 8247610319171014183L;
11 |
12 | public UtilException(Throwable e)
13 | {
14 | super(e.getMessage(), e);
15 | }
16 |
17 | public UtilException(String message)
18 | {
19 | super(message);
20 | }
21 |
22 | public UtilException(String message, Throwable throwable)
23 | {
24 | super(message, throwable);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/filter/PropertyPreExcludeFilter.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.filter;
2 |
3 | import com.alibaba.fastjson2.filter.SimplePropertyPreFilter;
4 |
5 | /**
6 | * 排除JSON敏感属性
7 | *
8 | * @author ruoyi
9 | */
10 | public class PropertyPreExcludeFilter extends SimplePropertyPreFilter
11 | {
12 | public PropertyPreExcludeFilter()
13 | {
14 | }
15 |
16 | public PropertyPreExcludeFilter addExcludes(String... filters)
17 | {
18 | for (int i = 0; i < filters.length; i++)
19 | {
20 | this.getExcludes().add(filters[i]);
21 | }
22 | return this;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/tab.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/layout/components/IframeToggle/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
25 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/views/his/chat/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
26 |
27 |
30 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/utils/dict/DictConverter.js:
--------------------------------------------------------------------------------
1 | import DictOptions from './DictOptions'
2 | import DictData from './DictData'
3 |
4 | export default function(dict, dictMeta) {
5 | const label = determineDictField(dict, dictMeta.labelField, ...DictOptions.DEFAULT_LABEL_FIELDS)
6 | const value = determineDictField(dict, dictMeta.valueField, ...DictOptions.DEFAULT_VALUE_FIELDS)
7 | return new DictData(dict[label], dict[value], dict)
8 | }
9 |
10 | /**
11 | * 确定字典字段
12 | * @param {DictData} dict
13 | * @param {...String} fields
14 | */
15 | function determineDictField(dict, ...fields) {
16 | return fields.find(f => Object.prototype.hasOwnProperty.call(dict, f))
17 | }
18 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/message.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/switch.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/theme.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/layout/components/Sidebar/FixiOSBug.js:
--------------------------------------------------------------------------------
1 | export default {
2 | computed: {
3 | device() {
4 | return this.$store.state.app.device
5 | }
6 | },
7 | mounted() {
8 | // In order to fix the click on menu on the ios device will trigger the mouseleave bug
9 | this.fixBugIniOS()
10 | },
11 | methods: {
12 | fixBugIniOS() {
13 | const $subMenu = this.$refs.subMenu
14 | if ($subMenu) {
15 | const handleMouseleave = $subMenu.handleMouseleave
16 | $subMenu.handleMouseleave = (e) => {
17 | if (this.device === 'mobile') {
18 | return
19 | }
20 | handleMouseleave(e)
21 | }
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
24 |
29 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/code.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/druid.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/peoples.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/utils/generator/drawingDefault.js:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | layout: 'colFormItem',
4 | tagIcon: 'input',
5 | label: '手机号',
6 | vModel: 'mobile',
7 | formId: 6,
8 | tag: 'el-input',
9 | placeholder: '请输入手机号',
10 | defaultValue: '',
11 | span: 24,
12 | style: { width: '100%' },
13 | clearable: true,
14 | prepend: '',
15 | append: '',
16 | 'prefix-icon': 'el-icon-mobile',
17 | 'suffix-icon': '',
18 | maxlength: 11,
19 | 'show-word-limit': true,
20 | readonly: false,
21 | disabled: false,
22 | required: true,
23 | changeTag: true,
24 | regList: [{
25 | pattern: '/^1(3|4|5|7|8|9)\\d{9}$/',
26 | message: '手机号格式错误'
27 | }]
28 | }
29 | ]
30 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/input.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/server.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.quartz.task;
2 |
3 | import org.springframework.stereotype.Component;
4 | import com.ruoyi.common.utils.StringUtils;
5 |
6 | /**
7 | * 定时任务调度测试
8 | *
9 | * @author ruoyi
10 | */
11 | @Component("ryTask")
12 | public class RyTask
13 | {
14 | public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
15 | {
16 | System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
17 | }
18 |
19 | public void ryParams(String params)
20 | {
21 | System.out.println("执行有参方法:" + params);
22 | }
23 |
24 | public void ryNoParams()
25 | {
26 | System.out.println("执行无参方法");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/directive/permission/hasRole.js:
--------------------------------------------------------------------------------
1 | /**
2 | * v-hasRole 角色权限处理
3 | * Copyright (c) 2019 ruoyi
4 | */
5 |
6 | import store from '@/store'
7 |
8 | export default {
9 | inserted(el, binding, vnode) {
10 | const { value } = binding
11 | const super_admin = "admin";
12 | const roles = store.getters && store.getters.roles
13 |
14 | if (value && value instanceof Array && value.length > 0) {
15 | const roleFlag = value
16 |
17 | const hasRole = roles.some(role => {
18 | return super_admin === role || roleFlag.includes(role)
19 | })
20 |
21 | if (!hasRole) {
22 | el.parentNode && el.parentNode.removeChild(el)
23 | }
24 | } else {
25 | throw new Error(`请设置角色权限标签值"`)
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/ruoyi-framework/src/main/java/com/ruoyi/framework/security/context/AuthenticationContextHolder.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.framework.security.context;
2 |
3 | import org.springframework.security.core.Authentication;
4 |
5 | /**
6 | * 身份验证信息
7 | *
8 | * @author ruoyi
9 | */
10 | public class AuthenticationContextHolder
11 | {
12 | private static final ThreadLocal contextHolder = new ThreadLocal<>();
13 |
14 | public static Authentication getContext()
15 | {
16 | return contextHolder.get();
17 | }
18 |
19 | public static void setContext(Authentication context)
20 | {
21 | contextHolder.set(context);
22 | }
23 |
24 | public static void clearContext()
25 | {
26 | contextHolder.remove();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/layout/components/Sidebar/Item.vue:
--------------------------------------------------------------------------------
1 |
34 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/api/monitor/logininfor.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 查询登录日志列表
4 | export function list(query) {
5 | return request({
6 | url: '/monitor/logininfor/list',
7 | method: 'get',
8 | params: query
9 | })
10 | }
11 |
12 | // 删除登录日志
13 | export function delLogininfor(infoId) {
14 | return request({
15 | url: '/monitor/logininfor/' + infoId,
16 | method: 'delete'
17 | })
18 | }
19 |
20 | // 解锁用户登录状态
21 | export function unlockLogininfor(userName) {
22 | return request({
23 | url: '/monitor/logininfor/unlock/' + userName,
24 | method: 'get'
25 | })
26 | }
27 |
28 | // 清空登录日志
29 | export function cleanLogininfor() {
30 | return request({
31 | url: '/monitor/logininfor/clean',
32 | method: 'delete'
33 | })
34 | }
35 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/textarea.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/SwaggerController.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.web.controller.tool;
2 |
3 | import org.springframework.security.access.prepost.PreAuthorize;
4 | import org.springframework.stereotype.Controller;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import com.ruoyi.common.core.controller.BaseController;
8 |
9 | /**
10 | * swagger 接口
11 | *
12 | * @author ruoyi
13 | */
14 | @Controller
15 | @RequestMapping("/tool/swagger")
16 | public class SwaggerController extends BaseController
17 | {
18 | @PreAuthorize("@ss.hasPermi('tool:swagger:view')")
19 | @GetMapping()
20 | public String index()
21 | {
22 | return redirect("/swagger-ui.html");
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/utils/MessageUtils.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.utils;
2 |
3 | import org.springframework.context.MessageSource;
4 | import org.springframework.context.i18n.LocaleContextHolder;
5 | import com.ruoyi.common.utils.spring.SpringUtils;
6 |
7 | /**
8 | * 获取i18n资源文件
9 | *
10 | * @author ruoyi
11 | */
12 | public class MessageUtils
13 | {
14 | /**
15 | * 根据消息键和参数 获取消息 委托给spring messageSource
16 | *
17 | * @param code 消息键
18 | * @param args 参数
19 | * @return 获取国际化翻译值
20 | */
21 | public static String message(String code, Object... args)
22 | {
23 | MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
24 | return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/time.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Inherited;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 |
10 | /**
11 | * 自定义注解防止表单重复提交
12 | *
13 | * @author ruoyi
14 | *
15 | */
16 | @Inherited
17 | @Target(ElementType.METHOD)
18 | @Retention(RetentionPolicy.RUNTIME)
19 | @Documented
20 | public @interface RepeatSubmit
21 | {
22 | /**
23 | * 间隔时间(ms),小于此时间视为重复提交
24 | */
25 | public int interval() default 5000;
26 |
27 | /**
28 | * 提示消息
29 | */
30 | public String message() default "不允许重复提交,请稍候再试";
31 | }
32 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.enums;
2 |
3 | /**
4 | * 业务操作类型
5 | *
6 | * @author ruoyi
7 | */
8 | public enum BusinessType
9 | {
10 | /**
11 | * 其它
12 | */
13 | OTHER,
14 |
15 | /**
16 | * 新增
17 | */
18 | INSERT,
19 |
20 | /**
21 | * 修改
22 | */
23 | UPDATE,
24 |
25 | /**
26 | * 删除
27 | */
28 | DELETE,
29 |
30 | /**
31 | * 授权
32 | */
33 | GRANT,
34 |
35 | /**
36 | * 导出
37 | */
38 | EXPORT,
39 |
40 | /**
41 | * 导入
42 | */
43 | IMPORT,
44 |
45 | /**
46 | * 强退
47 | */
48 | FORCE,
49 |
50 | /**
51 | * 生成代码
52 | */
53 | GENCODE,
54 |
55 | /**
56 | * 清空数据
57 | */
58 | CLEAN,
59 | }
60 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.xss;
2 |
3 | import javax.validation.Constraint;
4 | import javax.validation.Payload;
5 | import java.lang.annotation.ElementType;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 |
10 | /**
11 | * 自定义xss校验注解
12 | *
13 | * @author ruoyi
14 | */
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Target(value = { ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER })
17 | @Constraint(validatedBy = { XssValidator.class })
18 | public @interface Xss
19 | {
20 | String message()
21 |
22 | default "不允许任何脚本运行";
23 |
24 | Class>[] groups() default {};
25 |
26 | Class extends Payload>[] payload() default {};
27 | }
28 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/edit.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/assets/icons/svg/nested.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Inherited;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 | import com.ruoyi.common.enums.DataSourceType;
10 |
11 | /**
12 | * 自定义多数据源切换注解
13 | *
14 | * 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准
15 | *
16 | * @author ruoyi
17 | */
18 | @Target({ ElementType.METHOD, ElementType.TYPE })
19 | @Retention(RetentionPolicy.RUNTIME)
20 | @Documented
21 | @Inherited
22 | public @interface DataSource
23 | {
24 | /**
25 | * 切换数据源名称
26 | */
27 | public DataSourceType value() default DataSourceType.MASTER;
28 | }
29 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.utils.bean;
2 |
3 | import java.util.Set;
4 | import javax.validation.ConstraintViolation;
5 | import javax.validation.ConstraintViolationException;
6 | import javax.validation.Validator;
7 |
8 | /**
9 | * bean对象属性验证
10 | *
11 | * @author ruoyi
12 | */
13 | public class BeanValidators
14 | {
15 | public static void validateWithException(Validator validator, Object object, Class>... groups)
16 | throws ConstraintViolationException
17 | {
18 | Set> constraintViolations = validator.validate(object, groups);
19 | if (!constraintViolations.isEmpty())
20 | {
21 | throw new ConstraintViolationException(constraintViolations);
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/directive/index.js:
--------------------------------------------------------------------------------
1 | import hasRole from './permission/hasRole'
2 | import hasPermi from './permission/hasPermi'
3 | import dialogDrag from './dialog/drag'
4 | import dialogDragWidth from './dialog/dragWidth'
5 | import dialogDragHeight from './dialog/dragHeight'
6 | import clipboard from './module/clipboard'
7 |
8 | const install = function(Vue) {
9 | Vue.directive('hasRole', hasRole)
10 | Vue.directive('hasPermi', hasPermi)
11 | Vue.directive('clipboard', clipboard)
12 | Vue.directive('dialogDrag', dialogDrag)
13 | Vue.directive('dialogDragWidth', dialogDragWidth)
14 | Vue.directive('dialogDragHeight', dialogDragHeight)
15 | }
16 |
17 | if (window.Vue) {
18 | window['hasRole'] = hasRole
19 | window['hasPermi'] = hasPermi
20 | Vue.use(install); // eslint-disable-line
21 | }
22 |
23 | export default install
24 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/directive/permission/hasPermi.js:
--------------------------------------------------------------------------------
1 | /**
2 | * v-hasPermi 操作权限处理
3 | * Copyright (c) 2019 ruoyi
4 | */
5 |
6 | import store from '@/store'
7 |
8 | export default {
9 | inserted(el, binding, vnode) {
10 | const { value } = binding
11 | const all_permission = "*:*:*";
12 | const permissions = store.getters && store.getters.permissions
13 |
14 | if (value && value instanceof Array && value.length > 0) {
15 | const permissionFlag = value
16 |
17 | const hasPermissions = permissions.some(permission => {
18 | return all_permission === permission || permissionFlag.includes(permission)
19 | })
20 |
21 | if (!hasPermissions) {
22 | el.parentNode && el.parentNode.removeChild(el)
23 | }
24 | } else {
25 | throw new Error(`请设置操作权限标签值`)
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.exception.job;
2 |
3 | /**
4 | * 计划策略异常
5 | *
6 | * @author ruoyi
7 | */
8 | public class TaskException extends Exception
9 | {
10 | private static final long serialVersionUID = 1L;
11 |
12 | private Code code;
13 |
14 | public TaskException(String msg, Code code)
15 | {
16 | this(msg, code, null);
17 | }
18 |
19 | public TaskException(String msg, Code code, Exception nestedEx)
20 | {
21 | super(msg, nestedEx);
22 | this.code = code;
23 | }
24 |
25 | public Code getCode()
26 | {
27 | return code;
28 | }
29 |
30 | public enum Code
31 | {
32 | TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE
33 | }
34 | }
--------------------------------------------------------------------------------
/ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataScope.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.common.annotation;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.ElementType;
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 | import java.lang.annotation.Target;
8 |
9 | /**
10 | * 数据权限过滤注解
11 | *
12 | * @author ruoyi
13 | */
14 | @Target(ElementType.METHOD)
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Documented
17 | public @interface DataScope
18 | {
19 | /**
20 | * 部门表的别名
21 | */
22 | public String deptAlias() default "";
23 |
24 | /**
25 | * 用户表的别名
26 | */
27 | public String userAlias() default "";
28 |
29 | /**
30 | * 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@ss获取,多个权限用逗号分隔开来
31 | */
32 | public String permission() default "";
33 | }
34 |
--------------------------------------------------------------------------------
/ruoyi-ui/src/store/getters.js:
--------------------------------------------------------------------------------
1 | const getters = {
2 | sidebar: state => state.app.sidebar,
3 | size: state => state.app.size,
4 | device: state => state.app.device,
5 | dict: state => state.dict.dict,
6 | visitedViews: state => state.tagsView.visitedViews,
7 | cachedViews: state => state.tagsView.cachedViews,
8 | token: state => state.user.token,
9 | avatar: state => state.user.avatar,
10 | name: state => state.user.name,
11 | introduction: state => state.user.introduction,
12 | roles: state => state.user.roles,
13 | permissions: state => state.user.permissions,
14 | permission_routes: state => state.permission.routes,
15 | topbarRouters:state => state.permission.topbarRouters,
16 | defaultRoutes:state => state.permission.defaultRoutes,
17 | sidebarRouters:state => state.permission.sidebarRouters,
18 | }
19 | export default getters
20 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ######################################################################
2 | # Build Tools
3 |
4 | .gradle
5 | /build/
6 | !gradle/wrapper/gradle-wrapper.jar
7 |
8 | target/
9 | !.mvn/wrapper/maven-wrapper.jar
10 |
11 | ######################################################################
12 | # IDE
13 |
14 | ### STS ###
15 | .apt_generated
16 | .classpath
17 | .factorypath
18 | .project
19 | .settings
20 | .springBeans
21 |
22 | ### IntelliJ IDEA ###
23 | .idea
24 | *.iws
25 | *.iml
26 | *.ipr
27 |
28 | ### JRebel ###
29 | rebel.xml
30 |
31 | ### NetBeans ###
32 | nbproject/private/
33 | build/*
34 | nbbuild/
35 | dist/
36 | nbdist/
37 | .nb-gradle/
38 |
39 | ######################################################################
40 | # Others
41 | *.log
42 | *.xml.versionsBackup
43 | *.swp
44 |
45 | !*/build/*.java
46 | !*/build/*.html
47 | !*/build/*.xml
48 |
--------------------------------------------------------------------------------
/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java:
--------------------------------------------------------------------------------
1 | package com.ruoyi.framework.datasource;
2 |
3 | import java.util.Map;
4 | import javax.sql.DataSource;
5 | import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
6 |
7 | /**
8 | * 动态数据源
9 | *
10 | * @author ruoyi
11 | */
12 | public class DynamicDataSource extends AbstractRoutingDataSource
13 | {
14 | public DynamicDataSource(DataSource defaultTargetDataSource, Map