diff --git a/application-dev.yml b/application-dev.yml index 50d8b56..da79326 100644 --- a/application-dev.yml +++ b/application-dev.yml @@ -1,17 +1,17 @@ server: port: 8001 datasource: - host: 127.0.0.1 - port: 3306 + host: 192.168.235.111 + port: 3308 username: root password: 123456 database: d2admin redis: - host: 127.0.0.1 + host: 192.168.235.111 port: 6379 password: 123456 database: 1 pool: size: 1024 jwt: - secret: 123456 \ No newline at end of file + secret: 123456 diff --git a/src/infra/database/init.go b/src/infra/database/init.go index 685030a..e7abfeb 100644 --- a/src/infra/database/init.go +++ b/src/infra/database/init.go @@ -38,6 +38,6 @@ func Connect() { // 自动建表 DB.AutoMigrate(&domain.User{}) - DB.AutoMigrate(&domain.Router{}) + DB.AutoMigrate(&domain.Api{}) DB.AutoMigrate(&domain.Menu{}) } diff --git a/src/infra/gin.go b/src/infra/gin.go index 54086bd..b741c96 100644 --- a/src/infra/gin.go +++ b/src/infra/gin.go @@ -57,12 +57,12 @@ func RunServer() { { routes := dao.RouterDao{}.GetAllRouter() for _, route := range routes { - if route.RouterMethod == "GET" { - apiGroup.GET(route.RouterPath, InnerRouters[route.RouterName]) + if route.ApiMethod == "GET" { + apiGroup.GET(route.ApiPath, InnerRouters[route.ApiName]) continue } - if route.RouterMethod == "POST" { - apiGroup.POST(route.RouterPath, InnerRouters[route.RouterName]) + if route.ApiMethod == "POST" { + apiGroup.POST(route.ApiPath, InnerRouters[route.ApiName]) } } } diff --git a/src/modules/system/dao/router.go b/src/modules/system/dao/router.go index 2c88757..b57304d 100644 --- a/src/modules/system/dao/router.go +++ b/src/modules/system/dao/router.go @@ -8,9 +8,9 @@ import ( type RouterDao struct { } -func (RouterDao) GetAllRouter() []domain.Router { - var routers []domain.Router +func (RouterDao) GetAllRouter() []domain.Api { + var routers []domain.Api // select * from system_router where router_status = 1 - database.DB.Model(domain.Router{RouterStatus: 1}).Find(&routers) + database.DB.Model(domain.Api{ApiStatus: 1}).Find(&routers) return routers } diff --git a/src/modules/system/domain/api.go b/src/modules/system/domain/api.go new file mode 100644 index 0000000..06d6136 --- /dev/null +++ b/src/modules/system/domain/api.go @@ -0,0 +1,16 @@ +package domain + +import "github.com/jinzhu/gorm" + +type Api struct { + gorm.Model + ApiName string `gorm:"not null;unique_index:index_npm"` // 接口名称, 例如: getUser + ApiPath string `gorm:"not null;unique_index:index_npm"` // 接口路径, 例如: /api/v1/getUser + ApiMethod string `gorm:"not null;unique_index:index_npm"` // GET、POST + ApiDesc string `gorm:"not null"` // 接口说明 + ApiStatus int `gorm:"not null"` // 接口是否可用 +} + +func (Api) TableName() string { + return "system_api" +} diff --git a/src/modules/system/domain/router.go b/src/modules/system/domain/router.go deleted file mode 100644 index cb70c12..0000000 --- a/src/modules/system/domain/router.go +++ /dev/null @@ -1,16 +0,0 @@ -package domain - -import "github.com/jinzhu/gorm" - -type Router struct { - gorm.Model - RouterName string `gorm:"not null;unique_index:index_npm"` // 接口名称, 例如: getUser - RouterPath string `gorm:"not null;unique_index:index_npm"` // 接口路径, 例如: /api/v1/getUser - RouterMethod string `gorm:"not null;unique_index:index_npm"` // GET、POST - RouterDesc string `gorm:"not null"` // 接口说明 - RouterStatus int `gorm:"not null"` // 接口是否可用 -} - -func (Router) TableName() string { - return "system_router" -} diff --git a/src/modules/system/rest/router.go b/src/modules/system/rest/router.go deleted file mode 100644 index 58053b5..0000000 --- a/src/modules/system/rest/router.go +++ /dev/null @@ -1,4 +0,0 @@ -package rest - -type RouterController struct { -} diff --git a/web/src/api/modules/system.router.api.js b/web/src/api/modules/system.router.api.js new file mode 100644 index 0000000..ed24bac --- /dev/null +++ b/web/src/api/modules/system.router.api.js @@ -0,0 +1,14 @@ +export default ({ service, request, tools }) => ({ + /** + * @description 登录 + * @param {Object} data 登录携带的信息 + */ + login (data = {}) { + // 接口请求 + return request({ + url: '/login', + method: 'post', + data + }) + } +}) diff --git a/web/src/api/modules/system.user.api.js b/web/src/api/modules/system.user.api.js index 1ce8217..ed24bac 100644 --- a/web/src/api/modules/system.user.api.js +++ b/web/src/api/modules/system.user.api.js @@ -3,7 +3,7 @@ export default ({ service, request, tools }) => ({ * @description 登录 * @param {Object} data 登录携带的信息 */ - SYS_USER_LOGIN (data = {}) { + login (data = {}) { // 接口请求 return request({ url: '/login', diff --git a/web/src/menu/index.js b/web/src/menu/index.js index e496095..fdcab4f 100644 --- a/web/src/menu/index.js +++ b/web/src/menu/index.js @@ -15,34 +15,7 @@ function supplementPath (menu) { })) } -export const menuHeader = supplementPath([ - { path: '/index', title: '首页', icon: 'home' } - // { - // title: '页面', - // icon: 'folder-o', - // children: [ - // { path: '/page1', title: '页面 1' }, - // { path: '/page2', title: '页面 2' }, - // { - // path: '/page3', - // title: '页面 3', - // children: [ - // { path: '/page3-1', title: '页面 3-1' }, - // { - // path: '/page3-2', - // title: '页面 3-2', - // children: [ - // { path: '/page3-2-1', title: '页面 3-2-1' }, - // { path: '/page3-2-2', title: '页面 3-2-2' } - // ] - // } - // ] - // } - // ] - // } -]) - -export const menuAside = supplementPath([ +const menuData = [ { path: '/index', title: '首页', icon: 'home' }, { title: '页面', @@ -53,4 +26,8 @@ export const menuAside = supplementPath([ { path: '/page3', title: '页面 3' } ] } -]) +] + +export const menuHeader = supplementPath(menuData) + +export const menuAside = supplementPath(menuData) diff --git a/web/src/router/routes.js b/web/src/router/routes.js index e9a7064..522e59f 100644 --- a/web/src/router/routes.js +++ b/web/src/router/routes.js @@ -3,6 +3,8 @@ import layoutHeaderAside from '@/layout/header-aside' // 由于懒加载页面太多的话会造成webpack热更新太慢,所以开发环境不使用懒加载,只有生产环境使用懒加载 const _import = require('@/libs/util.import.' + process.env.NODE_ENV) +console.log('================= 路由加载') + /** * 在主框架内显示 */ @@ -44,17 +46,35 @@ const frameIn = [ name: 'redirect', hidden: true, component: _import('system/function/redirect') - } + }, // 演示页面 - // { - // path: 'page1', - // name: 'page1', - // meta: { - // title: '页面 1', - // auth: true - // }, - // component: _import('demo/page1') - // }, + { + path: 'page1', + name: 'page1', + meta: { + title: '页面 1', + auth: true + }, + component: _import('demo/page1') + }, + { + path: 'page2', + name: 'page2', + meta: { + title: '页面 2', + auth: true + }, + component: _import('demo/page2') + }, + { + path: 'page3', + name: 'page3', + meta: { + title: '页面 3', + auth: true + }, + component: _import('demo/page3') + }, ] } ] diff --git a/web/src/store/modules/d2admin/modules/account.js b/web/src/store/modules/d2admin/modules/account.js index fa0301a..0ab503e 100644 --- a/web/src/store/modules/d2admin/modules/account.js +++ b/web/src/store/modules/d2admin/modules/account.js @@ -17,7 +17,7 @@ export default { username = '', password = '' } = {}) { - const res = await api.SYS_USER_LOGIN({ username, password }) + const res = await api.login({ username, password }) // 设置 cookie 一定要存 uuid 和 token 两个 cookie // 整个系统依赖这两个数据进行校验和存储 // uuid 是用户身份唯一标识 用户注册的时候确定 并且不可改变 不可重复 @@ -27,8 +27,7 @@ export default { util.cookies.set('username', res.username) util.cookies.set('name', res.name) util.cookies.set('token', res.token) - // 加载路由 - await dispatch('d2admin/router/set', res.routes, { root: true }) + console.log("=============== 设置用户token") // 设置 vuex 用户信息 await dispatch('d2admin/user/set', { name: res.name }, { root: true }) // 用户登录后从持久化数据加载一系列的设置 diff --git a/web/src/store/modules/d2admin/modules/router.js b/web/src/store/modules/d2admin/modules/router.js deleted file mode 100644 index fa0301a..0000000 --- a/web/src/store/modules/d2admin/modules/router.js +++ /dev/null @@ -1,94 +0,0 @@ -import { Message, MessageBox } from 'element-ui' -import util from '@/libs/util.js' -import router from '@/router' -import api from '@/api' - -export default { - namespaced: true, - actions: { - /** - * @description 登录 - * @param {Object} context - * @param {Object} payload username {String} 用户账号 - * @param {Object} payload password {String} 密码 - * @param {Object} payload route {Object} 登录成功后定向的路由对象 任何 vue-router 支持的格式 - */ - async login ({ dispatch }, { - username = '', - password = '' - } = {}) { - const res = await api.SYS_USER_LOGIN({ username, password }) - // 设置 cookie 一定要存 uuid 和 token 两个 cookie - // 整个系统依赖这两个数据进行校验和存储 - // uuid 是用户身份唯一标识 用户注册的时候确定 并且不可改变 不可重复 - // token 代表用户当前登录状态 建议在网络请求中携带 token - // 如有必要 token 需要定时更新,默认保存一天 - util.cookies.set('uuid', res.uuid) - util.cookies.set('username', res.username) - util.cookies.set('name', res.name) - util.cookies.set('token', res.token) - // 加载路由 - await dispatch('d2admin/router/set', res.routes, { root: true }) - // 设置 vuex 用户信息 - await dispatch('d2admin/user/set', { name: res.name }, { root: true }) - // 用户登录后从持久化数据加载一系列的设置 - await dispatch('load') - }, - /** - * @description 注销用户并返回登录页面 - * @param {Object} context - * @param {Object} payload confirm {Boolean} 是否需要确认 - */ - logout ({ commit, dispatch }, { confirm = false } = {}) { - /** - * @description 注销 - */ - async function logout () { - // 删除cookie - util.cookies.remove('token') - util.cookies.remove('uuid') - util.cookies.remove('username') - util.cookies.remove('name') - // 清空 vuex 用户信息 - await dispatch('d2admin/user/set', {}, { root: true }) - // 跳转路由 - router.push({ name: 'login' }) - } - // 判断是否需要确认 - if (confirm) { - commit('d2admin/gray/set', true, { root: true }) - MessageBox.confirm('确定要注销当前用户吗', '注销用户', { type: 'warning' }) - .then(() => { - commit('d2admin/gray/set', false, { root: true }) - logout() - }) - .catch(() => { - commit('d2admin/gray/set', false, { root: true }) - Message({ message: '取消注销操作' }) - }) - } else { - logout() - } - }, - /** - * @description 用户登录后从持久化数据加载一系列的设置 - * @param {Object} context - */ - async load ({ dispatch }) { - // 加载用户名 - await dispatch('d2admin/user/load', null, { root: true }) - // 加载主题 - await dispatch('d2admin/theme/load', null, { root: true }) - // 加载页面过渡效果设置 - await dispatch('d2admin/transition/load', null, { root: true }) - // 持久化数据加载上次退出时的多页列表 - await dispatch('d2admin/page/openedLoad', null, { root: true }) - // 持久化数据加载侧边栏配置 - await dispatch('d2admin/menu/asideLoad', null, { root: true }) - // 持久化数据加载全局尺寸 - await dispatch('d2admin/size/load', null, { root: true }) - // 持久化数据加载颜色设置 - await dispatch('d2admin/color/load', null, { root: true }) - } - } -} diff --git a/web/src/store/modules/d2admin/modules/user.js b/web/src/store/modules/d2admin/modules/user.js index 13c9fc3..b4048e8 100644 --- a/web/src/store/modules/d2admin/modules/user.js +++ b/web/src/store/modules/d2admin/modules/user.js @@ -20,6 +20,7 @@ export default { value: info, user: true }, { root: true }) + console.log("================ 配置用户信息") }, /** * @description 从数据库取用户数据