package cp_m import ( "git.hilo.cn/hilo-common/domain" "gorm.io/gorm" "hilo-user/myerr/bizerr" "time" ) type CpRelation struct { Id uint64 `json:"id"` UserId1 uint64 `json:"userId1"` UserId2 uint64 `json:"userId2"` CreatedTime time.Time `json:"createdTime"` } func CreateCp(model *domain.Model, userId1, userId2 uint64) error { userIds := []uint64{userId1, userId2} result := model.DB().Exec("insert into cp_relation(user_id1, user_id2) values(?,?) where not exists (select user_id1 from cp_relation where user_id1 in (?) or user_id2 in (?));", userId1, userId2, userIds, userIds) if result.Error != nil { model.Log.Errorf("CreateCp user1:%d, user2:%d, err:%v", userId1, userId2, result.Error) return result.Error } if result.RowsAffected <= 0 { return bizerr.TransactionFailed } return nil } func GetCp(model *domain.Model, userId uint64) (*CpRelation, error) { res := new(CpRelation) err := model.DB().Model(CpRelation{}).Where("user_id1 = ? or user_id2 = ?", userId, userId).First(&res).Error if err != nil { if err == gorm.ErrRecordNotFound { return res, nil } model.Log.Errorf("CreateCp userId:%d, err:%v", userId, err) return nil, err } return res, nil }