From 63baf5dd5273e00d67121609584018941ef178bd Mon Sep 17 00:00:00 2001 From: HuangZhi Date: Mon, 3 Jul 2023 16:20:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E8=A1=A5=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bean/entity/system_role.go | 24 ++++++------- src/controller/system_user.go | 8 ++--- src/pkg/beagle/resp/resp.go | 3 ++ src/service/organization.go | 26 +++++++------- src/service/system_role.go | 6 ++-- src/service/system_user.go | 66 +++++++++++++++++++--------------- 6 files changed, 72 insertions(+), 61 deletions(-) diff --git a/src/bean/entity/system_role.go b/src/bean/entity/system_role.go index 456d297..8a43b68 100644 --- a/src/bean/entity/system_role.go +++ b/src/bean/entity/system_role.go @@ -1,20 +1,20 @@ package entity import ( - "time" + "gitlab.wodcloud.com/smart-operation/so-operation-api/src/pkg/beagle/jsontime" ) // SystemRole 系统角色 type SystemRole struct { - Id int64 `json:"id" xorm:"pk autoincr"` // id - RoleName string `json:"role_name"` // 角色名称 - RoleDesc string `json:"role_desc"` // 角色描述 - State int `json:"state"` // 状态0禁用1启用 - CreatedBy int `json:"created_by"` // 角色创建人 - CreatedTime time.Time `json:"created_time"` // 角色创建时间 - UpdatedTime time.Time `json:"updated_time"` // 角色更新时间 - UpdatedBy int `json:"updated_by"` // 角色更新人 - RoleType int `json:"role_type"` // 角色类型(0 普通角色 1 内置角色类型 不能删除和编辑 ) - RoleId string `json:"role_id"` // 角色id(uuid) - IsDeleted int `json:"is_deleted" xorm:"is_deleted"` // 是否删除 + Id int64 `json:"id" xorm:"pk autoincr"` // id + RoleName string `json:"role_name"` // 角色名称 + RoleDesc string `json:"role_desc"` // 角色描述 + State int `json:"state"` // 状态0禁用1启用 + CreatedBy int `json:"created_by"` // 角色创建人 + CreatedTime jsontime.Time `json:"created_time"` // 角色创建时间 + UpdatedTime jsontime.Time `json:"updated_time"` // 角色更新时间 + UpdatedBy int `json:"updated_by"` // 角色更新人 + RoleType int `json:"role_type"` // 角色类型(0 普通角色 1 内置角色类型 不能删除和编辑 ) + RoleId string `json:"role_id"` // 角色id(uuid) + IsDeleted int `json:"is_deleted" xorm:"is_deleted"` // 是否删除 } diff --git a/src/controller/system_user.go b/src/controller/system_user.go index ff92088..e9436ae 100644 --- a/src/controller/system_user.go +++ b/src/controller/system_user.go @@ -29,13 +29,13 @@ func OrgUserDetail(c *gin.Context) { // 组织添加用户时查询的角色列表 func OrgUserRoles(c *gin.Context) { - isAdmin := c.Query("is_admin") - if isAdmin == "" { - SendJsonResponse(c, resp.InvalidParam.WithMsg("用户类型必填"), nil) + oid := c.Query("oid") + if oid == "" { + SendJsonResponse(c, resp.InvalidParam.WithMsg("组织id必填"), nil) return } svc := service.User{} - result, err := svc.OrgUserRoles(cast.ToInt(isAdmin)) + result, err := svc.OrgUserRoles(cast.ToInt(oid)) if err != nil { SendJsonResponse(c, err, nil) return diff --git a/src/pkg/beagle/resp/resp.go b/src/pkg/beagle/resp/resp.go index 06cead5..ba76d74 100644 --- a/src/pkg/beagle/resp/resp.go +++ b/src/pkg/beagle/resp/resp.go @@ -18,6 +18,9 @@ type Resp struct { func (r Resp) WithMsg(msg string) Resp { r.Msg = msg + if r.Data == nil { + r.Data = msg + } return r } diff --git a/src/service/organization.go b/src/service/organization.go index 37ca6b3..7ce0cd3 100644 --- a/src/service/organization.go +++ b/src/service/organization.go @@ -281,19 +281,19 @@ func (o *Organization) OrgDetail(input request.QueryOrgDetailInput) (interface{} for _, v := range orgAdminUsers { ids = append(ids, v.Id) } - //var systemUserRoles []response.SystemUserRole - //if err := db.Table("system_user_role").Alias("sur").Select("sur.system_id, sr.role_name"). - // Join("left", "system_role sr", "sr.role_id = sur.role_id").In("sur.system_id", system_ids).Find(&systemUserRoles); err != nil { - // conf.Logger.Error("查询用户角色信息失败", zap.Error(err)) - // return nil, res.DbSelectError.ErrorDetail(err) - //} - //for i, v := range orgAdminUsers { - // for _, s := range systemUserRoles { - // if v.SystemId == s.SystemId { - // orgAdminUsers[i].SystemRole = append(orgAdminUsers[i].SystemRole, s.RoleName) - // } - // } - //} + var systemUserRoles []response.SystemUserRole + if err := db.Table("system_user_role").Alias("sur").Select("sur.system_id, sr.role_name"). + Join("left", "system_role sr", "sr.role_id = sur.role_id").In("sur.user_id", ids).Find(&systemUserRoles); err != nil { + conf.Logger.Error("查询用户角色信息失败", zap.Error(err)) + return nil, resp.DbSelectError.ErrorDetail(err) + } + for i, v := range orgAdminUsers { + for _, s := range systemUserRoles { + if v.Id == s.UserId { + orgAdminUsers[i].SystemRole = append(orgAdminUsers[i].SystemRole, s.RoleName) + } + } + } var orgInfo response.OrgDetail if _, err = db.Table("system_organization").Alias("so"). diff --git a/src/service/system_role.go b/src/service/system_role.go index 13f9762..da547b5 100644 --- a/src/service/system_role.go +++ b/src/service/system_role.go @@ -32,8 +32,8 @@ func CreateSystemRole(params request.CreateSystemRoleReq) (resultData int64, err RoleDesc: params.RoleDesc, State: params.State, CreatedBy: params.CreatedBy, - CreatedTime: time.Now(), - UpdatedTime: time.Now(), + CreatedTime: jsontime.Time(time.Now()), + UpdatedTime: jsontime.Time(time.Now()), UpdatedBy: params.CreatedBy, RoleType: roleTypeNormal, RoleId: roleId, @@ -107,7 +107,7 @@ func UpdateSystemRole(params request.UpdateSystemRoleReq) (resultData int64, err RoleName: params.RoleName, RoleDesc: params.RoleDesc, State: params.State, - UpdatedTime: time.Now(), + UpdatedTime: jsontime.Time(time.Now()), UpdatedBy: params.UpdatedBy, //DataPurview: params.DataPurview, } diff --git a/src/service/system_user.go b/src/service/system_user.go index 273de53..bf1526b 100644 --- a/src/service/system_user.go +++ b/src/service/system_user.go @@ -49,28 +49,36 @@ func (o *User) OrgUserDetail(id int) (interface{}, error) { } //查询用户角色 - //var systemUserRoles []response.SystemUserRole - //if err := db.Table("system_user_role").Alias("sur").Select(" sr.role_name"). - // Join("left", "system_role sr", "sr.role_id = sur.role_id").Where("sur.user_id = ?", result.Id).Find(&systemUserRoles); err != nil { - // conf.Logger.Error("查询用户角色信息失败", zap.Error(err)) - // return nil, resp.DbSelectError.ErrorDetail(err) - //} - //for _, v := range systemUserRoles { - // result.SystemRole = append(result.SystemRole, v.RoleName) - //} + var systemUserRoles []response.SystemUserRole + if err := db.Table("system_user_role").Alias("sur").Select(" sr.role_name"). + Join("left", "system_role sr", "sr.role_id = sur.role_id").Where("sur.user_id = ?", result.Id).Find(&systemUserRoles); err != nil { + conf.Logger.Error("查询用户角色信息失败", zap.Error(err)) + return nil, resp.DbSelectError.ErrorDetail(err) + } + for _, v := range systemUserRoles { + result.SystemRole = append(result.SystemRole, v.RoleName) + } return result, nil } // 组织添加用户时查询角色列表 查询非内置角色 + 平台运营者 -func (o *User) OrgUserRoles(hasAdmin int) (interface{}, error) { +func (o *User) OrgUserRoles(oid int) (interface{}, error) { db, err := client.GetDbClient() if err != nil { return nil, resp.DbConnectError.ErrorDetail(err) } - session := db.Table("system_role").Where("role_type = 0 and is_deleted = 0 and state = 1 ") - if hasAdmin == 1 { - session.Or("role_type = 1 and is_deleted = 0 and state = 1") + var org entity.SystemOrganization + _, err = db.Table("system_organization").Where("id = ?", oid).Get(&org) + if err != nil { + conf.Logger.Error("查询机构信息失败", zap.Error(err)) + return nil, resp.DbSelectError.ErrorDetail(err) + } + session := db.Table("system_role").Where(" is_deleted = 0 and state = 1 ") + if org.DataType == 2 { + session.Where("role_type <= 2") + } else { + session.Where("role_type <= 1") } var roles []entity.SystemRole if err := session.Find(&roles); err != nil { @@ -137,14 +145,14 @@ func (o *User) OrgAddUser(input request.OrgUserInput) error { return nil, resp.DbInsertError.ErrorDetail(err) } - //var systemUserRoles []entity.SystemUserRole - //for _, v := range input.SelectRole { - // systemUserRoles = append(systemUserRoles, entity.SystemUserRole{SystemId: systemId, RoleId: v}) - //} - //if _, err := s.Table("system_user_role").Insert(&systemUserRoles); err != nil { - // conf.Logger.Error("创建用户角色失败", zap.Error(err)) - // return nil, res.DbInsertError.ErrorDetail(err) - //} + var systemUserRoles []entity.SystemUserRole + for _, v := range input.SelectRole { + systemUserRoles = append(systemUserRoles, entity.SystemUserRole{UserId: userModel.Id, RoleId: v}) + } + if _, err := s.Table("system_user_role").Insert(&systemUserRoles); err != nil { + conf.Logger.Error("创建用户角色失败", zap.Error(err)) + return nil, resp.DbInsertError.ErrorDetail(err) + } return nil, nil }) return err @@ -234,14 +242,14 @@ func (o *User) DelOrgUser(input request.DelOrgUser) error { } //删除用户关联角色 - //var user_ids []int - //for _, v := range baseUsers { - // user_ids = append(user_ids, v.Id) - //} - //if _, err := db.Table("system_user_role").In("user_id", user_ids).Delete(&entity.SystemUserRole{}); err != nil { - // conf.Logger.Error("删除用户关联角色失败", zap.Error(err)) - // return nil, res.DbDeleteError.ErrorDetail(err) - //} + var user_ids []int + for _, v := range baseUsers { + user_ids = append(user_ids, v.Id) + } + if _, err := db.Table("system_user_role").In("user_id", user_ids).Delete(&entity.SystemUserRole{}); err != nil { + conf.Logger.Error("删除用户关联角色失败", zap.Error(err)) + return nil, resp.DbDeleteError.ErrorDetail(err) + } return nil, nil }) return err -- 2.26.0