diff --git a/app/admin/service/dto/sys_role.go b/app/admin/service/dto/sys_role.go index c33995b9..4a8d550d 100644 --- a/app/admin/service/dto/sys_role.go +++ b/app/admin/service/dto/sys_role.go @@ -1,14 +1,9 @@ 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" - "github.com/go-admin-team/go-admin-core/sdk/api" - "go-admin/common/dto" ) @@ -39,16 +34,6 @@ func (m *SysRoleSearch) GetNeedSearch() interface{} { return *m } -// Bind 映射上下文中的结构体数据 -func (m *SysRoleSearch) 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 SysRoleControl struct { RoleId int `uri:"id" comment:"角色编码"` // 角色编码 @@ -73,28 +58,7 @@ func (s *SysRoleControl) SetUpdateBy(id int) { s.UpdateBy = id } -// Bind 映射上下文中的结构体数据 -func (s *SysRoleControl) Bind(ctx *gin.Context) error { - log := api.GetRequestLogger(ctx) - err := ctx.ShouldBindBodyWith(s, binding.JSON) - if err != nil { - log.Debugf("ShouldBind error: %s", err.Error()) - } - err = ctx.ShouldBindUri(s) - if err != nil { - log.Debugf("ShouldBindUri error: %s", err.Error()) - return err - } - var jsonStr []byte - jsonStr, err = json.Marshal(s) - if err != nil { - log.Debugf("ShouldBind error: %s", err.Error()) - } - ctx.Set("body", string(jsonStr)) - return err -} - -// Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型 +// Generate 结构体数据转化 func (s *SysRoleControl) Generate(model *models.SysRole) { if s.RoleId != 0 { model.RoleId = s.RoleId @@ -107,7 +71,7 @@ func (s *SysRoleControl) Generate(model *models.SysRole) { model.Remark = s.Remark model.Admin = s.Admin model.DataScope = s.DataScope - model.SysMenu = s.SysMenu + model.SysMenu = &s.SysMenu } diff --git a/app/admin/service/dto/sys_setting.go b/app/admin/service/dto/sys_setting.go deleted file mode 100644 index 5ccf0f07..00000000 --- a/app/admin/service/dto/sys_setting.go +++ /dev/null @@ -1,92 +0,0 @@ -package dto - -import ( - "encoding/json" - - "github.com/gin-gonic/gin" - "github.com/go-admin-team/go-admin-core/sdk/api" - - "go-admin/app/admin/models" -) - -// SysConfigControl 增、改使用的结构体 -type SysSettingControl struct { - SettingsId int `json:"settings_id" binding:"required"` // 头像 - Name string `json:"name" binding:"required"` // 名称 - Logo string `json:"logo" binding:"required"` // 头像 -} - -// Bind 映射上下文中的结构体数据 -func (s *SysSettingControl) Bind(ctx *gin.Context) error { - log := api.GetRequestLogger(ctx) - - err := ctx.ShouldBind(s) - if err != nil { - log.Errorf("ShouldBind error: %s", err.Error()) - return err - } - - err = ctx.ShouldBindUri(s) - if err != nil { - log.Errorf("ShouldBindUri error: %s", err.Error()) - return err - } - var jsonStr []byte - jsonStr, err = json.Marshal(s) - if err != nil { - log.Debugf("ShouldBind error: %s", err.Error()) - } - ctx.Set("body", string(jsonStr)) - return err -} - -// Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型 -func (s *SysSettingControl) Generate() (*models.SysSetting, error) { - return &models.SysSetting{ - SettingsId: s.SettingsId, - Name: s.Name, - Logo: s.Logo, - }, nil -} - -// GetId 获取数据对应的ID -func (s *SysSettingControl) GetId() interface{} { - return s.SettingsId -} - -// SysConfigById 获取单个或者删除的结构体 -type SysSettingById struct { - Id int `uri:"id"` - Ids []int `json:"ids"` -} - -func (s *SysSettingById) Generate() *SysSettingById { - cp := *s - return &cp -} - -func (s *SysSettingById) GetId() interface{} { - if len(s.Ids) > 0 { - s.Ids = append(s.Ids, s.Id) - return s.Ids - } - return s.Id -} - -func (s *SysSettingById) Bind(ctx *gin.Context) error { - log := api.GetRequestLogger(ctx) - err := ctx.ShouldBindUri(s) - if err != nil { - log.Debugf("ShouldBindUri error: %s", err.Error()) - return err - } - err = ctx.ShouldBind(s) - if err != nil { - log.Debugf("ShouldBind error: %s", err.Error()) - } - return err -} - -func (s *SysSettingById) GenerateM() (*models.SysSetting, error) { - return &models.SysSetting{}, nil -} diff --git a/app/admin/service/dto/sys_user.go b/app/admin/service/dto/sys_user.go index 11ecb7d2..91b0bb13 100644 --- a/app/admin/service/dto/sys_user.go +++ b/app/admin/service/dto/sys_user.go @@ -16,9 +16,9 @@ type SysUserSearch struct { RoleId string `form:"roleId" search:"type:exact;column:role_id;table:sys_user" comment:"角色ID"` Sex string `form:"sex" search:"type:exact;column:sex;table:sys_user" comment:"性别"` Email string `form:"email" search:"type:contains;column:email;table:sys_user" comment:"邮箱"` - DeptId string `form:"deptId" search:"type:exact;column:dept_id;table:sys_user" comment:"部门"` PostId string `form:"postId" search:"type:exact;column:post_id;table:sys_user" comment:"岗位"` Status string `form:"status" search:"type:exact;column:status;table:sys_user" comment:"状态"` + DeptJoin `search:"type:left;on:dept_id:dept_id;table:sys_user;join:sys_dept"` SysUserOrder } @@ -29,6 +29,9 @@ type SysUserOrder struct { CreatedAtOrder string `search:"type:order;column:created_at;table:sys_user" form:"createdAtOrder"` } +type DeptJoin struct { + DeptId string `search:"type:contains;column:dept_path;table:sys_dept" form:"deptId"` +} func (m *SysUserSearch) GetNeedSearch() interface{} { return *m diff --git a/app/admin/service/sys_api.go b/app/admin/service/sys_api.go index db45874b..e4ac2177 100644 --- a/app/admin/service/sys_api.go +++ b/app/admin/service/sys_api.go @@ -18,8 +18,8 @@ type SysApi struct { service.Service } -// GetSysApiPage 获取SysApi列表 -func (e *SysApi) GetSysApiPage(c *dto.SysApiSearch, p *actions.DataPermission, list *[]models.SysApi, count *int64) error { +// GetPage 获取SysApi列表 +func (e *SysApi) GetPage(c *dto.SysApiSearch, p *actions.DataPermission, list *[]models.SysApi, count *int64) error { var err error var data models.SysApi @@ -38,8 +38,8 @@ func (e *SysApi) GetSysApiPage(c *dto.SysApiSearch, p *actions.DataPermission, l return nil } -// GetSysApi 获取SysApi对象 -func (e *SysApi) GetSysApi(d *dto.SysApiById, p *actions.DataPermission, model *models.SysApi) *SysApi { +// Get 获取SysApi对象with id +func (e *SysApi) Get(d *dto.SysApiById, p *actions.DataPermission, model *models.SysApi) *SysApi { var data models.SysApi err := e.Orm.Model(&data). Scopes( @@ -60,22 +60,8 @@ func (e *SysApi) GetSysApi(d *dto.SysApiById, p *actions.DataPermission, model * return e } -// CheckStorageSysApi 创建SysApi对象 -func (e *SysApi) CheckStorageSysApi(c *[]runtime.Router) error { - for _, v := range *c { - err := e.Orm.Debug().Where(models.SysApi{Path: v.RelativePath, Action: v.HttpMethod}). - Attrs(models.SysApi{Handle: v.Handler}). - FirstOrCreate(&models.SysApi{}).Error - if err != nil { - err := fmt.Errorf("Service CheckStorageSysApi error: %s \r\n ", err.Error()) - return err - } - } - return nil -} - -// UpdateSysApi 修改SysApi对象 -func (e *SysApi) UpdateSysApi(c *dto.SysApiControl, p *actions.DataPermission) error { +// Update 修改SysApi对象 +func (e *SysApi) Update(c *dto.SysApiControl, p *actions.DataPermission) error { var model = models.SysApi{} db := e.Orm.Debug().First(&model, c.GetId()) if db.RowsAffected == 0 { @@ -91,8 +77,8 @@ func (e *SysApi) UpdateSysApi(c *dto.SysApiControl, p *actions.DataPermission) e return nil } -// RemoveSysApi 删除SysApi -func (e *SysApi) RemoveSysApi(d *dto.SysApiById, p *actions.DataPermission) error { +// Remove 删除SysApi +func (e *SysApi) Remove(d *dto.SysApiById, p *actions.DataPermission) error { var data models.SysApi db := e.Orm.Model(&data). @@ -108,3 +94,17 @@ func (e *SysApi) RemoveSysApi(d *dto.SysApiById, p *actions.DataPermission) erro } return nil } + +// CheckStorageSysApi 创建SysApi对象 +func (e *SysApi) CheckStorageSysApi(c *[]runtime.Router) error { + for _, v := range *c { + err := e.Orm.Debug().Where(models.SysApi{Path: v.RelativePath, Action: v.HttpMethod}). + Attrs(models.SysApi{Handle: v.Handler}). + FirstOrCreate(&models.SysApi{}).Error + if err != nil { + err := fmt.Errorf("Service CheckStorageSysApi error: %s \r\n ", err.Error()) + return err + } + } + return nil +} diff --git a/app/admin/service/sys_config.go b/app/admin/service/sys_config.go index acb47567..3265bb8d 100644 --- a/app/admin/service/sys_config.go +++ b/app/admin/service/sys_config.go @@ -13,8 +13,8 @@ type SysConfig struct { service.Service } -// GetSysConfigPage 获取SysConfig列表 -func (e *SysConfig) GetSysConfigPage(c *dto.SysConfigSearch, list *[]models.SysConfig, count *int64) error { +// GetPage 获取SysConfig列表 +func (e *SysConfig) GetPage(c *dto.SysConfigSearch, list *[]models.SysConfig, count *int64) error { err := e.Orm. Scopes( cDto.MakeCondition(c.GetNeedSearch()), @@ -29,22 +29,8 @@ func (e *SysConfig) GetSysConfigPage(c *dto.SysConfigSearch, list *[]models.SysC return nil } -func (e *SysConfig) GetSysConfigByKey(c *dto.SysConfigSearch, list *[]models.SysConfig) error { - var err error - err = e.Orm. - Scopes( - cDto.MakeCondition(c.GetNeedSearch()), - ). - Find(list).Error - if err != nil { - e.Log.Errorf("Service GetSysConfigByKey error:%s", err) - return err - } - return nil -} - -// GetSysConfig 获取SysConfig对象 -func (e *SysConfig) GetSysConfig(d *dto.SysConfigById, model *models.SysConfig) error { +// Get 获取SysConfig对象 +func (e *SysConfig) Get(d *dto.SysConfigById, model *models.SysConfig) error { err := e.Orm.First(model, d.GetId()).Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { err = errors.New("查看对象不存在或无权查看") @@ -58,8 +44,8 @@ func (e *SysConfig) GetSysConfig(d *dto.SysConfigById, model *models.SysConfig) return nil } -// InsertSysConfig 创建SysConfig对象 -func (e *SysConfig) InsertSysConfig(c *dto.SysConfigControl) error { +// Insert 创建SysConfig对象 +func (e *SysConfig) Insert(c *dto.SysConfigControl) error { var err error var data models.SysConfig c.Generate(&data) @@ -71,8 +57,8 @@ func (e *SysConfig) InsertSysConfig(c *dto.SysConfigControl) error { return nil } -// UpdateSysConfig 修改SysConfig对象 -func (e *SysConfig) UpdateSysConfig(c *dto.SysConfigControl) error { +// Update 修改SysConfig对象 +func (e *SysConfig) Update(c *dto.SysConfigControl) error { var err error var model = models.SysConfig{} e.Orm.First(&model, c.GetId()) @@ -112,7 +98,7 @@ func (e *SysConfig) SetSysConfig(c *[]dto.GetSetSysConfigReq) error { return nil } -func (e *SysConfig) GetSetSysConfig(c *[]dto.GetSetSysConfigReq) error { +func (e *SysConfig) GetForSet(c *[]dto.GetSetSysConfigReq) error { var err error var data models.SysConfig @@ -125,7 +111,7 @@ func (e *SysConfig) GetSetSysConfig(c *[]dto.GetSetSysConfigReq) error { return nil } -func (e *SysConfig) UpdateSetSysConfig(c *[]dto.GetSetSysConfigReq) error { +func (e *SysConfig) UpdateForSet(c *[]dto.GetSetSysConfigReq) error { m := *c for _, req := range m { var data models.SysConfig @@ -148,8 +134,8 @@ func (e *SysConfig) UpdateSetSysConfig(c *[]dto.GetSetSysConfigReq) error { return nil } -// RemoveSysConfig 删除SysConfig -func (e *SysConfig) RemoveSysConfig(d *dto.SysConfigById) error { +// Remove 删除SysConfig +func (e *SysConfig) Remove(d *dto.SysConfigById) error { var err error var data models.SysConfig @@ -166,8 +152,8 @@ func (e *SysConfig) RemoveSysConfig(d *dto.SysConfigById) error { return nil } -// GetSysConfigByKEY 根据Key获取SysConfig -func (e *SysConfig) GetSysConfigByKEY(c *dto.SysConfigByKeyReq, resp *dto.GetSysConfigByKEYForServiceResp) error { +// GetWithKey 根据Key获取SysConfig +func (e *SysConfig) GetWithKey(c *dto.SysConfigByKeyReq, resp *dto.GetSysConfigByKEYForServiceResp) error { var err error var data models.SysConfig err = e.Orm.Table(data.TableName()).Where("config_key = ?", c.ConfigKey).First(resp).Error @@ -178,3 +164,17 @@ func (e *SysConfig) GetSysConfigByKEY(c *dto.SysConfigByKeyReq, resp *dto.GetSys return nil } + +func (e *SysConfig) GetWithKeyList(c *dto.SysConfigSearch, list *[]models.SysConfig) error { + var err error + err = e.Orm. + Scopes( + cDto.MakeCondition(c.GetNeedSearch()), + ). + Find(list).Error + if err != nil { + e.Log.Errorf("Service GetSysConfigByKey error:%s", err) + return err + } + return nil +} diff --git a/app/admin/service/sys_dept.go b/app/admin/service/sys_dept.go index 5d371e35..92cdbd84 100644 --- a/app/admin/service/sys_dept.go +++ b/app/admin/service/sys_dept.go @@ -17,8 +17,8 @@ type SysDept struct { service.Service } -// GetSysDeptPage 获取SysDept列表 -func (e *SysDept) GetSysDeptPage(c *dto.SysDeptSearch, list *[]models.SysDept) error { +// GetPage 获取SysDept列表 +func (e *SysDept) GetPage(c *dto.SysDeptSearch, list *[]models.SysDept) error { var err error var data models.SysDept @@ -34,8 +34,8 @@ func (e *SysDept) GetSysDeptPage(c *dto.SysDeptSearch, list *[]models.SysDept) e return nil } -// GetSysDept 获取SysDept对象 -func (e *SysDept) GetSysDept(d *dto.SysDeptById, model *models.SysDept) error { +// Get 获取SysDept对象 +func (e *SysDept) Get(d *dto.SysDeptById, model *models.SysDept) error { var err error var data models.SysDept @@ -54,8 +54,8 @@ func (e *SysDept) GetSysDept(d *dto.SysDeptById, model *models.SysDept) error { return nil } -// InsertSysDept 创建SysDept对象 -func (e *SysDept) InsertSysDept(c *dto.SysDeptControl) error { +// Insert 创建SysDept对象 +func (e *SysDept) Insert(c *dto.SysDeptControl) error { var err error var data models.SysDept c.Generate(&data) @@ -64,13 +64,13 @@ func (e *SysDept) InsertSysDept(c *dto.SysDeptControl) error { e.Log.Errorf("db error:%s", err) return err } - deptPath := "/" + pkg.IntToString(data.DeptId) + deptPath := pkg.IntToString(data.DeptId) + "/" if data.ParentId != 0 { var deptP models.SysDept e.Orm.First(&deptP, data.ParentId) deptPath = deptP.DeptPath + deptPath } else { - deptPath = "/0" + deptPath + deptPath = "/0/" + deptPath } var mp = map[string]string{} mp["dept_path"] = deptPath @@ -81,29 +81,35 @@ func (e *SysDept) InsertSysDept(c *dto.SysDeptControl) error { return nil } -// UpdateSysDept 修改SysDept对象 -func (e *SysDept) UpdateSysDept(c *dto.SysDeptControl) error { +// Update 修改SysDept对象 +func (e *SysDept) Update(c *dto.SysDeptControl) error { var err error var model = models.SysDept{} e.Orm.First(&model, c.GetId()) c.Generate(&model) - db := e.Orm.Where(c.GetId()).Updates(c) + + deptPath := pkg.IntToString(model.DeptId) + "/" + if model.ParentId != 0 { + var deptP models.SysDept + e.Orm.First(&deptP, model.ParentId) + deptPath = deptP.DeptPath + deptPath + } else { + deptPath = "/0/" + deptPath + } + model.DeptPath = deptPath + db := e.Orm.Save(&model) if db.Error != nil { - e.Log.Errorf("db error:%s", err) + e.Log.Errorf("UpdateSysDept error:%s", err) return err } if db.RowsAffected == 0 { return errors.New("无权更新该数据") } - - //参数1:是要修改的数据 - //参数2:是修改的数据 - return nil } -// RemoveSysDept 删除SysDept -func (e *SysDept) RemoveSysDept(d *dto.SysDeptById) error { +// Remove 删除SysDept +func (e *SysDept) Remove(d *dto.SysDeptById) error { var err error var data models.SysDept @@ -122,7 +128,7 @@ func (e *SysDept) RemoveSysDept(d *dto.SysDeptById) error { } // GetSysDeptList 获取组织数据 -func (e *SysDept) getSysDeptList(c *dto.SysDeptSearch, list *[]models.SysDept) error { +func (e *SysDept) getList(c *dto.SysDeptSearch, list *[]models.SysDept) error { var err error var data models.SysDept @@ -141,7 +147,7 @@ func (e *SysDept) getSysDeptList(c *dto.SysDeptSearch, list *[]models.SysDept) e // SetDeptTree 设置组织数据 func (e *SysDept) SetDeptTree(c *dto.SysDeptSearch) (m []dto.DeptLabel, err error) { var list []models.SysDept - err = e.getSysDeptList(c, &list) + err = e.getList(c, &list) m = make([]dto.DeptLabel, 0) for i := 0; i < len(list); i++ { @@ -159,15 +165,15 @@ func (e *SysDept) SetDeptTree(c *dto.SysDeptSearch) (m []dto.DeptLabel, err erro } // Call 递归构造组织数据 -func deptTreeCall(deptlist *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel { - list := *deptlist +func deptTreeCall(deptList *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel { + list := *deptList min := make([]dto.DeptLabel, 0) for j := 0; j < len(list); j++ { if dept.Id != list[j].ParentId { continue } mi := dto.DeptLabel{Id: list[j].DeptId, Label: list[j].DeptName, Children: []dto.DeptLabel{}} - ms := deptTreeCall(deptlist, mi) + ms := deptTreeCall(deptList, mi) min = append(min, ms) } dept.Children = min @@ -177,15 +183,12 @@ func deptTreeCall(deptlist *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel // SetDeptPage 设置dept页面数据 func (e *SysDept) SetDeptPage(c *dto.SysDeptSearch) (m []models.SysDept, err error) { var list []models.SysDept - err = e.getSysDeptList(c, &list) - - //m := make([]models.SysDept, 0) + err = e.getList(c, &list) for i := 0; i < len(list); i++ { if list[i].ParentId != 0 { continue } info := e.deptPageCall(&list, list[i]) - m = append(m, info) } return @@ -193,10 +196,8 @@ func (e *SysDept) SetDeptPage(c *dto.SysDeptSearch) (m []models.SysDept, err err func (e *SysDept) deptPageCall(deptlist *[]models.SysDept, menu models.SysDept) models.SysDept { list := *deptlist - min := make([]models.SysDept, 0) for j := 0; j < len(list); j++ { - if menu.DeptId != list[j].ParentId { continue } @@ -214,14 +215,13 @@ func (e *SysDept) deptPageCall(deptlist *[]models.SysDept, menu models.SysDept) mi.Children = []models.SysDept{} ms := e.deptPageCall(deptlist, mi) min = append(min, ms) - } menu.Children = min return menu } // GetRoleDeptId 获取角色的部门ID集合 -func (e *SysDept) GetRoleDeptId(roleId int) ([]int, error) { +func (e *SysDept) GetWithRoleId(roleId int) ([]int, error) { deptIds := make([]int, 0) deptList := make([]dto.DeptIdList, 0) if err := e.Orm.Table("sys_role_dept"). @@ -232,11 +232,9 @@ func (e *SysDept) GetRoleDeptId(roleId int) ([]int, error) { Find(&deptList).Error; err != nil { return nil, err } - for i := 0; i < len(deptList); i++ { deptIds = append(deptIds, deptList[i].DeptId) } - return deptIds, nil } @@ -247,7 +245,6 @@ func (e *SysDept) SetDeptLabel() (m []dto.DeptLabel, err error) { log.Error("find dept list error, %s", err.Error()) return } - m = make([]dto.DeptLabel, 0) var item dto.DeptLabel for i := range list { @@ -257,28 +254,24 @@ func (e *SysDept) SetDeptLabel() (m []dto.DeptLabel, err error) { item = dto.DeptLabel{} item.Id = list[i].DeptId item.Label = list[i].DeptName - deptInfo := digitDeptLabel(&list, item) - + deptInfo := deptLabelCall(&list, item) m = append(m, deptInfo) } return } -// digitDeptLabel -func digitDeptLabel(deptList *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel { +// deptLabelCall +func deptLabelCall(deptList *[]models.SysDept, dept dto.DeptLabel) dto.DeptLabel { list := *deptList - var mi dto.DeptLabel min := make([]dto.DeptLabel, 0) for j := 0; j < len(list); j++ { - if dept.Id != list[j].ParentId { continue } mi = dto.DeptLabel{Id: list[j].DeptId, Label: list[j].DeptName, Children: []dto.DeptLabel{}} - ms := digitDeptLabel(deptList, mi) + ms := deptLabelCall(deptList, mi) min = append(min, ms) - } dept.Children = min return dept diff --git a/app/admin/service/sys_login_log.go b/app/admin/service/sys_login_log.go index efaa29b3..1cdf9b68 100644 --- a/app/admin/service/sys_login_log.go +++ b/app/admin/service/sys_login_log.go @@ -16,7 +16,7 @@ type SysLoginLog struct { } // GetSysLoginLogPage 获取SysLoginLog列表 -func (e *SysLoginLog) GetSysLoginLogPage(c *dto.SysLoginLogSearch, list *[]models.SysLoginLog, count *int64) error { +func (e *SysLoginLog) GetPage(c *dto.SysLoginLogSearch, list *[]models.SysLoginLog, count *int64) error { var err error var data models.SysLoginLog @@ -35,7 +35,7 @@ func (e *SysLoginLog) GetSysLoginLogPage(c *dto.SysLoginLogSearch, list *[]model } // GetSysLoginLog 获取SysLoginLog对象 -func (e *SysLoginLog) GetSysLoginLog(d *dto.SysLoginLogById, model *models.SysLoginLog) error { +func (e *SysLoginLog) Get(d *dto.SysLoginLogById, model *models.SysLoginLog) error { var err error db := e.Orm.First(model, d.GetId()) err = db.Error @@ -52,7 +52,7 @@ func (e *SysLoginLog) GetSysLoginLog(d *dto.SysLoginLogById, model *models.SysLo } // RemoveSysLoginLog 删除SysLoginLog -func (e *SysLoginLog) RemoveSysLoginLog(c *dto.SysLoginLogById) error { +func (e *SysLoginLog) Remove(c *dto.SysLoginLogById) error { var err error var data models.SysLoginLog diff --git a/app/admin/service/sys_menu.go b/app/admin/service/sys_menu.go index 208aff39..527554bb 100644 --- a/app/admin/service/sys_menu.go +++ b/app/admin/service/sys_menu.go @@ -19,9 +19,9 @@ type SysMenu struct { } // GetSysMenuPage 获取SysMenu列表 -func (e *SysMenu) GetSysMenuPage(c *dto.SysMenuSearch, menus *[]models.SysMenu) *SysMenu { +func (e *SysMenu) GetPage(c *dto.SysMenuSearch, menus *[]models.SysMenu) *SysMenu { var menu = make([]models.SysMenu, 0) - err := e.getSysMenuPage(c, &menu).Error + err := e.getPage(c, &menu).Error if err != nil { _ = e.AddError(err) return e @@ -37,7 +37,7 @@ func (e *SysMenu) GetSysMenuPage(c *dto.SysMenuSearch, menus *[]models.SysMenu) } // getSysMenuPage 菜单分页列表 -func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) *SysMenu { +func (e *SysMenu) getPage(c *dto.SysMenuSearch, list *[]models.SysMenu) *SysMenu { var err error var data models.SysMenu @@ -56,7 +56,7 @@ func (e *SysMenu) getSysMenuPage(c *dto.SysMenuSearch, list *[]models.SysMenu) * } // GetSysMenu 获取SysMenu对象 -func (e *SysMenu) GetSysMenu(d *dto.SysMenuById, model *models.SysMenu) *SysMenu { +func (e *SysMenu) Get(d *dto.SysMenuById, model *models.SysMenu) *SysMenu { var err error var data models.SysMenu @@ -83,7 +83,7 @@ func (e *SysMenu) GetSysMenu(d *dto.SysMenuById, model *models.SysMenu) *SysMenu } // InsertSysMenu 创建SysMenu对象 -func (e *SysMenu) InsertSysMenu(c *dto.SysMenuControl) *SysMenu { +func (e *SysMenu) Insert(c *dto.SysMenuControl) *SysMenu { var err error var data models.SysMenu c.Generate(&data) @@ -114,7 +114,7 @@ func (e *SysMenu) initPaths(menu *models.SysMenu) error { } // UpdateSysMenu 修改SysMenu对象 -func (e *SysMenu) UpdateSysMenu(c *dto.SysMenuControl) *SysMenu { +func (e *SysMenu) Update(c *dto.SysMenuControl) *SysMenu { var err error var model = models.SysMenu{} e.Orm.First(&model, c.GetId()) @@ -133,7 +133,7 @@ func (e *SysMenu) UpdateSysMenu(c *dto.SysMenuControl) *SysMenu { } // RemoveSysMenu 删除SysMenu -func (e *SysMenu) RemoveSysMenu(d *dto.SysMenuById) *SysMenu { +func (e *SysMenu) Remove(d *dto.SysMenuById) *SysMenu { var err error var data models.SysMenu @@ -151,7 +151,7 @@ func (e *SysMenu) RemoveSysMenu(d *dto.SysMenuById) *SysMenu { } // GetSysMenuList 获取菜单数据 -func (e *SysMenu) GetSysMenuList(c *dto.SysMenuSearch, list *[]models.SysMenu) error { +func (e *SysMenu) GetList(c *dto.SysMenuSearch, list *[]models.SysMenu) error { var err error var data models.SysMenu @@ -168,9 +168,9 @@ func (e *SysMenu) GetSysMenuList(c *dto.SysMenuSearch, list *[]models.SysMenu) e } // SetSysMenuLabel 设置菜单数据 -func (e *SysMenu) SetSysMenuLabel() (m []dto.MenuLabel, err error) { +func (e *SysMenu) SetLabel() (m []dto.MenuLabel, err error) { var list []models.SysMenu - err = e.GetSysMenuList(&dto.SysMenuSearch{}, &list) + err = e.GetList(&dto.SysMenuSearch{}, &list) m = make([]dto.MenuLabel, 0) for i := 0; i < len(list); i++ { @@ -188,12 +188,18 @@ func (e *SysMenu) SetSysMenuLabel() (m []dto.MenuLabel, err error) { } // GetSysMenuByRoleName 左侧菜单 -func (e *SysMenu) GetSysMenuByRoleName(roleName string) ([]models.SysMenu, error) { +func (e *SysMenu) GetSysMenuByRoleName(roleName ...string) ([]models.SysMenu, error) { var MenuList []models.SysMenu var role models.SysRole var err error + admin := false + for _, s := range roleName { + if s == "admin" { + admin = true + } + } - if roleName == "admin" { + if len(roleName) > 0 && admin { var data []models.SysMenu err = e.Orm.Where(" menu_type in ('M','C')"). Order("sort"). @@ -203,9 +209,9 @@ func (e *SysMenu) GetSysMenuByRoleName(roleName string) ([]models.SysMenu, error } else { 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). + }).Where("role_name in ?", roleName).Find(&role). Error - MenuList = role.SysMenu + MenuList = *role.SysMenu } if err != nil { @@ -215,8 +221,8 @@ func (e *SysMenu) GetSysMenuByRoleName(roleName string) ([]models.SysMenu, error } // menuLabelCall 递归构造组织数据 -func menuLabelCall(elist *[]models.SysMenu, dept dto.MenuLabel) dto.MenuLabel { - list := *elist +func menuLabelCall(eList *[]models.SysMenu, dept dto.MenuLabel) dto.MenuLabel { + list := *eList min := make([]dto.MenuLabel, 0) for j := 0; j < len(list); j++ { @@ -229,7 +235,7 @@ func menuLabelCall(elist *[]models.SysMenu, dept dto.MenuLabel) dto.MenuLabel { mi.Label = list[j].Title mi.Children = []dto.MenuLabel{} if list[j].MenuType != "F" { - ms := menuLabelCall(elist, mi) + ms := menuLabelCall(eList, mi) min = append(min, ms) } else { min = append(min, mi) @@ -309,7 +315,7 @@ func (e *SysMenu) getByRoleName(roleName string) ([]models.SysMenu, error) { 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 + MenuList = *role.SysMenu } if err != nil { diff --git a/app/admin/service/sys_opera_log.go b/app/admin/service/sys_opera_log.go index faaf597f..87558720 100644 --- a/app/admin/service/sys_opera_log.go +++ b/app/admin/service/sys_opera_log.go @@ -15,8 +15,8 @@ type SysOperaLog struct { service.Service } -// GetSysOperaLogPage 获取SysOperaLog列表 -func (e *SysOperaLog) GetSysOperaLogPage(c *dto.SysOperaLogSearch, list *[]models.SysOperaLog, count *int64) error { +// GetPage 获取SysOperaLog列表 +func (e *SysOperaLog) GetPage(c *dto.SysOperaLogSearch, list *[]models.SysOperaLog, count *int64) error { var err error var data models.SysOperaLog @@ -34,8 +34,8 @@ func (e *SysOperaLog) GetSysOperaLogPage(c *dto.SysOperaLogSearch, list *[]model return nil } -// GetSysOperaLog 获取SysOperaLog对象 -func (e *SysOperaLog) GetSysOperaLog(d *dto.SysOperaLogById, model *models.SysOperaLog) error { +// Get 获取SysOperaLog对象 +func (e *SysOperaLog) Get(d *dto.SysOperaLogById, model *models.SysOperaLog) error { var data models.SysOperaLog err := e.Orm.Model(&data). @@ -52,8 +52,8 @@ func (e *SysOperaLog) GetSysOperaLog(d *dto.SysOperaLogById, model *models.SysOp return nil } -// InsertSysOperaLog 创建SysOperaLog对象 -func (e *SysOperaLog) InsertSysOperaLog(model *models.SysOperaLog) error { +// Insert 创建SysOperaLog对象 +func (e *SysOperaLog) Insert(model *models.SysOperaLog) error { var err error var data models.SysOperaLog @@ -66,25 +66,8 @@ func (e *SysOperaLog) InsertSysOperaLog(model *models.SysOperaLog) error { return nil } -// UpdateSysOperaLog 修改SysOperaLog对象 -func (e *SysOperaLog) UpdateSysOperaLog(c *models.SysOperaLog) error { - var err error - - db := e.Orm.Model(c). - Where(c.GetId()).Updates(c) - if err = db.Error; err != nil { - e.Log.Errorf("Service UpdateSysOperaLog error:%s", err.Error()) - return err - } - if db.RowsAffected == 0 { - return errors.New("无权更新该数据") - - } - return nil -} - -// RemoveSysOperaLog 删除SysOperaLog -func (e *SysOperaLog) RemoveSysOperaLog(d *dto.SysOperaLogById) error { +// Remove 删除SysOperaLog +func (e *SysOperaLog) Remove(d *dto.SysOperaLogById) error { var err error var data models.SysOperaLog diff --git a/app/admin/service/sys_role.go b/app/admin/service/sys_role.go index a094ef5d..470e57e3 100644 --- a/app/admin/service/sys_role.go +++ b/app/admin/service/sys_role.go @@ -16,8 +16,8 @@ type SysRole struct { service.Service } -// GetSysRolePage 获取SysRole列表 -func (e *SysRole) GetSysRolePage(c *dto.SysRoleSearch, list *[]models.SysRole, count *int64) error { +// GetPage 获取SysRole列表 +func (e *SysRole) GetPage(c *dto.SysRoleSearch, list *[]models.SysRole, count *int64) error { var err error var data models.SysRole @@ -35,10 +35,9 @@ func (e *SysRole) GetSysRolePage(c *dto.SysRoleSearch, list *[]models.SysRole, c return nil } -// GetSysRole 获取SysRole对象 -func (e *SysRole) GetSysRole(d *dto.SysRoleById, model *models.SysRole) error { +// Get 获取SysRole对象 +func (e *SysRole) Get(d *dto.SysRoleById, model *models.SysRole) error { var err error - db := e.Orm.First(model, d.GetId()) err = db.Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { @@ -58,8 +57,8 @@ func (e *SysRole) GetSysRole(d *dto.SysRoleById, model *models.SysRole) error { return nil } -// InsertSysRole 创建SysRole对象 -func (e *SysRole) InsertSysRole(c *dto.SysRoleControl) error { +// Insert 创建SysRole对象 +func (e *SysRole) Insert(c *dto.SysRoleControl) error { var err error var data models.SysRole var dataMenu []models.SysMenu @@ -98,8 +97,8 @@ func (e *SysRole) InsertSysRole(c *dto.SysRoleControl) error { return nil } -// UpdateSysRole 修改SysRole对象 -func (e *SysRole) UpdateSysRole(c *dto.SysRoleControl, cb *casbin.SyncedEnforcer) error { +// Update 修改SysRole对象 +func (e *SysRole) Update(c *dto.SysRoleControl, cb *casbin.SyncedEnforcer) error { var err error tx := e.Orm.Debug().Begin() @@ -112,11 +111,16 @@ func (e *SysRole) UpdateSysRole(c *dto.SysRoleControl, cb *casbin.SyncedEnforcer }() var model = models.SysRole{} var mlist = make([]models.SysMenu, 0) - e.Orm.First(&model, c.GetId()) - e.Orm.Preload("SysApi").Find(&mlist, c.MenuIds) + tx.Preload("SysMenu").First(&model, c.GetId()) + tx.Preload("SysApi").Where("menu_id in ?", c.MenuIds).Find(&mlist) + err = tx.Model(&model).Association("SysMenu").Delete(model.SysMenu) + if err != nil { + e.Log.Errorf("delete policy error:%s", err) + return err + } c.Generate(&model) - model.SysMenu = mlist - db := e.Orm.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model) + model.SysMenu = &mlist + db := tx.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model) if db.Error != nil { e.Log.Errorf("db error:%s", err) @@ -125,18 +129,24 @@ func (e *SysRole) UpdateSysRole(c *dto.SysRoleControl, cb *casbin.SyncedEnforcer if db.RowsAffected == 0 { return errors.New("无权更新该数据") } + + _, err = cb.RemoveFilteredPolicy(0, model.RoleKey) + if err != nil { + e.Log.Errorf("delete policy error:%s", err) + 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 } -// RemoveSysRole 删除SysRole -func (e *SysRole) RemoveSysRole(d *dto.SysRoleById) error { +// Remove 删除SysRole +func (e *SysRole) Remove(d *dto.SysRoleById) error { var err error var data models.SysRole @@ -175,18 +185,14 @@ func (e *SysRole) RemoveSysRole(d *dto.SysRoleById) error { // 获取角色对应的菜单ids func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) { menuIds := make([]int, 0) - menuList := make([]models.MenuIdList, 0) - 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 "+ - "LEFT JOIN sys_menu on sys_menu.menu_id=sys_role_menu.menu_id where role_id =? and parent_id is not null)", roleId). - Find(&menuList).Error; err != nil { + model := models.SysRole{} + model.RoleId = roleId + if err := e.Orm.Model(&model).Preload("SysMenu").First(&model).Error; err != nil { return nil, err } - - for i := 0; i < len(menuList); i++ { - menuIds = append(menuIds, menuList[i].MenuId) + l := *model.SysMenu + for i := 0; i < len(l); i++ { + menuIds = append(menuIds, l[i].MenuId) } return menuIds, nil } diff --git a/app/admin/service/sys_setting.go b/app/admin/service/sys_setting.go deleted file mode 100644 index f6714e9a..00000000 --- a/app/admin/service/sys_setting.go +++ /dev/null @@ -1,52 +0,0 @@ -package service - -import ( - "errors" - - "github.com/go-admin-team/go-admin-core/sdk/service" - "gorm.io/gorm" - - "go-admin/app/admin/models" -) - -type SysSetting struct { - service.Service -} - -// GetSysSetting 获取SysSetting对象 -func (e *SysSetting) GetSysSetting(model *models.SysSetting) error { - var err error - var data models.SysSetting - - db := e.Orm.Model(&data). - First(model) - err = db.Error - if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { - err = errors.New("查看对象不存在或无权查看") - e.Log.Errorf("db error:%s", err) - return err - } - if db.Error != nil { - e.Log.Errorf("db error:%s", err) - return err - } - return nil -} - -// UpdateSysSetting 修改SysSetting对象 -func (e *SysSetting) UpdateSysSetting(c *models.SysSetting) error { - var err error - var data models.SysSetting - - db := e.Orm.Model(&data). - Where(c.GetId()).Updates(c) - if db.Error != nil { - e.Log.Errorf("db error:%s", err) - return err - } - if db.RowsAffected == 0 { - return errors.New("无权更新该数据") - - } - return nil -} diff --git a/app/cms/models/sys_content.go b/app/cms/models/sys_content.go index cb00ca66..99922cb2 100644 --- a/app/cms/models/sys_content.go +++ b/app/cms/models/sys_content.go @@ -6,13 +6,13 @@ import ( type SysContent struct { models.Model - CateId int `json:"cateId" gorm:"type:int(11);comment:分类id"` - Name string `json:"name" gorm:"type:varchar(255);comment:名称"` - Status int `json:"status" gorm:"type:int(1);comment:状态"` - Img string `json:"img" gorm:"type:varchar(255);comment:图片"` + CateId int `json:"cateId" gorm:"size:11;comment:分类id"` + Name string `json:"name" gorm:"size:255;comment:名称"` + Status int `json:"status" gorm:"size:1;comment:状态"` + Img string `json:"img" gorm:"size:255;comment:图片"` Content string `json:"content" gorm:"type:text;comment:内容"` - Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"` - Sort int `json:"sort" gorm:"type:int(4);comment:排序"` + Remark string `json:"remark" gorm:"size:255;comment:备注"` + Sort int `json:"sort" gorm:"size:4;comment:排序"` models.ControlBy models.ModelTime }