diff --git a/domain/model/cp_m/cp_relation.go b/domain/model/cp_m/cp_relation.go index 9619c4782299820f0a861577294f6625d1d6b832..6f24c9ceab405cc6c43be053c08a03f590da481d 100644 --- a/domain/model/cp_m/cp_relation.go +++ b/domain/model/cp_m/cp_relation.go @@ -149,9 +149,9 @@ func GetCpInvite(model *domain.Model, userId, userIdInvite uint64, status cp_e.C return res, nil } -func GetCpInviteById(model *domain.Model, id uint64, status cp_e.CpInviteStatus) (*CpInvite, error) { +func GetCpInviteById(model *domain.Model, id, userId uint64) (*CpInvite, error) { res := new(CpInvite) - err := model.DB().Model(CpInvite{}).Where(CpInvite{Id: id, Status: status}).First(&res).Error + err := model.DB().Model(CpInvite{}).Where(CpInvite{Id: id}).Where("user_id = ? or invite_userId = ?", userId, userId).First(&res).Error if err != nil { if err == gorm.ErrRecordNotFound { return nil, nil @@ -209,9 +209,9 @@ func GetCpCancel(model *domain.Model, userIds []uint64, status cp_e.CpCancelStat return res, nil } -func GetCpCancelById(model *domain.Model, id uint64, status cp_e.CpCancelStatus) (*CpCancel, error) { +func GetCpCancelById(model *domain.Model, id, userId uint64) (*CpCancel, error) { res := new(CpCancel) - err := model.DB().Model(CpCancel{}).Where("status = ? and id = ?", status, id).First(&res).Error + err := model.DB().Model(CpCancel{}).Where("id = ? and (user_id = ? or rec_user_id = ?)", id, userId, userId).First(&res).Error if err != nil { if err == gorm.ErrRecordNotFound { return nil, nil diff --git a/route/cp_r/cp_relation.go b/route/cp_r/cp_relation.go index 4e0af40b7eb9b59dadaf84415992ebda8ae0f82c..97461eb7fc63ad797d4170e6933c5b8c37b6a150 100644 --- a/route/cp_r/cp_relation.go +++ b/route/cp_r/cp_relation.go @@ -479,25 +479,51 @@ func CheckCpImExpire(c *gin.Context) (*mycontext.MyContext, error) { } model := domain.CreateModelContext(myCtx) + var resId common.MsgIdType switch msgType { case 1: // 邀请的消息im检查是否过期 - cpRecord, err := cp_m.GetCpInviteById(model, msgId, cp_e.CpInvite) + cpRecord, err := cp_m.GetCpInviteById(model, msgId, userId) if err != nil { model.Log.Errorf("CheckCpImExpire userId:%d, msgType:%d, msgId:%d, err:%v", userId, msgType, msgId, err) return myCtx, err } if cpRecord == nil || cpRecord.Id == 0 { - return myCtx, myerr.ToLocal(msg.GetErrByLanguage(model, common.MSG_ID_ALREADY_EXPIRED, lang, comerr.AlreadyExpired)) + model.Log.Errorf("CheckCpImExpire userId:%d, msgType:%d, msgId:%d, err:%v", userId, msgType, msgId, bizerr.InvalidParameter) + return myCtx, bizerr.InvalidParameter + } + switch cpRecord.Status { + case cp_e.CpInvite: + if userId == cpRecord.UserId { // 发起人 + resId = common.MSG_ID_ALREADY_EXPIRED + } + case cp_e.CpInviteAccept, cp_e.CpInviteRefuse: + resId = common.MSG_ID_ALREADY_EXPIRED + case cp_e.CpInviteExpired: + resId = common.MSG_ID_ALREADY_EXPIRED } case 2: // 解除的消息im检查是否过期 - cpCancel, err := cp_m.GetCpCancelById(model, msgId, cp_e.CpCancel) + cpCancel, err := cp_m.GetCpCancelById(model, msgId, userId) if err != nil { model.Log.Errorf("CheckCpImExpire userId:%d, msgType:%d, msgId:%d, err:%v", userId, msgType, msgId, err) return myCtx, err } if cpCancel == nil || cpCancel.Id == 0 { - return myCtx, myerr.ToLocal(msg.GetErrByLanguage(model, common.MSG_ID_ALREADY_EXPIRED, lang, comerr.AlreadyExpired)) + model.Log.Errorf("CheckCpImExpire userId:%d, msgType:%d, msgId:%d, err:%v", userId, msgType, msgId, bizerr.InvalidParameter) + return myCtx, bizerr.InvalidParameter } + switch cpCancel.Status { + case cp_e.CpCancel: + if userId == cpCancel.UserId { // 发起人 + resId = common.MSG_ID_ALREADY_EXPIRED + } + case cp_e.CpCancelRevoke, cp_e.CpCancelAccept: + resId = common.MSG_ID_ALREADY_EXPIRED + case cp_e.CpCancelAcceptAuto: + resId = common.MSG_ID_ALREADY_EXPIRED + } + } + if resId > 0 { + return myCtx, myerr.ToLocal(msg.GetErrByLanguage(model, resId, lang, comerr.AlreadyExpired)) } resp.ResponseOk(c, cp_cv.CheckCpImRes{})