WiiCITMS/models/hr/permission.go

100 lines
4.8 KiB
Go
Raw Normal View History

2025-11-07 14:14:34 +08:00
package hr
import (
"WiiGoLibrary/framework/db/v1/utils/mssql/unique"
"WiiGoLibrary/framework/hub/v1/dblib"
"time"
)
const PermissionTable = "hr_u_permission"
const PositionPermissionTable = "hr_r_position_permission"
// 权限类型常量
const (
// 组织管理权限
PermOrganizationView = 1001 // 组织查看权限
PermOrganizationCreate = 1002 // 组织创建权限
PermOrganizationUpdate = 1003 // 组织更新权限
PermOrganizationDelete = 1004 // 组织删除权限
// 岗位管理权限
PermPositionView = 2001 // 岗位查看权限
PermPositionCreate = 2002 // 岗位创建权限
PermPositionUpdate = 2003 // 岗位更新权限
PermPositionDelete = 2004 // 岗位删除权限
// 人员管理权限
PermStaffView = 3001 // 人员查看权限
PermStaffCreate = 3002 // 人员创建权限
PermStaffUpdate = 3003 // 人员更新权限
PermStaffDelete = 3004 // 人员删除权限
// 请假审批权限
PermLeaveApprove = 4001 // 请假审批权限
PermLeaveView = 4002 // 请假查看权限
// 工作流管理权限
PermWorkflowAdmin = 5001 // 工作流管理权限
// 系统管理权限
PermSystemAdmin = 9999 // 系统管理员权限
)
// PermissionModel 权限模型
type PermissionModel struct {
RecordGuid unique.UUID `gorm:"column:RecordGuid;type:UNIQUEIDENTIFIER;primaryKey;not null;default:newid();" json:"RecordGuid"`
PermissionID int `gorm:"column:PermissionID;type:INT;not null;uniqueIndex;" json:"PermissionID"` // 权限ID
PermissionName string `gorm:"column:PermissionName;type:NVARCHAR(50);not null;" json:"PermissionName"` // 权限名称
PermissionCode string `gorm:"column:PermissionCode;type:NVARCHAR(50);not null;uniqueIndex;" json:"PermissionCode"` // 权限代码
Description string `gorm:"column:Description;type:NVARCHAR(200);" json:"Description"` // 权限描述
Category int16 `gorm:"column:Category;type:SMALLINT;not null;default:0;" json:"Category"` // 权限分类
RecordType int16 `gorm:"column:RecordType;not null;" json:"RecordType"` // 记录类型
RecordStatus int16 `gorm:"column:RecordStatus;not null;default:0;" json:"RecordStatus"` // 记录状态
CreateTime time.Time `gorm:"column:CreateTime;type:DATETIME;default:CURRENT_TIMESTAMP;<-:create;" json:"CreateTime"`
UpdateTime time.Time `gorm:"column:UpdateTime;type:DATETIME;default:CURRENT_TIMESTAMP;autoUpdateTime;" json:"UpdateTime"`
}
// PositionPermissionModel 岗位权限关系模型
type PositionPermissionModel struct {
RecordGuid unique.UUID `gorm:"column:RecordGuid;type:UNIQUEIDENTIFIER;primaryKey;not null;default:newid();" json:"RecordGuid"`
PositionGuid unique.UUID `gorm:"column:PositionGuid;type:UNIQUEIDENTIFIER;index:idx_position_perm,priority:1;not null;" json:"PositionGuid"` // 岗位GUID
PermissionGuid unique.UUID `gorm:"column:PermissionGuid;type:UNIQUEIDENTIFIER;index:idx_position_perm,priority:2;not null;" json:"PermissionGuid"` // 权限GUID
PositionID int64 `gorm:"column:PositionID;type:BIGINT;not null;" json:"PositionID"` // 岗位ID
PermissionID int `gorm:"column:PermissionID;type:INT;not null;" json:"PermissionID"` // 权限ID
GrantType int16 `gorm:"column:GrantType;type:SMALLINT;not null;default:0;" json:"GrantType"` // 授权类型0-直接授权1-继承授权
RecordType int16 `gorm:"column:RecordType;not null;" json:"RecordType"` // 记录类型
RecordStatus int16 `gorm:"column:RecordStatus;not null;default:0;" json:"RecordStatus"` // 记录状态
CreateTime time.Time `gorm:"column:CreateTime;type:DATETIME;default:CURRENT_TIMESTAMP;<-:create;" json:"CreateTime"`
UpdateTime time.Time `gorm:"column:UpdateTime;type:DATETIME;default:CURRENT_TIMESTAMP;autoUpdateTime;" json:"UpdateTime"`
}
func init() {
dblib.DBIns.RegisterAutoMigrateModel(&PermissionModel{})
dblib.DBIns.RegisterAutoMigrateModel(&PositionPermissionModel{})
}
func (p *PermissionModel) TableName() string {
return PermissionTable
}
func (pp *PositionPermissionModel) TableName() string {
return PositionPermissionTable
}
func PermissionInstance() *PermissionModel {
return &PermissionModel{
RecordGuid: unique.NewV4(),
RecordType: 0,
RecordStatus: 0,
}
}
func PositionPermissionInstance() *PositionPermissionModel {
return &PositionPermissionModel{
RecordGuid: unique.NewV4(),
GrantType: 0,
RecordType: 0,
RecordStatus: 0,
}
}