├── .gitignore
├── LICENSE
├── README.md
├── _web
├── admin-vue
│ ├── .editorconfig
│ ├── .env.development
│ ├── .env.production
│ ├── .env.staging
│ ├── .eslintignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── README.md
│ ├── babel.config.js
│ ├── bin
│ │ ├── build.bat
│ │ ├── package.bat
│ │ └── run-web.bat
│ ├── package.json
│ ├── public
│ │ ├── favicon.ico
│ │ ├── html
│ │ │ └── ie.html
│ │ ├── index.html
│ │ └── robots.txt
│ ├── src
│ │ ├── App.vue
│ │ ├── api
│ │ │ ├── auth
│ │ │ │ ├── resourceMaintain
│ │ │ │ │ └── ResourceMaintainIndexApi.js
│ │ │ │ ├── routingMaintenance
│ │ │ │ │ └── RoutingMaintenanceIndexApi.js
│ │ │ │ ├── securityAudit
│ │ │ │ │ ├── GodKeyPasswordApi.js
│ │ │ │ │ ├── LoginLogApi.js
│ │ │ │ │ └── SessionManage.js
│ │ │ │ └── ssoApp
│ │ │ │ │ └── ClientManageApi.js
│ │ │ ├── login.js
│ │ │ ├── menu.js
│ │ │ ├── monitor
│ │ │ │ ├── cache.js
│ │ │ │ ├── job.js
│ │ │ │ ├── jobLog.js
│ │ │ │ ├── logininfor.js
│ │ │ │ ├── online.js
│ │ │ │ ├── operlog.js
│ │ │ │ └── server.js
│ │ │ ├── system
│ │ │ │ ├── app
│ │ │ │ │ └── AppRegisterApi.js
│ │ │ │ ├── config.js
│ │ │ │ ├── dept.js
│ │ │ │ ├── dict
│ │ │ │ │ ├── data.js
│ │ │ │ │ ├── type.js
│ │ │ │ │ └── type_bakup.js
│ │ │ │ ├── menu.js
│ │ │ │ ├── notice.js
│ │ │ │ ├── orgBuild
│ │ │ │ │ ├── CompanyManageApi.js
│ │ │ │ │ ├── DeptManageApi.js
│ │ │ │ │ ├── DutyManageApi.js
│ │ │ │ │ └── PersonManageApi.js
│ │ │ │ ├── post.js
│ │ │ │ ├── role.js
│ │ │ │ ├── role
│ │ │ │ │ ├── ButtonMaintainApi.js
│ │ │ │ │ ├── MenuManagementApi.js
│ │ │ │ │ ├── PermissionManageApi.js
│ │ │ │ │ ├── ResourceManageApi.js
│ │ │ │ │ └── RoleManageApi.js
│ │ │ │ └── user.js
│ │ │ └── tool
│ │ │ │ └── gen.js
│ │ ├── assets
│ │ │ ├── 401_images
│ │ │ │ └── 401.gif
│ │ │ ├── 404_images
│ │ │ │ ├── 404.png
│ │ │ │ └── 404_cloud.png
│ │ │ ├── icons
│ │ │ │ ├── index.js
│ │ │ │ ├── svg
│ │ │ │ │ ├── 404.svg
│ │ │ │ │ ├── bug.svg
│ │ │ │ │ ├── build.svg
│ │ │ │ │ ├── button.svg
│ │ │ │ │ ├── cascader.svg
│ │ │ │ │ ├── chart.svg
│ │ │ │ │ ├── checkbox.svg
│ │ │ │ │ ├── clipboard.svg
│ │ │ │ │ ├── code.svg
│ │ │ │ │ ├── color.svg
│ │ │ │ │ ├── component.svg
│ │ │ │ │ ├── dashboard.svg
│ │ │ │ │ ├── date-range.svg
│ │ │ │ │ ├── date.svg
│ │ │ │ │ ├── dict.svg
│ │ │ │ │ ├── documentation.svg
│ │ │ │ │ ├── download.svg
│ │ │ │ │ ├── drag.svg
│ │ │ │ │ ├── druid.svg
│ │ │ │ │ ├── edit.svg
│ │ │ │ │ ├── education.svg
│ │ │ │ │ ├── email.svg
│ │ │ │ │ ├── example.svg
│ │ │ │ │ ├── excel.svg
│ │ │ │ │ ├── exit-fullscreen.svg
│ │ │ │ │ ├── eye-open.svg
│ │ │ │ │ ├── eye.svg
│ │ │ │ │ ├── form.svg
│ │ │ │ │ ├── fullscreen.svg
│ │ │ │ │ ├── github.svg
│ │ │ │ │ ├── guide.svg
│ │ │ │ │ ├── icon.svg
│ │ │ │ │ ├── input.svg
│ │ │ │ │ ├── international.svg
│ │ │ │ │ ├── job.svg
│ │ │ │ │ ├── language.svg
│ │ │ │ │ ├── link.svg
│ │ │ │ │ ├── list.svg
│ │ │ │ │ ├── lock.svg
│ │ │ │ │ ├── log.svg
│ │ │ │ │ ├── logininfor.svg
│ │ │ │ │ ├── message.svg
│ │ │ │ │ ├── money.svg
│ │ │ │ │ ├── monitor.svg
│ │ │ │ │ ├── nested.svg
│ │ │ │ │ ├── number.svg
│ │ │ │ │ ├── online.svg
│ │ │ │ │ ├── password.svg
│ │ │ │ │ ├── pdf.svg
│ │ │ │ │ ├── people.svg
│ │ │ │ │ ├── peoples.svg
│ │ │ │ │ ├── phone.svg
│ │ │ │ │ ├── post.svg
│ │ │ │ │ ├── qq.svg
│ │ │ │ │ ├── question.svg
│ │ │ │ │ ├── radio.svg
│ │ │ │ │ ├── rate.svg
│ │ │ │ │ ├── redis.svg
│ │ │ │ │ ├── row.svg
│ │ │ │ │ ├── search.svg
│ │ │ │ │ ├── select.svg
│ │ │ │ │ ├── server.svg
│ │ │ │ │ ├── shopping.svg
│ │ │ │ │ ├── size.svg
│ │ │ │ │ ├── skill.svg
│ │ │ │ │ ├── slider.svg
│ │ │ │ │ ├── star.svg
│ │ │ │ │ ├── swagger.svg
│ │ │ │ │ ├── switch.svg
│ │ │ │ │ ├── system.svg
│ │ │ │ │ ├── tab.svg
│ │ │ │ │ ├── table.svg
│ │ │ │ │ ├── textarea.svg
│ │ │ │ │ ├── theme.svg
│ │ │ │ │ ├── time-range.svg
│ │ │ │ │ ├── time.svg
│ │ │ │ │ ├── tool.svg
│ │ │ │ │ ├── tree-table.svg
│ │ │ │ │ ├── tree.svg
│ │ │ │ │ ├── upload.svg
│ │ │ │ │ ├── user.svg
│ │ │ │ │ ├── validCode.svg
│ │ │ │ │ ├── wechat.svg
│ │ │ │ │ └── zip.svg
│ │ │ │ └── svgo.yml
│ │ │ ├── images
│ │ │ │ ├── dark.svg
│ │ │ │ ├── light.svg
│ │ │ │ ├── login-background.jpg
│ │ │ │ └── profile.jpg
│ │ │ ├── logo
│ │ │ │ └── logo.png
│ │ │ └── styles
│ │ │ │ ├── btn.scss
│ │ │ │ ├── element-ui.scss
│ │ │ │ ├── element-variables.scss
│ │ │ │ ├── index.scss
│ │ │ │ ├── mixin.scss
│ │ │ │ ├── ruoyi.scss
│ │ │ │ ├── sidebar.scss
│ │ │ │ ├── transition.scss
│ │ │ │ └── variables.scss
│ │ ├── components
│ │ │ ├── Breadcrumb
│ │ │ │ └── index.vue
│ │ │ ├── Editor
│ │ │ │ └── index.vue
│ │ │ ├── FileUpload
│ │ │ │ └── index.vue
│ │ │ ├── Hamburger
│ │ │ │ └── index.vue
│ │ │ ├── HeaderSearch
│ │ │ │ └── index.vue
│ │ │ ├── IconSelect
│ │ │ │ ├── index.vue
│ │ │ │ └── requireIcons.js
│ │ │ ├── ImageUpload
│ │ │ │ └── index.vue
│ │ │ ├── Pagination
│ │ │ │ └── index.vue
│ │ │ ├── PanThumb
│ │ │ │ └── index.vue
│ │ │ ├── ParentView
│ │ │ │ └── index.vue
│ │ │ ├── RightPanel
│ │ │ │ └── index.vue
│ │ │ ├── RightToolbar
│ │ │ │ └── index.vue
│ │ │ ├── RuoYi
│ │ │ │ ├── Doc
│ │ │ │ │ └── index.vue
│ │ │ │ └── Git
│ │ │ │ │ └── index.vue
│ │ │ ├── Screenfull
│ │ │ │ └── index.vue
│ │ │ ├── SizeSelect
│ │ │ │ └── index.vue
│ │ │ ├── SvgIcon
│ │ │ │ └── index.vue
│ │ │ ├── ThemePicker
│ │ │ │ └── index.vue
│ │ │ ├── TopNav
│ │ │ │ └── index.vue
│ │ │ ├── base-select
│ │ │ │ └── base-select.vue
│ │ │ ├── component.js
│ │ │ └── img-upload
│ │ │ │ └── img-upload.vue
│ │ ├── config
│ │ │ └── SystemConfig.js
│ │ ├── directive
│ │ │ └── permission
│ │ │ │ ├── hasPermi.js
│ │ │ │ ├── hasRole.js
│ │ │ │ └── index.js
│ │ ├── layout
│ │ │ ├── components
│ │ │ │ ├── AppMain.vue
│ │ │ │ ├── Navbar.vue
│ │ │ │ ├── Settings
│ │ │ │ │ └── index.vue
│ │ │ │ ├── Sidebar
│ │ │ │ │ ├── FixiOSBug.js
│ │ │ │ │ ├── Item.vue
│ │ │ │ │ ├── Link.vue
│ │ │ │ │ ├── Logo.vue
│ │ │ │ │ ├── SidebarItem.vue
│ │ │ │ │ └── index.vue
│ │ │ │ ├── TagsView
│ │ │ │ │ ├── ScrollPane.vue
│ │ │ │ │ └── index.vue
│ │ │ │ └── index.js
│ │ │ ├── index.vue
│ │ │ └── mixin
│ │ │ │ └── ResizeHandler.js
│ │ ├── main.js
│ │ ├── mixin
│ │ │ ├── index.js
│ │ │ └── turnPage.js
│ │ ├── permission.js
│ │ ├── router
│ │ │ └── index.js
│ │ ├── settings.js
│ │ ├── store
│ │ │ ├── getters.js
│ │ │ ├── index.js
│ │ │ └── modules
│ │ │ │ ├── app.js
│ │ │ │ ├── permission.js
│ │ │ │ ├── settings.js
│ │ │ │ ├── tagsView.js
│ │ │ │ └── user.js
│ │ ├── utils
│ │ │ ├── DataTypeConvert.js
│ │ │ ├── StorageHandler.js
│ │ │ ├── auth.js
│ │ │ ├── errorCode.js
│ │ │ ├── generator
│ │ │ │ ├── config.js
│ │ │ │ ├── css.js
│ │ │ │ ├── drawingDefalut.js
│ │ │ │ ├── html.js
│ │ │ │ ├── icon.json
│ │ │ │ ├── js.js
│ │ │ │ └── render.js
│ │ │ ├── index.js
│ │ │ ├── jsencrypt.js
│ │ │ ├── permission.js
│ │ │ ├── randomStr.js
│ │ │ ├── request.js
│ │ │ ├── ruoyi.js
│ │ │ ├── scroll-to.js
│ │ │ ├── validate.js
│ │ │ └── zipdownload.js
│ │ └── views
│ │ │ ├── auth
│ │ │ ├── resourceMaintain
│ │ │ │ ├── components
│ │ │ │ │ ├── resourceAddEdit.vue
│ │ │ │ │ └── resourceDetail.vue
│ │ │ │ └── resource_maintain_index.vue
│ │ │ ├── routingMaintenance
│ │ │ │ ├── components
│ │ │ │ │ ├── filter-detail.vue
│ │ │ │ │ ├── filter-plant-detail.vue
│ │ │ │ │ ├── routing-maintenance-index-add.vue
│ │ │ │ │ └── routing-maintenance-index-detail.vue
│ │ │ │ └── routing_maintenance_index.vue
│ │ │ ├── securityAudit
│ │ │ │ ├── godKeyPassword.vue
│ │ │ │ ├── login_log.vue
│ │ │ │ └── session_manage.vue
│ │ │ └── ssoApp
│ │ │ │ ├── client_manage.vue
│ │ │ │ └── components
│ │ │ │ ├── client_addEdit.vue
│ │ │ │ └── client_detail.vue
│ │ │ ├── components
│ │ │ └── icons
│ │ │ │ ├── element-icons.js
│ │ │ │ ├── index.vue
│ │ │ │ └── svg-icons.js
│ │ │ ├── dashboard
│ │ │ ├── BarChart.vue
│ │ │ ├── LineChart.vue
│ │ │ ├── PanelGroup.vue
│ │ │ ├── PieChart.vue
│ │ │ ├── RaddarChart.vue
│ │ │ └── mixins
│ │ │ │ └── resize.js
│ │ │ ├── error
│ │ │ ├── 401.vue
│ │ │ └── 404.vue
│ │ │ ├── index.vue
│ │ │ ├── index_v1.vue
│ │ │ ├── login.vue
│ │ │ ├── monitor
│ │ │ ├── cache
│ │ │ │ └── index.vue
│ │ │ ├── druid
│ │ │ │ └── index.vue
│ │ │ ├── job
│ │ │ │ ├── index.vue
│ │ │ │ └── log.vue
│ │ │ ├── logininfor
│ │ │ │ └── index.vue
│ │ │ ├── online
│ │ │ │ └── index.vue
│ │ │ ├── operlog
│ │ │ │ └── index.vue
│ │ │ └── server
│ │ │ │ └── index.vue
│ │ │ ├── redirect.vue
│ │ │ ├── system
│ │ │ ├── app
│ │ │ │ ├── components
│ │ │ │ │ ├── app_register_addEdit.vue
│ │ │ │ │ └── app_register_detail.vue
│ │ │ │ └── index.vue
│ │ │ ├── config
│ │ │ │ └── index.vue
│ │ │ ├── dict
│ │ │ │ ├── data.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── index_bakup.vue
│ │ │ ├── notice
│ │ │ │ └── index.vue
│ │ │ ├── orgBuild
│ │ │ │ ├── company_manage.vue
│ │ │ │ ├── components
│ │ │ │ │ ├── company_addEdit.vue
│ │ │ │ │ ├── company_detail.vue
│ │ │ │ │ ├── config_app.vue
│ │ │ │ │ ├── config_role.vue
│ │ │ │ │ ├── dept_addEdit.vue
│ │ │ │ │ ├── dept_detail.vue
│ │ │ │ │ ├── duty_addEdit.vue
│ │ │ │ │ ├── duty_detail.vue
│ │ │ │ │ ├── person_addEdit.vue
│ │ │ │ │ └── person_detail.vue
│ │ │ │ ├── dept_manage.vue
│ │ │ │ ├── duty_manage.vue
│ │ │ │ └── person_manage.vue
│ │ │ ├── role
│ │ │ │ ├── components
│ │ │ │ │ ├── button_maintain.vue
│ │ │ │ │ ├── button_maintain_addEdit.vue
│ │ │ │ │ ├── distribut_permission.vue
│ │ │ │ │ ├── menu_management_addEdit.vue
│ │ │ │ │ ├── permission_bind_resource.vue
│ │ │ │ │ ├── permission_manage_add.vue
│ │ │ │ │ ├── permission_manage_detail.vue
│ │ │ │ │ ├── role_manage_addEdit.vue
│ │ │ │ │ └── role_manage_detail.vue
│ │ │ │ ├── menu_manage.vue
│ │ │ │ ├── permission_manage.vue
│ │ │ │ ├── resource_manage.vue
│ │ │ │ └── role_manage.vue
│ │ │ └── user
│ │ │ │ ├── index.vue
│ │ │ │ └── profile
│ │ │ │ ├── index.vue
│ │ │ │ ├── resetPwd.vue
│ │ │ │ ├── userAvatar.vue
│ │ │ │ └── userInfo.vue
│ │ │ └── tool
│ │ │ ├── gen
│ │ │ ├── basicInfoForm.vue
│ │ │ ├── editTable.vue
│ │ │ ├── genInfoForm.vue
│ │ │ ├── importTable.vue
│ │ │ └── index.vue
│ │ │ └── swagger
│ │ │ └── index.vue
│ └── vue.config.js
└── bbs-vue
│ ├── .editorconfig
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .prettierrc
│ ├── Dockerfile
│ ├── README.md
│ ├── app.html
│ ├── assets
│ ├── README.md
│ ├── images
│ │ ├── bg.gif
│ │ ├── logo.png
│ │ ├── logo364x364.png
│ │ ├── net.png
│ │ ├── new.png
│ │ ├── node.png
│ │ ├── recommend.png
│ │ └── recommend2.png
│ └── styles
│ │ ├── ad.scss
│ │ ├── article.scss
│ │ ├── comment.scss
│ │ ├── common.scss
│ │ ├── highlightjs.scss
│ │ ├── link.scss
│ │ ├── main.scss
│ │ ├── nav.scss
│ │ ├── topic-detail.scss
│ │ ├── topic-list.scss
│ │ ├── topic.scss
│ │ └── variable.scss
│ ├── common
│ ├── CommonHelper.js
│ └── UserHelper.js
│ ├── components
│ ├── ArticleList.vue
│ ├── AutoLoadMore.vue.bak
│ ├── Avatar.vue
│ ├── CheckIn.vue
│ ├── Comment.vue
│ ├── CommentInput.vue
│ ├── CommentList.vue
│ ├── CreateTopicBtn.vue
│ ├── FriendLinks.vue
│ ├── GithubLogin.vue
│ ├── ImageUpload.vue
│ ├── LoadMore.vue
│ ├── MarkdownEditor.vue
│ ├── MobileNav.vue
│ ├── MobileNodes.vue
│ ├── MobileSidebar.vue
│ ├── MsgNotice.vue
│ ├── MyFooter.vue
│ ├── MyNav.vue
│ ├── OscLogin.vue
│ ├── Overlay.vue
│ ├── Pagination.vue
│ ├── PcNav.vue
│ ├── ProjectList.vue
│ ├── QqLogin.vue
│ ├── README.md
│ ├── ScoreRank.vue
│ ├── SimpleEditor.vue
│ ├── SiteNotice.vue
│ ├── TagInput.vue
│ ├── TopicList.vue
│ ├── TopicManageMenu.vue
│ ├── TopicsNav.vue
│ ├── Upload.vue
│ ├── UserCenterSidebar.vue
│ ├── UserInfo.vue
│ └── UserProfile.vue
│ ├── jsconfig.json
│ ├── layouts
│ ├── README.md
│ ├── admin.vue
│ ├── default.vue
│ ├── empty.vue
│ ├── error.vue
│ ├── no-footer.vue
│ └── ucenter.vue
│ ├── middleware
│ ├── README.md
│ ├── authenticated.js
│ └── resetEnv.js
│ ├── nuxt.config.js
│ ├── package.json
│ ├── pages
│ ├── README.md
│ ├── about.vue
│ ├── admin
│ │ ├── articles
│ │ │ └── index.vue
│ │ ├── comments
│ │ │ └── index.vue
│ │ ├── components
│ │ │ └── UserInfo.vue
│ │ ├── index.vue
│ │ ├── links
│ │ │ └── index.vue
│ │ ├── operate-log
│ │ │ └── index.vue
│ │ ├── settings
│ │ │ └── index.vue
│ │ ├── tags
│ │ │ └── index.vue
│ │ ├── topics
│ │ │ ├── index.vue
│ │ │ └── nodes.vue
│ │ └── users
│ │ │ ├── index.vue
│ │ │ ├── score-log.vue
│ │ │ └── score.vue
│ ├── article
│ │ ├── _id.vue
│ │ ├── create.vue
│ │ ├── edit
│ │ │ └── _id.vue
│ │ └── redirect
│ │ │ └── _id.vue
│ ├── articles
│ │ ├── _tagId.vue
│ │ └── index.vue
│ ├── index.vue
│ ├── link
│ │ └── _id.vue
│ ├── links
│ │ └── _page.vue
│ ├── project
│ │ └── _id.vue
│ ├── projects
│ │ └── _page.vue
│ ├── redirect.vue
│ ├── search
│ │ └── index.vue
│ ├── tags
│ │ └── _page.vue
│ ├── topic
│ │ ├── _id.vue
│ │ ├── create.vue
│ │ └── edit
│ │ │ └── _id.vue
│ ├── topics
│ │ ├── index.vue
│ │ ├── node
│ │ │ ├── _nodeId.vue
│ │ │ ├── newest.vue
│ │ │ └── recommend.vue
│ │ └── tag
│ │ │ └── _tagId.vue
│ └── user
│ │ ├── _userId
│ │ └── index.vue
│ │ ├── email
│ │ └── verify.vue
│ │ ├── favorites.vue
│ │ ├── github
│ │ └── callback.vue
│ │ ├── messages.vue
│ │ ├── osc
│ │ └── callback.vue
│ │ ├── profile
│ │ └── index.vue
│ │ ├── qq
│ │ └── callback.vue
│ │ ├── scores.vue
│ │ ├── signin.vue
│ │ └── signup.vue
│ ├── plugins
│ ├── README.md
│ ├── axios.js
│ ├── bbs.js
│ ├── element-ui.js
│ ├── filters.js
│ ├── viewer.js
│ └── vue-lazyload.js
│ ├── start.sh
│ ├── static
│ ├── README.md
│ ├── ads.txt
│ ├── favicon.ico
│ └── robots.txt
│ ├── store
│ ├── README.md
│ ├── config.js
│ ├── env.js
│ ├── index.js
│ └── user.js
│ └── utils
│ └── stringToColor.js
├── app-biz
├── biemo-bbs
│ ├── biemo-bbs-api
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── bbs
│ │ │ └── api
│ │ │ ├── BArticleApi.java
│ │ │ ├── BCaptchaApi.java
│ │ │ ├── BCheckInApi.java
│ │ │ ├── BCommentApi.java
│ │ │ ├── BFavoriteApi.java
│ │ │ ├── BLinkApi.java
│ │ │ ├── BSysConfigApi.java
│ │ │ ├── BTagApi.java
│ │ │ ├── BTopicApi.java
│ │ │ ├── BUploadApi.java
│ │ │ ├── BUserApi.java
│ │ │ ├── BUserLikeApi.java
│ │ │ ├── OauthApi.java
│ │ │ └── vo
│ │ │ ├── BArticleVo.java
│ │ │ ├── BTopicVo.java
│ │ │ └── BUserVo.java
│ ├── biemo-bbs-app
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── biemo
│ │ │ │ └── cloud
│ │ │ │ └── bbs
│ │ │ │ ├── BiemoBbsApplication.java
│ │ │ │ ├── ServletInitializer.java
│ │ │ │ ├── config
│ │ │ │ ├── BiemoLoginContextConfig.java
│ │ │ │ ├── CommonDataConfig.java
│ │ │ │ └── SingleDataSourceConfig.java
│ │ │ │ ├── core
│ │ │ │ ├── annotation
│ │ │ │ │ └── ESMapping.java
│ │ │ │ ├── constant
│ │ │ │ │ ├── CatalogConstants.java
│ │ │ │ │ ├── ESBoolLogicConstants.java
│ │ │ │ │ ├── ESCompareWayConstants.java
│ │ │ │ │ ├── ESHierarchyConstants.java
│ │ │ │ │ ├── IndexConstants.java
│ │ │ │ │ └── QueryBuilderDefinitionConstants.java
│ │ │ │ ├── oauth
│ │ │ │ │ ├── OauthController.java
│ │ │ │ │ ├── oauth
│ │ │ │ │ │ ├── Oauth.java
│ │ │ │ │ │ ├── OauthBaidu.java
│ │ │ │ │ │ ├── OauthDouban.java
│ │ │ │ │ │ ├── OauthOsc.java
│ │ │ │ │ │ ├── OauthQQ.java
│ │ │ │ │ │ ├── OauthSina.java
│ │ │ │ │ │ └── OauthWeixin.java
│ │ │ │ │ └── util
│ │ │ │ │ │ ├── HttpKit.java
│ │ │ │ │ │ ├── HttpKitExt.java
│ │ │ │ │ │ └── TokenUtil.java
│ │ │ │ ├── search
│ │ │ │ │ ├── IndexQueryContext.java
│ │ │ │ │ ├── IndexSerializable.java
│ │ │ │ │ ├── impl
│ │ │ │ │ │ ├── AbstractIndex.java
│ │ │ │ │ │ ├── AbstractIndexQueryContext.java
│ │ │ │ │ │ └── TopicIndexQueryContext.java
│ │ │ │ │ └── utils
│ │ │ │ │ │ ├── IndexKeyUtils.java
│ │ │ │ │ │ └── IndexQueryContextUtils.java
│ │ │ │ └── upload
│ │ │ │ │ ├── UploadComponent.java
│ │ │ │ │ └── bean
│ │ │ │ │ └── UploadBean.java
│ │ │ │ ├── modular
│ │ │ │ ├── annotation
│ │ │ │ │ ├── Excel.java
│ │ │ │ │ ├── Excels.java
│ │ │ │ │ └── RequestLimit.java
│ │ │ │ ├── aop
│ │ │ │ │ └── RequestLimitAop.java
│ │ │ │ ├── consumer
│ │ │ │ │ ├── AuthServiceConsumer.java
│ │ │ │ │ ├── CustomServiceConsumer.java
│ │ │ │ │ ├── ResourceServiceConsumer.java
│ │ │ │ │ ├── SystemAppConsumer.java
│ │ │ │ │ └── SystemConsumer.java
│ │ │ │ ├── context
│ │ │ │ │ └── BiemoLoginContext.java
│ │ │ │ ├── controller
│ │ │ │ │ ├── BArticleController.java
│ │ │ │ │ ├── BCheckInController.java
│ │ │ │ │ ├── BLinkController.java
│ │ │ │ │ ├── BSysConfigController.java
│ │ │ │ │ ├── BTopicController.java
│ │ │ │ │ ├── BUserController.java
│ │ │ │ │ ├── BaseController.java
│ │ │ │ │ ├── CaptchaController.java
│ │ │ │ │ ├── CommentController.java
│ │ │ │ │ ├── FavoriteController.java
│ │ │ │ │ ├── IndexController.java
│ │ │ │ │ ├── TagController.java
│ │ │ │ │ ├── UploadController.java
│ │ │ │ │ └── UserLikeController.java
│ │ │ │ ├── domain
│ │ │ │ │ ├── BArticle.java
│ │ │ │ │ ├── BArticleTag.java
│ │ │ │ │ ├── BAttachment.java
│ │ │ │ │ ├── BCheckIn.java
│ │ │ │ │ ├── BComment.java
│ │ │ │ │ ├── BEmailCode.java
│ │ │ │ │ ├── BFavorite.java
│ │ │ │ │ ├── BLink.java
│ │ │ │ │ ├── BMessage.java
│ │ │ │ │ ├── BOperateLog.java
│ │ │ │ │ ├── BProject.java
│ │ │ │ │ ├── BSysConfig.java
│ │ │ │ │ ├── BTag.java
│ │ │ │ │ ├── BThirdAccount.java
│ │ │ │ │ ├── BTopic.java
│ │ │ │ │ ├── BTopicNode.java
│ │ │ │ │ ├── BTopicTag.java
│ │ │ │ │ ├── BUser.java
│ │ │ │ │ ├── BUserLike.java
│ │ │ │ │ ├── BUserScoreLog.java
│ │ │ │ │ ├── BUserToken.java
│ │ │ │ │ ├── BaseEntity.java
│ │ │ │ │ ├── event
│ │ │ │ │ │ └── TopicSaveEvent.java
│ │ │ │ │ └── response
│ │ │ │ │ │ ├── BSysConfigResponse.java
│ │ │ │ │ │ └── BTopicResponse.java
│ │ │ │ ├── mapper
│ │ │ │ │ ├── BArticleMapper.java
│ │ │ │ │ ├── BArticleTagMapper.java
│ │ │ │ │ ├── BAttachmentMapper.java
│ │ │ │ │ ├── BCheckInMapper.java
│ │ │ │ │ ├── BCommentMapper.java
│ │ │ │ │ ├── BEmailCodeMapper.java
│ │ │ │ │ ├── BFavoriteMapper.java
│ │ │ │ │ ├── BLinkMapper.java
│ │ │ │ │ ├── BMessageMapper.java
│ │ │ │ │ ├── BOperateLogMapper.java
│ │ │ │ │ ├── BProjectMapper.java
│ │ │ │ │ ├── BSysConfigMapper.java
│ │ │ │ │ ├── BTagMapper.java
│ │ │ │ │ ├── BThirdAccountMapper.java
│ │ │ │ │ ├── BTopicMapper.java
│ │ │ │ │ ├── BTopicNodeMapper.java
│ │ │ │ │ ├── BTopicTagMapper.java
│ │ │ │ │ ├── BUserLikeMapper.java
│ │ │ │ │ ├── BUserMapper.java
│ │ │ │ │ ├── BUserScoreLogMapper.java
│ │ │ │ │ ├── BUserTokenMapper.java
│ │ │ │ │ └── mapping
│ │ │ │ │ │ ├── BArticleMapper.xml
│ │ │ │ │ │ ├── BArticleTagMapper.xml
│ │ │ │ │ │ ├── BAttachmentMapper.xml
│ │ │ │ │ │ ├── BCheckInMapper.xml
│ │ │ │ │ │ ├── BCommentMapper.xml
│ │ │ │ │ │ ├── BEmailCodeMapper.xml
│ │ │ │ │ │ ├── BFavoriteMapper.xml
│ │ │ │ │ │ ├── BLinkMapper.xml
│ │ │ │ │ │ ├── BMessageMapper.xml
│ │ │ │ │ │ ├── BOperateLogMapper.xml
│ │ │ │ │ │ ├── BProjectMapper.xml
│ │ │ │ │ │ ├── BSysConfigMapper.xml
│ │ │ │ │ │ ├── BTagMapper.xml
│ │ │ │ │ │ ├── BThirdAccountMapper.xml
│ │ │ │ │ │ ├── BTopicMapper.xml
│ │ │ │ │ │ ├── BTopicNodeMapper.xml
│ │ │ │ │ │ ├── BTopicTagMapper.xml
│ │ │ │ │ │ ├── BUserLikeMapper.xml
│ │ │ │ │ │ ├── BUserMapper.xml
│ │ │ │ │ │ ├── BUserScoreLogMapper.xml
│ │ │ │ │ │ └── BUserTokenMapper.xml
│ │ │ │ └── service
│ │ │ │ │ ├── IBArticleService.java
│ │ │ │ │ ├── IBArticleTagService.java
│ │ │ │ │ ├── IBAttachmentService.java
│ │ │ │ │ ├── IBCheckInService.java
│ │ │ │ │ ├── IBCommentService.java
│ │ │ │ │ ├── IBEmailCodeService.java
│ │ │ │ │ ├── IBFavoriteService.java
│ │ │ │ │ ├── IBLinkService.java
│ │ │ │ │ ├── IBMessageService.java
│ │ │ │ │ ├── IBOperateLogService.java
│ │ │ │ │ ├── IBProjectService.java
│ │ │ │ │ ├── IBSysConfigService.java
│ │ │ │ │ ├── IBTagService.java
│ │ │ │ │ ├── IBThirdAccountService.java
│ │ │ │ │ ├── IBTopicNodeService.java
│ │ │ │ │ ├── IBTopicService.java
│ │ │ │ │ ├── IBTopicTagService.java
│ │ │ │ │ ├── IBUserLikeService.java
│ │ │ │ │ ├── IBUserScoreLogService.java
│ │ │ │ │ ├── IBUserService.java
│ │ │ │ │ ├── IBUserTokenService.java
│ │ │ │ │ ├── IndexService.java
│ │ │ │ │ ├── SearcherService.java
│ │ │ │ │ └── impl
│ │ │ │ │ ├── AbstractIndex.java
│ │ │ │ │ ├── BArticleServiceImpl.java
│ │ │ │ │ ├── BArticleTagServiceImpl.java
│ │ │ │ │ ├── BAttachmentServiceImpl.java
│ │ │ │ │ ├── BCheckInServiceImpl.java
│ │ │ │ │ ├── BCommentServiceImpl.java
│ │ │ │ │ ├── BEmailCodeServiceImpl.java
│ │ │ │ │ ├── BFavoriteServiceImpl.java
│ │ │ │ │ ├── BLinkServiceImpl.java
│ │ │ │ │ ├── BMessageServiceImpl.java
│ │ │ │ │ ├── BOperateLogServiceImpl.java
│ │ │ │ │ ├── BProjectServiceImpl.java
│ │ │ │ │ ├── BSysConfigServiceImpl.java
│ │ │ │ │ ├── BTagServiceImpl.java
│ │ │ │ │ ├── BThirdAccountServiceImpl.java
│ │ │ │ │ ├── BTopicNodeServiceImpl.java
│ │ │ │ │ ├── BTopicServiceImpl.java
│ │ │ │ │ ├── BTopicTagServiceImpl.java
│ │ │ │ │ ├── BUserLikeServiceImpl.java
│ │ │ │ │ ├── BUserScoreLogServiceImpl.java
│ │ │ │ │ ├── BUserServiceImpl.java
│ │ │ │ │ ├── BUserTokenServiceImpl.java
│ │ │ │ │ └── TopicIndexServiceImpl.java
│ │ │ │ └── utils
│ │ │ │ ├── ControllerUtil.java
│ │ │ │ ├── MarkDown2HtmlUtils.java
│ │ │ │ ├── PathUtil.java
│ │ │ │ ├── QiniuUtil.java
│ │ │ │ ├── SystemUtil.java
│ │ │ │ └── aliyun
│ │ │ │ ├── Aliyun.java
│ │ │ │ └── AliyunUtil.java
│ │ │ └── resources
│ │ │ ├── bootstrap.yml
│ │ │ ├── logback-spring.xml
│ │ │ └── system.properties
│ └── pom.xml
└── pom.xml
├── biemo-auth
├── biemo-auth-api
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── biemo
│ │ └── cloud
│ │ └── auth
│ │ └── api
│ │ ├── AuthService.java
│ │ ├── constants
│ │ └── AuthConstants.java
│ │ └── context
│ │ ├── LoginContext.java
│ │ └── LoginUser.java
├── biemo-auth-app
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── docker
│ │ │ └── docker-assembly.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── biemo
│ │ │ │ └── cloud
│ │ │ │ └── auth
│ │ │ │ ├── BiemoAuthorizeApplication.java
│ │ │ │ ├── ServletInitializer.java
│ │ │ │ ├── config
│ │ │ │ ├── AppConfig.java
│ │ │ │ ├── Ip2regionConfig.java
│ │ │ │ ├── MyCorsFilter.java
│ │ │ │ ├── SingleDataSourceConfig.java
│ │ │ │ ├── SwaggerConfig.java
│ │ │ │ └── beetl
│ │ │ │ │ ├── BeetlConfig.java
│ │ │ │ │ ├── GroupUtilContext.java
│ │ │ │ │ ├── format
│ │ │ │ │ ├── DateFormat.java
│ │ │ │ │ └── XSSDefenseFormat.java
│ │ │ │ │ └── prop
│ │ │ │ │ └── BeetlProperties.java
│ │ │ │ ├── core
│ │ │ │ ├── base
│ │ │ │ │ ├── BiemoErrorView.java
│ │ │ │ │ └── GlobalController.java
│ │ │ │ ├── error
│ │ │ │ │ └── AuthExceptionHandler.java
│ │ │ │ ├── menus
│ │ │ │ │ └── AuthManagerMenuController.java
│ │ │ │ ├── metadata
│ │ │ │ │ └── BiemoCustomMetaObjectHandler.java
│ │ │ │ └── secauth
│ │ │ │ │ ├── BaseAuth.java
│ │ │ │ │ └── impl
│ │ │ │ │ └── ExampleAuth.java
│ │ │ │ └── modular
│ │ │ │ ├── sso
│ │ │ │ ├── consumer
│ │ │ │ │ ├── SystemAppConsumer.java
│ │ │ │ │ └── SystemConsumer.java
│ │ │ │ ├── controller
│ │ │ │ │ ├── CodeController.java
│ │ │ │ │ ├── LoginController.java
│ │ │ │ │ └── SsoController.java
│ │ │ │ ├── entity
│ │ │ │ │ ├── AuthCertAccount.java
│ │ │ │ │ ├── AuthClient.java
│ │ │ │ │ └── AuthLoginLog.java
│ │ │ │ ├── enums
│ │ │ │ │ ├── ClientTypeEnum.java
│ │ │ │ │ ├── CodeEnum.java
│ │ │ │ │ ├── LoginTypeEnum.java
│ │ │ │ │ ├── OperationEnum.java
│ │ │ │ │ └── SsoLoginEnum.java
│ │ │ │ ├── factory
│ │ │ │ │ ├── AuthCodeFactory.java
│ │ │ │ │ └── RedirectUrlBuilder.java
│ │ │ │ ├── mapper
│ │ │ │ │ ├── AuthCertAccountMapper.java
│ │ │ │ │ ├── AuthClientMapper.java
│ │ │ │ │ ├── AuthLoginLogMapper.java
│ │ │ │ │ └── mapping
│ │ │ │ │ │ ├── AuthCertAccountMapper.xml
│ │ │ │ │ │ ├── AuthClientMapper.xml
│ │ │ │ │ │ └── AuthLoginLogMapper.xml
│ │ │ │ ├── model
│ │ │ │ │ ├── AccessCodeParam.java
│ │ │ │ │ ├── AuthCode.java
│ │ │ │ │ ├── AuthReq.java
│ │ │ │ │ ├── SessionInfo.java
│ │ │ │ │ ├── SsoLoginReq.java
│ │ │ │ │ ├── TokenInfo.java
│ │ │ │ │ ├── params
│ │ │ │ │ │ ├── AuthCertAccountParam.java
│ │ │ │ │ │ ├── AuthClientParam.java
│ │ │ │ │ │ └── AuthLoginLogParam.java
│ │ │ │ │ └── result
│ │ │ │ │ │ ├── AuthCertAccountResult.java
│ │ │ │ │ │ ├── AuthClientResult.java
│ │ │ │ │ │ └── AuthLoginLogResult.java
│ │ │ │ ├── provider
│ │ │ │ │ └── AuthServiceProvider.java
│ │ │ │ ├── security
│ │ │ │ │ ├── SecurityInteceptor.java
│ │ │ │ │ ├── exception
│ │ │ │ │ │ └── SecurityException.java
│ │ │ │ │ └── service
│ │ │ │ │ │ ├── BlackListService.java
│ │ │ │ │ │ └── ValidateCountService.java
│ │ │ │ ├── service
│ │ │ │ │ ├── AuthClientService.java
│ │ │ │ │ ├── AuthService.java
│ │ │ │ │ ├── GodKeyService.java
│ │ │ │ │ ├── LoginLogService.java
│ │ │ │ │ ├── SessionService.java
│ │ │ │ │ ├── SsoService.java
│ │ │ │ │ └── impl
│ │ │ │ │ │ ├── AuthClientServiceImpl.java
│ │ │ │ │ │ ├── AuthServiceImpl.java
│ │ │ │ │ │ ├── GodKeyServiceImpl.java
│ │ │ │ │ │ ├── LoginLogServiceImpl.java
│ │ │ │ │ │ ├── SessionServiceImpl.java
│ │ │ │ │ │ └── SsoServiceImpl.java
│ │ │ │ └── util
│ │ │ │ │ ├── CookieUtil.java
│ │ │ │ │ ├── HttpRequestUtils.java
│ │ │ │ │ ├── IpAddressService.java
│ │ │ │ │ ├── IpInfoUtils.java
│ │ │ │ │ ├── IpUtils.java
│ │ │ │ │ ├── JwtConstants.java
│ │ │ │ │ ├── JwtTokenUtil.java
│ │ │ │ │ ├── RSAUtil.java
│ │ │ │ │ ├── SaltUtil.java
│ │ │ │ │ ├── StringUtils.java
│ │ │ │ │ ├── UrlUtil.java
│ │ │ │ │ └── UserAgentUtils.java
│ │ │ │ └── ssomgr
│ │ │ │ ├── constants
│ │ │ │ └── GodKeyConst.java
│ │ │ │ ├── consumer
│ │ │ │ ├── CustomServiceConsumer.java
│ │ │ │ └── ResourceServiceConsumer.java
│ │ │ │ ├── controller
│ │ │ │ ├── AuthClientController.java
│ │ │ │ ├── AuthLoginLogController.java
│ │ │ │ ├── GatewayActuatorController.java
│ │ │ │ ├── GodKeyManagerController.java
│ │ │ │ ├── ResCacheController.java
│ │ │ │ └── SessionManagerController.java
│ │ │ │ ├── schedule
│ │ │ │ └── ScheduledJobs.java
│ │ │ │ ├── service
│ │ │ │ ├── GatewayActuatorService.java
│ │ │ │ ├── ResCacheService.java
│ │ │ │ ├── SessionManageService.java
│ │ │ │ └── impl
│ │ │ │ │ ├── GatewayActuatorServiceImpl.java
│ │ │ │ │ ├── ResCacheServiceImpl.java
│ │ │ │ │ └── SessionManageServiceImpl.java
│ │ │ │ └── util
│ │ │ │ ├── GatewayActuatorUtil.java
│ │ │ │ └── PageUtil.java
│ │ ├── resources
│ │ │ ├── META-INF
│ │ │ │ └── spring-devtools.properties
│ │ │ ├── beetl.properties
│ │ │ ├── bootstrap.yml
│ │ │ ├── ip2region.db
│ │ │ └── logback-spring.xml
│ │ └── webapp
│ │ │ ├── assets
│ │ │ ├── common
│ │ │ │ ├── css
│ │ │ │ │ ├── error-page.css
│ │ │ │ │ └── login.css
│ │ │ │ ├── images
│ │ │ │ │ ├── bg_login2.svg
│ │ │ │ │ ├── favicon.ico
│ │ │ │ │ ├── head.png
│ │ │ │ │ ├── ic_403.svg
│ │ │ │ │ ├── ic_404.svg
│ │ │ │ │ ├── ic_500.svg
│ │ │ │ │ ├── img_msg_db.svg
│ │ │ │ │ ├── img_msg_notice.svg
│ │ │ │ │ ├── img_msg_pri.svg
│ │ │ │ │ ├── logo.png
│ │ │ │ │ ├── message.png
│ │ │ │ │ └── welcome.png
│ │ │ │ ├── js
│ │ │ │ │ └── common.js
│ │ │ │ ├── layui
│ │ │ │ │ ├── css
│ │ │ │ │ │ ├── layui.css
│ │ │ │ │ │ ├── layui.mobile.css
│ │ │ │ │ │ └── modules
│ │ │ │ │ │ │ ├── code.css
│ │ │ │ │ │ │ ├── laydate
│ │ │ │ │ │ │ └── default
│ │ │ │ │ │ │ │ └── laydate.css
│ │ │ │ │ │ │ └── layer
│ │ │ │ │ │ │ └── default
│ │ │ │ │ │ │ ├── icon-ext.png
│ │ │ │ │ │ │ ├── icon.png
│ │ │ │ │ │ │ ├── layer.css
│ │ │ │ │ │ │ ├── loading-0.gif
│ │ │ │ │ │ │ ├── loading-1.gif
│ │ │ │ │ │ │ └── loading-2.gif
│ │ │ │ │ ├── font
│ │ │ │ │ │ ├── iconfont.eot
│ │ │ │ │ │ ├── iconfont.svg
│ │ │ │ │ │ ├── iconfont.ttf
│ │ │ │ │ │ └── iconfont.woff
│ │ │ │ │ ├── images
│ │ │ │ │ │ └── face
│ │ │ │ │ │ │ ├── 0.gif
│ │ │ │ │ │ │ ├── 1.gif
│ │ │ │ │ │ │ ├── 10.gif
│ │ │ │ │ │ │ ├── 11.gif
│ │ │ │ │ │ │ ├── 12.gif
│ │ │ │ │ │ │ ├── 13.gif
│ │ │ │ │ │ │ ├── 14.gif
│ │ │ │ │ │ │ ├── 15.gif
│ │ │ │ │ │ │ ├── 16.gif
│ │ │ │ │ │ │ ├── 17.gif
│ │ │ │ │ │ │ ├── 18.gif
│ │ │ │ │ │ │ ├── 19.gif
│ │ │ │ │ │ │ ├── 2.gif
│ │ │ │ │ │ │ ├── 20.gif
│ │ │ │ │ │ │ ├── 21.gif
│ │ │ │ │ │ │ ├── 22.gif
│ │ │ │ │ │ │ ├── 23.gif
│ │ │ │ │ │ │ ├── 24.gif
│ │ │ │ │ │ │ ├── 25.gif
│ │ │ │ │ │ │ ├── 26.gif
│ │ │ │ │ │ │ ├── 27.gif
│ │ │ │ │ │ │ ├── 28.gif
│ │ │ │ │ │ │ ├── 29.gif
│ │ │ │ │ │ │ ├── 3.gif
│ │ │ │ │ │ │ ├── 30.gif
│ │ │ │ │ │ │ ├── 31.gif
│ │ │ │ │ │ │ ├── 32.gif
│ │ │ │ │ │ │ ├── 33.gif
│ │ │ │ │ │ │ ├── 34.gif
│ │ │ │ │ │ │ ├── 35.gif
│ │ │ │ │ │ │ ├── 36.gif
│ │ │ │ │ │ │ ├── 37.gif
│ │ │ │ │ │ │ ├── 38.gif
│ │ │ │ │ │ │ ├── 39.gif
│ │ │ │ │ │ │ ├── 4.gif
│ │ │ │ │ │ │ ├── 40.gif
│ │ │ │ │ │ │ ├── 41.gif
│ │ │ │ │ │ │ ├── 42.gif
│ │ │ │ │ │ │ ├── 43.gif
│ │ │ │ │ │ │ ├── 44.gif
│ │ │ │ │ │ │ ├── 45.gif
│ │ │ │ │ │ │ ├── 46.gif
│ │ │ │ │ │ │ ├── 47.gif
│ │ │ │ │ │ │ ├── 48.gif
│ │ │ │ │ │ │ ├── 49.gif
│ │ │ │ │ │ │ ├── 5.gif
│ │ │ │ │ │ │ ├── 50.gif
│ │ │ │ │ │ │ ├── 51.gif
│ │ │ │ │ │ │ ├── 52.gif
│ │ │ │ │ │ │ ├── 53.gif
│ │ │ │ │ │ │ ├── 54.gif
│ │ │ │ │ │ │ ├── 55.gif
│ │ │ │ │ │ │ ├── 56.gif
│ │ │ │ │ │ │ ├── 57.gif
│ │ │ │ │ │ │ ├── 58.gif
│ │ │ │ │ │ │ ├── 59.gif
│ │ │ │ │ │ │ ├── 6.gif
│ │ │ │ │ │ │ ├── 60.gif
│ │ │ │ │ │ │ ├── 61.gif
│ │ │ │ │ │ │ ├── 62.gif
│ │ │ │ │ │ │ ├── 63.gif
│ │ │ │ │ │ │ ├── 64.gif
│ │ │ │ │ │ │ ├── 65.gif
│ │ │ │ │ │ │ ├── 66.gif
│ │ │ │ │ │ │ ├── 67.gif
│ │ │ │ │ │ │ ├── 68.gif
│ │ │ │ │ │ │ ├── 69.gif
│ │ │ │ │ │ │ ├── 7.gif
│ │ │ │ │ │ │ ├── 70.gif
│ │ │ │ │ │ │ ├── 71.gif
│ │ │ │ │ │ │ ├── 8.gif
│ │ │ │ │ │ │ └── 9.gif
│ │ │ │ │ ├── lay
│ │ │ │ │ │ └── modules
│ │ │ │ │ │ │ ├── carousel.js
│ │ │ │ │ │ │ ├── code.js
│ │ │ │ │ │ │ ├── colorpicker.js
│ │ │ │ │ │ │ ├── element.js
│ │ │ │ │ │ │ ├── flow.js
│ │ │ │ │ │ │ ├── form.js
│ │ │ │ │ │ │ ├── jquery.js
│ │ │ │ │ │ │ ├── laydate.js
│ │ │ │ │ │ │ ├── layedit.js
│ │ │ │ │ │ │ ├── layer.js
│ │ │ │ │ │ │ ├── laypage.js
│ │ │ │ │ │ │ ├── laytpl.js
│ │ │ │ │ │ │ ├── mobile.js
│ │ │ │ │ │ │ ├── rate.js
│ │ │ │ │ │ │ ├── slider.js
│ │ │ │ │ │ │ ├── table.js
│ │ │ │ │ │ │ ├── tree.js
│ │ │ │ │ │ │ ├── upload.js
│ │ │ │ │ │ │ └── util.js
│ │ │ │ │ ├── layui.all.js
│ │ │ │ │ └── layui.js
│ │ │ │ ├── libs
│ │ │ │ │ ├── echarts
│ │ │ │ │ │ ├── echarts.min.js
│ │ │ │ │ │ └── echartsTheme.js
│ │ │ │ │ ├── jquery
│ │ │ │ │ │ ├── clipboard.min.js
│ │ │ │ │ │ └── jquery-3.2.1.min.js
│ │ │ │ │ ├── layui
│ │ │ │ │ │ ├── css
│ │ │ │ │ │ │ ├── layui.css
│ │ │ │ │ │ │ ├── layui.mobile.css
│ │ │ │ │ │ │ └── modules
│ │ │ │ │ │ │ │ ├── code.css
│ │ │ │ │ │ │ │ ├── laydate
│ │ │ │ │ │ │ │ └── default
│ │ │ │ │ │ │ │ │ └── laydate.css
│ │ │ │ │ │ │ │ └── layer
│ │ │ │ │ │ │ │ └── default
│ │ │ │ │ │ │ │ ├── icon-ext.png
│ │ │ │ │ │ │ │ ├── icon.png
│ │ │ │ │ │ │ │ ├── layer.css
│ │ │ │ │ │ │ │ ├── loading-0.gif
│ │ │ │ │ │ │ │ ├── loading-1.gif
│ │ │ │ │ │ │ │ └── loading-2.gif
│ │ │ │ │ │ ├── font
│ │ │ │ │ │ │ ├── iconfont.eot
│ │ │ │ │ │ │ ├── iconfont.svg
│ │ │ │ │ │ │ ├── iconfont.ttf
│ │ │ │ │ │ │ └── iconfont.woff
│ │ │ │ │ │ ├── images
│ │ │ │ │ │ │ └── face
│ │ │ │ │ │ │ │ ├── 0.gif
│ │ │ │ │ │ │ │ ├── 1.gif
│ │ │ │ │ │ │ │ ├── 10.gif
│ │ │ │ │ │ │ │ ├── 11.gif
│ │ │ │ │ │ │ │ ├── 12.gif
│ │ │ │ │ │ │ │ ├── 13.gif
│ │ │ │ │ │ │ │ ├── 14.gif
│ │ │ │ │ │ │ │ ├── 15.gif
│ │ │ │ │ │ │ │ ├── 16.gif
│ │ │ │ │ │ │ │ ├── 17.gif
│ │ │ │ │ │ │ │ ├── 18.gif
│ │ │ │ │ │ │ │ ├── 19.gif
│ │ │ │ │ │ │ │ ├── 2.gif
│ │ │ │ │ │ │ │ ├── 20.gif
│ │ │ │ │ │ │ │ ├── 21.gif
│ │ │ │ │ │ │ │ ├── 22.gif
│ │ │ │ │ │ │ │ ├── 23.gif
│ │ │ │ │ │ │ │ ├── 24.gif
│ │ │ │ │ │ │ │ ├── 25.gif
│ │ │ │ │ │ │ │ ├── 26.gif
│ │ │ │ │ │ │ │ ├── 27.gif
│ │ │ │ │ │ │ │ ├── 28.gif
│ │ │ │ │ │ │ │ ├── 29.gif
│ │ │ │ │ │ │ │ ├── 3.gif
│ │ │ │ │ │ │ │ ├── 30.gif
│ │ │ │ │ │ │ │ ├── 31.gif
│ │ │ │ │ │ │ │ ├── 32.gif
│ │ │ │ │ │ │ │ ├── 33.gif
│ │ │ │ │ │ │ │ ├── 34.gif
│ │ │ │ │ │ │ │ ├── 35.gif
│ │ │ │ │ │ │ │ ├── 36.gif
│ │ │ │ │ │ │ │ ├── 37.gif
│ │ │ │ │ │ │ │ ├── 38.gif
│ │ │ │ │ │ │ │ ├── 39.gif
│ │ │ │ │ │ │ │ ├── 4.gif
│ │ │ │ │ │ │ │ ├── 40.gif
│ │ │ │ │ │ │ │ ├── 41.gif
│ │ │ │ │ │ │ │ ├── 42.gif
│ │ │ │ │ │ │ │ ├── 43.gif
│ │ │ │ │ │ │ │ ├── 44.gif
│ │ │ │ │ │ │ │ ├── 45.gif
│ │ │ │ │ │ │ │ ├── 46.gif
│ │ │ │ │ │ │ │ ├── 47.gif
│ │ │ │ │ │ │ │ ├── 48.gif
│ │ │ │ │ │ │ │ ├── 49.gif
│ │ │ │ │ │ │ │ ├── 5.gif
│ │ │ │ │ │ │ │ ├── 50.gif
│ │ │ │ │ │ │ │ ├── 51.gif
│ │ │ │ │ │ │ │ ├── 52.gif
│ │ │ │ │ │ │ │ ├── 53.gif
│ │ │ │ │ │ │ │ ├── 54.gif
│ │ │ │ │ │ │ │ ├── 55.gif
│ │ │ │ │ │ │ │ ├── 56.gif
│ │ │ │ │ │ │ │ ├── 57.gif
│ │ │ │ │ │ │ │ ├── 58.gif
│ │ │ │ │ │ │ │ ├── 59.gif
│ │ │ │ │ │ │ │ ├── 6.gif
│ │ │ │ │ │ │ │ ├── 60.gif
│ │ │ │ │ │ │ │ ├── 61.gif
│ │ │ │ │ │ │ │ ├── 62.gif
│ │ │ │ │ │ │ │ ├── 63.gif
│ │ │ │ │ │ │ │ ├── 64.gif
│ │ │ │ │ │ │ │ ├── 65.gif
│ │ │ │ │ │ │ │ ├── 66.gif
│ │ │ │ │ │ │ │ ├── 67.gif
│ │ │ │ │ │ │ │ ├── 68.gif
│ │ │ │ │ │ │ │ ├── 69.gif
│ │ │ │ │ │ │ │ ├── 7.gif
│ │ │ │ │ │ │ │ ├── 70.gif
│ │ │ │ │ │ │ │ ├── 71.gif
│ │ │ │ │ │ │ │ ├── 8.gif
│ │ │ │ │ │ │ │ └── 9.gif
│ │ │ │ │ │ ├── lay
│ │ │ │ │ │ │ └── modules
│ │ │ │ │ │ │ │ ├── carousel.js
│ │ │ │ │ │ │ │ ├── code.js
│ │ │ │ │ │ │ │ ├── colorpicker.js
│ │ │ │ │ │ │ │ ├── element.js
│ │ │ │ │ │ │ │ ├── flow.js
│ │ │ │ │ │ │ │ ├── form.js
│ │ │ │ │ │ │ │ ├── jquery.js
│ │ │ │ │ │ │ │ ├── laydate.js
│ │ │ │ │ │ │ │ ├── layedit.js
│ │ │ │ │ │ │ │ ├── layer.js
│ │ │ │ │ │ │ │ ├── laypage.js
│ │ │ │ │ │ │ │ ├── laytpl.js
│ │ │ │ │ │ │ │ ├── mobile.js
│ │ │ │ │ │ │ │ ├── rate.js
│ │ │ │ │ │ │ │ ├── slider.js
│ │ │ │ │ │ │ │ ├── table.js
│ │ │ │ │ │ │ │ ├── tree.js
│ │ │ │ │ │ │ │ ├── upload.js
│ │ │ │ │ │ │ │ └── util.js
│ │ │ │ │ │ ├── layui.all.js
│ │ │ │ │ │ └── layui.js
│ │ │ │ │ └── zTree
│ │ │ │ │ │ ├── css
│ │ │ │ │ │ ├── metroStyle
│ │ │ │ │ │ │ ├── img
│ │ │ │ │ │ │ │ ├── line_conn.png
│ │ │ │ │ │ │ │ ├── loading.gif
│ │ │ │ │ │ │ │ ├── metro.gif
│ │ │ │ │ │ │ │ └── metro.png
│ │ │ │ │ │ │ └── metroStyle.css
│ │ │ │ │ │ └── zTreeStyle
│ │ │ │ │ │ │ ├── img
│ │ │ │ │ │ │ ├── line_conn.gif
│ │ │ │ │ │ │ ├── loading.gif
│ │ │ │ │ │ │ ├── zTreeStandard.gif
│ │ │ │ │ │ │ └── zTreeStandard.png
│ │ │ │ │ │ │ └── zTreeStyle.css
│ │ │ │ │ │ └── js
│ │ │ │ │ │ └── jquery.ztree.all-3.5.min.js
│ │ │ │ ├── module
│ │ │ │ │ ├── admin.css
│ │ │ │ │ ├── admin.js
│ │ │ │ │ ├── city-picker
│ │ │ │ │ │ ├── city-picker.css
│ │ │ │ │ │ ├── city-picker.data.js
│ │ │ │ │ │ ├── city-picker.js
│ │ │ │ │ │ └── drop-arrow.png
│ │ │ │ │ ├── contextMenu.js
│ │ │ │ │ ├── dropdown
│ │ │ │ │ │ ├── dropdown.css
│ │ │ │ │ │ └── dropdown.js
│ │ │ │ │ ├── dtree
│ │ │ │ │ │ ├── dtree.css
│ │ │ │ │ │ ├── dtree.js
│ │ │ │ │ │ └── font
│ │ │ │ │ │ │ ├── dtreefont.css
│ │ │ │ │ │ │ ├── dtreefont.eot
│ │ │ │ │ │ │ ├── dtreefont.svg
│ │ │ │ │ │ │ ├── dtreefont.ttf
│ │ │ │ │ │ │ ├── dtreefont.woff
│ │ │ │ │ │ │ └── icons.json
│ │ │ │ │ ├── formSelects
│ │ │ │ │ │ ├── formSelects-v4.css
│ │ │ │ │ │ ├── formSelects-v4.js
│ │ │ │ │ │ └── formSelects-v4.min.js
│ │ │ │ │ ├── img
│ │ │ │ │ │ ├── ic_loading.gif
│ │ │ │ │ │ ├── icon_date.png
│ │ │ │ │ │ └── icon_search.png
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── notice
│ │ │ │ │ │ ├── notice.css
│ │ │ │ │ │ └── notice.js
│ │ │ │ │ ├── printer.js
│ │ │ │ │ ├── step-lay
│ │ │ │ │ │ ├── step.css
│ │ │ │ │ │ └── step.js
│ │ │ │ │ ├── tableSelect
│ │ │ │ │ │ └── tableSelect.js
│ │ │ │ │ ├── theme
│ │ │ │ │ │ ├── admin.css
│ │ │ │ │ │ ├── img
│ │ │ │ │ │ │ ├── theme-admin.png
│ │ │ │ │ │ │ ├── theme-black.png
│ │ │ │ │ │ │ ├── theme-blue.png
│ │ │ │ │ │ │ ├── theme-cyan.png
│ │ │ │ │ │ │ ├── theme-green.png
│ │ │ │ │ │ │ ├── theme-pink.png
│ │ │ │ │ │ │ ├── theme-purple-white.png
│ │ │ │ │ │ │ ├── theme-purple.png
│ │ │ │ │ │ │ ├── theme-red-white.png
│ │ │ │ │ │ │ ├── theme-red.png
│ │ │ │ │ │ │ ├── theme-white.png
│ │ │ │ │ │ │ └── theme-yellow.png
│ │ │ │ │ │ ├── theme-black.css
│ │ │ │ │ │ ├── theme-blue.css
│ │ │ │ │ │ ├── theme-cyan.css
│ │ │ │ │ │ ├── theme-green.css
│ │ │ │ │ │ ├── theme-pink.css
│ │ │ │ │ │ ├── theme-purple-white.css
│ │ │ │ │ │ ├── theme-purple.css
│ │ │ │ │ │ ├── theme-red-white.css
│ │ │ │ │ │ ├── theme-red.css
│ │ │ │ │ │ ├── theme-white.css
│ │ │ │ │ │ └── theme-yellow.css
│ │ │ │ │ └── treetable-lay
│ │ │ │ │ │ ├── treetable.css
│ │ │ │ │ │ └── treetable.js
│ │ │ │ ├── plugins
│ │ │ │ │ ├── jquery
│ │ │ │ │ │ ├── clipboard.min.js
│ │ │ │ │ │ └── jquery-3.2.1.min.js
│ │ │ │ │ └── ztree
│ │ │ │ │ │ ├── img
│ │ │ │ │ │ ├── group.png
│ │ │ │ │ │ ├── line_conn.gif
│ │ │ │ │ │ ├── loading.gif
│ │ │ │ │ │ ├── single.png
│ │ │ │ │ │ ├── zTreeStandard.gif
│ │ │ │ │ │ └── zTreeStandard.png
│ │ │ │ │ │ ├── jquery.ztree.all.min.js
│ │ │ │ │ │ └── zTreeStyle.css
│ │ │ │ └── tip.md
│ │ │ └── expand
│ │ │ │ ├── css
│ │ │ │ └── style.css
│ │ │ │ ├── images
│ │ │ │ ├── favicon.ico
│ │ │ │ └── logo.png
│ │ │ │ ├── module
│ │ │ │ ├── ax
│ │ │ │ │ └── ax.js
│ │ │ │ └── selectPlus
│ │ │ │ │ └── selectPlus.js
│ │ │ │ └── plugins
│ │ │ │ └── jquery
│ │ │ │ ├── clipboard.min.js
│ │ │ │ └── jquery-3.2.1.min.js
│ │ │ └── pages
│ │ │ ├── 404.html
│ │ │ ├── common
│ │ │ ├── _container.html
│ │ │ └── loading.html
│ │ │ └── sps
│ │ │ ├── login.html
│ │ │ └── logout.html
│ │ └── test
│ │ └── java
│ │ └── cn
│ │ └── stylefeng
│ │ └── guns
│ │ └── cloud
│ │ └── auth
│ │ └── ScaServerApplicationTests.java
└── pom.xml
├── biemo-biz
├── LICENSE
├── modular-dict
│ ├── biz-support-dict-api
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── biz
│ │ │ └── dict
│ │ │ └── api
│ │ │ ├── DictApi.java
│ │ │ ├── DictTypeApi.java
│ │ │ ├── entity
│ │ │ ├── Dict.java
│ │ │ └── DictType.java
│ │ │ └── model
│ │ │ ├── DictInfo.java
│ │ │ ├── DictTypeInfo.java
│ │ │ └── TreeDictInfo.java
│ ├── biz-support-dict
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── biemo
│ │ │ │ └── cloud
│ │ │ │ └── biz
│ │ │ │ └── dict
│ │ │ │ ├── config
│ │ │ │ └── DictAutoConfiguration.java
│ │ │ │ ├── core
│ │ │ │ ├── db
│ │ │ │ │ ├── DictInitializer.java
│ │ │ │ │ └── DictTypeInitializer.java
│ │ │ │ ├── enums
│ │ │ │ │ └── DictTypeEnum.java
│ │ │ │ └── exception
│ │ │ │ │ └── DictExceptionEnum.java
│ │ │ │ └── modular
│ │ │ │ ├── controller
│ │ │ │ ├── DictController.java
│ │ │ │ └── DictTypeController.java
│ │ │ │ ├── mapper
│ │ │ │ ├── DictMapper.java
│ │ │ │ ├── DictTypeMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ ├── DictMapper.xml
│ │ │ │ │ └── DictTypeMapper.xml
│ │ │ │ ├── provider
│ │ │ │ ├── DictServiceProvider.java
│ │ │ │ └── DictTypeServiceProvider.java
│ │ │ │ └── service
│ │ │ │ ├── DictService.java
│ │ │ │ └── DictTypeService.java
│ │ │ └── resources
│ │ │ └── META-INF
│ │ │ └── spring.factories
│ └── pom.xml
├── modular-file
│ ├── biz-support-file-api
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── biz
│ │ │ └── file
│ │ │ └── api
│ │ │ ├── FileApi.java
│ │ │ ├── entity
│ │ │ └── Fileinfo.java
│ │ │ ├── exception
│ │ │ └── FileApiServiceException.java
│ │ │ └── model
│ │ │ └── FileByteInfo.java
│ ├── biz-support-file
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── biemo
│ │ │ │ └── cloud
│ │ │ │ └── biz
│ │ │ │ └── file
│ │ │ │ ├── config
│ │ │ │ ├── FileAutoConfiguration.java
│ │ │ │ └── properties
│ │ │ │ │ └── OssProperteis.java
│ │ │ │ ├── core
│ │ │ │ ├── db
│ │ │ │ │ └── FileInitializer.java
│ │ │ │ ├── exceptions
│ │ │ │ │ └── FileExceptionEnum.java
│ │ │ │ ├── storage
│ │ │ │ │ ├── FileOperator.java
│ │ │ │ │ └── oss
│ │ │ │ │ │ └── OssFileOperator.java
│ │ │ │ └── util
│ │ │ │ │ └── FileUtil.java
│ │ │ │ └── modular
│ │ │ │ ├── controller
│ │ │ │ ├── FileController.java
│ │ │ │ └── FileManagerController.java
│ │ │ │ ├── factory
│ │ │ │ └── FileFactory.java
│ │ │ │ ├── mapper
│ │ │ │ ├── FileinfoMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ └── FileinfoMapper.xml
│ │ │ │ ├── provider
│ │ │ │ └── FileinfoServiceProvider.java
│ │ │ │ └── service
│ │ │ │ └── FileinfoService.java
│ │ │ └── resources
│ │ │ └── META-INF
│ │ │ └── spring.factories
│ └── pom.xml
├── modular-log
│ ├── biz-support-log-api
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── biz
│ │ │ └── log
│ │ │ └── api
│ │ │ ├── LogApi.java
│ │ │ └── entity
│ │ │ ├── CommonLog.java
│ │ │ └── TraceLog.java
│ ├── biz-support-log
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── com
│ │ │ │ └── biemo
│ │ │ │ └── cloud
│ │ │ │ └── biz
│ │ │ │ └── log
│ │ │ │ ├── config
│ │ │ │ └── LogAutoConfiguration.java
│ │ │ │ ├── core
│ │ │ │ ├── db
│ │ │ │ │ ├── CommonLogInitializer.java
│ │ │ │ │ └── TraceLogInitializer.java
│ │ │ │ ├── listener
│ │ │ │ │ └── LogMessageListener.java
│ │ │ │ └── serilizer
│ │ │ │ │ └── FastjsonKafkaDeserializer.java
│ │ │ │ └── modular
│ │ │ │ ├── controller
│ │ │ │ └── LogController.java
│ │ │ │ ├── factory
│ │ │ │ ├── CommonLogFactory.java
│ │ │ │ └── TraceLogFactory.java
│ │ │ │ ├── mapper
│ │ │ │ ├── CommonLogMapper.java
│ │ │ │ ├── TraceLogMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ ├── CommonLogMapper.xml
│ │ │ │ │ └── TraceLogMapper.xml
│ │ │ │ ├── model
│ │ │ │ ├── CommonLogCondition.java
│ │ │ │ ├── CommonLogParams.java
│ │ │ │ ├── TraceLogCondition.java
│ │ │ │ └── TraceLogParams.java
│ │ │ │ ├── provider
│ │ │ │ └── LogServiceProvider.java
│ │ │ │ └── service
│ │ │ │ ├── CommonLogService.java
│ │ │ │ └── TraceLogService.java
│ │ │ └── resources
│ │ │ └── META-INF
│ │ │ └── spring.factories
│ └── pom.xml
└── pom.xml
├── biemo-gateway
├── pom.xml
└── src
│ └── main
│ ├── docker
│ └── docker-assembly.xml
│ ├── java
│ ├── com
│ │ └── biemo
│ │ │ └── cloud
│ │ │ └── gateway
│ │ │ ├── BiemoGatewayApplication.java
│ │ │ ├── config
│ │ │ ├── ContextConfig.java
│ │ │ ├── FastjsonConfig.java
│ │ │ ├── FilterConfig.java
│ │ │ ├── JwtConfig.java
│ │ │ ├── RibbonConfig.java
│ │ │ ├── properties
│ │ │ │ └── JwtProperties.java
│ │ │ └── redis
│ │ │ │ ├── FastJson2JsonRedisSerializer.java
│ │ │ │ └── RedisAutoConfiguration.java
│ │ │ ├── core
│ │ │ ├── consts
│ │ │ │ ├── GatewayConstants.java
│ │ │ │ └── GatewayFilterOrdered.java
│ │ │ ├── exception
│ │ │ │ ├── GatewayException.java
│ │ │ │ ├── aop
│ │ │ │ │ └── GatewayExceptionHandler.java
│ │ │ │ └── enums
│ │ │ │ │ └── GatewayExceptionEnum.java
│ │ │ ├── filters
│ │ │ │ ├── AddAuthHeaderFilter.java
│ │ │ │ ├── RequestNoFilter.java
│ │ │ │ └── factory
│ │ │ │ │ ├── JwtTokenGatewayFilterFactory.java
│ │ │ │ │ └── PermissionAuthGatewayFilterFactory.java
│ │ │ └── jwt
│ │ │ │ └── JwtTokenUtil.java
│ │ │ └── modular
│ │ │ ├── cache
│ │ │ ├── AuthServiceCache.java
│ │ │ └── ResourceServiceCache.java
│ │ │ └── validate
│ │ │ ├── BaseValidateService.java
│ │ │ └── impl
│ │ │ ├── PermissionValidateServiceImpl.java
│ │ │ └── TokenValidateService.java
│ └── gw
│ │ └── ribbon
│ │ └── RibbonConfiguration.java
│ └── resources
│ ├── bootstrap.yml
│ └── logback-spring.xml
├── biemo-kernel
├── .gitignore
├── LICENSE
├── common-lib
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ ├── com
│ │ └── biemo
│ │ │ └── cloud
│ │ │ └── libs
│ │ │ ├── config
│ │ │ ├── ChainConfig.java
│ │ │ ├── CommonContextConfig.java
│ │ │ ├── LoginContextConfig.java
│ │ │ ├── MetadataFillConfig.java
│ │ │ └── SentinelConfig.java
│ │ │ ├── error
│ │ │ ├── SystemErrorAttributes.java
│ │ │ ├── enums
│ │ │ │ ├── AuthExceptionEnum.java
│ │ │ │ └── BizExceptionEnum.java
│ │ │ └── exp
│ │ │ │ ├── AccessCodeException.java
│ │ │ │ └── SpsAuthException.java
│ │ │ ├── feign
│ │ │ ├── FeignErrorDecoder.java
│ │ │ └── FeignHeaderProcessInterceptor.java
│ │ │ ├── meta
│ │ │ └── BiemoCustomMetaObjectHandler.java
│ │ │ ├── mock
│ │ │ └── VirtualLoginUserAop.java
│ │ │ └── sentinel
│ │ │ ├── RestfulUrlCleaner.java
│ │ │ ├── SentinelBlockHandler.java
│ │ │ ├── SentinelOriginParser.java
│ │ │ └── enums
│ │ │ └── BlockExceptionEnums.java
│ │ └── ribbon
│ │ └── RibbonConfiguration.java
├── kernel-core
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── core
│ │ │ ├── aop
│ │ │ └── RequestDataAop.java
│ │ │ ├── base
│ │ │ ├── controller
│ │ │ │ ├── BaseController.java
│ │ │ │ └── GlobalErrorView.java
│ │ │ └── warpper
│ │ │ │ └── BaseControllerWrapper.java
│ │ │ ├── config
│ │ │ ├── AopAutoConfiguration.java
│ │ │ ├── CaptchaConfig.java
│ │ │ ├── DbInitializerAutoConfiguration.java
│ │ │ ├── FastjsonAutoConfiguration.java
│ │ │ ├── MybatisDataSourceAutoConfiguration.java
│ │ │ ├── MybatisPluginAutoConfiguration.java
│ │ │ ├── PropertiesAutoConfiguration.java
│ │ │ ├── RedisAutoConfiguration.java
│ │ │ ├── UtilAutoConfiguration.java
│ │ │ ├── cache
│ │ │ │ └── FastJson2JsonRedisSerializer.java
│ │ │ └── properties
│ │ │ │ └── DruidProperties.java
│ │ │ ├── constant
│ │ │ ├── Constants.java
│ │ │ ├── GenConstants.java
│ │ │ ├── HttpStatus.java
│ │ │ ├── ScheduleConstants.java
│ │ │ └── UserConstants.java
│ │ │ ├── context
│ │ │ ├── RequestDataHolder.java
│ │ │ └── RequestNoContext.java
│ │ │ ├── converter
│ │ │ ├── CustomFastJsonHttpMessageConverter.java
│ │ │ ├── RequestDataMessageConvert.java
│ │ │ └── RequestDataTypeMethodProcessor.java
│ │ │ ├── data
│ │ │ ├── BatchSqlExe.java
│ │ │ └── SqlExe.java
│ │ │ ├── datascope
│ │ │ ├── DataScope.java
│ │ │ └── DataScopeInterceptor.java
│ │ │ ├── db
│ │ │ ├── DbInitializer.java
│ │ │ └── listener
│ │ │ │ └── InitTableListener.java
│ │ │ ├── dbid
│ │ │ ├── BiemoDatabaseIdProvider.java
│ │ │ └── DBID.java
│ │ │ ├── exception
│ │ │ ├── BaseException.java
│ │ │ ├── CustomException.java
│ │ │ └── DefaultExceptionHandler.java
│ │ │ ├── lock
│ │ │ ├── DistributedLock.java
│ │ │ ├── impl
│ │ │ │ └── RedisLock.java
│ │ │ └── util
│ │ │ │ └── DistributedLockUtil.java
│ │ │ ├── metadata
│ │ │ └── CustomMetaObjectHandler.java
│ │ │ ├── mutidatasource
│ │ │ ├── DataSourceContextHolder.java
│ │ │ ├── DynamicDataSource.java
│ │ │ ├── annotion
│ │ │ │ └── DataSource.java
│ │ │ ├── aop
│ │ │ │ └── MultiSourceExAop.java
│ │ │ └── mybatis
│ │ │ │ └── OptionalSqlSessionTemplate.java
│ │ │ ├── page
│ │ │ ├── PageDomain.java
│ │ │ ├── PageFactory.java
│ │ │ ├── PageFieldNamesContainer.java
│ │ │ ├── TableDataInfo.java
│ │ │ └── TableSupport.java
│ │ │ ├── request
│ │ │ └── RequestData.java
│ │ │ ├── text
│ │ │ ├── CharsetKit.java
│ │ │ ├── Convert.java
│ │ │ └── StrFormatter.java
│ │ │ ├── treebuild
│ │ │ ├── DefaultTreeBuildFactory.java
│ │ │ └── abst
│ │ │ │ └── AbstractTreeBuildFactory.java
│ │ │ ├── util
│ │ │ ├── BeanUtils.java
│ │ │ ├── DateUtils.java
│ │ │ ├── FileUtil.java
│ │ │ ├── HttpContext.java
│ │ │ ├── HttpSessionContext.java
│ │ │ ├── MD5Util.java
│ │ │ ├── MessageUtils.java
│ │ │ ├── MvcAdapter.java
│ │ │ ├── NumUtil.java
│ │ │ ├── RenderUtil.java
│ │ │ ├── ServletUtils.java
│ │ │ ├── SnowflakeIdWorker.java
│ │ │ ├── SpringContextHolder.java
│ │ │ ├── SqlUtil.java
│ │ │ ├── StringUtils.java
│ │ │ ├── ToolUtil.java
│ │ │ ├── redis
│ │ │ │ └── RedisCache.java
│ │ │ └── uuid
│ │ │ │ ├── IdUtils.java
│ │ │ │ └── UUID.java
│ │ │ └── xss
│ │ │ ├── WafKit.java
│ │ │ ├── WafRequestWrapper.java
│ │ │ ├── XssFilter.java
│ │ │ └── XssHttpServletRequestWrapper.java
│ │ └── resources
│ │ ├── META-INF
│ │ └── spring.factories
│ │ └── default-config.properties
├── kernel-jwt
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── kernel
│ │ │ └── jwt
│ │ │ ├── config
│ │ │ └── JwtAutoConfiguration.java
│ │ │ ├── properties
│ │ │ └── JwtProperties.java
│ │ │ └── utils
│ │ │ └── JwtTokenUtil.java
│ │ └── resources
│ │ └── META-INF
│ │ └── spring.factories
├── kernel-logger
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── kernel
│ │ │ └── logger
│ │ │ ├── chain
│ │ │ ├── aop
│ │ │ │ ├── ChainOnConsumerAop.java
│ │ │ │ ├── ChainOnControllerAop.java
│ │ │ │ └── ChainOnProviderAop.java
│ │ │ ├── context
│ │ │ │ ├── ParentSpanIdHolder.java
│ │ │ │ ├── SpanIdContext.java
│ │ │ │ ├── SpanIdHolder.java
│ │ │ │ └── TraceIdHolder.java
│ │ │ └── enums
│ │ │ │ └── RpcPhaseEnum.java
│ │ │ ├── config
│ │ │ ├── LoggerAutoConfiguration.java
│ │ │ └── properties
│ │ │ │ └── LogProperties.java
│ │ │ ├── constants
│ │ │ └── KafkaConstants.java
│ │ │ ├── entity
│ │ │ ├── SendingCommonLog.java
│ │ │ ├── SendingTCLog.java
│ │ │ └── SendingTraceLog.java
│ │ │ ├── serizlizer
│ │ │ └── FastjsonKafkaSerializer.java
│ │ │ ├── service
│ │ │ ├── LogProducerService.java
│ │ │ └── impl
│ │ │ │ ├── LogProducerServiceImpl.java
│ │ │ │ └── Slf4jLogProducerServiceImpl.java
│ │ │ ├── sql
│ │ │ └── log
│ │ │ │ ├── SqlHolder.java
│ │ │ │ └── SqlLogFilter.java
│ │ │ └── util
│ │ │ ├── LogUtil.java
│ │ │ └── TraceUtil.java
│ │ └── resources
│ │ └── META-INF
│ │ └── spring.factories
├── kernel-model
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── biemo
│ │ └── cloud
│ │ └── kernel
│ │ └── model
│ │ ├── api
│ │ ├── ResourceService.java
│ │ └── model
│ │ │ ├── BaseLoginUser.java
│ │ │ ├── ReportResourceReq.java
│ │ │ ├── ResourceUrlReq.java
│ │ │ ├── TokenReq.java
│ │ │ └── UserResourceReq.java
│ │ ├── auth
│ │ ├── AbstractLoginUser.java
│ │ └── context
│ │ │ ├── AbstractLoginContext.java
│ │ │ └── LoginUserHolder.java
│ │ ├── constants
│ │ ├── AopSortConstants.java
│ │ ├── ConfigPrefixConstants.java
│ │ └── SystemConstants.java
│ │ ├── enums
│ │ ├── DeleteFlagEnum.java
│ │ ├── StatusEnum.java
│ │ └── YesOrNotEnum.java
│ │ ├── exception
│ │ ├── AbstractBaseExceptionEnum.java
│ │ ├── ApiServiceException.java
│ │ ├── RequestEmptyException.java
│ │ ├── ServiceException.java
│ │ └── enums
│ │ │ └── CoreExceptionEnum.java
│ │ ├── node
│ │ └── TreeNode.java
│ │ ├── page
│ │ ├── PageQuery.java
│ │ └── PageResult.java
│ │ ├── request
│ │ ├── AbstractBaseRequest.java
│ │ ├── BaseRequest.java
│ │ └── RmiRequestHolder.java
│ │ ├── resource
│ │ └── ResourceDefinition.java
│ │ ├── response
│ │ ├── ErrorResponseData.java
│ │ ├── ResponseData.java
│ │ └── SuccessResponseData.java
│ │ ├── tree
│ │ └── Tree.java
│ │ ├── util
│ │ └── ValidateUtil.java
│ │ └── validator
│ │ └── BaseValidatingParam.java
├── kernel-scanner
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── kernel
│ │ │ └── scanner
│ │ │ ├── config
│ │ │ ├── ScannerAutoConfiguration.java
│ │ │ └── properties
│ │ │ │ └── ScannerProperties.java
│ │ │ └── modular
│ │ │ ├── ApiResourceScaner.java
│ │ │ ├── annotation
│ │ │ ├── GetResource.java
│ │ │ └── PostResource.java
│ │ │ ├── factory
│ │ │ ├── ApiResourceFactory.java
│ │ │ └── DefaultApiResourceFactory.java
│ │ │ ├── flag
│ │ │ └── InitScanFlag.java
│ │ │ ├── holder
│ │ │ └── IpAddrHolder.java
│ │ │ ├── listener
│ │ │ └── ResourceReportListener.java
│ │ │ ├── model
│ │ │ └── ResourceTreeNode.java
│ │ │ ├── service
│ │ │ └── ResourceCollectService.java
│ │ │ ├── stereotype
│ │ │ └── ApiResource.java
│ │ │ └── util
│ │ │ └── AopTargetUtils.java
│ │ └── resources
│ │ └── META-INF
│ │ └── spring.factories
├── kernel-validator
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── kernel
│ │ │ └── validator
│ │ │ ├── aop
│ │ │ └── ParamValidateAop.java
│ │ │ ├── config
│ │ │ └── ValidatorAutoConfiguration.java
│ │ │ ├── stereotype
│ │ │ └── ParamValidator.java
│ │ │ └── util
│ │ │ └── CheckUtil.java
│ │ └── resources
│ │ └── META-INF
│ │ └── spring.factories
└── pom.xml
├── biemo-microservices
├── .gitignore
├── LICENSE
├── biemo-cloud-monitor
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── biemo
│ │ │ │ └── cloud
│ │ │ │ └── monitor
│ │ │ │ └── BiemoSpringBootAdminApplication.java
│ │ └── resources
│ │ │ ├── bootstrap.yml
│ │ │ └── logback-spring.xml
│ │ └── test
│ │ └── resources
│ │ └── application-local.yml
├── biemo-cloud-register
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── register
│ │ │ └── BiemoRegisterApplication.java
│ │ ├── resources
│ │ ├── bootstrap.yml
│ │ └── logback-spring.xml
│ │ └── test
│ │ └── resources
│ │ └── application-local.yml
├── biemo-config-server
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── BiemoConfigServerApplication.java
│ │ └── resources
│ │ ├── bootstrap.yml
│ │ └── logback-spring.xml
└── pom.xml
├── biemo-system
├── .gitignore
├── LICENSE
├── biemo-system-api
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── biemo
│ │ └── cloud
│ │ └── system
│ │ └── api
│ │ ├── BaseSystemApi.java
│ │ ├── ResourceServiceApi.java
│ │ ├── SystemAppApi.java
│ │ ├── TestApi.java
│ │ ├── exception
│ │ └── SystemServiceException.java
│ │ ├── keys
│ │ └── SysCacheKey.java
│ │ └── model
│ │ ├── BaseUserInfo.java
│ │ ├── UserInfo.java
│ │ ├── WorkflowRoleInfo.java
│ │ └── req
│ │ ├── UserByRoleReq.java
│ │ └── UserListReq.java
├── biemo-system-app
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── biemo
│ │ │ └── cloud
│ │ │ └── system
│ │ │ ├── BiemoSystemApplication.java
│ │ │ ├── config
│ │ │ ├── AppConfig.java
│ │ │ ├── SingleDataSourceConfig.java
│ │ │ └── SwaggerConfig.java
│ │ │ ├── core
│ │ │ ├── constant
│ │ │ │ └── SystemConstants.java
│ │ │ ├── enums
│ │ │ │ ├── MgrEnum.java
│ │ │ │ └── RoleTypeEnum.java
│ │ │ ├── error
│ │ │ │ └── SysExceptionEnum.java
│ │ │ ├── menus
│ │ │ │ ├── AuthorityMenuFlagController.java
│ │ │ │ ├── EntMenuFlagController.java
│ │ │ │ └── SystemMenuFlagController.java
│ │ │ ├── mq
│ │ │ │ ├── dto
│ │ │ │ │ └── MessageDto.java
│ │ │ │ └── listener
│ │ │ │ │ ├── RocketMqListener.java
│ │ │ │ │ └── RocketMqStreamListener.java
│ │ │ └── util
│ │ │ │ ├── CodeUtil.java
│ │ │ │ └── PinYin.java
│ │ │ └── modular
│ │ │ ├── dict
│ │ │ ├── controller
│ │ │ │ ├── DictController.java
│ │ │ │ └── DictTypeController.java
│ │ │ ├── entity
│ │ │ │ ├── SysDict.java
│ │ │ │ └── SysDictType.java
│ │ │ ├── enums
│ │ │ │ └── DictExceptionEnum.java
│ │ │ ├── mapper
│ │ │ │ ├── DictMapper.java
│ │ │ │ ├── DictTypeMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ ├── DictMapper.xml
│ │ │ │ │ └── DictTypeMapper.xml
│ │ │ ├── model
│ │ │ │ ├── DictInfo.java
│ │ │ │ ├── DictTypeInfo.java
│ │ │ │ └── TreeDictInfo.java
│ │ │ └── service
│ │ │ │ ├── DictService.java
│ │ │ │ ├── DictTypeService.java
│ │ │ │ └── impl
│ │ │ │ ├── DictServiceImpl.java
│ │ │ │ └── DictTypeServiceImpl.java
│ │ │ ├── ent
│ │ │ ├── common
│ │ │ │ └── EntConst.java
│ │ │ ├── consumer
│ │ │ │ └── FileConsumer.java
│ │ │ ├── controller
│ │ │ │ ├── EntCompAppController.java
│ │ │ │ ├── EntCompanyController.java
│ │ │ │ ├── EntDeptController.java
│ │ │ │ ├── EntDutyController.java
│ │ │ │ ├── EntUserAccountController.java
│ │ │ │ ├── EntUserController.java
│ │ │ │ └── EntUserDeptController.java
│ │ │ ├── entity
│ │ │ │ ├── EntCompApp.java
│ │ │ │ ├── EntCompany.java
│ │ │ │ ├── EntDept.java
│ │ │ │ ├── EntDuty.java
│ │ │ │ ├── EntUser.java
│ │ │ │ ├── EntUserAccount.java
│ │ │ │ └── EntUserDept.java
│ │ │ ├── enums
│ │ │ │ ├── EntException.java
│ │ │ │ └── EntNodeTypeEnum.java
│ │ │ ├── mapper
│ │ │ │ ├── EntCompAppMapper.java
│ │ │ │ ├── EntCompanyMapper.java
│ │ │ │ ├── EntDeptMapper.java
│ │ │ │ ├── EntDutyMapper.java
│ │ │ │ ├── EntUserAccountMapper.java
│ │ │ │ ├── EntUserDeptMapper.java
│ │ │ │ ├── EntUserMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ ├── EntCompAppMapper.xml
│ │ │ │ │ ├── EntCompanyMapper.xml
│ │ │ │ │ ├── EntDeptMapper.xml
│ │ │ │ │ ├── EntDutyMapper.xml
│ │ │ │ │ ├── EntUserAccountMapper.xml
│ │ │ │ │ ├── EntUserDeptMapper.xml
│ │ │ │ │ └── EntUserMapper.xml
│ │ │ ├── model
│ │ │ │ ├── params
│ │ │ │ │ ├── EntCompAppParam.java
│ │ │ │ │ ├── EntCompanyParam.java
│ │ │ │ │ ├── EntCurrentParam.java
│ │ │ │ │ ├── EntDeptParam.java
│ │ │ │ │ ├── EntDutyParam.java
│ │ │ │ │ ├── EntPasswordParam.java
│ │ │ │ │ ├── EntUserAccountParam.java
│ │ │ │ │ ├── EntUserDeptParam.java
│ │ │ │ │ ├── EntUserParam.java
│ │ │ │ │ ├── EntUserQueryParam.java
│ │ │ │ │ └── EntUserRoleParam.java
│ │ │ │ └── result
│ │ │ │ │ ├── EntCompAppResult.java
│ │ │ │ │ ├── EntCompanyResult.java
│ │ │ │ │ ├── EntDeptResult.java
│ │ │ │ │ ├── EntDutyResult.java
│ │ │ │ │ ├── EntUserAccountResult.java
│ │ │ │ │ ├── EntUserDeptResult.java
│ │ │ │ │ ├── EntUserQueryResult.java
│ │ │ │ │ └── EntUserResult.java
│ │ │ ├── service
│ │ │ │ ├── EntCompAppService.java
│ │ │ │ ├── EntCompanyService.java
│ │ │ │ ├── EntDeptService.java
│ │ │ │ ├── EntDutyService.java
│ │ │ │ ├── EntUserAccountService.java
│ │ │ │ ├── EntUserDeptService.java
│ │ │ │ ├── EntUserService.java
│ │ │ │ └── impl
│ │ │ │ │ ├── EntCompAppServiceImpl.java
│ │ │ │ │ ├── EntCompanyServiceImpl.java
│ │ │ │ │ ├── EntDeptServiceImpl.java
│ │ │ │ │ ├── EntDutyServiceImpl.java
│ │ │ │ │ ├── EntUserAccountServiceImpl.java
│ │ │ │ │ ├── EntUserDeptServiceImpl.java
│ │ │ │ │ └── EntUserServiceImpl.java
│ │ │ └── utils
│ │ │ │ ├── DbHelper.java
│ │ │ │ ├── EntUtil.java
│ │ │ │ └── SaltUtil.java
│ │ │ ├── mgr
│ │ │ ├── enums
│ │ │ │ └── ManagerInfoEnums.java
│ │ │ ├── factory
│ │ │ │ └── ManagerFactory.java
│ │ │ ├── flag
│ │ │ │ └── InitManagerFlag.java
│ │ │ ├── listener
│ │ │ │ └── InitManagerListener.java
│ │ │ ├── model
│ │ │ │ └── InitManagerParam.java
│ │ │ └── service
│ │ │ │ ├── InitManagerService.java
│ │ │ │ └── impl
│ │ │ │ └── InitManagerServiceImpl.java
│ │ │ ├── res
│ │ │ ├── cache
│ │ │ │ └── ResourceCache.java
│ │ │ ├── enums
│ │ │ │ └── AppExceptionEnum.java
│ │ │ └── provider
│ │ │ │ └── ResourceProvider.java
│ │ │ └── sys
│ │ │ ├── consumer
│ │ │ └── AuthServiceConsumer.java
│ │ │ ├── context
│ │ │ └── QueryContext.java
│ │ │ ├── controller
│ │ │ ├── AppController.java
│ │ │ ├── MenuController.java
│ │ │ ├── PermissionController.java
│ │ │ ├── ResourceController.java
│ │ │ ├── RoleController.java
│ │ │ ├── SysButtonController.java
│ │ │ └── SystemController.java
│ │ │ ├── entity
│ │ │ ├── SysApp.java
│ │ │ ├── SysArea.java
│ │ │ ├── SysButton.java
│ │ │ ├── SysMenu.java
│ │ │ ├── SysPermission.java
│ │ │ ├── SysPermissionResource.java
│ │ │ ├── SysResource.java
│ │ │ ├── SysRole.java
│ │ │ ├── SysRolePermission.java
│ │ │ └── SysUserRole.java
│ │ │ ├── enums
│ │ │ └── MenuExceptionEnum.java
│ │ │ ├── factory
│ │ │ ├── ResourceFactory.java
│ │ │ └── UserInfoFactory.java
│ │ │ ├── mapper
│ │ │ ├── SysAppMapper.java
│ │ │ ├── SysAreaMapper.java
│ │ │ ├── SysButtonMapper.java
│ │ │ ├── SysMenuMapper.java
│ │ │ ├── SysPermissionMapper.java
│ │ │ ├── SysPermissionResourceMapper.java
│ │ │ ├── SysResourceMapper.java
│ │ │ ├── SysRoleMapper.java
│ │ │ ├── SysRolePermissionMapper.java
│ │ │ ├── SysUserRoleMapper.java
│ │ │ └── mapping
│ │ │ │ ├── SysAppMapper.xml
│ │ │ │ ├── SysAreaMapper.xml
│ │ │ │ ├── SysButtonMapper.xml
│ │ │ │ ├── SysMenuMapper.xml
│ │ │ │ ├── SysPermissionMapper.xml
│ │ │ │ ├── SysPermissionResourceMapper.xml
│ │ │ │ ├── SysResourceMapper.xml
│ │ │ │ ├── SysRoleMapper.xml
│ │ │ │ ├── SysRolePermissionMapper.xml
│ │ │ │ └── SysUserRoleMapper.xml
│ │ │ ├── model
│ │ │ ├── MenuNode.java
│ │ │ ├── RoleParam.java
│ │ │ ├── TreeNode.java
│ │ │ ├── params
│ │ │ │ ├── MenuCondition.java
│ │ │ │ ├── ResourceQueryParam.java
│ │ │ │ ├── RoleInfo.java
│ │ │ │ ├── SysAppParam.java
│ │ │ │ ├── SysAreaParam.java
│ │ │ │ ├── SysButtonParam.java
│ │ │ │ ├── SysMenuParam.java
│ │ │ │ ├── SysPermissionParam.java
│ │ │ │ ├── SysPermissionResourceParam.java
│ │ │ │ ├── SysResourceParam.java
│ │ │ │ ├── SysRoleParam.java
│ │ │ │ ├── SysRolePermissionParam.java
│ │ │ │ └── SysUserRoleParam.java
│ │ │ └── result
│ │ │ │ ├── SysAppResult.java
│ │ │ │ ├── SysAreaResult.java
│ │ │ │ ├── SysButtonResult.java
│ │ │ │ ├── SysMenuResult.java
│ │ │ │ ├── SysPermissionResourceResult.java
│ │ │ │ ├── SysPermissionResult.java
│ │ │ │ ├── SysResourceResult.java
│ │ │ │ ├── SysRolePermissionResult.java
│ │ │ │ ├── SysRoleResult.java
│ │ │ │ └── SysUserRoleResult.java
│ │ │ ├── provider
│ │ │ ├── BaseSystemProvider.java
│ │ │ ├── ResourceServiceProvider.java
│ │ │ └── SystemApiProvider.java
│ │ │ ├── service
│ │ │ ├── SysAppService.java
│ │ │ ├── SysAreaService.java
│ │ │ ├── SysButtonService.java
│ │ │ ├── SysMenuService.java
│ │ │ ├── SysPermissionResourceService.java
│ │ │ ├── SysPermissionService.java
│ │ │ ├── SysResourceService.java
│ │ │ ├── SysRolePermissionService.java
│ │ │ ├── SysRoleService.java
│ │ │ ├── SysUserRoleService.java
│ │ │ └── impl
│ │ │ │ ├── SysAppServiceImpl.java
│ │ │ │ ├── SysAreaServiceImpl.java
│ │ │ │ ├── SysButtonServiceImpl.java
│ │ │ │ ├── SysMenuServiceImpl.java
│ │ │ │ ├── SysPermissionResourceServiceImpl.java
│ │ │ │ ├── SysPermissionServiceImpl.java
│ │ │ │ ├── SysResourceServiceImpl.java
│ │ │ │ ├── SysRolePermissionServiceImpl.java
│ │ │ │ ├── SysRoleServiceImpl.java
│ │ │ │ └── SysUserRoleServiceImpl.java
│ │ │ └── wrapper
│ │ │ ├── MenuWrapper.java
│ │ │ └── ResourceWrapper.java
│ │ └── resources
│ │ ├── bootstrap.yml
│ │ └── logback-spring.xml
└── pom.xml
└── pom.xml
/_web/admin-vue/.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 |
--------------------------------------------------------------------------------
/_web/admin-vue/.env.development:
--------------------------------------------------------------------------------
1 | # 页面标题
2 | VUE_APP_TITLE = 别摸云社区
3 |
4 | # 开发环境配置
5 | ENV = 'development'
6 |
7 | # 若依管理系统/开发环境
8 | VUE_APP_BASE_API = '/dev-api'
9 | VUE_APP_BASE_URL = 'http://localhost:80/'
10 | VUE_APP_SSO_NAME = 'biemo-auth-app'
11 | VUE_APP_SYSTEM_NAME = 'biemo-system-app'
12 | VUE_APP_SSO_APP_ID = 10001
13 |
14 |
15 | # 路由懒加载
16 | VUE_CLI_BABEL_TRANSPILE_MODULES = true
17 |
--------------------------------------------------------------------------------
/_web/admin-vue/.env.production:
--------------------------------------------------------------------------------
1 | # 页面标题
2 | VUE_APP_TITLE = 别摸云社区
3 |
4 | # 生产环境配置
5 | ENV = 'production'
6 |
7 | # 若依管理系统/生产环境
8 | VUE_APP_BASE_API = '/prod-api'
9 | VUE_APP_SSO_APP_ID = 10005
10 |
--------------------------------------------------------------------------------
/_web/admin-vue/.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 |
--------------------------------------------------------------------------------
/_web/admin-vue/.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
--------------------------------------------------------------------------------
/_web/admin-vue/.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 |
--------------------------------------------------------------------------------
/_web/admin-vue/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.npm.taobao.org
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 | ```
--------------------------------------------------------------------------------
/_web/admin-vue/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 | }
14 |
--------------------------------------------------------------------------------
/_web/admin-vue/bin/build.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/bin/build.bat
--------------------------------------------------------------------------------
/_web/admin-vue/bin/package.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/bin/package.bat
--------------------------------------------------------------------------------
/_web/admin-vue/bin/run-web.bat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/bin/run-web.bat
--------------------------------------------------------------------------------
/_web/admin-vue/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/public/favicon.ico
--------------------------------------------------------------------------------
/_web/admin-vue/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
--------------------------------------------------------------------------------
/_web/admin-vue/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
20 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/api/auth/securityAudit/GodKeyPasswordApi.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request';
2 | let ssoName = process.env.VUE_APP_SSO_NAME;
3 | export default class GodKeyPasswordApi {
4 | // 启用禁用万能密码
5 | checkedStatus(params) {
6 | let url = ssoName+"/godKeyManager/checkedStatus";
7 | return request({
8 | url: url,
9 | method: 'get',
10 | params:params
11 | })
12 | }
13 | // 获取万能密码的值和状态
14 | getGodKey(params) {
15 | let url = ssoName+"/godKeyManager/getGodKey";
16 | return request({
17 | url: url,
18 | method: 'get',
19 | params:params
20 | })
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/api/auth/securityAudit/LoginLogApi.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request';
2 | let ssoName = process.env.VUE_APP_SSO_NAME;
3 |
4 | export default class LoginLogApi {
5 | // 日志详情
6 | detail(params) {
7 | let url = ssoName+"/authLoginLog/detail";
8 | return request({
9 | url: url,
10 | method: 'get',
11 | params:params
12 | })
13 | }
14 | // 查看日志列表(分页)
15 | pageList(params) {
16 | let url = ssoName+"/authLoginLog/pageList";
17 | return request({
18 | url: url,
19 | method: 'get',
20 | params:params
21 | })
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/api/auth/securityAudit/SessionManage.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request';
2 | let ssoName = process.env.VUE_APP_SSO_NAME;
3 | export default class SessionManage {
4 | // 强制用户下线
5 | forcedOffline(params) {
6 | let url = ssoName+"/session/forcedOffline";
7 | return request({
8 | url: url,
9 | method: 'get',
10 | params:params
11 | })
12 | }
13 | // 获取在线用户信息
14 | pageList(params) {
15 | let url = ssoName+"/session/pageList";
16 | return request({
17 | url: url,
18 | method: 'get',
19 | params:params
20 | })
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/api/menu.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 获取路由
4 | export const getRouters = (params) => {
5 | return request({
6 | url: '/biemo-system-app/menu/getLeftMenuList',
7 | method: 'get',
8 | params
9 | })
10 | }
11 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/api/monitor/cache.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 查询缓存详细
4 | export function getCache() {
5 | return request({
6 | url: '/monitor/cache',
7 | method: 'get'
8 | })
9 | }
10 |
--------------------------------------------------------------------------------
/_web/admin-vue/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 |
--------------------------------------------------------------------------------
/_web/admin-vue/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 | }
--------------------------------------------------------------------------------
/_web/admin-vue/src/api/system/role/ResourceManageApi.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export default class ResourceManageApi {
4 |
5 | // 获取资源列表
6 | list(data) {
7 | let url = "/biemo-system-app/resource/list";
8 | return request({
9 | url: url,
10 | method: 'get',
11 | params:data
12 | })
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/401_images/401.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/src/assets/401_images/401.gif
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/404_images/404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/src/assets/404_images/404.png
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/404_images/404_cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/src/assets/404_images/404_cloud.png
--------------------------------------------------------------------------------
/_web/admin-vue/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 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/chart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/documentation.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/drag.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/education.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/email.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/example.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/excel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/fullscreen.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/guide.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/link.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/lock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/message.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/money.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/size.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/slider.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/star.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/switch.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/tab.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/table.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/theme.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/icons/svg/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/_web/admin-vue/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 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/images/login-background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/src/assets/images/login-background.jpg
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/images/profile.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/src/assets/images/profile.jpg
--------------------------------------------------------------------------------
/_web/admin-vue/src/assets/logo/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/admin-vue/src/assets/logo/logo.png
--------------------------------------------------------------------------------
/_web/admin-vue/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 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/components/ParentView/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/components/RuoYi/Doc/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/components/RuoYi/Git/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/components/component.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import baseSelect from './base-select/base-select'
3 | import imgUpload from './img-upload/img-upload'
4 |
5 | Vue.component('baseSelect', baseSelect)
6 | Vue.component('imgUpload', imgUpload)
7 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/config/SystemConfig.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | title: "快速开发平台", // 项目名称
3 | homePage: {
4 | name: "首页",
5 | path: "/index"
6 | },
7 | auth: false, // 是否校验登录
8 | sign: false, // 是否开启签名
9 | sso: true, // 是否开启单点登录
10 | storate: {
11 | expireTime: 1000 * 60 * 60 * 3,
12 | sessionStorageKey: "SESSION",
13 | localStorageKey: "LOCAL"
14 | },
15 | ras: {
16 | open: true,
17 | },
18 | defaultColor:{
19 | mainColor:'#3E464C',
20 | secondColor:'#24262F',
21 | },
22 | }
23 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/directive/permission/index.js:
--------------------------------------------------------------------------------
1 | import hasRole from './hasRole'
2 | import hasPermi from './hasPermi'
3 |
4 | const install = function(Vue) {
5 | Vue.directive('hasRole', hasRole)
6 | Vue.directive('hasPermi', hasPermi)
7 | }
8 |
9 | if (window.Vue) {
10 | window['hasRole'] = hasRole
11 | window['hasPermi'] = hasPermi
12 | Vue.use(install); // eslint-disable-line
13 | }
14 |
15 | export default install
16 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/layout/components/Sidebar/Item.vue:
--------------------------------------------------------------------------------
1 |
30 |
--------------------------------------------------------------------------------
/_web/admin-vue/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 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/mixin/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import turnPage from './turnPage'
3 |
4 | Vue.mixin(turnPage)
5 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/mixin/turnPage.js:
--------------------------------------------------------------------------------
1 | const turnPage = {
2 | methods: {
3 | //获取表格数据源 其中http代表api接口类, data代表请求接口参数,path代表请求路径
4 | getTableListData(http, data, path){
5 | return new Promise(async (resolve, reject) => {
6 | let tableListData = await http[path](data)
7 | let dataList = tableListData.data.records
8 | let pageNo = tableListData.data.current
9 | let pageSize = tableListData.data.size
10 | let total = tableListData.data.total
11 | resolve({dataList, pageNo, pageSize, total})
12 | })
13 | },
14 | }
15 | }
16 | export default turnPage
17 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import app from './modules/app'
4 | import user from './modules/user'
5 | import tagsView from './modules/tagsView'
6 | import permission from './modules/permission'
7 | import settings from './modules/settings'
8 | import getters from './getters'
9 |
10 | Vue.use(Vuex)
11 |
12 | const store = new Vuex.Store({
13 | modules: {
14 | app,
15 | user,
16 | tagsView,
17 | permission,
18 | settings
19 | },
20 | getters
21 | })
22 |
23 | export default store
24 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/utils/auth.js:
--------------------------------------------------------------------------------
1 | import Cookies from 'js-cookie'
2 |
3 | const TokenKey = 'vue_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 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/utils/errorCode.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '401': '认证失败,无法访问系统资源',
3 | '403': '当前操作没有权限',
4 | '404': '访问资源不存在',
5 | 'default': '系统未知错误,请反馈给管理员'
6 | }
7 |
--------------------------------------------------------------------------------
/_web/admin-vue/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 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/utils/randomStr.js:
--------------------------------------------------------------------------------
1 | let password = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",
2 | "p","q","r","s","t","u","v","w","x","y","z","A","B","C","D",
3 | "E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S",
4 | "T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9"
5 | ]
6 |
7 | export function ramdomStrKey (length) {
8 | let Str = ""
9 | for(let i = 0; i < length; i++){
10 | Str += password[Math.floor(Math.random()*password.length)]
11 | }
12 | return Str
13 | }
14 |
--------------------------------------------------------------------------------
/_web/admin-vue/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 |
--------------------------------------------------------------------------------
/_web/admin-vue/src/views/redirect.vue:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/_web/bbs-vue/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/_web/bbs-vue/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "arrowParens": "always",
4 | "singleQuote": true
5 | }
6 |
--------------------------------------------------------------------------------
/_web/bbs-vue/README.md:
--------------------------------------------------------------------------------
1 | # 介绍
2 |
3 | 该项目使用nuxt.js进行构建,利用服务端渲染技术构建 https://www.makesoft.cn 前端界面。接口由 bbs-cloud ( https://github.com/biemo8/bbs-cloud ) 提供。
4 |
5 | ## Build Setup
6 |
7 | ``` bash
8 | # install dependencies
9 | $ npm install
10 |
11 | # serve with hot reload at localhost:3000
12 | $ npm run dev
13 |
14 | # build for production and launch server
15 | $ npm run build
16 | $ npm run start
17 |
18 | # generate static project
19 | $ npm run generate
20 | ```
21 |
22 | For detailed explanation on how things work, checkout [Nuxt.js docs](https://nuxtjs.org).
23 |
--------------------------------------------------------------------------------
/_web/bbs-vue/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ HEAD }}
6 |
15 |
16 |
17 |
18 | {{ APP }}
19 |
20 |
21 |
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/README.md:
--------------------------------------------------------------------------------
1 | # ASSETS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked).
8 |
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/images/bg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/assets/images/bg.gif
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/assets/images/logo.png
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/images/logo364x364.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/assets/images/logo364x364.png
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/images/net.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/assets/images/net.png
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/images/new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/assets/images/new.png
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/images/node.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/assets/images/node.png
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/images/recommend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/assets/images/recommend.png
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/images/recommend2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/assets/images/recommend2.png
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/styles/ad.scss:
--------------------------------------------------------------------------------
1 | .ad {
2 | margin: 10px 0;
3 |
4 | &.no-margin-top {
5 | margin-top: 0;
6 | }
7 |
8 | &.no-margin-bottom {
9 | margin-bottom: 0;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/styles/main.scss:
--------------------------------------------------------------------------------
1 | @import "./common";
2 | @import "./topic";
3 | @import "./article";
4 | @import "./comment";
5 | @import "./link";
6 | @import "./highlightjs";
7 | @import "./nav";
8 | @import "./ad";
9 |
10 | $animationDuration: 0.3s;
11 | @import 'vue2-animate/src/sass/vue2-animate.scss'
12 |
--------------------------------------------------------------------------------
/_web/bbs-vue/assets/styles/variable.scss:
--------------------------------------------------------------------------------
1 | $border-color-base: rgba(228, 228, 228, 0.6);
2 | $color-blue-base: #1878F3;
3 | $font-color-grey: #8590A6;
4 | $background-color-grey: #F7F7F7;
5 | $background-color-editor: #F5F6F7;
6 | $color-blue-deep: #006CD1;
7 | $line-color-base: #F5F5F5;
8 | $color-red: #fa5151;
9 | $color-000: #333;
10 | $border-color: #DCDFE6;
11 |
--------------------------------------------------------------------------------
/_web/bbs-vue/components/MyNav.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
11 |
12 |
20 |
21 |
34 |
--------------------------------------------------------------------------------
/_web/bbs-vue/components/README.md:
--------------------------------------------------------------------------------
1 | # COMPONENTS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | The components directory contains your Vue.js Components.
6 |
7 | _Nuxt.js doesn't supercharge these components._
8 |
--------------------------------------------------------------------------------
/_web/bbs-vue/components/SiteNotice.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
19 |
20 |
25 |
--------------------------------------------------------------------------------
/_web/bbs-vue/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "paths": {
5 | "~/*": ["./*"],
6 | "@/*": ["./*"],
7 | "~~/*": ["./*"],
8 | "@@/*": ["./*"]
9 | }
10 | },
11 | "exclude": ["node_modules", ".nuxt", "dist"]
12 | }
13 |
--------------------------------------------------------------------------------
/_web/bbs-vue/layouts/README.md:
--------------------------------------------------------------------------------
1 | # LAYOUTS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your Application Layouts.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts).
8 |
--------------------------------------------------------------------------------
/_web/bbs-vue/layouts/default.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/_web/bbs-vue/layouts/empty.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/_web/bbs-vue/layouts/no-footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/_web/bbs-vue/middleware/README.md:
--------------------------------------------------------------------------------
1 | # MIDDLEWARE
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your application middleware.
6 | Middleware let you define custom functions that can be run before rendering either a page or a group of pages.
7 |
8 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing#middleware).
9 |
--------------------------------------------------------------------------------
/_web/bbs-vue/middleware/resetEnv.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 用于在切换路由的时候重置页面环境
3 | */
4 | export default function ({ store, route, $cookies }) {
5 | store.commit('env/setShowMobileSidebar', false)
6 | store.commit('env/setShowMobileNodes', false)
7 | }
8 |
--------------------------------------------------------------------------------
/_web/bbs-vue/pages/README.md:
--------------------------------------------------------------------------------
1 | # PAGES
2 |
3 | This directory contains your Application Views and Routes.
4 | The framework reads all the `*.vue` files inside this directory and creates the router of your application.
5 |
6 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing).
7 |
--------------------------------------------------------------------------------
/_web/bbs-vue/pages/article/redirect/_id.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 |
--------------------------------------------------------------------------------
/_web/bbs-vue/plugins/README.md:
--------------------------------------------------------------------------------
1 | # PLUGINS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains Javascript plugins that you want to run before mounting the root Vue.js application.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/plugins).
8 |
--------------------------------------------------------------------------------
/_web/bbs-vue/plugins/viewer.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Viewer from 'v-viewer'
3 | import 'viewerjs/dist/viewer.css'
4 |
5 | Vue.use(Viewer, {
6 | defaultOptions: {
7 | zIndex: 9999,
8 | navbar: false,
9 | title: false,
10 | tooltip: false,
11 | movable: false,
12 | scalable: false,
13 | url: 'data-src',
14 | },
15 | })
16 |
--------------------------------------------------------------------------------
/_web/bbs-vue/plugins/vue-lazyload.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueLazyload from 'vue-lazyload'
3 |
4 | Vue.use(VueLazyload)
5 |
6 | Vue.use(VueLazyload, {
7 | preLoad: 1.3, // 预加载的宽高比
8 | attempt: 1, // 尝试加载次数
9 | })
10 |
--------------------------------------------------------------------------------
/_web/bbs-vue/start.sh:
--------------------------------------------------------------------------------
1 | pm2 start npm --name "mlog-web-site" -- run start
2 |
--------------------------------------------------------------------------------
/_web/bbs-vue/static/README.md:
--------------------------------------------------------------------------------
1 | # STATIC
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your static files.
6 | Each file inside this directory is mapped to `/`.
7 | Thus you'd want to delete this README.md before deploying to production.
8 |
9 | Example: `/static/robots.txt` is mapped as `/robots.txt`.
10 |
11 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static).
12 |
--------------------------------------------------------------------------------
/_web/bbs-vue/static/ads.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/static/ads.txt
--------------------------------------------------------------------------------
/_web/bbs-vue/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/makesoft-cn/bbs-cloud/304af6ab2c212784b984230846d508a3c91b9fa1/_web/bbs-vue/static/favicon.ico
--------------------------------------------------------------------------------
/_web/bbs-vue/static/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /admin/
3 |
--------------------------------------------------------------------------------
/_web/bbs-vue/store/README.md:
--------------------------------------------------------------------------------
1 | # STORE
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your Vuex Store files.
6 | Vuex Store option is implemented in the Nuxt.js framework.
7 |
8 | Creating a file in this directory automatically activates the option in the framework.
9 |
10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store).
11 |
--------------------------------------------------------------------------------
/_web/bbs-vue/store/config.js:
--------------------------------------------------------------------------------
1 | export const state = () => ({
2 | config: {},
3 | })
4 |
5 | export const mutations = {
6 | setConfig(state, config) {
7 | state.config = config
8 | },
9 | }
10 |
11 | export const actions = {
12 | // 加载配置
13 | async loadConfig(context) {
14 | const ret = await this.$axios.get('/api/config/configs')
15 | context.commit('setConfig', ret)
16 | return ret
17 | },
18 | }
19 |
20 | export const getters = {
21 | siteTitle(state) {
22 | return state.config.siteTitle || ''
23 | },
24 | siteDescription(state) {
25 | return state.config.siteDescription || ''
26 | },
27 | siteKeywords(state) {
28 | return state.config.siteKeywords || ''
29 | },
30 | }
31 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-api/src/main/java/com/biemo/cloud/bbs/api/BCaptchaApi.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.api;
2 |
3 | import com.biemo.cloud.kernel.model.response.ResponseData;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 |
8 | import javax.servlet.http.HttpServletResponse;
9 | import java.io.IOException;
10 |
11 | @FeignClient(value = "biemo-bbs-app",contextId = "BCaptchaApi")
12 | public interface BCaptchaApi {
13 |
14 | @GetMapping("/captchaImage")
15 | ResponseData getCode(HttpServletResponse response) throws IOException;
16 | }
17 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-api/src/main/java/com/biemo/cloud/bbs/api/BLinkApi.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.api;
2 |
3 | import com.biemo.cloud.kernel.model.response.ResponseData;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.PostMapping;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 |
9 | @FeignClient(value = "biemo-bbs-app",contextId = "BLinkApi")
10 | public interface BLinkApi {
11 |
12 | @GetMapping("/toplinks")
13 | ResponseData toplinks();
14 | }
15 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-api/src/main/java/com/biemo/cloud/bbs/api/BSysConfigApi.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.api;
2 |
3 | import com.biemo.cloud.kernel.model.response.ResponseData;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 |
8 | @FeignClient(value = "biemo-bbs-app",contextId = "BSysConfigApi")
9 | public interface BSysConfigApi {
10 |
11 | @GetMapping("/configs")
12 | ResponseData configs();
13 | }
14 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-api/src/main/java/com/biemo/cloud/bbs/api/BTagApi.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.api;
2 |
3 | import com.biemo.cloud.kernel.model.response.ResponseData;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 | import org.springframework.web.bind.annotation.*;
6 |
7 | @FeignClient(value = "biemo-bbs-app",contextId = "BTagApi")
8 | public interface BTagApi {
9 |
10 | @PostMapping("/autocomplete")
11 | ResponseData autocomplete(@RequestParam("input")String input);
12 |
13 | @GetMapping("/{tagId}")
14 | ResponseData getTag(@PathVariable("tagId") Long tagId);
15 | }
16 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-api/src/main/java/com/biemo/cloud/bbs/api/BUserLikeApi.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.api;
2 |
3 | import com.biemo.cloud.kernel.model.response.ResponseData;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RequestParam;
8 |
9 | @FeignClient(value = "biemo-bbs-app",contextId = "BUserLikeApi")
10 | public interface BUserLikeApi {
11 |
12 | @GetMapping("/liked")
13 | ResponseData liked(@RequestParam("entityType")String entityType, @RequestParam("entityId")Long entityId);
14 | }
15 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/ServletInitializer.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs;
2 | import org.springframework.boot.builder.SpringApplicationBuilder;
3 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
4 |
5 |
6 |
7 | public class ServletInitializer extends SpringBootServletInitializer {
8 | @Override
9 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
10 | return application.sources(BiemoBbsApplication.class);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/config/BiemoLoginContextConfig.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.config;
2 |
3 | import com.biemo.cloud.bbs.modular.context.BiemoLoginContext;
4 | import com.biemo.cloud.bbs.modular.service.IBUserService;
5 | import org.springframework.context.annotation.Bean;
6 | import org.springframework.context.annotation.Configuration;
7 |
8 | @Configuration
9 | public class BiemoLoginContextConfig {
10 |
11 | @Bean
12 | public BiemoLoginContext biemoLoginContext(IBUserService ibUserService){
13 | return new BiemoLoginContext(ibUserService);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/config/SingleDataSourceConfig.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.config;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.context.annotation.Configuration;
5 | import org.springframework.transaction.annotation.EnableTransactionManagement;
6 |
7 | /**
8 | * Hoxton.SR3配置,多数据源配置因为和单数据源冲突,所以现在默认版本删除了多数据源配置
9 | *
10 | *
11 | *
12 | * @Date 2017/5/20 21:58
13 | */
14 | @Configuration
15 | @EnableTransactionManagement(proxyTargetClass = true)
16 | @MapperScan(basePackages = {"com.biemo.cloud.bbs.modular.mapper"})
17 | public class SingleDataSourceConfig {
18 |
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/core/constant/ESBoolLogicConstants.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.core.constant;
2 |
3 | import java.util.HashSet;
4 | import java.util.Set;
5 |
6 | public final class ESBoolLogicConstants {
7 |
8 | public static final String MUST = "must";
9 |
10 | public static final String MUST_NOT = "must_not";
11 |
12 | public static final String SHOULD = "should";
13 |
14 | public static Set allEsBoolLogic(){
15 | Set boolLogics = new HashSet<>();
16 | boolLogics.add(MUST);
17 | boolLogics.add(MUST_NOT);
18 | boolLogics.add(SHOULD);
19 | return boolLogics;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/core/constant/ESHierarchyConstants.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.core.constant;
2 |
3 | public final class ESHierarchyConstants {
4 |
5 | public static final int FIRST = 1;
6 |
7 | public static final int SECOND = 2;
8 |
9 | public static final int THIRD = 3;
10 | }
11 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/core/search/IndexQueryContext.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.core.search;
2 |
3 | import org.elasticsearch.index.query.QueryBuilder;
4 | import org.elasticsearch.search.sort.SortBuilder;
5 |
6 | import java.util.List;
7 |
8 | public interface IndexQueryContext{
9 |
10 | String getIndexName();
11 |
12 | QueryBuilder getQuery();
13 |
14 | boolean isValid();
15 |
16 | int getPageNum();
17 |
18 | int getPageSize();
19 |
20 | List getSorts();
21 |
22 | boolean exactCount();
23 | }
24 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/core/search/IndexSerializable.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.core.search;
2 |
3 | import com.alibaba.fastjson.JSONObject;
4 | import com.fasterxml.jackson.databind.ObjectMapper;
5 | import org.slf4j.Logger;
6 |
7 | public interface IndexSerializable {
8 |
9 | String toElasticsearchId();
10 |
11 | String toElasticsearchJson(Logger logger, ObjectMapper objectMapper);
12 |
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/annotation/Excels.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.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 | */
12 | @Target(ElementType.FIELD)
13 | @Retention(RetentionPolicy.RUNTIME)
14 | public @interface Excels
15 | {
16 | Excel[] value();
17 | }
18 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/annotation/RequestLimit.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.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 | * @date : 2020-09-01 9:31
10 | * @description :
11 | */
12 | @Target(ElementType.METHOD)
13 | @Retention(RetentionPolicy.RUNTIME)
14 | public @interface RequestLimit {
15 | /**
16 | * 请求次数
17 | */
18 | int count() default 1;
19 |
20 | /**
21 | * 限制时间(秒)
22 | */
23 | int time() default 5;
24 |
25 |
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/consumer/AuthServiceConsumer.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.consumer;
2 |
3 | import com.biemo.cloud.auth.api.AuthService;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 |
6 | /**
7 | * 鉴权消费者
8 | *
9 | *
10 | * @Date 2019-08-12 18:52
11 | */
12 | @FeignClient(name = "biemo-auth-app",contextId = "BbsAuthServiceConsumer")
13 | public interface AuthServiceConsumer extends AuthService {
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/consumer/CustomServiceConsumer.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.consumer;
2 |
3 | import com.biemo.cloud.system.api.ResourceServiceApi;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 |
6 | /**
7 | * 资源服务
8 | *
9 | *
10 | * @Date 2019/12/4 21:10
11 | */
12 | @FeignClient(name = "biemo-system-app",contextId = "BbsCustomServiceConsumer")
13 | public interface CustomServiceConsumer extends ResourceServiceApi {
14 | }
15 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/consumer/ResourceServiceConsumer.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.consumer;
2 |
3 | import com.biemo.cloud.kernel.model.api.ResourceService;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 |
6 | /**
7 | * 资源服务
8 | *
9 | *
10 | * @Date 2019/12/3 22:30
11 | */
12 | @FeignClient(name = "biemo-system-app",contextId = "BbsResourceServiceConsumer")
13 | public interface ResourceServiceConsumer extends ResourceService {
14 | }
15 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/consumer/SystemAppConsumer.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.consumer;
2 |
3 | import com.biemo.cloud.system.api.SystemAppApi;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 |
6 | /**
7 | * 系统应用app消费者
8 | *
9 | *
10 | * @Date 2019/12/4 20:30
11 | */
12 | @FeignClient(name = "biemo-system-app",contextId ="SystemAppConsumer")
13 | public interface SystemAppConsumer extends SystemAppApi {
14 | }
15 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/consumer/SystemConsumer.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.consumer;
2 |
3 | import com.biemo.cloud.system.api.BaseSystemApi;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 |
6 | /**
7 | * 系统管理消费者
8 | *
9 | *
10 | * @Date 2019/9/25 18:32
11 | */
12 | @FeignClient(name = "biemo-system-app",contextId = "SystemConsumer")
13 | public interface SystemConsumer extends BaseSystemApi {
14 | }
15 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/domain/BaseEntity.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.domain;
2 |
3 | import com.baomidou.mybatisplus.annotation.TableField;
4 | import org.springframework.data.annotation.Transient;
5 |
6 | import java.io.Serializable;
7 | import java.util.Date;
8 | import java.util.HashMap;
9 | import java.util.Map;
10 |
11 | /**
12 | * Entity基类
13 | *
14 | */
15 | public class BaseEntity implements Serializable
16 | {
17 | private static final long serialVersionUID = 1L;
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/mapper/BArticleMapper.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.biemo.cloud.bbs.modular.domain.BArticle;
5 | import org.apache.ibatis.annotations.CacheNamespace;
6 |
7 | /**
8 | * @date 2021-08-11
9 | */
10 | public interface BArticleMapper extends BaseMapper
11 | {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/mapper/BArticleTagMapper.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.mapper;
2 |
3 | import java.util.List;
4 |
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import com.biemo.cloud.bbs.modular.domain.BArticleTag;
7 | import org.apache.ibatis.annotations.CacheNamespace;
8 |
9 | /**
10 | * Mapper接口
11 | *
12 | * @author makesoft
13 | * @date 2021-08-11
14 | */
15 | public interface BArticleTagMapper extends BaseMapper
16 | {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/mapper/BAttachmentMapper.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.biemo.cloud.bbs.modular.domain.BAttachment;
5 |
6 | /**
7 | * Mapper接口
8 | *
9 | * @author makesoft
10 | * @date 2021-08-11
11 | */
12 | public interface BAttachmentMapper extends BaseMapper
13 | {
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/mapper/BCommentMapper.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.mapper;
2 |
3 | import java.util.List;
4 |
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import com.biemo.cloud.bbs.modular.domain.BComment;
7 | import org.apache.ibatis.annotations.CacheNamespace;
8 |
9 | /**
10 | * Mapper接口
11 | *
12 | * @author makesoft
13 | * @date 2021-08-11
14 | */
15 | public interface BCommentMapper extends BaseMapper
16 | {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/mapper/BFavoriteMapper.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.mapper;
2 |
3 | import java.util.List;
4 |
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import com.biemo.cloud.bbs.modular.domain.BFavorite;
7 | import org.apache.ibatis.annotations.CacheNamespace;
8 |
9 | /**
10 | * Mapper接口
11 | *
12 | * @author makesoft
13 | * @date 2021-08-11
14 | */
15 | public interface BFavoriteMapper extends BaseMapper
16 | {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app-biz/biemo-bbs/biemo-bbs-app/src/main/java/com/biemo/cloud/bbs/modular/mapper/BLinkMapper.java:
--------------------------------------------------------------------------------
1 | package com.biemo.cloud.bbs.modular.mapper;
2 |
3 | import java.util.List;
4 |
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import com.biemo.cloud.bbs.modular.domain.BLink;
7 | import org.apache.ibatis.annotations.CacheNamespace;
8 |
9 | /**
10 | * Mapper接口
11 | *
12 | * @author makesoft
13 | * @date 2021-08-11
14 | */
15 | @CacheNamespace
16 | public interface BLinkMapper extends BaseMapper