package role import ( "SciencesServer/app/api/admin/controller" "SciencesServer/app/api/admin/model" model2 "SciencesServer/app/common/model" "SciencesServer/app/service" "SciencesServer/utils" "errors" "time" ) type Instance struct{ *controller.Platform } type InstanceHandle func(session *service.Session) *Instance type ( // InstanceInfo 角色信息 InstanceInfo struct { *model2.SysRole StatusTitle string `json:"status_title"` } // InstanceBasicInfo 角色基本信息 InstanceBasicInfo struct { ID uint64 `json:"id"` Name string `json:"name"` } ) // List 列表信息 func (c *Instance) List(name string, status, page, pageSize int) (*controller.ReturnPages, error) { mSysRole := model.NewSysRole() where := []*model2.ModelWhereOrder{ &model2.ModelWhereOrder{ Where: model2.NewWhere("tenant_id", c.TenantID), Order: model2.NewOrder("sort", model2.OrderModeToDesc), }, &model2.ModelWhereOrder{ Order: model2.NewOrder("id", model2.OrderModeToDesc), }, } if name != "" { where = append(where, &model2.ModelWhereOrder{ Where: model2.NewWhere("tenant_id", c.TenantID), }) } if status > 0 { where = append(where, &model2.ModelWhereOrder{ Where: model2.NewWhere("status", status), }) } var count int64 out := make([]*model2.SysRole, 0) if err := model2.Pages(mSysRole.SysRole, &out, page, pageSize, &count, where...); err != nil { return nil, err } list := make([]*InstanceInfo, 0) for _, v := range out { list = append(list, &InstanceInfo{SysRole: v, StatusTitle: v.StatusTitle()}) } return &controller.ReturnPages{Data: list, Count: count}, nil } // Select 筛选信息 func (c *Instance) Select() ([]*InstanceBasicInfo, error) { mSysRole := model.NewSysRole() where := []*model2.ModelWhereOrder{ &model2.ModelWhereOrder{ Where: model2.NewWhere("tenant_id", c.TenantID), Order: model2.NewOrder("sort", model2.OrderModeToDesc), }, &model2.ModelWhereOrder{ Where: model2.NewWhere("status", model2.SysRoleStatusForNormal), Order: model2.NewOrder("id", model2.OrderModeToDesc), }, } out := make([]*InstanceBasicInfo, 0) if err := model2.Scan(mSysRole.SysRole, &out, where...); err != nil { return nil, err } return out, nil } // Data 数据操作 func (c *Instance) Data(id uint64, name, remark string, sort int) error { mSysRole := model.NewSysRole() if id <= 0 { mSysRole.TenantID = c.TenantID mSysRole.Name = name mSysRole.Remark = remark mSysRole.Sort = sort mSysRole.Status = model2.SysRoleStatusForNormal if err := model2.Create(mSysRole.SysRole); err != nil { return err } return nil } mSysRole.ID = id if err := model2.Updates(mSysRole.SysRole, map[string]interface{}{ "name": name, "remark": remark, "sort": sort, }); err != nil { return err } return nil } // Status 状态操作 func (c *Instance) Status(id uint64, status int) error { mSysRole := model.NewSysRole() mSysRole.ID = id isExist, err := model2.FirstWhere(mSysRole.SysRole) if err != nil { return err } else if !isExist { return errors.New("角色不存在") } if c.TenantID > 0 && c.TenantID != mSysRole.TenantID { return errors.New("不可操作其他租户角色") } if err = model2.Updates(mSysRole.SysRole, map[string]interface{}{ "status": status, "updated_at": time.Now(), }); err != nil { return err } return nil } // Delete 删除操作 func (c *Instance) Delete(id uint64) error { mSysRole := model.NewSysRole() mSysRole.ID = id isExist, err := model2.FirstWhere(mSysRole.SysRole) if err != nil { return err } else if !isExist { return errors.New("角色不存在") } if c.TenantID > 0 && c.TenantID != mSysRole.TenantID { return errors.New("不可删除其他租户角色") } if err = model2.Delete(mSysRole.SysRole); err != nil { return err } go utils.TryCatch(func() { //permission := service.NewPermission([]string{utils.UintToString(id)})(c.TenantKey, "") //// 删除角色权限 //if _, err = permission.RemoveRolePolicy(); err != nil { // logger.ErrorF("删除租户【%s】下角色【%d】权限信息错误:%v", c.TenantKey, id, err) // return //} }) return nil } func NewInstance() InstanceHandle { return func(session *service.Session) *Instance { return &Instance{Platform: &controller.Platform{Session: session}} } }