mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 02:04:09 +00:00
Merge branch 'dev' of github.com:go-admin-team/go-admin into dev
This commit is contained in:
+51
-13
@@ -1,6 +1,7 @@
|
|||||||
package apis
|
package apis
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/gin-gonic/gin/binding"
|
"github.com/gin-gonic/gin/binding"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk"
|
"github.com/go-admin-team/go-admin-core/sdk"
|
||||||
"go-admin/app/admin/models"
|
"go-admin/app/admin/models"
|
||||||
@@ -63,8 +64,7 @@ func (e SysRole) GetPage(c *gin.Context) {
|
|||||||
// @Description 获取JSON
|
// @Description 获取JSON
|
||||||
// @Tags 角色/Role
|
// @Tags 角色/Role
|
||||||
// @Param roleId path string false "roleId"
|
// @Param roleId path string false "roleId"
|
||||||
// @Success 200 {string} string "{"code": 200, "data": [...]}"
|
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
|
||||||
// @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
|
|
||||||
// @Router /api/v1/role/{id} [get]
|
// @Router /api/v1/role/{id} [get]
|
||||||
// @Security Bearer
|
// @Security Bearer
|
||||||
func (e SysRole) Get(c *gin.Context) {
|
func (e SysRole) Get(c *gin.Context) {
|
||||||
@@ -77,7 +77,7 @@ func (e SysRole) Get(c *gin.Context) {
|
|||||||
Errors
|
Errors
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e.Logger.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(500, err, err.Error())
|
e.Error(500, err, fmt.Sprintf(" %s ", err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,8 +99,7 @@ func (e SysRole) Get(c *gin.Context) {
|
|||||||
// @Accept application/json
|
// @Accept application/json
|
||||||
// @Product application/json
|
// @Product application/json
|
||||||
// @Param data body dto.SysRoleControl true "data"
|
// @Param data body dto.SysRoleControl true "data"
|
||||||
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
|
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
|
||||||
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
|
|
||||||
// @Router /api/v1/role [post]
|
// @Router /api/v1/role [post]
|
||||||
// @Security Bearer
|
// @Security Bearer
|
||||||
func (e SysRole) Insert(c *gin.Context) {
|
func (e SysRole) Insert(c *gin.Context) {
|
||||||
@@ -144,8 +143,7 @@ func (e SysRole) Insert(c *gin.Context) {
|
|||||||
// @Accept application/json
|
// @Accept application/json
|
||||||
// @Product application/json
|
// @Product application/json
|
||||||
// @Param data body dto.SysRoleControl true "body"
|
// @Param data body dto.SysRoleControl true "body"
|
||||||
// @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
|
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
|
||||||
// @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
|
|
||||||
// @Router /api/v1/role/{id} [put]
|
// @Router /api/v1/role/{id} [put]
|
||||||
// @Security Bearer
|
// @Security Bearer
|
||||||
func (e SysRole) Update(c *gin.Context) {
|
func (e SysRole) Update(c *gin.Context) {
|
||||||
@@ -183,8 +181,7 @@ func (e SysRole) Update(c *gin.Context) {
|
|||||||
// @Description 删除数据
|
// @Description 删除数据
|
||||||
// @Tags 角色/Role
|
// @Tags 角色/Role
|
||||||
// @Param data body dto.SysRoleById true "body"
|
// @Param data body dto.SysRoleById true "body"
|
||||||
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
|
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
|
||||||
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
|
|
||||||
// @Router /api/v1/role [delete]
|
// @Router /api/v1/role [delete]
|
||||||
// @Security Bearer
|
// @Security Bearer
|
||||||
func (e SysRole) Delete(c *gin.Context) {
|
func (e SysRole) Delete(c *gin.Context) {
|
||||||
@@ -197,25 +194,66 @@ func (e SysRole) Delete(c *gin.Context) {
|
|||||||
Errors
|
Errors
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e.Logger.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(500, err, err.Error())
|
e.Error(500, err, fmt.Sprintf("删除角色 %v 失败,\r\n失败信息 %s", req.Ids, err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = s.Remove(&req)
|
err = s.Remove(&req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e.Logger.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(http.StatusInternalServerError, err, "")
|
e.Error(500, err, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = global.LoadPolicy(c)
|
_, err = global.LoadPolicy(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e.Error(http.StatusInternalServerError, err, "")
|
e.Error(500, err, fmt.Sprintf("删除角色 %v 失败,失败信息 %s", req.Id, err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
e.OK(req.GetId(), "删除成功")
|
e.OK(req.GetId(), fmt.Sprintf("删除角色角色 %v 状态成功!", req.GetId()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update2Status 修改用户角色状态
|
||||||
|
// @Summary 修改用户角色
|
||||||
|
// @Description 获取JSON
|
||||||
|
// @Tags 角色/Role
|
||||||
|
// @Accept application/json
|
||||||
|
// @Product application/json
|
||||||
|
// @Param data body dto.UpdateStatusReq true "body"
|
||||||
|
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
|
||||||
|
// @Router /api/v1/role-status/{id} [put]
|
||||||
|
// @Security Bearer
|
||||||
|
func (e SysRole) Update2Status(c *gin.Context) {
|
||||||
|
s := service.SysRole{}
|
||||||
|
req := dto.UpdateStatusReq{}
|
||||||
|
err := e.MakeContext(c).
|
||||||
|
MakeOrm().
|
||||||
|
Bind(&req, nil, binding.JSON).
|
||||||
|
MakeService(&s.Service).
|
||||||
|
Errors
|
||||||
|
if err != nil {
|
||||||
|
e.Logger.Error(err)
|
||||||
|
e.Error(500, err, fmt.Sprintf("更新角色状态失败,失败原因:%s ", err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
req.SetUpdateBy(user.GetUserId(c))
|
||||||
|
err = s.UpdateStatus(&req)
|
||||||
|
if err != nil {
|
||||||
|
e.Error(500, err, fmt.Sprintf("更新角色状态失败,失败原因:%s ", err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
e.OK(req.GetId(), fmt.Sprintf("更新角色 %v 状态成功!", req.GetId()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update2DataScope 更新角色数据权限
|
// Update2DataScope 更新角色数据权限
|
||||||
|
// @Summary 更新角色数据权限
|
||||||
|
// @Description 获取JSON
|
||||||
|
// @Tags 角色/Role
|
||||||
|
// @Accept application/json
|
||||||
|
// @Product application/json
|
||||||
|
// @Param data body dto.RoleDataScopeReq true "body"
|
||||||
|
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
|
||||||
|
// @Router /api/v1/role-status/{id} [put]
|
||||||
|
// @Security Bearer
|
||||||
func (e SysRole) Update2DataScope(c *gin.Context) {
|
func (e SysRole) Update2DataScope(c *gin.Context) {
|
||||||
s := &service.SysRole{}
|
s := &service.SysRole{}
|
||||||
req := dto.RoleDataScopeReq{}
|
req := dto.RoleDataScopeReq{}
|
||||||
|
|||||||
+62
-143
@@ -2,6 +2,8 @@ package tools
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"go-admin/app/admin/service"
|
||||||
|
"go-admin/app/admin/service/dto"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -13,7 +15,6 @@ import (
|
|||||||
"github.com/go-admin-team/go-admin-core/sdk/config"
|
"github.com/go-admin-team/go-admin-core/sdk/config"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
||||||
|
|
||||||
"go-admin/app/admin/models"
|
|
||||||
"go-admin/app/admin/models/tools"
|
"go-admin/app/admin/models/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -250,14 +251,20 @@ func (e Gen) NOActionsGen(c *gin.Context, tab tools.SysTables) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e Gen) genApiToFile(c *gin.Context, tab tools.SysTables) {
|
func (e Gen) genApiToFile(c *gin.Context, tab tools.SysTables) {
|
||||||
e.Context = c
|
err := e.MakeContext(c).
|
||||||
log := e.GetLogger()
|
MakeOrm().
|
||||||
|
Errors
|
||||||
|
if err != nil {
|
||||||
|
e.Logger.Error(err)
|
||||||
|
e.Error(500, err, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
basePath := "template/"
|
basePath := "template/"
|
||||||
|
|
||||||
t1, err := template.ParseFiles(basePath + "api_migrate.template")
|
t1, err := template.ParseFiles(basePath + "api_migrate.template")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(500, err, "")
|
e.Error(500, err, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -273,8 +280,15 @@ func (e Gen) genApiToFile(c *gin.Context, tab tools.SysTables) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e Gen) ActionsGen(c *gin.Context, tab tools.SysTables) {
|
func (e Gen) ActionsGen(c *gin.Context, tab tools.SysTables) {
|
||||||
e.Context = c
|
err := e.MakeContext(c).
|
||||||
log := api.GetRequestLogger(c)
|
MakeOrm().
|
||||||
|
Errors
|
||||||
|
if err != nil {
|
||||||
|
e.Logger.Error(err)
|
||||||
|
e.Error(500, err, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
basePath := "template/v4/"
|
basePath := "template/v4/"
|
||||||
routerFile := basePath + "actions/router_check_role.go.template"
|
routerFile := basePath + "actions/router_check_role.go.template"
|
||||||
|
|
||||||
@@ -284,31 +298,31 @@ func (e Gen) ActionsGen(c *gin.Context, tab tools.SysTables) {
|
|||||||
|
|
||||||
t1, err := template.ParseFiles(basePath + "model.go.template")
|
t1, err := template.ParseFiles(basePath + "model.go.template")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(500, err, "")
|
e.Error(500, err, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t3, err := template.ParseFiles(routerFile)
|
t3, err := template.ParseFiles(routerFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(500, err, "")
|
e.Error(500, err, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t4, err := template.ParseFiles(basePath + "js.go.template")
|
t4, err := template.ParseFiles(basePath + "js.go.template")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(500, err, "")
|
e.Error(500, err, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t5, err := template.ParseFiles(basePath + "vue.go.template")
|
t5, err := template.ParseFiles(basePath + "vue.go.template")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(500, err, "")
|
e.Error(500, err, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t6, err := template.ParseFiles(basePath + "dto.go.template")
|
t6, err := template.ParseFiles(basePath + "dto.go.template")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err)
|
e.Logger.Error(err)
|
||||||
e.Error(500, err, "")
|
e.Error(500, err, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -338,25 +352,26 @@ func (e Gen) ActionsGen(c *gin.Context, tab tools.SysTables) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e Gen) GenMenuAndApi(c *gin.Context) {
|
func (e Gen) GenMenuAndApi(c *gin.Context) {
|
||||||
e.Context = c
|
s:=service.SysMenu{}
|
||||||
log := e.GetLogger()
|
err := e.MakeContext(c).
|
||||||
|
MakeOrm().
|
||||||
table := tools.SysTables{}
|
MakeService(&s.Service).
|
||||||
timeNow := pkg.GetCurrentTime()
|
Errors
|
||||||
id, err := pkg.StringToInt(c.Param("tableId"))
|
|
||||||
pkg.HasError(err, "", -1)
|
|
||||||
|
|
||||||
db, err := pkg.GetOrm(c)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("get db connection error, %s", err.Error())
|
e.Logger.Error(err)
|
||||||
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
|
e.Error(500, err, err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table := tools.SysTables{}
|
||||||
|
id, err := pkg.StringToInt(c.Param("tableId"))
|
||||||
|
pkg.HasError(err, "", -1)
|
||||||
|
|
||||||
|
|
||||||
table.TableId = id
|
table.TableId = id
|
||||||
tab, _ := table.Get(db)
|
tab, _ := table.Get(e.Orm)
|
||||||
Mmenu := models.Menu{}
|
|
||||||
//Mmenu.MenuName =
|
Mmenu := dto.SysMenuControl{}
|
||||||
Mmenu.Title = tab.TableComment
|
Mmenu.Title = tab.TableComment
|
||||||
Mmenu.Icon = "pass"
|
Mmenu.Icon = "pass"
|
||||||
Mmenu.Path = "/" + strings.Replace(tab.TBName, "_", "-", -1)
|
Mmenu.Path = "/" + strings.Replace(tab.TBName, "_", "-", -1)
|
||||||
@@ -368,13 +383,10 @@ func (e Gen) GenMenuAndApi(c *gin.Context) {
|
|||||||
Mmenu.Sort = 0
|
Mmenu.Sort = 0
|
||||||
Mmenu.Visible = "0"
|
Mmenu.Visible = "0"
|
||||||
Mmenu.IsFrame = "0"
|
Mmenu.IsFrame = "0"
|
||||||
Mmenu.CreateBy = "1"
|
Mmenu.CreateBy = 1
|
||||||
Mmenu.UpdateBy = "1"
|
s.Insert(&Mmenu)
|
||||||
Mmenu.CreatedAt = timeNow
|
|
||||||
Mmenu.UpdatedAt = timeNow
|
|
||||||
Mmenu.MenuId, err = Mmenu.Create(db)
|
|
||||||
|
|
||||||
Cmenu := models.Menu{}
|
Cmenu := dto.SysMenuControl{}
|
||||||
Cmenu.MenuName = tab.ClassName + "Manage"
|
Cmenu.MenuName = tab.ClassName + "Manage"
|
||||||
Cmenu.Title = tab.TableComment
|
Cmenu.Title = tab.TableComment
|
||||||
Cmenu.Icon = "pass"
|
Cmenu.Icon = "pass"
|
||||||
@@ -388,13 +400,11 @@ func (e Gen) GenMenuAndApi(c *gin.Context) {
|
|||||||
Cmenu.Sort = 0
|
Cmenu.Sort = 0
|
||||||
Cmenu.Visible = "0"
|
Cmenu.Visible = "0"
|
||||||
Cmenu.IsFrame = "0"
|
Cmenu.IsFrame = "0"
|
||||||
Cmenu.CreateBy = "1"
|
Cmenu.CreateBy = 1
|
||||||
Cmenu.UpdateBy = "1"
|
Cmenu.UpdateBy = 1
|
||||||
Cmenu.CreatedAt = timeNow
|
s.Insert(&Cmenu)
|
||||||
Cmenu.UpdatedAt = timeNow
|
|
||||||
Cmenu.MenuId, err = Cmenu.Create(db)
|
|
||||||
|
|
||||||
MList := models.Menu{}
|
MList := dto.SysMenuControl{}
|
||||||
MList.MenuName = ""
|
MList.MenuName = ""
|
||||||
MList.Title = "分页获取" + tab.TableComment
|
MList.Title = "分页获取" + tab.TableComment
|
||||||
MList.Icon = ""
|
MList.Icon = ""
|
||||||
@@ -407,13 +417,11 @@ func (e Gen) GenMenuAndApi(c *gin.Context) {
|
|||||||
MList.Sort = 0
|
MList.Sort = 0
|
||||||
MList.Visible = "0"
|
MList.Visible = "0"
|
||||||
MList.IsFrame = "0"
|
MList.IsFrame = "0"
|
||||||
MList.CreateBy = "1"
|
MList.CreateBy = 1
|
||||||
MList.UpdateBy = "1"
|
MList.UpdateBy = 1
|
||||||
MList.CreatedAt = timeNow
|
s.Insert(&MList)
|
||||||
MList.UpdatedAt = timeNow
|
|
||||||
MList.MenuId, err = MList.Create(db)
|
|
||||||
|
|
||||||
MCreate := models.Menu{}
|
MCreate := dto.SysMenuControl{}
|
||||||
MCreate.MenuName = ""
|
MCreate.MenuName = ""
|
||||||
MCreate.Title = "创建" + tab.TableComment
|
MCreate.Title = "创建" + tab.TableComment
|
||||||
MCreate.Icon = ""
|
MCreate.Icon = ""
|
||||||
@@ -426,13 +434,11 @@ func (e Gen) GenMenuAndApi(c *gin.Context) {
|
|||||||
MCreate.Sort = 0
|
MCreate.Sort = 0
|
||||||
MCreate.Visible = "0"
|
MCreate.Visible = "0"
|
||||||
MCreate.IsFrame = "0"
|
MCreate.IsFrame = "0"
|
||||||
MCreate.CreateBy = "1"
|
MCreate.CreateBy = 1
|
||||||
MCreate.UpdateBy = "1"
|
MCreate.UpdateBy = 1
|
||||||
MCreate.CreatedAt = timeNow
|
s.Insert(&MCreate)
|
||||||
MCreate.UpdatedAt = timeNow
|
|
||||||
MCreate.MenuId, err = MCreate.Create(db)
|
|
||||||
|
|
||||||
MUpdate := models.Menu{}
|
MUpdate := dto.SysMenuControl{}
|
||||||
MUpdate.MenuName = ""
|
MUpdate.MenuName = ""
|
||||||
MUpdate.Title = "修改" + tab.TableComment
|
MUpdate.Title = "修改" + tab.TableComment
|
||||||
MUpdate.Icon = ""
|
MUpdate.Icon = ""
|
||||||
@@ -445,13 +451,11 @@ func (e Gen) GenMenuAndApi(c *gin.Context) {
|
|||||||
MUpdate.Sort = 0
|
MUpdate.Sort = 0
|
||||||
MUpdate.Visible = "0"
|
MUpdate.Visible = "0"
|
||||||
MUpdate.IsFrame = "0"
|
MUpdate.IsFrame = "0"
|
||||||
MUpdate.CreateBy = "1"
|
MUpdate.CreateBy = 1
|
||||||
MUpdate.UpdateBy = "1"
|
MUpdate.UpdateBy = 1
|
||||||
MUpdate.CreatedAt = timeNow
|
s.Insert(&MUpdate)
|
||||||
MUpdate.UpdatedAt = timeNow
|
|
||||||
MUpdate.MenuId, err = MUpdate.Create(db)
|
|
||||||
|
|
||||||
MDelete := models.Menu{}
|
MDelete := dto.SysMenuControl{}
|
||||||
MDelete.MenuName = ""
|
MDelete.MenuName = ""
|
||||||
MDelete.Title = "删除" + tab.TableComment
|
MDelete.Title = "删除" + tab.TableComment
|
||||||
MDelete.Icon = ""
|
MDelete.Icon = ""
|
||||||
@@ -464,95 +468,10 @@ func (e Gen) GenMenuAndApi(c *gin.Context) {
|
|||||||
MDelete.Sort = 0
|
MDelete.Sort = 0
|
||||||
MDelete.Visible = "0"
|
MDelete.Visible = "0"
|
||||||
MDelete.IsFrame = "0"
|
MDelete.IsFrame = "0"
|
||||||
MDelete.CreateBy = "1"
|
MDelete.CreateBy = 1
|
||||||
MDelete.UpdateBy = "1"
|
MDelete.UpdateBy = 1
|
||||||
MDelete.CreatedAt = timeNow
|
s.Insert(&MDelete)
|
||||||
MDelete.UpdatedAt = timeNow
|
|
||||||
MDelete.MenuId, err = MDelete.Create(db)
|
|
||||||
|
|
||||||
var InterfaceId = 63
|
|
||||||
Amenu := models.Menu{}
|
|
||||||
Amenu.MenuName = tab.TBName
|
|
||||||
Amenu.Title = tab.TableComment
|
|
||||||
Amenu.Icon = "bug"
|
|
||||||
Amenu.Path = tab.TBName
|
|
||||||
Amenu.MenuType = "M"
|
|
||||||
Amenu.Action = "无"
|
|
||||||
Amenu.ParentId = InterfaceId
|
|
||||||
Amenu.NoCache = false
|
|
||||||
Amenu.Sort = 0
|
|
||||||
Amenu.Visible = "1"
|
|
||||||
Amenu.IsFrame = "0"
|
|
||||||
Amenu.CreateBy = "1"
|
|
||||||
Amenu.UpdateBy = "1"
|
|
||||||
Amenu.CreatedAt = timeNow
|
|
||||||
Amenu.UpdatedAt = timeNow
|
|
||||||
Amenu.MenuId, err = Amenu.Create(db)
|
|
||||||
|
|
||||||
//AList := models.SysApi{}
|
|
||||||
//AList.Name = ""
|
|
||||||
//AList.Title = "分页获取" + tab.TableComment
|
|
||||||
//AList.Path = "/api/v1/" + tab.ModuleFrontName
|
|
||||||
//AList.Action = "GET"
|
|
||||||
//AList.ParentId = Amenu.MenuId
|
|
||||||
//AList.Sort = 0
|
|
||||||
//AList.CreateBy = 1
|
|
||||||
//AList.UpdateBy = 1
|
|
||||||
//AList.CreatedAt = timeNow
|
|
||||||
//AList.UpdatedAt = timeNow
|
|
||||||
//AList.Id, err = AList.Create(db)
|
|
||||||
//
|
|
||||||
//AGet := models.SysApi{}
|
|
||||||
//AList.Name = ""
|
|
||||||
//AGet.Title = "根据id获取" + tab.TableComment
|
|
||||||
//AGet.Path = "/api/v1/" + tab.ModuleFrontName + "/:id"
|
|
||||||
//AGet.Action = "GET"
|
|
||||||
//AGet.ParentId = Amenu.MenuId
|
|
||||||
//AGet.Sort = 0
|
|
||||||
//AGet.CreateBy = 1
|
|
||||||
//AGet.UpdateBy = 1
|
|
||||||
//AGet.CreatedAt = timeNow
|
|
||||||
//AGet.UpdatedAt = timeNow
|
|
||||||
//AGet.Id, err = AGet.Create(db)
|
|
||||||
//
|
|
||||||
//ACreate := models.SysApi{}
|
|
||||||
//AList.Name = ""
|
|
||||||
//ACreate.Title = "创建" + tab.TableComment
|
|
||||||
//ACreate.Path = "/api/v1/" + tab.ModuleFrontName
|
|
||||||
//ACreate.Action = "POST"
|
|
||||||
//ACreate.ParentId = Amenu.MenuId
|
|
||||||
//ACreate.Sort = 0
|
|
||||||
//ACreate.CreateBy = 1
|
|
||||||
//ACreate.UpdateBy = 1
|
|
||||||
//ACreate.CreatedAt = timeNow
|
|
||||||
//ACreate.UpdatedAt = timeNow
|
|
||||||
//ACreate.Id, err = ACreate.Create(db)
|
|
||||||
//
|
|
||||||
//AUpdate := models.SysApi{}
|
|
||||||
//AList.Name = ""
|
|
||||||
//AUpdate.Title = "修改" + tab.TableComment
|
|
||||||
//AUpdate.Path = "/api/v1/" + tab.ModuleFrontName + "/:id"
|
|
||||||
//AUpdate.Action = "PUT"
|
|
||||||
//AUpdate.ParentId = Amenu.MenuId
|
|
||||||
//AUpdate.Sort = 0
|
|
||||||
//AUpdate.CreateBy = 1
|
|
||||||
//AUpdate.UpdateBy = 1
|
|
||||||
//AUpdate.CreatedAt = timeNow
|
|
||||||
//AUpdate.UpdatedAt = timeNow
|
|
||||||
//AUpdate.Id, err = AUpdate.Create(db)
|
|
||||||
//
|
|
||||||
//ADelete := models.SysApi{}
|
|
||||||
//AList.Name = ""
|
|
||||||
//ADelete.Title = "删除" + tab.TableComment
|
|
||||||
//ADelete.Path = "/api/v1/" + tab.ModuleFrontName
|
|
||||||
//ADelete.Action = "DELETE"
|
|
||||||
//ADelete.ParentId = Amenu.MenuId
|
|
||||||
//ADelete.Sort = 0
|
|
||||||
//ADelete.CreateBy = 1
|
|
||||||
//ADelete.UpdateBy = 1
|
|
||||||
//ADelete.CreatedAt = timeNow
|
|
||||||
//ADelete.UpdatedAt = timeNow
|
|
||||||
//ADelete.Id, err = ADelete.Create(db)
|
|
||||||
|
|
||||||
e.OK("", "数据生成成功!")
|
e.OK("", "数据生成成功!")
|
||||||
}
|
}
|
||||||
|
|||||||
+152
-160
@@ -1,162 +1,154 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import (
|
//type Menu struct {
|
||||||
"errors"
|
// MenuId int `json:"menuId" gorm:"primaryKey;autoIncrement"`
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
// MenuName string `json:"menuName" gorm:"size:128;"`
|
||||||
"go-admin/common/models"
|
// Title string `json:"title" gorm:"size:128;"`
|
||||||
|
// Icon string `json:"icon" gorm:"size:128;"`
|
||||||
"gorm.io/gorm"
|
// Path string `json:"path" gorm:"size:128;"`
|
||||||
)
|
// Paths string `json:"paths" gorm:"size:128;"`
|
||||||
|
// MenuType string `json:"menuType" gorm:"size:1;"`
|
||||||
type Menu struct {
|
// Action string `json:"action" gorm:"size:16;"`
|
||||||
MenuId int `json:"menuId" gorm:"primaryKey;autoIncrement"`
|
// Permission string `json:"permission" gorm:"size:255;"`
|
||||||
MenuName string `json:"menuName" gorm:"size:128;"`
|
// ParentId int `json:"parentId" gorm:"size:11;"`
|
||||||
Title string `json:"title" gorm:"size:128;"`
|
// NoCache bool `json:"noCache" gorm:"size:8;"`
|
||||||
Icon string `json:"icon" gorm:"size:128;"`
|
// Breadcrumb string `json:"breadcrumb" gorm:"size:255;"`
|
||||||
Path string `json:"path" gorm:"size:128;"`
|
// Component string `json:"component" gorm:"size:255;"`
|
||||||
Paths string `json:"paths" gorm:"size:128;"`
|
// Sort int `json:"sort" gorm:"size:4;"`
|
||||||
MenuType string `json:"menuType" gorm:"size:1;"`
|
// Visible string `json:"visible" gorm:"size:1;"`
|
||||||
Action string `json:"action" gorm:"size:16;"`
|
// CreateBy string `json:"createBy" gorm:"size:128;"`
|
||||||
Permission string `json:"permission" gorm:"size:255;"`
|
// UpdateBy string `json:"updateBy" gorm:"size:128;"`
|
||||||
ParentId int `json:"parentId" gorm:"size:11;"`
|
// IsFrame string `json:"isFrame" gorm:"size:1;DEFAULT:0;"`
|
||||||
NoCache bool `json:"noCache" gorm:"size:8;"`
|
// DataScope string `json:"dataScope" gorm:"-"`
|
||||||
Breadcrumb string `json:"breadcrumb" gorm:"size:255;"`
|
// Params string `json:"params" gorm:"-"`
|
||||||
Component string `json:"component" gorm:"size:255;"`
|
// RoleId int `gorm:"-"`
|
||||||
Sort int `json:"sort" gorm:"size:4;"`
|
// Children []Menu `json:"children" gorm:"-"`
|
||||||
Visible string `json:"visible" gorm:"size:1;"`
|
// IsSelect bool `json:"is_select" gorm:"-"`
|
||||||
CreateBy string `json:"createBy" gorm:"size:128;"`
|
//
|
||||||
UpdateBy string `json:"updateBy" gorm:"size:128;"`
|
// models.ModelTime
|
||||||
IsFrame string `json:"isFrame" gorm:"size:1;DEFAULT:0;"`
|
//}
|
||||||
DataScope string `json:"dataScope" gorm:"-"`
|
//
|
||||||
Params string `json:"params" gorm:"-"`
|
//func (Menu) TableName() string {
|
||||||
RoleId int `gorm:"-"`
|
// return "sys_menu"
|
||||||
Children []Menu `json:"children" gorm:"-"`
|
//}
|
||||||
IsSelect bool `json:"is_select" gorm:"-"`
|
//
|
||||||
|
//type MenuLable struct {
|
||||||
models.ModelTime
|
// Id int `json:"id" gorm:"-"`
|
||||||
}
|
// Label string `json:"label" gorm:"-"`
|
||||||
|
// Children []MenuLable `json:"children" gorm:"-"`
|
||||||
func (Menu) TableName() string {
|
//}
|
||||||
return "sys_menu"
|
//
|
||||||
}
|
//type Menus struct {
|
||||||
|
// MenuId int `json:"menuId" gorm:"column:menu_id;primaryKey;autoIncrement;"`
|
||||||
type MenuLable struct {
|
// MenuName string `json:"menuName" gorm:"column:menu_name"`
|
||||||
Id int `json:"id" gorm:"-"`
|
// Title string `json:"title" gorm:"column:title"`
|
||||||
Label string `json:"label" gorm:"-"`
|
// Icon string `json:"icon" gorm:"column:icon"`
|
||||||
Children []MenuLable `json:"children" gorm:"-"`
|
// Path string `json:"path" gorm:"column:path"`
|
||||||
}
|
// MenuType string `json:"menuType" gorm:"column:menu_type"`
|
||||||
|
// Action string `json:"action" gorm:"column:action"`
|
||||||
type Menus struct {
|
// Permission string `json:"permission" gorm:"column:permission"`
|
||||||
MenuId int `json:"menuId" gorm:"column:menu_id;primaryKey;autoIncrement;"`
|
// ParentId int `json:"parentId" gorm:"column:parent_id"`
|
||||||
MenuName string `json:"menuName" gorm:"column:menu_name"`
|
// NoCache bool `json:"noCache" gorm:"column:no_cache"`
|
||||||
Title string `json:"title" gorm:"column:title"`
|
// Breadcrumb string `json:"breadcrumb" gorm:"column:breadcrumb"`
|
||||||
Icon string `json:"icon" gorm:"column:icon"`
|
// Component string `json:"component" gorm:"column:component"`
|
||||||
Path string `json:"path" gorm:"column:path"`
|
// Sort int `json:"sort" gorm:"column:sort"`
|
||||||
MenuType string `json:"menuType" gorm:"column:menu_type"`
|
//
|
||||||
Action string `json:"action" gorm:"column:action"`
|
// Visible string `json:"visible" gorm:"column:visible"`
|
||||||
Permission string `json:"permission" gorm:"column:permission"`
|
// Children []Menu `json:"children" gorm:"-"`
|
||||||
ParentId int `json:"parentId" gorm:"column:parent_id"`
|
//
|
||||||
NoCache bool `json:"noCache" gorm:"column:no_cache"`
|
// CreateBy string `json:"createBy" gorm:"column:create_by"`
|
||||||
Breadcrumb string `json:"breadcrumb" gorm:"column:breadcrumb"`
|
// UpdateBy string `json:"updateBy" gorm:"column:update_by"`
|
||||||
Component string `json:"component" gorm:"column:component"`
|
// DataScope string `json:"dataScope" gorm:"-"`
|
||||||
Sort int `json:"sort" gorm:"column:sort"`
|
// Params string `json:"params" gorm:"-"`
|
||||||
|
// BaseModel
|
||||||
Visible string `json:"visible" gorm:"column:visible"`
|
//}
|
||||||
Children []Menu `json:"children" gorm:"-"`
|
//
|
||||||
|
//func (Menus) TableName() string {
|
||||||
CreateBy string `json:"createBy" gorm:"column:create_by"`
|
// return "sys_menu"
|
||||||
UpdateBy string `json:"updateBy" gorm:"column:update_by"`
|
//}
|
||||||
DataScope string `json:"dataScope" gorm:"-"`
|
//
|
||||||
Params string `json:"params" gorm:"-"`
|
//type MenuRole struct {
|
||||||
BaseModel
|
// Menus
|
||||||
}
|
// IsSelect bool `json:"is_select" gorm:"-"`
|
||||||
|
//}
|
||||||
func (Menus) TableName() string {
|
//
|
||||||
return "sys_menu"
|
//type MS []Menu
|
||||||
}
|
//
|
||||||
|
//func (e *Menu) Get(tx *gorm.DB) (Menus []Menu, err error) {
|
||||||
type MenuRole struct {
|
// table := tx.Table(e.TableName())
|
||||||
Menus
|
// if e.MenuName != "" {
|
||||||
IsSelect bool `json:"is_select" gorm:"-"`
|
// table = table.Where("menu_name = ?", e.MenuName)
|
||||||
}
|
// }
|
||||||
|
// if e.Path != "" {
|
||||||
type MS []Menu
|
// table = table.Where("path = ?", e.Path)
|
||||||
|
// }
|
||||||
func (e *Menu) Get(tx *gorm.DB) (Menus []Menu, err error) {
|
// if e.Action != "" {
|
||||||
table := tx.Table(e.TableName())
|
// table = table.Where("action = ?", e.Action)
|
||||||
if e.MenuName != "" {
|
// }
|
||||||
table = table.Where("menu_name = ?", e.MenuName)
|
// if e.MenuType != "" {
|
||||||
}
|
// table = table.Where("menu_type = ?", e.MenuType)
|
||||||
if e.Path != "" {
|
// }
|
||||||
table = table.Where("path = ?", e.Path)
|
//
|
||||||
}
|
// if err = table.Order("sort").Find(&Menus).Error; err != nil {
|
||||||
if e.Action != "" {
|
// return
|
||||||
table = table.Where("action = ?", e.Action)
|
// }
|
||||||
}
|
// return
|
||||||
if e.MenuType != "" {
|
//}
|
||||||
table = table.Where("menu_type = ?", e.MenuType)
|
//
|
||||||
}
|
//func (e *Menu) GetPage(tx *gorm.DB) (Menus []Menu, err error) {
|
||||||
|
// table := tx.Table(e.TableName())
|
||||||
if err = table.Order("sort").Find(&Menus).Error; err != nil {
|
// if e.MenuName != "" {
|
||||||
return
|
// table = table.Where("menu_name = ?", e.MenuName)
|
||||||
}
|
// }
|
||||||
return
|
// if e.Title != "" {
|
||||||
}
|
// table = table.Where("title = ?", e.Title)
|
||||||
|
// }
|
||||||
func (e *Menu) GetPage(tx *gorm.DB) (Menus []Menu, err error) {
|
// if e.Visible != "" {
|
||||||
table := tx.Table(e.TableName())
|
// table = table.Where("visible = ?", e.Visible)
|
||||||
if e.MenuName != "" {
|
// }
|
||||||
table = table.Where("menu_name = ?", e.MenuName)
|
// if e.MenuType != "" {
|
||||||
}
|
// table = table.Where("menu_type = ?", e.MenuType)
|
||||||
if e.Title != "" {
|
// }
|
||||||
table = table.Where("title = ?", e.Title)
|
//
|
||||||
}
|
// // 数据权限控制
|
||||||
if e.Visible != "" {
|
// dataPermission := new(DataPermission)
|
||||||
table = table.Where("visible = ?", e.Visible)
|
// dataPermission.UserId, _ = pkg.StringToInt(e.DataScope)
|
||||||
}
|
// table, err = dataPermission.GetDataScope("sys_menu", table)
|
||||||
if e.MenuType != "" {
|
// if err != nil {
|
||||||
table = table.Where("menu_type = ?", e.MenuType)
|
// return nil, err
|
||||||
}
|
// }
|
||||||
|
// if err = table.Order("sort").Find(&Menus).Error; err != nil {
|
||||||
// 数据权限控制
|
// return
|
||||||
dataPermission := new(DataPermission)
|
// }
|
||||||
dataPermission.UserId, _ = pkg.StringToInt(e.DataScope)
|
// return
|
||||||
table, err = dataPermission.GetDataScope("sys_menu", table)
|
//}
|
||||||
if err != nil {
|
//
|
||||||
return nil, err
|
//func (e *Menu) Create(tx *gorm.DB) (id int, err error) {
|
||||||
}
|
// result := tx.Table(e.TableName()).Create(&e)
|
||||||
if err = table.Order("sort").Find(&Menus).Error; err != nil {
|
// if result.Error != nil {
|
||||||
return
|
// err = result.Error
|
||||||
}
|
// return
|
||||||
return
|
// }
|
||||||
}
|
// err = InitPaths(tx, e)
|
||||||
|
// if err != nil {
|
||||||
func (e *Menu) Create(tx *gorm.DB) (id int, err error) {
|
// return
|
||||||
result := tx.Table(e.TableName()).Create(&e)
|
// }
|
||||||
if result.Error != nil {
|
// id = e.MenuId
|
||||||
err = result.Error
|
// return
|
||||||
return
|
//}
|
||||||
}
|
//
|
||||||
err = InitPaths(tx, e)
|
//func InitPaths(tx *gorm.DB, menu *Menu) (err error) {
|
||||||
if err != nil {
|
// parentMenu := new(Menu)
|
||||||
return
|
// if menu.ParentId != 0 {
|
||||||
}
|
// tx.Table("sys_menu").Where("menu_id = ?", menu.ParentId).First(parentMenu)
|
||||||
id = e.MenuId
|
// if parentMenu.Paths == "" {
|
||||||
return
|
// err = errors.New("父级paths异常,请尝试对当前节点父级菜单进行更新操作!")
|
||||||
}
|
// return
|
||||||
|
// }
|
||||||
func InitPaths(tx *gorm.DB, menu *Menu) (err error) {
|
// menu.Paths = parentMenu.Paths + "/" + pkg.IntToString(menu.MenuId)
|
||||||
parentMenu := new(Menu)
|
// } else {
|
||||||
if menu.ParentId != 0 {
|
// menu.Paths = "/0/" + pkg.IntToString(menu.MenuId)
|
||||||
tx.Table("sys_menu").Where("menu_id = ?", menu.ParentId).First(parentMenu)
|
// }
|
||||||
if parentMenu.Paths == "" {
|
// tx.Table("sys_menu").Where("menu_id = ?", menu.MenuId).Update("paths", menu.Paths)
|
||||||
err = errors.New("父级paths异常,请尝试对当前节点父级菜单进行更新操作!")
|
// return
|
||||||
return
|
//}
|
||||||
}
|
|
||||||
menu.Paths = parentMenu.Paths + "/" + pkg.IntToString(menu.MenuId)
|
|
||||||
} else {
|
|
||||||
menu.Paths = "/0/" + pkg.IntToString(menu.MenuId)
|
|
||||||
}
|
|
||||||
tx.Table("sys_menu").Where("menu_id = ?", menu.MenuId).Update("paths", menu.Paths)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -71,11 +71,6 @@ func SaveOperaLog(message storage.Messager) (err error) {
|
|||||||
log.Errorf("json Unmarshal error, %s", err.Error())
|
log.Errorf("json Unmarshal error, %s", err.Error())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if l.Title == "" {
|
|
||||||
m := &SysMenu{}
|
|
||||||
db.Model(m).Select("Title").Where("action = ?", l.Method).Where("path = ?", message.GetValues()["_fullPath"]).First(m)
|
|
||||||
l.Title = m.Title
|
|
||||||
}
|
|
||||||
err = db.Create(&l).Error
|
err = db.Create(&l).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("db create error, %s", err.Error())
|
log.Errorf("db create error, %s", err.Error())
|
||||||
|
|||||||
@@ -2,16 +2,17 @@ package router
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
|
||||||
"go-admin/app/admin/apis"
|
"go-admin/app/admin/apis"
|
||||||
"go-admin/app/admin/apis/tools"
|
"go-admin/app/admin/apis/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
routerNoCheckRole = append(routerNoCheckRole, sysNoCheckRoleRouter, registerDBRouter, registerSysTableRouter)
|
routerCheckRole = append(routerCheckRole, sysNoCheckRoleRouter, registerDBRouter, registerSysTableRouter)
|
||||||
}
|
}
|
||||||
|
|
||||||
func sysNoCheckRoleRouter(v1 *gin.RouterGroup) {
|
func sysNoCheckRoleRouter(v1 *gin.RouterGroup ,authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
r := v1.Group("")
|
r := v1.Group("").Use(authMiddleware.MiddlewareFunc())
|
||||||
{
|
{
|
||||||
sys := apis.System{}
|
sys := apis.System{}
|
||||||
r.GET("/getCaptcha", sys.GenerateCaptchaHandler)
|
r.GET("/getCaptcha", sys.GenerateCaptchaHandler)
|
||||||
@@ -25,8 +26,8 @@ func sysNoCheckRoleRouter(v1 *gin.RouterGroup) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerDBRouter(v1 *gin.RouterGroup) {
|
func registerDBRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
db := v1.Group("/db")
|
db := v1.Group("/db").Use(authMiddleware.MiddlewareFunc())
|
||||||
{
|
{
|
||||||
gen := tools.Gen{}
|
gen := tools.Gen{}
|
||||||
db.GET("/tables/page", gen.GetDBTableList)
|
db.GET("/tables/page", gen.GetDBTableList)
|
||||||
@@ -34,12 +35,12 @@ func registerDBRouter(v1 *gin.RouterGroup) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerSysTableRouter(v1 *gin.RouterGroup) {
|
func registerSysTableRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
tables := v1.Group("/sys/tables")
|
tables := v1.Group("/sys/tables")
|
||||||
{
|
{
|
||||||
sysTable := tools.SysTable{}
|
sysTable := tools.SysTable{}
|
||||||
tables.GET("/page", sysTable.GetSysTableList)
|
tables.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/page", sysTable.GetSysTableList)
|
||||||
tablesInfo := tables.Group("/info")
|
tablesInfo := tables.Group("/info").Use(authMiddleware.MiddlewareFunc())
|
||||||
{
|
{
|
||||||
tablesInfo.POST("", sysTable.InsertSysTable)
|
tablesInfo.POST("", sysTable.InsertSysTable)
|
||||||
tablesInfo.PUT("", sysTable.UpdateSysTable)
|
tablesInfo.PUT("", sysTable.UpdateSysTable)
|
||||||
|
|||||||
@@ -6,12 +6,7 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
log "github.com/go-admin-team/go-admin-core/logger"
|
log "github.com/go-admin-team/go-admin-core/logger"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk"
|
"github.com/go-admin-team/go-admin-core/sdk"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/api"
|
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/config"
|
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
|
||||||
|
|
||||||
common "go-admin/common/middleware"
|
common "go-admin/common/middleware"
|
||||||
"go-admin/common/middleware/handler"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// InitRouter 路由初始化,不要怀疑,这里用到了
|
// InitRouter 路由初始化,不要怀疑,这里用到了
|
||||||
@@ -19,8 +14,8 @@ func InitRouter() {
|
|||||||
var r *gin.Engine
|
var r *gin.Engine
|
||||||
h := sdk.Runtime.GetEngine()
|
h := sdk.Runtime.GetEngine()
|
||||||
if h == nil {
|
if h == nil {
|
||||||
h = gin.New()
|
log.Fatal("not found engine...")
|
||||||
sdk.Runtime.SetEngine(h)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
switch h.(type) {
|
switch h.(type) {
|
||||||
case *gin.Engine:
|
case *gin.Engine:
|
||||||
@@ -29,14 +24,7 @@ func InitRouter() {
|
|||||||
log.Fatal("not support other engine")
|
log.Fatal("not support other engine")
|
||||||
os.Exit(-1)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
if config.SslConfig.Enable {
|
|
||||||
r.Use(handler.TlsHandler())
|
|
||||||
}
|
|
||||||
|
|
||||||
r.Use(common.Sentinel()).
|
|
||||||
Use(common.RequestId(pkg.TrafficKey)).
|
|
||||||
Use(api.SetRequestLogger)
|
|
||||||
common.InitMiddleware(r)
|
|
||||||
// the jwt middleware
|
// the jwt middleware
|
||||||
authMiddleware, err := common.AuthInit()
|
authMiddleware, err := common.AuthInit()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -28,12 +28,12 @@ func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMidd
|
|||||||
r1.GET("/:configKey", api.GetSysConfigByKEYForService)
|
r1.GET("/:configKey", api.GetSysConfigByKEYForService)
|
||||||
}
|
}
|
||||||
|
|
||||||
r2 := v1.Group("/app-config")
|
r2 := v1.Group("/app-config").Use(authMiddleware.MiddlewareFunc())
|
||||||
{
|
{
|
||||||
r2.GET("", api.GetSysConfigBySysApp)
|
r2.GET("", api.GetSysConfigBySysApp)
|
||||||
}
|
}
|
||||||
|
|
||||||
r3 := v1.Group("/set-config")
|
r3 := v1.Group("/set-config").Use(authMiddleware.MiddlewareFunc())
|
||||||
{
|
{
|
||||||
r3.PUT("", api.Update2Set)
|
r3.PUT("", api.Update2Set)
|
||||||
r3.GET("", api.Get2Set)
|
r3.GET("", api.Get2Set)
|
||||||
|
|||||||
@@ -23,5 +23,9 @@ func registerSysRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
|
|||||||
r.PUT("/:id", api.Update)
|
r.PUT("/:id", api.Update)
|
||||||
r.DELETE("", api.Delete)
|
r.DELETE("", api.Delete)
|
||||||
}
|
}
|
||||||
v1.PUT("/roledatascope", api.Update2DataScope)
|
r1 := v1.Group("").Use(authMiddleware.MiddlewareFunc())
|
||||||
|
{
|
||||||
|
r1.PUT("/role-status", api.Update2Status)
|
||||||
|
r1.PUT("/roledatascope", api.Update2DataScope)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,6 @@ func (m *SysRoleSearch) GetNeedSearch() interface{} {
|
|||||||
return *m
|
return *m
|
||||||
}
|
}
|
||||||
|
|
||||||
// SysConfigControl 增、改使用的结构体
|
|
||||||
type SysRoleControl struct {
|
type SysRoleControl struct {
|
||||||
RoleId int `uri:"id" comment:"角色编码"` // 角色编码
|
RoleId int `uri:"id" comment:"角色编码"` // 角色编码
|
||||||
RoleName string `form:"roleName" comment:"角色名称"` // 角色名称
|
RoleName string `form:"roleName" comment:"角色名称"` // 角色名称
|
||||||
@@ -80,7 +79,25 @@ func (s *SysRoleControl) GetId() interface{} {
|
|||||||
return s.RoleId
|
return s.RoleId
|
||||||
}
|
}
|
||||||
|
|
||||||
// SysConfigById 获取单个或者删除的结构体
|
type UpdateStatusReq struct {
|
||||||
|
RoleId int `form:"roleId" comment:"角色编码"` // 角色编码
|
||||||
|
Status string `form:"status" comment:"状态"` // 状态
|
||||||
|
common.ControlBy
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UpdateStatusReq) Generate(model *models.SysRole) {
|
||||||
|
if s.RoleId != 0 {
|
||||||
|
model.RoleId = s.RoleId
|
||||||
|
}
|
||||||
|
model.Status = s.Status
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *UpdateStatusReq) GetId() interface{} {
|
||||||
|
return s.RoleId
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// SysRoleById 获取单个或者删除的结构体
|
||||||
type SysRoleById struct {
|
type SysRoleById struct {
|
||||||
dto.ObjectById
|
dto.ObjectById
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type SysMenu struct {
|
|||||||
service.Service
|
service.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSysMenuPage 获取SysMenu列表
|
// GetPage 获取SysMenu列表
|
||||||
func (e *SysMenu) GetPage(c *dto.SysMenuSearch, menus *[]models.SysMenu) *SysMenu {
|
func (e *SysMenu) GetPage(c *dto.SysMenuSearch, menus *[]models.SysMenu) *SysMenu {
|
||||||
var menu = make([]models.SysMenu, 0)
|
var menu = make([]models.SysMenu, 0)
|
||||||
err := e.getPage(c, &menu).Error
|
err := e.getPage(c, &menu).Error
|
||||||
@@ -36,7 +36,7 @@ func (e *SysMenu) GetPage(c *dto.SysMenuSearch, menus *[]models.SysMenu) *SysMen
|
|||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
// getSysMenuPage 菜单分页列表
|
// getPage 菜单分页列表
|
||||||
func (e *SysMenu) getPage(c *dto.SysMenuSearch, list *[]models.SysMenu) *SysMenu {
|
func (e *SysMenu) getPage(c *dto.SysMenuSearch, list *[]models.SysMenu) *SysMenu {
|
||||||
var err error
|
var err error
|
||||||
var data models.SysMenu
|
var data models.SysMenu
|
||||||
@@ -55,7 +55,7 @@ func (e *SysMenu) getPage(c *dto.SysMenuSearch, list *[]models.SysMenu) *SysMenu
|
|||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSysMenu 获取SysMenu对象
|
// Get 获取SysMenu对象
|
||||||
func (e *SysMenu) Get(d *dto.SysMenuById, model *models.SysMenu) *SysMenu {
|
func (e *SysMenu) Get(d *dto.SysMenuById, model *models.SysMenu) *SysMenu {
|
||||||
var err error
|
var err error
|
||||||
var data models.SysMenu
|
var data models.SysMenu
|
||||||
@@ -82,7 +82,7 @@ func (e *SysMenu) Get(d *dto.SysMenuById, model *models.SysMenu) *SysMenu {
|
|||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
// InsertSysMenu 创建SysMenu对象
|
// Insert 创建SysMenu对象
|
||||||
func (e *SysMenu) Insert(c *dto.SysMenuControl) *SysMenu {
|
func (e *SysMenu) Insert(c *dto.SysMenuControl) *SysMenu {
|
||||||
var err error
|
var err error
|
||||||
var data models.SysMenu
|
var data models.SysMenu
|
||||||
@@ -92,6 +92,7 @@ func (e *SysMenu) Insert(c *dto.SysMenuControl) *SysMenu {
|
|||||||
e.Log.Errorf("db error:%s", err)
|
e.Log.Errorf("db error:%s", err)
|
||||||
_ = e.AddError(err)
|
_ = e.AddError(err)
|
||||||
}
|
}
|
||||||
|
c.MenuId = data.MenuId
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,7 +114,7 @@ func (e *SysMenu) initPaths(menu *models.SysMenu) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateSysMenu 修改SysMenu对象
|
// Update 修改SysMenu对象
|
||||||
func (e *SysMenu) Update(c *dto.SysMenuControl) *SysMenu {
|
func (e *SysMenu) Update(c *dto.SysMenuControl) *SysMenu {
|
||||||
var err error
|
var err error
|
||||||
var model = models.SysMenu{}
|
var model = models.SysMenu{}
|
||||||
@@ -132,7 +133,7 @@ func (e *SysMenu) Update(c *dto.SysMenuControl) *SysMenu {
|
|||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveSysMenu 删除SysMenu
|
// Remove 删除SysMenu
|
||||||
func (e *SysMenu) Remove(d *dto.SysMenuById) *SysMenu {
|
func (e *SysMenu) Remove(d *dto.SysMenuById) *SysMenu {
|
||||||
var err error
|
var err error
|
||||||
var data models.SysMenu
|
var data models.SysMenu
|
||||||
|
|||||||
@@ -237,3 +237,31 @@ func (e *SysRole) UpdateDataScope(c *models.SysRole) (err error) {
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateStatus 修改SysRole对象status
|
||||||
|
func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
tx := e.Orm.Debug().Begin()
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
} else {
|
||||||
|
tx.Commit()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
var model = models.SysRole{}
|
||||||
|
tx.First(&model, c.GetId())
|
||||||
|
c.Generate(&model)
|
||||||
|
db := tx.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model)
|
||||||
|
|
||||||
|
if db.Error != nil {
|
||||||
|
e.Log.Errorf("db error:%s", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if db.RowsAffected == 0 {
|
||||||
|
return errors.New("无权更新该数据")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,67 +8,68 @@ import (
|
|||||||
"go-admin/app/admin/models"
|
"go-admin/app/admin/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// SysRoleMenu 即将弃用结构体
|
||||||
type SysRoleMenu struct {
|
type SysRoleMenu struct {
|
||||||
service.Service
|
service.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *SysRoleMenu) ReloadRule(tx *gorm.DB, roleId int, menuId []int) (err error) {
|
//func (e *SysRoleMenu) ReloadRule(tx *gorm.DB, roleId int, menuId []int) (err error) {
|
||||||
var role models.SysRole
|
// var role models.SysRole
|
||||||
|
//
|
||||||
msgID := e.MsgID
|
// msgID := e.MsgID
|
||||||
|
//
|
||||||
menu := make([]models.Menu, 0)
|
// menu := make([]models.Menu, 0)
|
||||||
roleMenu := make([]models.RoleMenu, len(menuId))
|
// roleMenu := make([]models.RoleMenu, len(menuId))
|
||||||
casbinRule := make([]models.CasbinRule, 0)
|
// casbinRule := make([]models.CasbinRule, 0)
|
||||||
//先删除所有的
|
// //先删除所有的
|
||||||
err = e.DeleteRoleMenu(tx, roleId)
|
// err = e.DeleteRoleMenu(tx, roleId)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 在事务中做一些数据库操作(从这一点使用'tx',而不是'db')
|
// // 在事务中做一些数据库操作(从这一点使用'tx',而不是'db')
|
||||||
err = tx.Where("role_id = ?", roleId).First(&role).Error
|
// err = tx.Where("role_id = ?", roleId).First(&role).Error
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
log.Errorf("msgID[%s] get role error, %s", msgID, err.Error())
|
// log.Errorf("msgID[%s] get role error, %s", msgID, err.Error())
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
err = tx.Where("menu_id in (?)", menuId).
|
// err = tx.Where("menu_id in (?)", menuId).
|
||||||
//Select("path, action, menu_id, menu_type").
|
// //Select("path, action, menu_id, menu_type").
|
||||||
Find(&menu).Error
|
// Find(&menu).Error
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
log.Errorf("msgID[%s] get menu error, %s", msgID, err.Error())
|
// log.Errorf("msgID[%s] get menu error, %s", msgID, err.Error())
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
for i := range menu {
|
// for i := range menu {
|
||||||
roleMenu[i] = models.RoleMenu{
|
// roleMenu[i] = models.RoleMenu{
|
||||||
RoleId: role.RoleId,
|
// RoleId: role.RoleId,
|
||||||
MenuId: menu[i].MenuId,
|
// MenuId: menu[i].MenuId,
|
||||||
RoleName: role.RoleKey,
|
// RoleName: role.RoleKey,
|
||||||
}
|
// }
|
||||||
if menu[i].MenuType == "A" {
|
// if menu[i].MenuType == "A" {
|
||||||
casbinRule = append(casbinRule, models.CasbinRule{
|
// casbinRule = append(casbinRule, models.CasbinRule{
|
||||||
PType: "p",
|
// PType: "p",
|
||||||
V0: role.RoleKey,
|
// V0: role.RoleKey,
|
||||||
V1: menu[i].Path,
|
// V1: menu[i].Path,
|
||||||
V2: menu[i].Action,
|
// V2: menu[i].Action,
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
err = tx.Create(&roleMenu).Error
|
// err = tx.Create(&roleMenu).Error
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
log.Errorf("msgID[%s] batch create role's menu error, %s", msgID, err.Error())
|
// log.Errorf("msgID[%s] batch create role's menu error, %s", msgID, err.Error())
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
if len(casbinRule) > 0 {
|
// if len(casbinRule) > 0 {
|
||||||
err = tx.Create(&casbinRule).Error
|
// err = tx.Create(&casbinRule).Error
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
log.Errorf("msgID[%s] batch create casbin rule error, %s", msgID, err.Error())
|
// log.Errorf("msgID[%s] batch create casbin rule error, %s", msgID, err.Error())
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return
|
// return
|
||||||
}
|
//}
|
||||||
|
|
||||||
func (e *SysRoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) (err error) {
|
func (e *SysRoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) (err error) {
|
||||||
msgID := e.MsgID
|
msgID := e.MsgID
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package router
|
package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
_ "github.com/go-admin-team/go-admin-core/sdk/pkg"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -15,8 +15,8 @@ func InitRouter() {
|
|||||||
var r *gin.Engine
|
var r *gin.Engine
|
||||||
h := sdk.Runtime.GetEngine()
|
h := sdk.Runtime.GetEngine()
|
||||||
if h == nil {
|
if h == nil {
|
||||||
h = gin.New()
|
log.Fatal("not found engine...")
|
||||||
sdk.Runtime.SetEngine(h)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
switch h.(type) {
|
switch h.(type) {
|
||||||
case *gin.Engine:
|
case *gin.Engine:
|
||||||
@@ -25,10 +25,6 @@ func InitRouter() {
|
|||||||
log.Fatal("not support other engine")
|
log.Fatal("not support other engine")
|
||||||
os.Exit(-1)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
r.Use(common.Sentinel()).
|
|
||||||
Use(common.RequestId(pkg.TrafficKey))
|
|
||||||
common.InitMiddleware(r)
|
|
||||||
|
|
||||||
// the jwt middleware
|
// the jwt middleware
|
||||||
authMiddleware, err := common.AuthInit()
|
authMiddleware, err := common.AuthInit()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -36,6 +32,5 @@ func InitRouter() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 注册业务路由
|
// 注册业务路由
|
||||||
// TODO: 这里可存放业务路由,里边并无实际路由只有演示代码
|
|
||||||
initRouter(r, authMiddleware)
|
initRouter(r, authMiddleware)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package router
|
package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
//"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -15,8 +15,8 @@ func InitRouter() {
|
|||||||
var r *gin.Engine
|
var r *gin.Engine
|
||||||
h := sdk.Runtime.GetEngine()
|
h := sdk.Runtime.GetEngine()
|
||||||
if h == nil {
|
if h == nil {
|
||||||
h = gin.New()
|
log.Fatal("not found engine...")
|
||||||
sdk.Runtime.SetEngine(h)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
switch h.(type) {
|
switch h.(type) {
|
||||||
case *gin.Engine:
|
case *gin.Engine:
|
||||||
@@ -26,16 +26,11 @@ func InitRouter() {
|
|||||||
os.Exit(-1)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
r.Use(common.Sentinel()).
|
|
||||||
Use(common.RequestId(pkg.TrafficKey))
|
|
||||||
common.InitMiddleware(r)
|
|
||||||
// the jwt middleware
|
|
||||||
authMiddleware, err := common.AuthInit()
|
authMiddleware, err := common.AuthInit()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("JWT Init Error, %s", err.Error())
|
log.Fatalf("JWT Init Error, %s", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注册业务路由
|
// 注册业务路由
|
||||||
// TODO: 这里可存放业务路由,里边并无实际路由只有演示代码
|
|
||||||
initRouter(r, authMiddleware)
|
initRouter(r, authMiddleware)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ func InitRouter() {
|
|||||||
var r *gin.Engine
|
var r *gin.Engine
|
||||||
h := sdk.Runtime.GetEngine()
|
h := sdk.Runtime.GetEngine()
|
||||||
if h == nil {
|
if h == nil {
|
||||||
h = gin.New()
|
log.Fatal("not found engine...")
|
||||||
sdk.Runtime.SetEngine(h)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
switch h.(type) {
|
switch h.(type) {
|
||||||
case *gin.Engine:
|
case *gin.Engine:
|
||||||
@@ -24,10 +24,6 @@ func InitRouter() {
|
|||||||
log.Fatal("not support other engine")
|
log.Fatal("not support other engine")
|
||||||
os.Exit(-1)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
//r.Use(common.Sentinel()).
|
|
||||||
// Use(common.RequestId(pkg.TrafficKey))
|
|
||||||
common.InitMiddleware(r)
|
|
||||||
// the jwt middleware
|
// the jwt middleware
|
||||||
authMiddleware, err := common.AuthInit()
|
authMiddleware, err := common.AuthInit()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
+41
-49
@@ -12,10 +12,9 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/go-admin-team/go-admin-core/config/source/file"
|
"github.com/go-admin-team/go-admin-core/config/source/file"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk"
|
"github.com/go-admin-team/go-admin-core/sdk"
|
||||||
|
"github.com/go-admin-team/go-admin-core/sdk/api"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/config"
|
"github.com/go-admin-team/go-admin-core/sdk/config"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg/captcha"
|
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg/logger"
|
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/runtime"
|
"github.com/go-admin-team/go-admin-core/sdk/runtime"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
@@ -24,6 +23,9 @@ import (
|
|||||||
"go-admin/app/jobs"
|
"go-admin/app/jobs"
|
||||||
"go-admin/common/database"
|
"go-admin/common/database"
|
||||||
"go-admin/common/global"
|
"go-admin/common/global"
|
||||||
|
common "go-admin/common/middleware"
|
||||||
|
"go-admin/common/middleware/handler"
|
||||||
|
"go-admin/common/storage"
|
||||||
ext "go-admin/config"
|
ext "go-admin/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -58,65 +60,27 @@ func setup() {
|
|||||||
// 注入配置扩展项
|
// 注入配置扩展项
|
||||||
config.ExtendConfig = &ext.ExtConfig
|
config.ExtendConfig = &ext.ExtConfig
|
||||||
//1. 读取配置
|
//1. 读取配置
|
||||||
config.Setup(file.NewSource(file.WithPath(configYml)))
|
config.Setup(
|
||||||
//2. 设置日志
|
file.NewSource(file.WithPath(configYml)),
|
||||||
sdk.Runtime.SetLogger(
|
database.Setup,
|
||||||
logger.SetupLogger(
|
storage.Setup,
|
||||||
config.LoggerConfig.Type,
|
)
|
||||||
config.LoggerConfig.Path,
|
|
||||||
config.LoggerConfig.Level,
|
|
||||||
config.LoggerConfig.Stdout))
|
|
||||||
//3. 初始化数据库链接
|
|
||||||
database.Setup()
|
|
||||||
|
|
||||||
//4. 设置缓存
|
|
||||||
cacheAdapter, err := config.CacheConfig.Setup()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("cache setup error, %s\n", err.Error())
|
|
||||||
}
|
|
||||||
sdk.Runtime.SetCacheAdapter(cacheAdapter)
|
|
||||||
//5. 设置验证码store
|
|
||||||
captcha.SetStore(captcha.NewCacheStore(cacheAdapter, 600))
|
|
||||||
|
|
||||||
//6. 设置队列
|
|
||||||
if !config.QueueConfig.Empty() {
|
|
||||||
queueAdapter, err := config.QueueConfig.Setup()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("queue setup error, %s\n", err.Error())
|
|
||||||
}
|
|
||||||
sdk.Runtime.SetQueueAdapter(queueAdapter)
|
|
||||||
defer func() {
|
|
||||||
go queueAdapter.Run()
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
|
||||||
//7. 设置分布式锁
|
|
||||||
if !config.LockerConfig.Empty() {
|
|
||||||
lockerAdapter, err := config.LockerConfig.Setup()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("locker setup error, %s\n", err.Error())
|
|
||||||
}
|
|
||||||
sdk.Runtime.SetLockerAdapter(lockerAdapter)
|
|
||||||
}
|
|
||||||
|
|
||||||
usageStr := `starting api server...`
|
|
||||||
log.Println(usageStr)
|
|
||||||
//注册监听函数
|
//注册监听函数
|
||||||
queue := sdk.Runtime.GetMemoryQueue("")
|
queue := sdk.Runtime.GetMemoryQueue("")
|
||||||
queue.Register(global.LoginLog, models.SaveLoginLog)
|
queue.Register(global.LoginLog, models.SaveLoginLog)
|
||||||
queue.Register(global.OperateLog, models.SaveOperaLog)
|
queue.Register(global.OperateLog, models.SaveOperaLog)
|
||||||
queue.Register(global.ApiCheck, models.SaveSysApi)
|
queue.Register(global.ApiCheck, models.SaveSysApi)
|
||||||
go queue.Run()
|
go queue.Run()
|
||||||
|
|
||||||
|
usageStr := `starting api server...`
|
||||||
|
log.Println(usageStr)
|
||||||
}
|
}
|
||||||
|
|
||||||
func run() error {
|
func run() error {
|
||||||
if config.ApplicationConfig.Mode == pkg.ModeProd.String() {
|
if config.ApplicationConfig.Mode == pkg.ModeProd.String() {
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
}
|
}
|
||||||
engine := sdk.Runtime.GetEngine()
|
initRouter()
|
||||||
if engine == nil {
|
|
||||||
engine = gin.New()
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, f := range AppRouters {
|
for _, f := range AppRouters {
|
||||||
f()
|
f()
|
||||||
@@ -126,11 +90,13 @@ func run() error {
|
|||||||
Addr: fmt.Sprintf("%s:%d", config.ApplicationConfig.Host, config.ApplicationConfig.Port),
|
Addr: fmt.Sprintf("%s:%d", config.ApplicationConfig.Host, config.ApplicationConfig.Port),
|
||||||
Handler: sdk.Runtime.GetEngine(),
|
Handler: sdk.Runtime.GetEngine(),
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
jobs.InitJob()
|
jobs.InitJob()
|
||||||
jobs.Setup(sdk.Runtime.GetDb())
|
jobs.Setup(sdk.Runtime.GetDb())
|
||||||
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
if apiCheck {
|
if apiCheck {
|
||||||
var routers = sdk.Runtime.GetRouter()
|
var routers = sdk.Runtime.GetRouter()
|
||||||
q := sdk.Runtime.GetMemoryQueue("")
|
q := sdk.Runtime.GetMemoryQueue("")
|
||||||
@@ -191,3 +157,29 @@ func tip() {
|
|||||||
usageStr := `欢迎使用 ` + pkg.Green(`go-admin `+global.Version) + ` 可以使用 ` + pkg.Red(`-h`) + ` 查看命令`
|
usageStr := `欢迎使用 ` + pkg.Green(`go-admin `+global.Version) + ` 可以使用 ` + pkg.Red(`-h`) + ` 查看命令`
|
||||||
fmt.Printf("%s \n\n", usageStr)
|
fmt.Printf("%s \n\n", usageStr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func initRouter() {
|
||||||
|
var r *gin.Engine
|
||||||
|
h := sdk.Runtime.GetEngine()
|
||||||
|
if h == nil {
|
||||||
|
h = gin.New()
|
||||||
|
sdk.Runtime.SetEngine(h)
|
||||||
|
}
|
||||||
|
switch h.(type) {
|
||||||
|
case *gin.Engine:
|
||||||
|
r = h.(*gin.Engine)
|
||||||
|
default:
|
||||||
|
log.Fatal("not support other engine")
|
||||||
|
os.Exit(-1)
|
||||||
|
}
|
||||||
|
if config.SslConfig.Enable {
|
||||||
|
r.Use(handler.TlsHandler())
|
||||||
|
}
|
||||||
|
//r.Use(middleware.Metrics())
|
||||||
|
r.Use(common.Sentinel()).
|
||||||
|
Use(common.RequestId(pkg.TrafficKey)).
|
||||||
|
Use(api.SetRequestLogger)
|
||||||
|
|
||||||
|
common.InitMiddleware(r)
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ type SysRole struct {
|
|||||||
Admin bool `json:"admin" gorm:"size:4;"`
|
Admin bool `json:"admin" gorm:"size:4;"`
|
||||||
DataScope string `json:"dataScope" gorm:"size:128;"`
|
DataScope string `json:"dataScope" gorm:"size:128;"`
|
||||||
SysMenu []SysMenu `json:"sysMenu" gorm:"many2many:sys_role_menu;foreignKey:RoleId;joinForeignKey:role_id;references:MenuId;joinReferences:menu_id;"`
|
SysMenu []SysMenu `json:"sysMenu" gorm:"many2many:sys_role_menu;foreignKey:RoleId;joinForeignKey:role_id;references:MenuId;joinReferences:menu_id;"`
|
||||||
ModelTime
|
|
||||||
ControlBy
|
ControlBy
|
||||||
|
ModelTime
|
||||||
}
|
}
|
||||||
|
|
||||||
func (SysRole) TableName() string {
|
func (SysRole) TableName() string {
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ func _1599190683659Tables(db *gorm.DB, version string) error {
|
|||||||
new(models.SysCategory),
|
new(models.SysCategory),
|
||||||
new(models.SysContent),
|
new(models.SysContent),
|
||||||
new(models.SysApi),
|
new(models.SysApi),
|
||||||
|
new(models.SysChinaAreaData),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
+5
-12
@@ -13,7 +13,6 @@ import (
|
|||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/config"
|
"github.com/go-admin-team/go-admin-core/sdk/config"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg/logger"
|
|
||||||
"go-admin/cmd/migrate/migration"
|
"go-admin/cmd/migrate/migration"
|
||||||
_ "go-admin/cmd/migrate/migration/version"
|
_ "go-admin/cmd/migrate/migration/version"
|
||||||
_ "go-admin/cmd/migrate/migration/version-local"
|
_ "go-admin/cmd/migrate/migration/version-local"
|
||||||
@@ -49,15 +48,10 @@ func run() {
|
|||||||
if !generate {
|
if !generate {
|
||||||
fmt.Println(`start init`)
|
fmt.Println(`start init`)
|
||||||
//1. 读取配置
|
//1. 读取配置
|
||||||
config.Setup(file.NewSource(file.WithPath(configYml)))
|
config.Setup(
|
||||||
//2. 设置日志
|
file.NewSource(file.WithPath(configYml)),
|
||||||
sdk.Runtime.SetLogger(
|
initDB,
|
||||||
logger.SetupLogger(
|
)
|
||||||
config.LoggerConfig.Type,
|
|
||||||
config.LoggerConfig.Path,
|
|
||||||
config.LoggerConfig.Level,
|
|
||||||
config.LoggerConfig.Stdout))
|
|
||||||
_ = initDB()
|
|
||||||
} else {
|
} else {
|
||||||
fmt.Println(`generate migration file`)
|
fmt.Println(`generate migration file`)
|
||||||
_ = genFile()
|
_ = genFile()
|
||||||
@@ -81,14 +75,13 @@ func migrateModel() error {
|
|||||||
migration.Migrate.Migrate()
|
migration.Migrate.Migrate()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
func initDB() error {
|
func initDB() {
|
||||||
//3. 初始化数据库链接
|
//3. 初始化数据库链接
|
||||||
database.Setup()
|
database.Setup()
|
||||||
//4. 数据库迁移
|
//4. 数据库迁移
|
||||||
fmt.Println("数据库迁移开始")
|
fmt.Println("数据库迁移开始")
|
||||||
_ = migrateModel()
|
_ = migrateModel()
|
||||||
fmt.Println(`数据库基础数据初始化成功`)
|
fmt.Println(`数据库基础数据初始化成功`)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func genFile() error {
|
func genFile() error {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
|
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
|
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
|
||||||
"github.com/mssola/user_agent"
|
"github.com/mssola/user_agent"
|
||||||
|
gaConfig "go-admin/config"
|
||||||
|
|
||||||
"go-admin/common/global"
|
"go-admin/common/global"
|
||||||
)
|
)
|
||||||
@@ -115,7 +116,7 @@ func LoginLogToDB(c *gin.Context, status string, msg string, username string) {
|
|||||||
|
|
||||||
ua := user_agent.New(c.Request.UserAgent())
|
ua := user_agent.New(c.Request.UserAgent())
|
||||||
l["ipaddr"] = c.ClientIP()
|
l["ipaddr"] = c.ClientIP()
|
||||||
l["loginLocation"] = pkg.GetLocation(c.ClientIP())
|
l["loginLocation"] = pkg.GetLocation(c.ClientIP(),gaConfig.ExtConfig.AMap.Key)
|
||||||
l["loginTime"] = pkg.GetCurrentTime()
|
l["loginTime"] = pkg.GetCurrentTime()
|
||||||
l["status"] = status
|
l["status"] = status
|
||||||
l["remark"] = c.Request.UserAgent()
|
l["remark"] = c.Request.UserAgent()
|
||||||
@@ -139,6 +140,7 @@ func LoginLogToDB(c *gin.Context, status string, msg string, username string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LogOut
|
||||||
// @Summary 退出登录
|
// @Summary 退出登录
|
||||||
// @Description 获取token
|
// @Description 获取token
|
||||||
// LoginHandler can be used by clients to get a jwt token.
|
// LoginHandler can be used by clients to get a jwt token.
|
||||||
@@ -167,7 +169,6 @@ func Authorizator(data interface{}, c *gin.Context) bool {
|
|||||||
c.Set("userId", u.UserId)
|
c.Set("userId", u.UserId)
|
||||||
c.Set("userName", u.Username)
|
c.Set("userName", u.Username)
|
||||||
c.Set("dataScope", r.DataScope)
|
c.Set("dataScope", r.DataScope)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ func InitMiddleware(r *gin.Engine) {
|
|||||||
r.Use(Options)
|
r.Use(Options)
|
||||||
// Secure is a middleware function that appends security
|
// Secure is a middleware function that appends security
|
||||||
r.Use(Secure)
|
r.Use(Secure)
|
||||||
|
//r.Use(DemoEvn())
|
||||||
// 链路追踪
|
// 链路追踪
|
||||||
//r.Use(middleware.Trace())
|
//r.Use(middleware.Trace())
|
||||||
sdk.Runtime.SetMiddleware(JwtTokenCheck, (*jwt.GinJWTMiddleware).MiddlewareFunc)
|
sdk.Runtime.SetMiddleware(JwtTokenCheck, (*jwt.GinJWTMiddleware).MiddlewareFunc)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
gaConfig "go-admin/config"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -104,7 +105,7 @@ func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string
|
|||||||
l["_fullPath"] = c.FullPath()
|
l["_fullPath"] = c.FullPath()
|
||||||
l["operUrl"] = reqUri
|
l["operUrl"] = reqUri
|
||||||
l["operIp"] = clientIP
|
l["operIp"] = clientIP
|
||||||
l["operLocation"] = pkg.GetLocation(clientIP)
|
l["operLocation"] = pkg.GetLocation(clientIP, gaConfig.ExtConfig.AMap.Key)
|
||||||
l["operName"] = user.GetUserName(c)
|
l["operName"] = user.GetUserName(c)
|
||||||
l["requestMethod"] = c.Request.Method
|
l["requestMethod"] = c.Request.Method
|
||||||
l["operParam"] = body
|
l["operParam"] = body
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* @Author: lwnmengjing
|
||||||
|
* @Date: 2021/6/10 3:39 下午
|
||||||
|
* @Last Modified by: lwnmengjing
|
||||||
|
* @Last Modified time: 2021/6/10 3:39 下午
|
||||||
|
*/
|
||||||
|
|
||||||
|
package storage
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/go-admin-team/go-admin-core/sdk"
|
||||||
|
"github.com/go-admin-team/go-admin-core/sdk/config"
|
||||||
|
"github.com/go-admin-team/go-admin-core/sdk/pkg/captcha"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Setup 配置storage组件
|
||||||
|
func Setup() {
|
||||||
|
//4. 设置缓存
|
||||||
|
cacheAdapter, err := config.CacheConfig.Setup()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("cache setup error, %s\n", err.Error())
|
||||||
|
}
|
||||||
|
sdk.Runtime.SetCacheAdapter(cacheAdapter)
|
||||||
|
//5. 设置验证码store
|
||||||
|
captcha.SetStore(captcha.NewCacheStore(cacheAdapter, 600))
|
||||||
|
|
||||||
|
//6. 设置队列
|
||||||
|
if !config.QueueConfig.Empty() {
|
||||||
|
if q := sdk.Runtime.GetQueueAdapter(); q != nil {
|
||||||
|
q.Shutdown()
|
||||||
|
}
|
||||||
|
queueAdapter, err := config.QueueConfig.Setup()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("queue setup error, %s\n", err.Error())
|
||||||
|
}
|
||||||
|
sdk.Runtime.SetQueueAdapter(queueAdapter)
|
||||||
|
defer func() {
|
||||||
|
go queueAdapter.Run()
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
|
//7. 设置分布式锁
|
||||||
|
if !config.LockerConfig.Empty() {
|
||||||
|
lockerAdapter, err := config.LockerConfig.Setup()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("locker setup error, %s\n", err.Error())
|
||||||
|
}
|
||||||
|
sdk.Runtime.SetLockerAdapter(lockerAdapter)
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
-3828
File diff suppressed because it is too large
Load Diff
+3
-3
@@ -8,9 +8,9 @@ var ExtConfig Extend
|
|||||||
// name: demo-name
|
// name: demo-name
|
||||||
// 使用方法: config.ExtConfig......即可!!
|
// 使用方法: config.ExtConfig......即可!!
|
||||||
type Extend struct {
|
type Extend struct {
|
||||||
// Demo Demo // 这里配置对应配置文件的结构即可
|
AMap AMap // 这里配置对应配置文件的结构即可
|
||||||
}
|
}
|
||||||
|
|
||||||
type Demo struct {
|
type AMap struct {
|
||||||
Name string
|
Key string
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ require (
|
|||||||
github.com/bytedance/go-tagexpr/v2 v2.7.10
|
github.com/bytedance/go-tagexpr/v2 v2.7.10
|
||||||
github.com/casbin/casbin/v2 v2.25.1
|
github.com/casbin/casbin/v2 v2.25.1
|
||||||
github.com/gin-gonic/gin v1.7.1
|
github.com/gin-gonic/gin v1.7.1
|
||||||
github.com/go-admin-team/go-admin-core v1.3.5-rc.3.0.20210609062350-5aeb6bd49b09
|
github.com/go-admin-team/go-admin-core v1.3.5-rc.5.0.20210610090758-13967b971b9f
|
||||||
github.com/go-admin-team/go-admin-core/sdk v1.3.0-rc.3.0.20210609082125-a317acc34456
|
github.com/go-admin-team/go-admin-core/sdk v1.3.5-rc.5.0.20210610090758-13967b971b9f
|
||||||
github.com/google/uuid v1.2.0
|
github.com/google/uuid v1.2.0
|
||||||
github.com/mssola/user_agent v0.5.2
|
github.com/mssola/user_agent v0.5.2
|
||||||
github.com/opentracing/opentracing-go v1.1.0
|
github.com/opentracing/opentracing-go v1.1.0
|
||||||
|
|||||||
Reference in New Issue
Block a user