package db import ( "basic.com/valib/logger.git" "errors" "gorm.io/gorm" "time" ) type Identity struct { ID string `gorm:"primary_key;column:id;type:varchar(255);" json:"id"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` CommunityID string `gorm:"column:community_id"` DocumentNumber string `gorm:"column:person_id"` LabelId string `gorm:"column:label_id"` ExpireTime int64 `gorm:"column:expire_time"` } func (Identity) TableName() string { return "person_label" } // UpdatePersonInfo 更新或插入多个人员身份信息 func UpdateDBPersonLabel(personsIdentity []Identity) error { var db = DB // 遍历人员信息 for _, personIdentity := range personsIdentity { // 检查记录是否存在 var existingPerson Identity err := db.Where("person_id = ? AND community_id = ? AND label_id = ?", personIdentity.DocumentNumber, personIdentity.CommunityID, personIdentity.LabelId, ).First(&existingPerson).Error if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { logger.Error("Query person error:", err, personIdentity.DocumentNumber, personIdentity.CommunityID, personIdentity.LabelId) //fmt.Println("asdasfasfasf") continue //return err } // 如果记录存在,则更新 if existingPerson.DocumentNumber != "" { err := db.Model(&Identity{}). Where("person_id = ? AND community_id = ? AND label_id = ?", personIdentity.DocumentNumber, personIdentity.CommunityID, personIdentity.LabelId, ). Updates(map[string]interface{}{ "expire_time": personIdentity.ExpireTime, }).Error if err != nil { return err } } else { // 如果记录不存在,则插入新记录 err := db.Create(&personIdentity).Error if err != nil { return err } } } return nil }