permission.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package config
  2. import (
  3. "eta/eta_mini_ht_api/models"
  4. "gorm.io/gorm"
  5. "gorm.io/gorm/clause"
  6. "time"
  7. )
  8. // Permission 定义权限表的结构
  9. type Permission struct {
  10. Id int `gorm:"primaryKey;autoIncrement"`
  11. PermissionId int `gorm:"type:int"`
  12. Name string `gorm:"type:varchar(255)"`
  13. ParentId int `gorm:"default:null"`
  14. RiskLevel string `gorm:"type:varchar(10)"`
  15. Sort int `gorm:"default:null"`
  16. CreateTime time.Time `gorm:"default:null"`
  17. UpdateTime time.Time `gorm:"default:null;onUpdate:CURRENT_TIMESTAMP"`
  18. }
  19. // BeforeCreate 钩子用于在创建记录前设置 CreateTime
  20. func (p *Permission) BeforeCreate(tx *gorm.DB) (err error) {
  21. p.CreateTime = time.Now()
  22. return
  23. }
  24. func BatchInsertOrUpdate(list []Permission) (err error) {
  25. db := models.Main()
  26. OnConflictFunc := clause.OnConflict{
  27. Columns: []clause.Column{{Name: "permission_id"}},
  28. DoUpdates: clause.AssignmentColumns([]string{"name", "status", "deleted"}),
  29. }
  30. // 执行批量插入或更新操作
  31. err = db.Clauses(OnConflictFunc).Create(&list).Error
  32. return
  33. }