zhangzengfei
2024-09-28 b1d7efd8c4ab9c4bf56f62e636a358a5182c09bf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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
}