WiiCITMS/models/hr/permission.go
2025-11-07 14:14:34 +08:00

100 lines
4.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
}
}