From 22502c2512f5345cb42949119939845bc3e5403b Mon Sep 17 00:00:00 2001 From: chenweijian <820961417@qq.com> Date: Sat, 3 Jun 2023 14:44:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A7cp=E6=97=B6=E9=97=B4=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domain/model/cp_m/cp_relation.go | 34 +++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/domain/model/cp_m/cp_relation.go b/domain/model/cp_m/cp_relation.go index 360c399..de35088 100644 --- a/domain/model/cp_m/cp_relation.go +++ b/domain/model/cp_m/cp_relation.go @@ -47,9 +47,41 @@ type CpCancelMessage struct { Status uint8 `json:"status"` //1.发起解除2.撤销解除3.接受解除 } +type Cp struct { + Id uint64 `json:"id"` + UserId1 uint64 `json:"userId1"` + UserId2 uint64 `json:"userId2"` + DisconnectSecond int64 `json:"disconnectSecond"` + Score int32 `json:"score"` + DayScore int32 `json:"dayScore"` + PeriodDay string `json:"periodDay"` + WeekScore int32 `json:"weekScore"` + PeriodWeek string `json:"periodWeek"` + MonthScore int32 `json:"monthScore"` + PeriodMonth string `json:"periodMonth"` + Status int8 `json:"status"` + 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) select ?,? where not exists (select user_id1 from cp_relation where user_id1 in (?) or user_id2 in (?));", userId1, userId2, userIds, userIds) + oldCp := make([]*Cp, 0) + // 这两个人以前是否有旧的cp关系 + err := model.DB().Model(Cp{}).Where("status = 1 and user_id1 in (?) and user_id2 in (?)", userIds, userIds).Find(&oldCp).Error + if err != nil { + model.Log.Errorf("CreateCp user1:%d, user2:%d, err:%v", userId1, userId2, err) + return err + } + createdTime := time.Now() + if len(oldCp) > 0 { + // 旧的cp关系,有效的时间给他加回去 + oldSecond := time.Duration(time.Now().Unix() - oldCp[0].CreatedTime.Unix() - oldCp[0].DisconnectSecond) + if oldSecond > 0 { + createdTime = createdTime.Add(-1 * time.Second * time.Duration(time.Now().Unix()-oldCp[0].CreatedTime.Unix()-oldCp[0].DisconnectSecond)) + } + } + + result := model.DB().Exec("insert into cp_relation(user_id1, user_id2, created_time) select ?,?,? where not exists (select user_id1 from cp_relation where user_id1 in (?) or user_id2 in (?));", userId1, userId2, createdTime.Format(utils.DATETIME_FORMAT), userIds, userIds) if result.Error != nil { model.Log.Errorf("CreateCp user1:%d, user2:%d, err:%v", userId1, userId2, result.Error) return result.Error -- 2.22.0