114 lines
3.0 KiB
Go
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
|
|
}
|