47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package model
|
|
|
|
import (
|
|
"ArmedPolice/app/common/model"
|
|
"ArmedPolice/serve/orm"
|
|
"fmt"
|
|
)
|
|
|
|
type SysRole struct {
|
|
*model.SysRole
|
|
}
|
|
|
|
// SysRoleBasic 基本信息
|
|
type SysRoleBasic struct {
|
|
ID uint64 `json:"id"`
|
|
ParentID uint64 `json:"parent_id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
// SysRoleUserInfo 用户角色信息
|
|
type SysRoleUserInfo struct {
|
|
*SysRoleBasic
|
|
UserRoleID uint64 `json:"user_role_id"`
|
|
}
|
|
|
|
// UserRole 用户角色信息
|
|
func (m *SysRole) UserRole(uid uint64) ([]*SysRoleUserInfo, error) {
|
|
mSysUserRole := NewSysUserRole()
|
|
|
|
db := orm.GetDB().Table(m.TableName()+" AS r").
|
|
Select("r.id", "r.parent_id", "r.name", "u_r.id AS user_role_id").
|
|
Joins(fmt.Sprintf("LEFT JOIN %s AS u_r ON r.id = u_r.role_id AND u_r.uid = %d AND u_r.is_deleted = %d",
|
|
mSysUserRole.TableName(), uid, model.DeleteStatusForNot)).
|
|
Where("r.is_deleted = ?", model.DeleteStatusForNot)
|
|
|
|
out := make([]*SysRoleUserInfo, 0)
|
|
|
|
if err := db.Order("r.sort " + model.OrderModeToDesc).Order("r.id " + model.OrderModeToDesc).Scan(&out).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func NewSysRole() *SysRole {
|
|
return &SysRole{SysRole: model.NewSysRole()}
|
|
}
|