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