package models import ( "time" "github.com/beego/beego/v2/client/orm" ) // Role 角色模型 type Role struct { RoleId int `orm:"pk;auto;column(role_id)" json:"roleId"` TenantId int `orm:"column(tenant_id)" json:"tenantId"` RoleCode string `orm:"size(50);unique" json:"roleCode"` RoleName string `orm:"size(50)" json:"roleName"` Description string `orm:"type(text);null" json:"description"` Status int8 `orm:"default(1)" json:"status"` SortOrder int `orm:"default(0)" json:"sortOrder"` CreateTime time.Time `orm:"auto_now_add;type(datetime)" json:"createTime"` UpdateTime time.Time `orm:"auto_now;type(datetime)" json:"updateTime"` DeleteTime *time.Time `orm:"null;type(datetime)" json:"deleteTime"` CreateBy string `orm:"size(50);null" json:"createBy"` UpdateBy string `orm:"size(50);null" json:"updateBy"` } // TableName 设置表名 func (r *Role) TableName() string { return "yz_roles" } func init() { orm.RegisterModel(new(Role)) } // GetAllRoles 获取所有角色(排除已删除的) func GetAllRoles() ([]Role, error) { o := orm.NewOrm() var roles []Role _, err := o.QueryTable("yz_roles").Filter("DeleteTime__isnull", true).Filter("Status", 1).OrderBy("SortOrder").All(&roles) return roles, err } // GetRoleById 根据ID获取角色 func GetRoleById(roleId int) (*Role, error) { o := orm.NewOrm() role := &Role{RoleId: roleId} err := o.Read(role) return role, err } // GetRoleByTenantId 根据租户ID获取角色列表 func GetRoleByTenantId(tenantId int) ([]Role, error) { o := orm.NewOrm() var roles []Role qs := o.QueryTable("yz_roles").Filter("DeleteTime__isnull", true) if tenantId > 0 { // 显示指定租户和公共(tenant_id=0)的角色 qs = qs.Filter("TenantId__in", []int{0, tenantId}) } else if tenantId == 0 { // 仅显示公共(tenant_id=0)的角色 qs = qs.Filter("TenantId", 0) } _, err := qs.OrderBy("SortOrder").All(&roles) return roles, err } // GetRoleByCode 根据代码获取角色(排除已删除的) func GetRoleByCode(roleCode string) (*Role, error) { o := orm.NewOrm() role := &Role{} err := o.QueryTable("yz_roles").Filter("RoleCode", roleCode).Filter("DeleteTime__isnull", true).One(role) return role, err } // CreateRole 创建角色 func CreateRole(role *Role) (int64, error) { o := orm.NewOrm() id, err := o.Insert(role) return id, err } // UpdateRole 更新角色 func UpdateRole(role *Role) error { o := orm.NewOrm() _, err := o.Update(role) return err } // DeleteRole 删除角色(软删除,设置删除时间) func DeleteRole(roleId int) error { o := orm.NewOrm() role := &Role{RoleId: roleId} err := o.Read(role) if err != nil { return err } now := time.Now() role.DeleteTime = &now _, err = o.Update(role, "DeleteTime") return err } // 修改角色状态 func ChangeStatus(roleId int, status int) error { o := orm.NewOrm() role := &Role{RoleId: roleId} err := o.Read(role) if err != nil { return err } role.Status = int8(status) _, err = o.Update(role, "Status") return err }