diff --git a/apis/sysjob/sysjob.go b/apis/sysjob/sysjob.go index 5dd3b79c..43405301 100644 --- a/apis/sysjob/sysjob.go +++ b/apis/sysjob/sysjob.go @@ -43,7 +43,7 @@ func GetSysJob(c *gin.Context) { var v tools.GeneralGetDto err := c.BindUri(&v) tools.HasError(err, "", 500) - data.JobId, _ = tools.StringToInt(v.Id) + data.JobId = v.Id err = data.Get(data.JobId) tools.HasError(err, "抱歉未找到相关信息", -1) @@ -111,7 +111,7 @@ func StartJob(c *gin.Context) { var v tools.GeneralGetDto err := c.BindUri(&v) tools.HasError(err, "", 500) - data.JobId, _ = tools.StringToInt(v.Id) + data.JobId = v.Id err = data.Get(data.JobId) tools.HasError(err, "", 500) if data.JobType == 1 { diff --git a/apis/system/dict/dicttype.go b/apis/system/dict/dicttype.go index efb8d495..44eefc3c 100644 --- a/apis/system/dict/dicttype.go +++ b/apis/system/dict/dicttype.go @@ -44,12 +44,7 @@ func GetDictTypeList(c *gin.Context) { result, count, err := data.GetPage(pageSize, pageIndex) tools.HasError(err, "", -1) - var res app.PageResponse - res.Data.List = result - res.Data.Count = count - res.Data.PageIndex = pageIndex - res.Data.PageSize = pageSize - c.JSON(http.StatusOK, res.ReturnOK()) + app.PageOK(c,result,count,pageIndex,pageSize,"") } // @Summary 通过字典id获取字典类型 diff --git a/config/settings.full.yml b/config/settings.full.yml index 3ee29b35..54b3ab59 100644 --- a/config/settings.full.yml +++ b/config/settings.full.yml @@ -53,4 +53,3 @@ settings: dbname: dbname # 代码生成是使用前端代码存放位置,需要指定到src文件夹,相对路径 frontpath: ../go-admin-ui/src ->>>>>>> c396f318ef0649f7231b8ee7b2a70d26159c19c2 diff --git a/models/datascope.go b/models/datascope.go index 60201358..83702fb8 100644 --- a/models/datascope.go +++ b/models/datascope.go @@ -51,3 +51,35 @@ func (e *DataPermission) GetDataScope(tbname string, table *gorm.DB) (*gorm.DB, return table, nil } + +func DataScopes(tableName string, userid int) func(db *gorm.DB) *gorm.DB { + return func(db *gorm.DB) *gorm.DB { + SysUser := new(SysUser) + SysRole := new(SysRole) + SysUser.UserId = userid + user, err := SysUser.Get() + if err != nil { + db.Error = errors.New("获取用户数据出错 msg:" + err.Error()) + return db + } + SysRole.RoleId = user.RoleId + role, err := SysRole.Get() + if err != nil { + db.Error = errors.New("获取用户数据出错 msg:" + err.Error()) + return db + } + if role.DataScope == "2" { + return db.Where(tableName+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId) + } + if role.DataScope == "3" { + return db.Where(tableName+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId) + } + if role.DataScope == "4" { + return db.Where(tableName+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+tools.IntToString(user.DeptId)+"%") + } + if role.DataScope == "5" || role.DataScope == "" { + return db.Where(tableName+".create_by = ?", userid) + } + return db + } +} diff --git a/models/sysjob.go b/models/sysjob.go index 5f9d1cac..a5264c85 100644 --- a/models/sysjob.go +++ b/models/sysjob.go @@ -57,15 +57,17 @@ func (e *SysJob) GetPage(pageSize int, pageIndex int, v interface{}, list interf table := orm.Eloquent.Table(e.TableName()).Scopes(tools.MakeCondition(v)) // 数据权限控制(如果不需要数据权限请将此处去掉) - dataPermission := new(DataPermission) - dataPermission.UserId, _ = tools.StringToInt(e.DataScope) - table, err := dataPermission.GetDataScope(e.TableName(), table) - if err != nil { - return 0, err - } + //dataPermission := new(DataPermission) + userid, _ := tools.StringToInt(e.DataScope) + //dataPermission.UserId = userid + //table, err := dataPermission.GetDataScope(e.TableName(), table) + //if err != nil { + // return 0, err + //} + var count int64 - if err := table.Scopes(tools.Paginate(pageSize, pageIndex)).Find(list).Offset(-1).Limit(-1).Count(&count).Error; err != nil { + if err := table.Scopes(DataScopes(e.TableName(),userid),tools.Paginate(pageSize, pageIndex)).Find(list).Offset(-1).Limit(-1).Count(&count).Error; err != nil { return 0, err } return int(count), nil @@ -81,9 +83,6 @@ func (e *SysJob) Update(id interface{}) (err error) { } func (e *SysJob) RemoveAllEntryID() (update SysJob, err error) { - - //参数1:是要修改的数据 - //参数2:是修改的数据 if err = orm.Eloquent.Table(e.TableName()).Where("entry_id > ?", 0).Update("entry_id", 0).Error; err != nil { return } @@ -91,9 +90,6 @@ func (e *SysJob) RemoveAllEntryID() (update SysJob, err error) { } func (e *SysJob) RemoveEntryID(entryID int) (update SysJob, err error) { - - //参数1:是要修改的数据 - //参数2:是修改的数据 if err = orm.Eloquent.Table(e.TableName()).Where("entry_id = ?", entryID).Updates(map[string]interface{}{"entry_id": 0}).Error; err != nil { return } diff --git a/models/sysuser.go b/models/sysuser.go index 9b7955cb..e0baae36 100644 --- a/models/sysuser.go +++ b/models/sysuser.go @@ -215,16 +215,16 @@ func (e *SysUser) GetPage(pageSize int, pageIndex int) ([]SysUserPage, int, erro table = table.Where("sys_user.dept_id in (select dept_id from sys_dept where dept_path like ? )", "%"+tools.IntToString(e.DeptId)+"%") } - // 数据权限控制 - dataPermission := new(DataPermission) - dataPermission.UserId, _ = tools.StringToInt(e.DataScope) - table, err := dataPermission.GetDataScope("sys_user", table) - if err != nil { - return nil, 0, err - } + userid, _ := tools.StringToInt(e.DataScope) + //dataPermission.UserId = userid + //table, err := dataPermission.GetDataScope(e.TableName(), table) + //if err != nil { + // return 0, err + //} + var count int64 - if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil { + if err := table.Scopes(DataScopes(e.TableName(),userid)).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil { return nil, 0, err } //table.Where("sys_user.deleted_at IS NULL").Count(&count) diff --git a/tools/app/model.go b/tools/app/model.go index db247d02..3bdd136d 100644 --- a/tools/app/model.go +++ b/tools/app/model.go @@ -16,15 +16,6 @@ type Page struct { PageSize int `json:"pageSize"` } -type PageResponse struct { - // 代码 - Code int `json:"code" example:"200"` - // 数据集 - Data Page `json:"data"` - // 消息 - Msg string `json:"msg"` -} - func (res *Response) ReturnOK() *Response { res.Code = 200 return res @@ -33,9 +24,4 @@ func (res *Response) ReturnOK() *Response { func (res *Response) ReturnError(code int) *Response { res.Code = code return res -} - -func (res *PageResponse) ReturnOK() *PageResponse { - res.Code = 200 - return res -} +} \ No newline at end of file diff --git a/tools/app/return.go b/tools/app/return.go index d84f4a5a..5426c59e 100644 --- a/tools/app/return.go +++ b/tools/app/return.go @@ -27,15 +27,12 @@ func OK(c *gin.Context, data interface{}, msg string) { // 分页数据处理 func PageOK(c *gin.Context, result interface{}, count int, pageIndex int, pageSize int, msg string) { - var res PageResponse - res.Data.List = result - res.Data.Count = count - res.Data.PageIndex = pageIndex - res.Data.PageSize = pageSize - if msg != "" { - res.Msg = msg - } - c.JSON(http.StatusOK, res.ReturnOK()) + var res Page + res.List = result + res.Count = count + res.PageIndex = pageIndex + res.PageSize = pageSize + OK(c, res, msg) } // 兼容函数 diff --git a/tools/dto.go b/tools/dto.go index a50e561d..dec16a62 100644 --- a/tools/dto.go +++ b/tools/dto.go @@ -34,7 +34,7 @@ func (g GeneralDelDto) GetIds() []string { } type GeneralGetDto struct { - Id string `uri:"id" json:"id" validate:"required"` + Id int `uri:"id" json:"id" validate:"required"` } func MakeCondition(q interface{}) func(db *gorm.DB) *gorm.DB { diff --git a/tools/utils.go b/tools/utils.go index b9f02345..c8038806 100644 --- a/tools/utils.go +++ b/tools/utils.go @@ -1,6 +1,8 @@ package tools import ( + "log" + "runtime" "strconv" "golang.org/x/crypto/bcrypt" @@ -50,6 +52,8 @@ func HasError(err error, msg string, code ...int) { if msg == "" { msg = err.Error() } + _, file, line, _ := runtime.Caller(1) + log.Printf("%s:%v",file, line) panic("CustomError#" + strconv.Itoa(statusCode) + "#" + msg) } }