yunzer_go/server/models/role.go
2025-11-02 23:53:41 +08:00

114 lines
3.0 KiB
Go

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
}