diff --git a/app/admin/apis/captcha.go b/app/admin/apis/captcha.go index 3fd4ea09..4ed79f35 100644 --- a/app/admin/apis/captcha.go +++ b/app/admin/apis/captcha.go @@ -2,12 +2,12 @@ package apis import ( "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/captcha" - "go-admin/common/apis" ) type System struct { - apis.Api + api.Api } func (e System) GenerateCaptchaHandler(c *gin.Context) { diff --git a/app/admin/apis/sys_api.go b/app/admin/apis/sys_api.go index 1631ca4c..7602fa6a 100644 --- a/app/admin/apis/sys_api.go +++ b/app/admin/apis/sys_api.go @@ -4,6 +4,7 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" @@ -11,11 +12,10 @@ import ( "go-admin/app/admin/service" "go-admin/app/admin/service/dto" "go-admin/common/actions" - "go-admin/common/apis" ) type SysApi struct { - apis.Api + api.Api } // GetSysApiList 获取接口管理列表 diff --git a/app/admin/apis/sys_config.go b/app/admin/apis/sys_config.go index 67fa7967..ef62c4e2 100644 --- a/app/admin/apis/sys_config.go +++ b/app/admin/apis/sys_config.go @@ -1,20 +1,20 @@ package apis import ( - "github.com/gin-gonic/gin/binding" - "go-admin/app/admin/models" "net/http" "github.com/gin-gonic/gin" + "github.com/gin-gonic/gin/binding" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" + "go-admin/app/admin/models" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" ) type SysConfig struct { - apis.Api + api.Api } func (e SysConfig) GetSysConfigList(c *gin.Context) { diff --git a/app/admin/apis/sys_dept.go b/app/admin/apis/sys_dept.go index d9c2efd0..622973c3 100644 --- a/app/admin/apis/sys_dept.go +++ b/app/admin/apis/sys_dept.go @@ -6,16 +6,16 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" ) type SysDept struct { - apis.Api + api.Api } // @Summary 分页部门列表数据 diff --git a/app/admin/apis/sys_dict_data.go b/app/admin/apis/sys_dict_data.go index faa51c78..d05a63ed 100644 --- a/app/admin/apis/sys_dict_data.go +++ b/app/admin/apis/sys_dict_data.go @@ -5,17 +5,17 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" common "go-admin/common/models" ) type SysDictData struct { - apis.Api + api.Api } // @Summary 字典数据列表 diff --git a/app/admin/apis/sys_dict_type.go b/app/admin/apis/sys_dict_type.go index 6391f150..73bab4e9 100644 --- a/app/admin/apis/sys_dict_type.go +++ b/app/admin/apis/sys_dict_type.go @@ -5,17 +5,17 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" common "go-admin/common/models" ) type SysDictType struct { - apis.Api + api.Api } // @Summary 字典类型列表数据 diff --git a/app/admin/apis/sys_login_log.go b/app/admin/apis/sys_login_log.go index f3a79dd2..54d158fd 100644 --- a/app/admin/apis/sys_login_log.go +++ b/app/admin/apis/sys_login_log.go @@ -5,15 +5,15 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" ) type SysLoginLog struct { - apis.Api + api.Api } func (e SysLoginLog) GetSysLoginLogList(c *gin.Context) { diff --git a/app/admin/apis/sys_menu.go b/app/admin/apis/sys_menu.go index f4a09ba5..c6deea90 100644 --- a/app/admin/apis/sys_menu.go +++ b/app/admin/apis/sys_menu.go @@ -5,17 +5,18 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" ) type SysMenu struct { - apis.Api + api.Api } +// GetSysMenuList Menu列表数据 // @Summary Menu列表数据 // @Description 获取JSON // @Tags 菜单 @@ -65,28 +66,20 @@ func (e SysMenu) GetSysMenuList(c *gin.Context) { // @Security Bearer func (e SysMenu) GetSysMenu(c *gin.Context) { control := new(dto.SysMenuById) - - e.Context = c - log := e.GetLogger() - - db, err := e.GetOrm() + s := new(service.SysMenu) + err := e.MakeContext(c). + MakeOrm(). + Bind(control, nil). + MakeService(&s.Service). + Errors if err != nil { - log.Error(err) - return - } - - //查看详情 - err = control.Bind(c) - if err != nil { - e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") + e.Error(http.StatusInternalServerError, err, err.Error()) + e.Logger.Error(err) return } var object models.SysMenu - serviceSysMenu := service.SysMenu{} - serviceSysMenu.Log = log - serviceSysMenu.Orm = db - err = serviceSysMenu.GetSysMenu(control, &object) + err = s.GetSysMenu(control, &object) if err != nil { e.Error(http.StatusUnprocessableEntity, err, "查询失败") return @@ -179,58 +172,45 @@ func (e SysMenu) UpdateSysMenu(c *gin.Context) { // @Router /api/v1/menu/ [delete] func (e SysMenu) DeleteSysMenu(c *gin.Context) { control := new(dto.SysMenuById) - - e.Context = c - log := e.GetLogger() - - db, err := e.GetOrm() + s := new(service.SysMenu) + err := e.MakeContext(c). + MakeOrm(). + Bind(control). + MakeService(&s.Service). + Errors if err != nil { - log.Error(err) + e.Logger.Error(err) return } - - //删除操作 - err = control.Bind(c) + err = s.RemoveSysMenu(control).Error if err != nil { - log.Errorf("Bind error: %s", err) - e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") - return - } - - serviceSysMenu := service.SysMenu{} - serviceSysMenu.Orm = db - serviceSysMenu.Log = log - err = serviceSysMenu.RemoveSysMenu(control) - if err != nil { - log.Errorf("RemoveSysMenu error, %s", err) + e.Logger.Errorf("RemoveSysMenu error, %s", err) e.Error(http.StatusInternalServerError, err, "删除失败") return } e.OK(control.GetId(), "删除成功") } -// GetMenuRole 根据角色名称获取菜单列表数据(左菜单使用) -// @Summary 根据角色名称获取菜单列表数据(左菜单使用) +// GetMenuRole 根据登录角色名称获取菜单列表数据(左菜单使用) +// @Summary 根据登录角色名称获取菜单列表数据(左菜单使用) // @Description 获取JSON // @Tags 菜单 -// @Param id path int true "id" // @Success 200 {string} string "{"code": 200, "data": [...]}" // @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}" // @Router /api/v1/menurole [get] // @Security Bearer func (e SysMenu) GetMenuRole(c *gin.Context) { - e.Context = c - log := e.GetLogger() - db, err := e.GetOrm() + s := new(service.SysMenu) + err := e.MakeContext(c). + MakeOrm(). + MakeService(&s.Service). + Errors if err != nil { - log.Error(err) + e.Logger.Error(err) return } - serviceSysMenu := service.SysMenu{} - serviceSysMenu.Log = log - serviceSysMenu.Orm = db - result, err := serviceSysMenu.SetMenuRole(user.GetRoleName(c)) + result, err := s.SetMenuRole(user.GetRoleName(c)) if err != nil { e.Error(http.StatusInternalServerError, err, "查询失败") @@ -250,19 +230,21 @@ func (e SysMenu) GetMenuRole(c *gin.Context) { // @Router /api/v1/menuids/{id} [get] // @Security Bearer func (e SysMenu) GetMenuIDS(c *gin.Context) { - e.Context = c - log := e.GetLogger() - db, err := e.GetOrm() + s := new(service.SysMenu) + err := e.MakeContext(c). + MakeOrm(). + MakeService(&s.Service). + Errors if err != nil { - log.Error(err) + e.Logger.Error(err) return } var data models.RoleMenu data.RoleName = c.GetString("role") data.UpdateBy = user.GetUserId(c) - result, err := data.GetIDS(db) + result, err := data.GetIDS(s.Orm) if err != nil { - log.Errorf("GetIDS error, %s", err.Error()) + e.Logger.Errorf("GetIDS error, %s", err.Error()) e.Error(http.StatusInternalServerError, err, "获取失败") return } @@ -280,38 +262,35 @@ func (e SysMenu) GetMenuIDS(c *gin.Context) { // @Router /api/v1/menuTreeselect [get] // @Security Bearer func (e SysMenu) GetMenuTreeSelect(c *gin.Context) { - e.Context = c - log := e.GetLogger() - db, err := e.GetOrm() - if err != nil { - log.Error(err) - return - } - + s := new(service.SysMenu) + sr := new(service.SysRole) d := new(dto.SelectRole) - - err = c.BindUri(d) + err := e.MakeContext(c). + MakeOrm(). + MakeService(&s.Service). + MakeService(&sr.Service). + Bind(&d, nil). + Errors if err != nil { - e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") + e.Logger.Error(err) + e.Error(http.StatusUnprocessableEntity, err, err.Error()) return } - serviceSysMenu := service.SysMenu{} - serviceSysMenu.Log = log - serviceSysMenu.Orm = db - result, err := serviceSysMenu.SetSysMenuLabel() + result, err := s.SetSysMenuLabel() if err != nil { e.Error(http.StatusUnprocessableEntity, err, "查询失败") return } - s := service.SysRole{} - s.Log = log - s.Orm = db - menuIds, err := s.GetRoleMenuId(db, d.RoleId) - if err != nil { - log.Errorf("GetIDS error, %s", err.Error()) - e.Error(http.StatusInternalServerError, err, "") - return + + menuIds := make([]int, 0) + if d.RoleId != 0 { + menuIds, err = sr.GetRoleMenuId(d.RoleId) + if err != nil { + e.Logger.Errorf("GetRoleMenuId error, %s", err.Error()) + e.Error(http.StatusInternalServerError, err, "") + return + } } e.OK(gin.H{ "menus": result, diff --git a/app/admin/apis/sys_opera_log.go b/app/admin/apis/sys_opera_log.go index f3858a78..4cddfc0d 100644 --- a/app/admin/apis/sys_opera_log.go +++ b/app/admin/apis/sys_opera_log.go @@ -5,15 +5,15 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" ) type SysOperaLog struct { - apis.Api + api.Api } func (e SysOperaLog) GetSysOperaLogList(c *gin.Context) { diff --git a/app/admin/apis/sys_post.go b/app/admin/apis/sys_post.go index e119d89d..fe2bbd32 100644 --- a/app/admin/apis/sys_post.go +++ b/app/admin/apis/sys_post.go @@ -1,20 +1,20 @@ package apis import ( - "go-admin/app/admin/models" "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" + "go-admin/app/admin/models" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" ) type SysPost struct { - apis.Api + api.Api } // @Summary 岗位列表数据 diff --git a/app/admin/apis/sys_role.go b/app/admin/apis/sys_role.go index 9e924a35..867042c5 100644 --- a/app/admin/apis/sys_role.go +++ b/app/admin/apis/sys_role.go @@ -1,21 +1,22 @@ package apis import ( + "github.com/go-admin-team/go-admin-core/sdk" "go-admin/app/admin/models" "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" "go-admin/app/admin/service" "go-admin/app/admin/service/dto" - "go-admin/common/apis" "go-admin/common/global" ) type SysRole struct { - apis.Api + api.Api } // @Summary 角色列表数据 @@ -109,38 +110,27 @@ func (e SysRole) GetSysRole(c *gin.Context) { // @Router /api/v1/role [post] // @Security Bearer func (e SysRole) InsertSysRole(c *gin.Context) { - e.Context = c - log := e.GetLogger() - control := new(dto.SysRoleControl) - db, err := e.GetOrm() - if err != nil { - log.Error(err) - return - } - - //新增操作 - err = control.Bind(c) - if err != nil { - e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") - return - } - object, err := control.Generate() - if err != nil { - e.Error(http.StatusInternalServerError, err, "模型生成失败") - return - } - // 设置创建人 - object.CreateBy = user.GetUserId(c) - if object.Status == "" { - object.Status = "2" - } - s := service.SysRole{} - s.Orm = db - s.Log = log - err = s.InsertSysRole(object) + control := new(dto.SysRoleControl) + err := e.MakeContext(c). + MakeOrm(). + Bind(control). + MakeService(&s.Service). + Errors if err != nil { - log.Error(err) + e.Logger.Error(err) + return + } + + // 设置创建人 + control.CreateBy = user.GetUserId(c) + if control.Status == "" { + control.Status = "2" + } + + err = s.InsertSysRole(control) + if err != nil { + e.Logger.Error(err) e.Error(http.StatusInternalServerError, err, "创建失败") return } @@ -149,9 +139,10 @@ func (e SysRole) InsertSysRole(c *gin.Context) { e.Error(http.StatusInternalServerError, err, "") return } - e.OK(object.GetId(), "创建成功") + e.OK(control.GetId(), "创建成功") } +// UpdateSysRole 修改用户角色 // @Summary 修改用户角色 // @Description 获取JSON // @Tags 角色/Role @@ -163,34 +154,24 @@ func (e SysRole) InsertSysRole(c *gin.Context) { // @Router /api/v1/role/{id} [put] // @Security Bearer func (e SysRole) UpdateSysRole(c *gin.Context) { - e.Context = c - log := e.GetLogger() - control := new(dto.SysRoleControl) - db, err := e.GetOrm() - if err != nil { - log.Error(err) - return - } - - //更新操作 - err = control.Bind(c) - if err != nil { - e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") - return - } - object, err := control.Generate() - if err != nil { - e.Error(http.StatusInternalServerError, err, "模型生成失败") - return - } - object.UpdateBy = user.GetUserId(c) - s := service.SysRole{} - s.Orm = db - s.Log = log - err = s.UpdateSysRole(object) + control := new(dto.SysRoleControl) + err := e.MakeContext(c). + MakeOrm(). + Bind(control). + MakeService(&s.Service). + Errors if err != nil { - log.Error(err) + e.Logger.Error(err) + return + } + cb :=sdk.Runtime.GetCasbinKey(c.Request.Host) + + control.SetUpdateBy(user.GetUserId(c)) + + err = s.UpdateSysRole(control,cb) + if err != nil { + e.Logger.Error(err) return } _, err = global.LoadPolicy(c) @@ -198,7 +179,7 @@ func (e SysRole) UpdateSysRole(c *gin.Context) { e.Error(http.StatusInternalServerError, err, "") return } - e.OK(object.GetId(), "更新成功") + e.OK(control.GetId(), "更新成功") } // @Summary 删除用户角色 diff --git a/app/admin/apis/sys_user.go b/app/admin/apis/sys_user.go index d9ed47c2..695a4205 100644 --- a/app/admin/apis/sys_user.go +++ b/app/admin/apis/sys_user.go @@ -5,6 +5,7 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "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/google/uuid" @@ -12,12 +13,11 @@ import ( "go-admin/app/admin/service" "go-admin/app/admin/service/dto" "go-admin/common/actions" - "go-admin/common/apis" common "go-admin/common/models" ) type SysUser struct { - apis.Api + api.Api } // @Summary 列表用户信息数据 diff --git a/app/admin/apis/tools/gen.go b/app/admin/apis/tools/gen.go index 5292111a..586de11b 100644 --- a/app/admin/apis/tools/gen.go +++ b/app/admin/apis/tools/gen.go @@ -15,11 +15,10 @@ import ( "go-admin/app/admin/models" "go-admin/app/admin/models/tools" - "go-admin/common/apis" ) type Gen struct { - apis.Api + api.Api } func (e Gen) Preview(c *gin.Context) { diff --git a/app/admin/apis/tools/systables.go b/app/admin/apis/tools/systables.go index 9df198e7..1956d49a 100644 --- a/app/admin/apis/tools/systables.go +++ b/app/admin/apis/tools/systables.go @@ -5,17 +5,17 @@ import ( "strings" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" "gorm.io/gorm" "go-admin/app/admin/models/tools" - "go-admin/common/apis" ) type SysTable struct { - apis.Api + api.Api } // GetSysTableList 分页列表数据 @@ -348,4 +348,4 @@ func (e *SysTable) DeleteSysTables(c *gin.Context) { return } e.OK(nil, "删除成功") -} +} \ No newline at end of file diff --git a/app/admin/models/sys_menu.go b/app/admin/models/sys_menu.go index 258c713f..08fc642f 100644 --- a/app/admin/models/sys_menu.go +++ b/app/admin/models/sys_menu.go @@ -24,7 +24,7 @@ type SysMenu struct { DataScope string `json:"dataScope" gorm:"-"` Params string `json:"params" gorm:"-"` RoleId int `gorm:"-"` - Children []SysMenu `json:"children" gorm:"-"` + Children []SysMenu `json:"children,omitempty" gorm:"-"` IsSelect bool `json:"is_select" gorm:"-"` models.ControlBy models.ModelTime diff --git a/app/admin/models/sys_role.go b/app/admin/models/sys_role.go index 777def92..f77d440d 100644 --- a/app/admin/models/sys_role.go +++ b/app/admin/models/sys_role.go @@ -3,18 +3,19 @@ package models import "go-admin/common/models" type SysRole struct { - RoleId int `json:"roleId" gorm:"primaryKey;autoIncrement"` // 角色编码 - RoleName string `json:"roleName" gorm:"size:128;"` // 角色名称 - Status string `json:"status" gorm:"size:4;"` // - RoleKey string `json:"roleKey" gorm:"size:128;"` //角色代码 - RoleSort int `json:"roleSort" gorm:""` //角色排序 - Flag string `json:"flag" gorm:"size:128;"` // - Remark string `json:"remark" gorm:"size:255;"` //备注 - Admin bool `json:"admin" gorm:"size:4;"` - DataScope string `json:"dataScope" gorm:"size:128;"` - Params string `json:"params" gorm:"-"` - MenuIds []int `json:"menuIds" gorm:"-"` - DeptIds []int `json:"deptIds" gorm:"-"` + RoleId int `json:"roleId" gorm:"primaryKey;autoIncrement"` // 角色编码 + RoleName string `json:"roleName" gorm:"size:128;"` // 角色名称 + Status string `json:"status" gorm:"size:4;"` // + RoleKey string `json:"roleKey" gorm:"size:128;"` //角色代码 + RoleSort int `json:"roleSort" gorm:""` //角色排序 + Flag string `json:"flag" gorm:"size:128;"` // + Remark string `json:"remark" gorm:"size:255;"` //备注 + Admin bool `json:"admin" gorm:"size:4;"` + DataScope string `json:"dataScope" gorm:"size:128;"` + Params string `json:"params" gorm:"-"` + MenuIds []int `json:"menuIds" gorm:"-"` + DeptIds []int `json:"deptIds" gorm:"-"` + SysMenu []SysMenu `json:"sysMenu" gorm:"many2many:sys_role_menu;foreignKey:RoleId;joinForeignKey:role_id;references:MenuId;joinReferences:menu_id;"` models.ControlBy models.ModelTime } diff --git a/app/admin/service/dto/sys_config.go b/app/admin/service/dto/sys_config.go index 669ad31e..dd7f5d4a 100644 --- a/app/admin/service/dto/sys_config.go +++ b/app/admin/service/dto/sys_config.go @@ -2,12 +2,12 @@ package dto import ( "encoding/json" - "go-admin/app/admin/models" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" "github.com/go-admin-team/go-admin-core/sdk/api" + "go-admin/app/admin/models" "go-admin/common/dto" common "go-admin/common/models" ) @@ -25,16 +25,6 @@ func (m *SysConfigSearch) GetNeedSearch() interface{} { return *m } -// Bind 映射上下文中的结构体数据 -//func (m *SysConfigSearch) Bind(ctx *gin.Context) error { -// log := api.GetRequestLogger(ctx) -// err := ctx.ShouldBind(m) -// if err != nil { -// log.Debugf("ShouldBind error: %s", err.Error()) -// } -// return err -//} - // SysConfigControl 增、改使用的结构体 type SysConfigControl struct { ID int `uri:"Id" comment:"编码"` // 编码 diff --git a/app/admin/service/dto/sys_role.go b/app/admin/service/dto/sys_role.go index ff1c40f8..459b0048 100644 --- a/app/admin/service/dto/sys_role.go +++ b/app/admin/service/dto/sys_role.go @@ -3,6 +3,7 @@ package dto import ( "encoding/json" "go-admin/app/admin/models" + common "go-admin/common/models" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" @@ -42,16 +43,26 @@ func (m *SysRoleSearch) Bind(ctx *gin.Context) error { // SysConfigControl 增、改使用的结构体 type SysRoleControl struct { - RoleId int `uri:"id" comment:"角色编码"` // 角色编码 - RoleName string `form:"roleName" comment:"角色名称"` // 角色名称 - Status string `form:"status" comment:"状态"` // 状态 - RoleKey string `form:"roleKey" comment:"角色代码"` // 角色代码 - RoleSort int `form:"roleSort" comment:"角色排序"` // 角色排序 - Flag string `form:"flag" comment:"标记"` // 标记 - Remark string `form:"remark" comment:"备注"` // 备注 - Admin bool `form:"admin" comment:"是否管理员"` - DataScope string `form:"dataScope"` - MenuIds []int `json:"menuIds"` + RoleId int `uri:"id" comment:"角色编码"` // 角色编码 + RoleName string `form:"roleName" comment:"角色名称"` // 角色名称 + Status string `form:"status" comment:"状态"` // 状态 + RoleKey string `form:"roleKey" comment:"角色代码"` // 角色代码 + RoleSort int `form:"roleSort" comment:"角色排序"` // 角色排序 + Flag string `form:"flag" comment:"标记"` // 标记 + Remark string `form:"remark" comment:"备注"` // 备注 + Admin bool `form:"admin" comment:"是否管理员"` + DataScope string `form:"dataScope"` + SysMenu []models.SysMenu `form:"sysMenu"` + MenuIds []int `form:"menuIds"` + common.ControlBy +} + +func (s *SysRoleControl) SetCreateBy(id int) { + s.CreateBy = id +} + +func (s *SysRoleControl) SetUpdateBy(id int) { + s.UpdateBy = id } // Bind 映射上下文中的结构体数据 @@ -76,19 +87,20 @@ func (s *SysRoleControl) Bind(ctx *gin.Context) error { } // Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型 -func (s *SysRoleControl) Generate() (*models.SysRole, error) { - return &models.SysRole{ - RoleId: s.RoleId, - RoleName: s.RoleName, - Status: s.Status, - RoleKey: s.RoleKey, - RoleSort: s.RoleSort, - Flag: s.Flag, - Remark: s.Remark, - Admin: s.Admin, - DataScope: s.DataScope, - MenuIds: s.MenuIds, - }, nil +func (s *SysRoleControl) Generate(model *models.SysRole) { + if s.RoleId != 0 { + model.RoleId = s.RoleId + } + model.RoleName = s.RoleName + model.Status = s.Status + model.RoleKey = s.RoleKey + model.RoleSort = s.RoleSort + model.Flag = s.Flag + model.Remark = s.Remark + model.Admin = s.Admin + model.DataScope = s.DataScope + model.SysMenu = s.SysMenu + } // GetId 获取数据对应的ID diff --git a/app/admin/service/sys_api.go b/app/admin/service/sys_api.go index 1f5fd62a..ee900406 100644 --- a/app/admin/service/sys_api.go +++ b/app/admin/service/sys_api.go @@ -3,15 +3,15 @@ package service import ( "errors" "fmt" - "github.com/go-admin-team/go-admin-core/sdk/runtime" + "github.com/go-admin-team/go-admin-core/sdk/runtime" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" "go-admin/app/admin/models" "go-admin/app/admin/service/dto" "go-admin/common/actions" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysApi struct { diff --git a/app/admin/service/sys_config.go b/app/admin/service/sys_config.go index 51ecc74b..b7c191c1 100644 --- a/app/admin/service/sys_config.go +++ b/app/admin/service/sys_config.go @@ -2,10 +2,10 @@ package service import ( "errors" + "github.com/go-admin-team/go-admin-core/sdk/service" "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" - "go-admin/common/service" "gorm.io/gorm" ) diff --git a/app/admin/service/sys_dept.go b/app/admin/service/sys_dept.go index b1d2e632..bfda59fd 100644 --- a/app/admin/service/sys_dept.go +++ b/app/admin/service/sys_dept.go @@ -8,9 +8,9 @@ import ( "gorm.io/gorm" + "github.com/go-admin-team/go-admin-core/sdk/service" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysDept struct { diff --git a/app/admin/service/sys_dict_data.go b/app/admin/service/sys_dict_data.go index d104773b..ddf6a7ea 100644 --- a/app/admin/service/sys_dict_data.go +++ b/app/admin/service/sys_dict_data.go @@ -2,13 +2,13 @@ package service import ( "errors" - "go-admin/app/admin/models" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" + "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysDictData struct { diff --git a/app/admin/service/sys_dict_type.go b/app/admin/service/sys_dict_type.go index 4a8a76a8..d4dde51f 100644 --- a/app/admin/service/sys_dict_type.go +++ b/app/admin/service/sys_dict_type.go @@ -2,13 +2,13 @@ package service import ( "errors" - "go-admin/app/admin/models" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" + "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysDictType struct { diff --git a/app/admin/service/sys_login_log.go b/app/admin/service/sys_login_log.go index a4194ac7..c1ff1523 100644 --- a/app/admin/service/sys_login_log.go +++ b/app/admin/service/sys_login_log.go @@ -2,14 +2,14 @@ package service import ( "errors" - "go-admin/app/admin/models" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" + "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" common "go-admin/common/models" - "go-admin/common/service" ) type SysLoginLog struct { diff --git a/app/admin/service/sys_menu.go b/app/admin/service/sys_menu.go index e3007531..8a95be36 100644 --- a/app/admin/service/sys_menu.go +++ b/app/admin/service/sys_menu.go @@ -4,31 +4,18 @@ import ( "errors" "github.com/go-admin-team/go-admin-core/sdk/pkg" - "github.com/go-admin-team/go-admin-core/sdk/pkg/logger" "gorm.io/gorm" + "github.com/go-admin-team/go-admin-core/sdk/service" "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysMenu struct { service.Service } -// MakeOrm 设置ORM -func (e *SysMenu) MakeOrm(orm *gorm.DB) *SysMenu { - e.Orm = orm - return e -} - -// MakeLog 设置Log -func (e *SysMenu) MakeLog(l *logger.Logger) *SysMenu { - e.Log = l - return e -} - // GetSysMenuPage 获取SysMenu列表 func (e *SysMenu) GetSysMenuPage(c *dto.SysMenuSearch) (*[]models.SysMenu, error) { var m = make([]models.SysMenu, 0) @@ -51,7 +38,7 @@ func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) e var err error var data models.SysMenu - err = e.Orm.Model(&data).Preload("SysApi"). + err = e.Orm.Model(&data). Scopes( cDto.OrderDest("sort", false), cDto.MakeCondition(c.GetNeedSearch()), @@ -83,7 +70,7 @@ func (e *SysMenu) GetSysMenu(d *dto.SysMenuById, model *models.SysMenu) error { } apis := make([]int, 0) for _, v := range model.SysApi { - apis = append(model.Apis, v.Id) + apis = append(apis, v.Id) } model.Apis = apis return nil @@ -140,7 +127,7 @@ func (e *SysMenu) UpdateSysMenu(c *dto.SysMenuControl) *SysMenu { } // RemoveSysMenu 删除SysMenu -func (e *SysMenu) RemoveSysMenu(d *dto.SysMenuById) error { +func (e *SysMenu) RemoveSysMenu(d *dto.SysMenuById) *SysMenu { var err error var data models.SysMenu @@ -149,13 +136,13 @@ func (e *SysMenu) RemoveSysMenu(d *dto.SysMenuById) error { if db.Error != nil { err = db.Error e.Log.Errorf("Delete error: %s", err) - return err + _ = e.AddError(err) } if db.RowsAffected == 0 { err = errors.New("无权删除该数据") - return err + _ = e.AddError(err) } - return nil + return e } // GetSysMenuList 获取菜单数据 @@ -175,7 +162,7 @@ func (e *SysMenu) GetSysMenuList(c *dto.SysMenuSearch, list *[]models.SysMenu) e return nil } -// SetSysMenuTree 设置菜单数据 +// SetSysMenuLabel 设置菜单数据 func (e *SysMenu) SetSysMenuLabel() (m []dto.MenuLabel, err error) { var list []models.SysMenu err = e.GetSysMenuList(&dto.SysMenuSearch{}, &list) @@ -195,26 +182,31 @@ func (e *SysMenu) SetSysMenuLabel() (m []dto.MenuLabel, err error) { return } -// 左侧菜单 -func (e *SysMenu) GetSysMenuByRoleName(roleName string) (Menus []models.SysMenu, err error) { - var table *gorm.DB - var data models.SysMenu +// GetSysMenuByRoleName 左侧菜单 +func (e *SysMenu) GetSysMenuByRoleName(roleName string) ([]models.SysMenu, error) { + var MenuList []models.SysMenu + var role models.SysRole + var err error if roleName == "admin" { - table = e.Orm.Model(&data).Select("sys_menu.*") - table = table.Where(" menu_type in ('M','C')") + var data []models.SysMenu + err = e.Orm.Where(" menu_type in ('M','C')"). + Order("sort"). + Find(&data). + Error + MenuList = data } else { - table = e.Orm.Model(&data).Select("sys_menu.*").Joins("left join sys_role_menu on sys_role_menu.menu_id=sys_menu.menu_id") - table = table.Where("sys_role_menu.role_name=? and menu_type in ('M','C')", roleName) + err = e.Orm.Model(&role).Preload("SysMenu", func(db *gorm.DB) *gorm.DB { + return db.Where(" menu_type in ('M','C')").Order("sort") + }).Where("role_name=?", roleName).Find(&role). + Error + MenuList = role.SysMenu } - err = table.Order("sort").Find(&Menus).Error - if err != nil { e.Log.Errorf("db error:%s", err) - return } - return + return MenuList, err } // menuLabelCall 递归构造组织数据 @@ -286,40 +278,38 @@ func menuCall(menulist *[]models.SysMenu, menu models.SysMenu) models.SysMenu { return menu } +// SetMenuRole 获取左侧菜单树使用 func (e *SysMenu) SetMenuRole(roleName string) (m []models.SysMenu, err error) { - menus, err := e.getByRoleName(roleName) - m = make([]models.SysMenu, 0) for i := 0; i < len(menus); i++ { if menus[i].ParentId != 0 { continue } menusInfo := menuCall(&menus, menus[i]) - m = append(m, menusInfo) } return } -func (e *SysMenu) getByRoleName(roleName string) (Menus []models.SysMenu, err error) { - var data models.SysMenu +func (e *SysMenu) getByRoleName(roleName string) ([]models.SysMenu, error) { + var MenuList []models.SysMenu + var role models.SysRole + var err error - var table *gorm.DB if roleName == "admin" { - table = e.Orm.Model(&data).Select("sys_menu.*") - table = table.Where(" menu_type in ('M','C')") + var data []models.SysMenu + err = e.Orm.Where(" menu_type in ('M','C')").Order("sort").Find(&data).Error + MenuList = data } else { - table = e.Orm.Model(&data).Select("sys_menu.*").Joins("left join sys_role_menu on sys_role_menu.menu_id=sys_menu.menu_id") - table = table.Where("sys_role_menu.role_name=? and menu_type in ('M','C')", roleName) + err = e.Orm.Model(&role).Preload("SysMenu", func(db *gorm.DB) *gorm.DB { + return db.Where(" menu_type in ('M','C')").Order("sort") + }).Where("role_name=?", roleName).Find(&role).Error + MenuList = role.SysMenu } - err = table.Scopes( - cDto.OrderDest("sort", false), - ).Find(&Menus).Error if err != nil { e.Log.Errorf("db error:%s", err) - return } - return + return MenuList, err } \ No newline at end of file diff --git a/app/admin/service/sys_opera_log.go b/app/admin/service/sys_opera_log.go index fa70c67f..a7d1d785 100644 --- a/app/admin/service/sys_opera_log.go +++ b/app/admin/service/sys_opera_log.go @@ -2,10 +2,12 @@ package service import ( "errors" + "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" - "go-admin/common/service" + + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" ) diff --git a/app/admin/service/sys_post.go b/app/admin/service/sys_post.go index d5d983a2..4e559ab7 100644 --- a/app/admin/service/sys_post.go +++ b/app/admin/service/sys_post.go @@ -2,13 +2,13 @@ package service import ( "errors" - "go-admin/app/admin/models" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" + "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysPost struct { diff --git a/app/admin/service/sys_role.go b/app/admin/service/sys_role.go index 1f76a223..ab3c4fcf 100644 --- a/app/admin/service/sys_role.go +++ b/app/admin/service/sys_role.go @@ -2,13 +2,14 @@ package service import ( "errors" + "github.com/casbin/casbin/v2" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" "go-admin/app/admin/models" "go-admin/app/admin/service/dto" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysRole struct { @@ -20,7 +21,7 @@ func (e *SysRole) GetSysRolePage(c *dto.SysRoleSearch, list *[]models.SysRole, c var err error var data models.SysRole - err = e.Orm.Model(&data). + err = e.Orm.Model(&data).Preload("SysMenu"). Scopes( cDto.MakeCondition(c.GetNeedSearch()), cDto.Paginate(c.GetPageSize(), c.GetPageIndex()), @@ -49,7 +50,7 @@ func (e *SysRole) GetSysRole(d *dto.SysRoleById, model *models.SysRole) error { e.Log.Errorf("db error:%s", err) return err } - model.MenuIds, err = e.GetRoleMenuId(e.Orm, model.RoleId) + model.MenuIds, err = e.GetRoleMenuId(model.RoleId) if err != nil { e.Log.Errorf("get menuIds error, %s", err.Error()) return err @@ -58,10 +59,17 @@ func (e *SysRole) GetSysRole(d *dto.SysRoleById, model *models.SysRole) error { } // InsertSysRole 创建SysRole对象 -func (e *SysRole) InsertSysRole(c *models.SysRole) error { +func (e *SysRole) InsertSysRole(c *dto.SysRoleControl) error { var err error var data models.SysRole - + var dataMenu []models.SysMenu + err = e.Orm.Preload("SysApi").Where("menu_id in ?", c.MenuIds).Find(&dataMenu).Error + if err != nil { + e.Log.Errorf("db error:%s", err) + return err + } + c.SysMenu = dataMenu + c.Generate(&data) tx := e.Orm.Begin() defer func() { if err != nil { @@ -91,7 +99,7 @@ func (e *SysRole) InsertSysRole(c *models.SysRole) error { } // UpdateSysRole 修改SysRole对象 -func (e *SysRole) UpdateSysRole(c *models.SysRole) error { +func (e *SysRole) UpdateSysRole(c *dto.SysRoleControl, cb *casbin.SyncedEnforcer) error { var err error tx := e.Orm.Debug().Begin() @@ -102,8 +110,14 @@ func (e *SysRole) UpdateSysRole(c *models.SysRole) error { tx.Commit() } }() - db := tx.Model(&c). - Where(c.GetId()).Updates(c) + var model = models.SysRole{} + var mlist = make([]models.SysMenu, 0) + e.Orm.First(&model, c.GetId()) + e.Orm.Preload("SysApi").Find(&mlist, c.MenuIds) + c.Generate(&model) + model.SysMenu = mlist + db := e.Orm.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model) + if db.Error != nil { e.Log.Errorf("db error:%s", err) return err @@ -111,23 +125,13 @@ func (e *SysRole) UpdateSysRole(c *models.SysRole) error { if db.RowsAffected == 0 { return errors.New("无权更新该数据") } - - var t models.RoleMenu - err = t.DeleteRoleMenu(tx, c.RoleId) - if err != nil { - e.Log.Errorf("delete role menu error, %", err.Error()) - return err - } - if len(c.MenuIds) > 0 { - s := SysRoleMenu{} - s.Orm = e.Orm - s.Log = e.Log - err = s.ReloadRule(tx, c.RoleId, c.MenuIds) - if err != nil { - e.Log.Errorf("reload casbin rule error, %", err.Error()) - return err + for _, menu := range mlist { + for _, api := range menu.SysApi { + _, err = cb.AddNamedPolicy("p", model.RoleKey, api.Path, api.Action) } } + + _ = cb.SavePolicy() return nil } @@ -169,10 +173,10 @@ func (e *SysRole) RemoveSysRole(d *dto.SysRoleById) error { } // 获取角色对应的菜单ids -func (e *SysRole) GetRoleMenuId(tx *gorm.DB, roleId int) ([]int, error) { +func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) { menuIds := make([]int, 0) menuList := make([]models.MenuIdList, 0) - if err := tx.Table("sys_role_menu"). + if err := e.Orm.Table("sys_role_menu"). Select("sys_role_menu.menu_id"). Where("role_id = ? ", roleId). Where(" sys_role_menu.menu_id not in(select sys_menu.parent_id from sys_role_menu "+ diff --git a/app/admin/service/sys_role_menu.go b/app/admin/service/sys_role_menu.go index bcc4bca9..2753a37e 100644 --- a/app/admin/service/sys_role_menu.go +++ b/app/admin/service/sys_role_menu.go @@ -2,9 +2,10 @@ package service import ( log "github.com/go-admin-team/go-admin-core/logger" - "go-admin/app/admin/models" - "go-admin/common/service" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" + + "go-admin/app/admin/models" ) type SysRoleMenu struct { diff --git a/app/admin/service/sys_setting.go b/app/admin/service/sys_setting.go index 5e61c0a1..cfb81662 100644 --- a/app/admin/service/sys_setting.go +++ b/app/admin/service/sys_setting.go @@ -3,10 +3,10 @@ package service import ( "errors" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" "go-admin/app/admin/models" - "go-admin/common/service" ) type SysSetting struct { @@ -49,4 +49,4 @@ func (e *SysSetting) UpdateSysSetting(c *models.SysSetting) error { } return nil -} +} \ No newline at end of file diff --git a/app/admin/service/sys_user.go b/app/admin/service/sys_user.go index d02dd3df..4d225ac4 100644 --- a/app/admin/service/sys_user.go +++ b/app/admin/service/sys_user.go @@ -6,12 +6,12 @@ import ( log "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk/pkg" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" "go-admin/common/actions" cDto "go-admin/common/dto" common "go-admin/common/models" - "go-admin/common/service" ) type SysUser struct { diff --git a/app/jobs/apis/sys_job.go b/app/jobs/apis/sys_job.go index 60699051..bf7bc0ed 100644 --- a/app/jobs/apis/sys_job.go +++ b/app/jobs/apis/sys_job.go @@ -1,18 +1,18 @@ package apis import ( - "go-admin/app/jobs/service" "net/http" - "go-admin/common/apis" - "go-admin/common/dto" - "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk" + "github.com/go-admin-team/go-admin-core/sdk/api" + + "go-admin/app/jobs/service" + "go-admin/common/dto" ) type SysJob struct { - apis.Api + api.Api } // RemoveJobForService 调用service实现 diff --git a/app/jobs/service/sys_job.go b/app/jobs/service/sys_job.go index 3722636b..37ea9ef1 100644 --- a/app/jobs/service/sys_job.go +++ b/app/jobs/service/sys_job.go @@ -1,13 +1,14 @@ package service import ( - "github.com/robfig/cron/v3" - "go-admin/app/jobs/models" "time" + "github.com/go-admin-team/go-admin-core/sdk/service" + "github.com/robfig/cron/v3" + "go-admin/app/jobs" + "go-admin/app/jobs/models" "go-admin/common/dto" - "go-admin/common/service" ) type SysJob struct { @@ -83,4 +84,4 @@ func (e *SysJob) StartJob(c *dto.GeneralGetDto) error { e.Log.Errorf("db error: %s", err) } return err -} +} \ No newline at end of file diff --git a/app/other/apis/file.go b/app/other/apis/file.go index 38489648..d9af900f 100644 --- a/app/other/apis/file.go +++ b/app/other/apis/file.go @@ -8,11 +8,11 @@ import ( "strings" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg" "github.com/go-admin-team/go-admin-core/sdk/pkg/utils" "github.com/google/uuid" - "go-admin/common/apis" "go-admin/common/file_store" ) @@ -27,7 +27,7 @@ type FileResponse struct { const path = "static/uploadfile/" type File struct { - apis.Api + api.Api } // UploadFile 上传图片 diff --git a/app/other/apis/server.go b/app/other/apis/server.go index 0b2c4ee9..dc022551 100644 --- a/app/other/apis/server.go +++ b/app/other/apis/server.go @@ -4,13 +4,12 @@ import ( "runtime" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/disk" "github.com/shirou/gopsutil/mem" - - "go-admin/common/apis" ) const ( @@ -21,7 +20,7 @@ const ( ) type Monitor struct { - apis.Api + api.Api } // ServerInfo 获取系统信息 @@ -74,4 +73,4 @@ func (e Monitor) ServerInfo(c *gin.Context) { "cpu": cpuDic, "disk": diskDic, }) -} +} \ No newline at end of file diff --git a/app/other/apis/sys_china_area_data.go b/app/other/apis/sys_china_area_data.go index 6df84613..ba64522e 100644 --- a/app/other/apis/sys_china_area_data.go +++ b/app/other/apis/sys_china_area_data.go @@ -7,14 +7,14 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" "go-admin/common/actions" - "go-admin/common/apis" ) type SysChinaAreaData struct { - apis.Api + api.Api } func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) { diff --git a/app/other/apis/sys_file_dir.go b/app/other/apis/sys_file_dir.go index 3d1a38db..3dfac8f0 100644 --- a/app/other/apis/sys_file_dir.go +++ b/app/other/apis/sys_file_dir.go @@ -4,6 +4,7 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" @@ -11,11 +12,10 @@ import ( "go-admin/app/other/service" "go-admin/app/other/service/dto" "go-admin/common/actions" - "go-admin/common/apis" ) type SysFileDir struct { - apis.Api + api.Api } func (e SysFileDir) GetSysFileDirList(c *gin.Context) { @@ -195,4 +195,4 @@ func (e SysFileDir) DeleteSysFileDir(c *gin.Context) { return } e.OK(control.Id, "删除成功") -} +} \ No newline at end of file diff --git a/app/other/apis/sys_file_info.go b/app/other/apis/sys_file_info.go index 95537a0c..4c8965a9 100644 --- a/app/other/apis/sys_file_info.go +++ b/app/other/apis/sys_file_info.go @@ -7,14 +7,14 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" "go-admin/common/actions" - "go-admin/common/apis" ) type SysFileInfo struct { - apis.Api + api.Api } func (e SysFileInfo) GetSysFileInfoList(c *gin.Context) { @@ -206,4 +206,4 @@ func (e SysFileInfo) DeleteSysFileInfo(c *gin.Context) { return } e.OK(control.Id, "删除成功") -} +} \ No newline at end of file diff --git a/app/other/service/sys_china_area_data.go b/app/other/service/sys_china_area_data.go index c2a4ec49..b3158dde 100644 --- a/app/other/service/sys_china_area_data.go +++ b/app/other/service/sys_china_area_data.go @@ -2,14 +2,14 @@ package service import ( "errors" - models2 "go-admin/app/other/models" - dto2 "go-admin/app/other/service/dto" + "go-admin/app/other/models" + "go-admin/app/other/service/dto" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" "go-admin/common/actions" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysChinaAreaData struct { @@ -17,8 +17,8 @@ type SysChinaAreaData struct { } // GetSysChinaAreaDataPage 获取SysChinaAreaData列表 -func (e *SysChinaAreaData) GetSysChinaAreaDataPage(c *dto2.SysChinaAreaDataSearch, p *actions.DataPermission, list *[]models2.SysChinaAreaData, count *int64) error { - var data models2.SysChinaAreaData +func (e *SysChinaAreaData) GetSysChinaAreaDataPage(c *dto.SysChinaAreaDataSearch, p *actions.DataPermission, list *[]models.SysChinaAreaData, count *int64) error { + var data models.SysChinaAreaData err := e.Orm.Model(&data). Scopes( @@ -36,8 +36,8 @@ func (e *SysChinaAreaData) GetSysChinaAreaDataPage(c *dto2.SysChinaAreaDataSearc } // GetSysChinaAreaData 获取SysChinaAreaData对象 -func (e *SysChinaAreaData) GetSysChinaAreaData(d *dto2.SysChinaAreaDataById, p *actions.DataPermission, model *models2.SysChinaAreaData) error { - var data models2.SysChinaAreaData +func (e *SysChinaAreaData) GetSysChinaAreaData(d *dto.SysChinaAreaDataById, p *actions.DataPermission, model *models.SysChinaAreaData) error { + var data models.SysChinaAreaData err := e.Orm.Model(&data). Scopes( @@ -57,8 +57,8 @@ func (e *SysChinaAreaData) GetSysChinaAreaData(d *dto2.SysChinaAreaDataById, p * } // InsertSysChinaAreaData 创建SysChinaAreaData对象 -func (e *SysChinaAreaData) InsertSysChinaAreaData(model *models2.SysChinaAreaData) error { - var data models2.SysChinaAreaData +func (e *SysChinaAreaData) InsertSysChinaAreaData(model *models.SysChinaAreaData) error { + var data models.SysChinaAreaData err := e.Orm.Model(&data). Create(model).Error @@ -70,7 +70,7 @@ func (e *SysChinaAreaData) InsertSysChinaAreaData(model *models2.SysChinaAreaDat } // UpdateSysChinaAreaData 修改SysChinaAreaData对象 -func (e *SysChinaAreaData) UpdateSysChinaAreaData(c *models2.SysChinaAreaData, p *actions.DataPermission) error { +func (e *SysChinaAreaData) UpdateSysChinaAreaData(c *models.SysChinaAreaData, p *actions.DataPermission) error { db := e.Orm.Model(c). Scopes( actions.Permission(c.TableName(), p), @@ -86,9 +86,9 @@ func (e *SysChinaAreaData) UpdateSysChinaAreaData(c *models2.SysChinaAreaData, p } // RemoveSysChinaAreaData 删除SysChinaAreaData -func (e *SysChinaAreaData) RemoveSysChinaAreaData(d *dto2.SysChinaAreaDataById, p *actions.DataPermission) error { +func (e *SysChinaAreaData) RemoveSysChinaAreaData(d *dto.SysChinaAreaDataById, p *actions.DataPermission) error { - var data models2.SysChinaAreaData + var data models.SysChinaAreaData db := e.Orm.Model(&data). Scopes( diff --git a/app/other/service/sys_file_dir.go b/app/other/service/sys_file_dir.go index 422252f9..5c5e6e3b 100644 --- a/app/other/service/sys_file_dir.go +++ b/app/other/service/sys_file_dir.go @@ -3,14 +3,14 @@ package service import ( "errors" "fmt" - "go-admin/app/other/models" - "go-admin/app/other/service/dto" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" + "go-admin/app/other/models" + "go-admin/app/other/service/dto" "go-admin/common/actions" cDto "go-admin/common/dto" - "go-admin/common/service" ) type SysFileDir struct { @@ -165,4 +165,4 @@ func SysFileDirCall(list *[]models.SysFileDir, m models.SysFileDir) models.SysFi } return m -} +} \ No newline at end of file diff --git a/app/other/service/sys_file_info.go b/app/other/service/sys_file_info.go index de840abd..461fd4d2 100644 --- a/app/other/service/sys_file_info.go +++ b/app/other/service/sys_file_info.go @@ -2,14 +2,14 @@ package service import ( "errors" - models2 "go-admin/app/other/models" - dto2 "go-admin/app/other/service/dto" - "gorm.io/gorm" + "go-admin/app/other/models" + "go-admin/app/other/service/dto" + "github.com/go-admin-team/go-admin-core/sdk/service" "go-admin/common/actions" cDto "go-admin/common/dto" - "go-admin/common/service" + "gorm.io/gorm" ) type SysFileInfo struct { @@ -17,9 +17,9 @@ type SysFileInfo struct { } // GetSysFileInfoPage 获取SysFileInfo列表 -func (e *SysFileInfo) GetSysFileInfoPage(c *dto2.SysFileInfoSearch, p *actions.DataPermission, list *[]models2.SysFileInfo, count *int64) error { +func (e *SysFileInfo) GetSysFileInfoPage(c *dto.SysFileInfoSearch, p *actions.DataPermission, list *[]models.SysFileInfo, count *int64) error { var err error - var data models2.SysFileInfo + var data models.SysFileInfo err = e.Orm.Model(&data). Scopes( @@ -37,9 +37,9 @@ func (e *SysFileInfo) GetSysFileInfoPage(c *dto2.SysFileInfoSearch, p *actions.D } // GetSysFileInfo 获取SysFileInfo对象 -func (e *SysFileInfo) GetSysFileInfo(d *dto2.SysFileInfoById, p *actions.DataPermission, model *models2.SysFileInfo) error { +func (e *SysFileInfo) GetSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPermission, model *models.SysFileInfo) error { var err error - var data models2.SysFileInfo + var data models.SysFileInfo db := e.Orm.Model(&data). Scopes( @@ -60,9 +60,9 @@ func (e *SysFileInfo) GetSysFileInfo(d *dto2.SysFileInfoById, p *actions.DataPer } // InsertSysFileInfo 创建SysFileInfo对象 -func (e *SysFileInfo) InsertSysFileInfo(model *dto2.SysFileInfoControl) error { +func (e *SysFileInfo) InsertSysFileInfo(model *dto.SysFileInfoControl) error { var err error - var data *models2.SysFileInfo + var data *models.SysFileInfo data, err = model.Generate() if err != nil { @@ -80,9 +80,9 @@ func (e *SysFileInfo) InsertSysFileInfo(model *dto2.SysFileInfoControl) error { } // UpdateSysFileInfo 修改SysFileInfo对象 -func (e *SysFileInfo) UpdateSysFileInfo(c *dto2.SysFileInfoControl, p *actions.DataPermission) error { +func (e *SysFileInfo) UpdateSysFileInfo(c *dto.SysFileInfoControl, p *actions.DataPermission) error { var err error - var data *models2.SysFileInfo + var data *models.SysFileInfo data, err = c.Generate() if err != nil { @@ -105,9 +105,9 @@ func (e *SysFileInfo) UpdateSysFileInfo(c *dto2.SysFileInfoControl, p *actions.D } // RemoveSysFileInfo 删除SysFileInfo -func (e *SysFileInfo) RemoveSysFileInfo(d *dto2.SysFileInfoById, p *actions.DataPermission) error { +func (e *SysFileInfo) RemoveSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPermission) error { var err error - var data models2.SysFileInfo + var data models.SysFileInfo db := e.Orm.Model(&data). Scopes( @@ -123,4 +123,4 @@ func (e *SysFileInfo) RemoveSysFileInfo(d *dto2.SysFileInfoById, p *actions.Data return err } return nil -} +} \ No newline at end of file diff --git a/cmd/cobra.go b/cmd/cobra.go index b4b04ceb..454ea76c 100644 --- a/cmd/cobra.go +++ b/cmd/cobra.go @@ -35,7 +35,7 @@ var rootCmd = &cobra.Command{ func tip() { usageStr := `欢迎使用 ` + pkg.Green(`go-admin `+global.Version) + ` 可以使用 ` + pkg.Red(`-h`) + ` 查看命令` - usageStr1 := `也可以参考 http://doc.zhangwj.com/go-admin-site/guide/ksks.html 里边的【启动】章节` + usageStr1 := `也可以参考 https://doc.go-admin.dev/guide/ksks.html 里边的【启动】章节` fmt.Printf("%s\n", usageStr) fmt.Printf("%s\n", usageStr1) } @@ -52,4 +52,4 @@ func Execute() { if err := rootCmd.Execute(); err != nil { os.Exit(-1) } -} +} \ No newline at end of file diff --git a/common/apis/api.go b/common/apis/api.go deleted file mode 100644 index 4708f1c7..00000000 --- a/common/apis/api.go +++ /dev/null @@ -1,137 +0,0 @@ -package apis - -import ( - "errors" - "fmt" - "github.com/gin-gonic/gin/binding" - "go-admin/common/service" - "net/http" - - "github.com/gin-gonic/gin" - "github.com/go-admin-team/go-admin-core/sdk/api" - "github.com/go-admin-team/go-admin-core/sdk/pkg" - "github.com/go-admin-team/go-admin-core/sdk/pkg/logger" - "github.com/go-admin-team/go-admin-core/sdk/pkg/response" - "gorm.io/gorm" -) - -type Api struct { - Context *gin.Context - Logger *logger.Logger - Orm *gorm.DB - Errors error -} - -func (e *Api) AddError(err error) { - if e.Errors == nil { - e.Errors = err - } else if err != nil { - e.Logger.Error(err) - e.Errors = fmt.Errorf("%v; %w", e.Error, err) - } -} - -// MakeContext 设置http上下文 -func (e *Api) MakeContext(c *gin.Context) *Api { - fmt.Println(&c) - e.Context = c - e.Logger = api.GetRequestLogger(c) - fmt.Println(&e.Context) - return e -} - -// GetLogger 获取上下文提供的日志 -func (e Api) GetLogger() *logger.Logger { - return api.GetRequestLogger(e.Context) -} - -func (e *Api) Bind(d interface{}, bindings ...binding.Binding) *Api { - var err error - if len(bindings) == 0 { - bindings = append(bindings, binding.JSON, nil) - } - for i := range bindings { - switch bindings[i] { - case binding.JSON: - err = e.Context.ShouldBindWith(d, binding.JSON) - case binding.XML: - err = e.Context.ShouldBindWith(d, binding.XML) - case binding.Form: - err = e.Context.ShouldBindWith(d, binding.Form) - case binding.Query: - err = e.Context.ShouldBindWith(d, binding.Query) - case binding.FormPost: - err = e.Context.ShouldBindWith(d, binding.FormPost) - case binding.FormMultipart: - err = e.Context.ShouldBindWith(d, binding.FormMultipart) - case binding.ProtoBuf: - err = e.Context.ShouldBindWith(d, binding.ProtoBuf) - case binding.MsgPack: - err = e.Context.ShouldBindWith(d, binding.MsgPack) - case binding.YAML: - err = e.Context.ShouldBindWith(d, binding.YAML) - case binding.Header: - err = e.Context.ShouldBindWith(d, binding.Header) - default: - err = e.Context.ShouldBindUri(d) - } - if err != nil { - e.AddError(err) - } - } - return e -} - -// GetOrm 获取Orm DB -func (e Api) GetOrm() (*gorm.DB, error) { - db, err := pkg.GetOrm(e.Context) - if err != nil { - e.Error(http.StatusInternalServerError, err, "数据库连接获取失败") - return nil, err - } - return db, nil -} - -// MakeOrm 设置Orm DB -func (e *Api) MakeOrm() *Api { - var err error - if e.Logger == nil { - err = errors.New("at MakeOrm logger is nil") - //e.Logger.Error(http.StatusInternalServerError, err, "at MakeOrm logger is nil") - e.AddError(err) - return e - } - db, err := pkg.GetOrm(e.Context) - if err != nil { - e.Logger.Error(http.StatusInternalServerError, err, "数据库连接获取失败") - e.AddError(err) - } - e.Orm = db - return e -} - -func (e *Api) MakeService(c *service.Service) *Api { - c.Log = e.Logger - c.Orm = e.Orm - return e -} - -// Error 通常错误数据处理 -func (e Api) Error(code int, err error, msg string) { - response.Error(e.Context, code, err, msg) -} - -// OK 通常成功数据处理 -func (e Api) OK(data interface{}, msg string) { - response.OK(e.Context, data, msg) -} - -// PageOK 分页数据处理 -func (e Api) PageOK(result interface{}, count int, pageIndex int, pageSize int, msg string) { - response.PageOK(e.Context, result, count, pageIndex, pageSize, msg) -} - -// Custom 兼容函数 -func (e Api) Custom(data gin.H) { - response.Custum(e.Context, data) -} \ No newline at end of file diff --git a/common/apis/request_logger.go b/common/apis/request_logger.go deleted file mode 100644 index d3df51c4..00000000 --- a/common/apis/request_logger.go +++ /dev/null @@ -1,10 +0,0 @@ -package apis - -// GetRequestLogger 获取上下文提供的日志 -//func GetRequestLogger(c *gin.Context) *logger.Logger { -// requestId := pkg.GenerateMsgIDFromContext(c) -// log := sdk.Runtime.GetLogger().Fields(map[string]interface{}{ -// strings.ToLower(pkg.TrafficKey): requestId, -// }) -// return &logger.Logger{Logger: log} -//} \ No newline at end of file diff --git a/common/database/initialize.go b/common/database/initialize.go index b7804355..abf32525 100644 --- a/common/database/initialize.go +++ b/common/database/initialize.go @@ -60,10 +60,6 @@ func setupSimpleDatabase(host string, c *toolsConfig.Database) { e := mycasbin.Setup(db, "sys_") - //if host == "*" { - // global.Eloquent = db - //} - sdk.Runtime.SetDb(host, db) sdk.Runtime.SetCasbin(host, e) -} +} \ No newline at end of file diff --git a/common/file_store/oss.go b/common/file_store/oss.go index b9ae6623..d72832e7 100644 --- a/common/file_store/oss.go +++ b/common/file_store/oss.go @@ -14,10 +14,11 @@ type ALiYunOSS struct { } func (e *ALiYunOSS) Setup() error { - e.AccessKeyId = "LTAI4G3S4hDLxg6Zmu4UTBwG" - e.AccessKeySecret = "C8sj70orL03bwk6wNXX0jbNjAbLCb8" - e.Endpoint = "oss-cn-shanghai.aliyuncs.com" - e.BucketName = "youshikeji" + // TODO: 如果需要使用阿里云OSS请在此处填写对应信息 + e.AccessKeyId = "" + e.AccessKeySecret = "" + e.Endpoint = "" + e.BucketName = "" client, err := oss.New(e.Endpoint, e.AccessKeyId, e.AccessKeySecret) if err != nil { @@ -51,4 +52,4 @@ func (e *ALiYunOSS) UpLoad(yourObjectName string, localFile string) error { return err } return nil -} +} \ No newline at end of file diff --git a/common/service/service.go b/common/service/service.go deleted file mode 100644 index a748aab6..00000000 --- a/common/service/service.go +++ /dev/null @@ -1,24 +0,0 @@ -package service - -import ( - "fmt" - "github.com/go-admin-team/go-admin-core/sdk/pkg/logger" - "gorm.io/gorm" -) - -type Service struct { - Orm *gorm.DB - Msg string - MsgID string - Log *logger.Logger - Error error -} - -func (db *Service) AddError(err error) error { - if db.Error == nil { - db.Error = err - } else if err != nil { - db.Error = fmt.Errorf("%v; %w", db.Error, err) - } - return db.Error -} diff --git a/template/v4/no_actions/apis.go.template b/template/v4/no_actions/apis.go.template index a745964c..eb8f1bdd 100644 --- a/template/v4/no_actions/apis.go.template +++ b/template/v4/no_actions/apis.go.template @@ -4,6 +4,7 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" _ "github.com/go-admin-team/go-admin-core/sdk/pkg/response" @@ -11,11 +12,10 @@ import ( "go-admin/app/{{.PackageName}}/service" "go-admin/app/{{.PackageName}}/service/dto" "go-admin/common/actions" - "go-admin/common/apis" ) type {{.ClassName}} struct { - apis.Api + api.Api } // Get{{.ClassName}}List 获取{{.TableComment}}列表 diff --git a/template/v4/no_actions/service.go.template b/template/v4/no_actions/service.go.template index aaa60a80..bd515d2a 100644 --- a/template/v4/no_actions/service.go.template +++ b/template/v4/no_actions/service.go.template @@ -3,13 +3,13 @@ package service import ( "errors" + "github.com/go-admin-team/go-admin-core/sdk/service" "gorm.io/gorm" "go-admin/app/{{.PackageName}}/models" "go-admin/common/actions" cDto "go-admin/common/dto" "go-admin/app/{{.PackageName}}/service/dto" - "go-admin/common/service" ) type {{.ClassName}} struct {