package cp_m import ( "git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/resource/mysql" "gorm.io/gorm" "hilo-user/_const/enum/cp_e" "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"` } type CpInvite struct { Id uint64 `json:"id"` UserId uint64 `json:"userId"` InviteUserId uint64 `json:"inviteUserId"` DiamondNum uint32 `json:"diamondNum"` Status mysql.Type `json:"status"` } 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 } func CreateCpInvite(model *domain.Model, userId, userIdInvite uint64, diamondNum uint32) error { err := model.DB().Model(CpInvite{}).Create(CpInvite{UserId: userId, InviteUserId: userIdInvite, DiamondNum: diamondNum, Status: mysql.Type(cp_e.CpInvite)}).Error if err != nil { model.Log.Errorf("CreateCpInvite user1:%d, user2:%d, diamondNum:%d, err:%v", userId, userIdInvite, diamondNum, err) return err } return nil }