From 2117e782fb97c03797b7d9bfde4de1744059f775 Mon Sep 17 00:00:00 2001 From: wangxinyu Date: Thu, 19 Dec 2024 13:45:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=93=81=E7=B2=89=E9=99=8D=E4=BB=B7?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E6=BB=A1=E8=B6=B3=E6=9D=A1=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=A7=A3=E9=94=81=E9=93=81=E7=B2=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/mix/service/logic/vas.go | 10 +--------- app/mix/service/logic/vas_zone.go | 33 ++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/app/mix/service/logic/vas.go b/app/mix/service/logic/vas.go index 300def64..6bed31cd 100644 --- a/app/mix/service/logic/vas.go +++ b/app/mix/service/logic/vas.go @@ -4298,15 +4298,7 @@ func (v *Vas) UnilaterallyWithdrawAccomplish(ctx *gin.Context, orderId string) ( } func (v *Vas) FansIdentityRefresh(ctx *gin.Context, mid, zid int64) error { - - // 开启事务 - tx, err := v.store.VasBegin(ctx) - if err != nil { - logger.Error("vas begin fail, err: %v", err) - return err - } - - err = v.UnlockZoneIronfanshipRefresh(ctx, tx, mid, zid, 0) + err := v.UnlockZoneIronfanshipRefresh(ctx, mid, zid, 0) if err != nil { logger.Error("vas FansIdentityRefresh UnlockZoneIronFanShipRefresh fail, mid: %v, zid: %v, err: %v", mid, zid, err) diff --git a/app/mix/service/logic/vas_zone.go b/app/mix/service/logic/vas_zone.go index fce82805..2feff22d 100644 --- a/app/mix/service/logic/vas_zone.go +++ b/app/mix/service/logic/vas_zone.go @@ -530,7 +530,23 @@ func (v *Vas) UnlockZoneIronfanshipReachConsume(ctx *gin.Context, tx *sqlx.Tx, m } // 铁粉刷新(主播涨价降价后逻辑后更新逻辑) -func (v *Vas) UnlockZoneIronfanshipRefresh(ctx *gin.Context, tx *sqlx.Tx, mid, zid, streamerMid int64) error { +func (v *Vas) UnlockZoneIronfanshipRefresh(ctx *gin.Context, mid, zid, streamerMid int64) error { + + // 开启事务 + tx, err := v.store.VasBegin(ctx) + if err != nil { + logger.Error("vas begin fail, err: %v", err) + return err + } + + defer func() { + errTx := v.store.DealTxCR(tx, err) + if errTx != nil { + logger.Error("DealTxCR fail, err: %v", errTx) + return + } + }() + if tx == nil { err := fmt.Errorf("nil tx") return err @@ -560,25 +576,28 @@ func (v *Vas) UnlockZoneIronfanshipRefresh(ctx *gin.Context, tx *sqlx.Tx, mid, z return fmt.Errorf("zone unlock not exist, mid: %v, zid: %v", mid, zid) } + // 主播涨价后,原用户是否是铁粉 + if zUnlock.IsUnlockIronfanship() { + logger.Info("UnlockZoneIronFanShipRefresh, users are already iron fans") + return nil + } + if zUnlock.GetConsume() < zVas.IronfanshipPrice { // 主播降价后消费额是否达到了解锁铁粉的消费额 return fmt.Errorf("not reach ironfan unlock consume, mid: %v, zid: %v", mid, zid) - } else if zUnlock.GetIronfanshipUnlockType() != dbstruct.ZoneUnlockTypeReachConsume { - // 主播涨价后,原用户是否是铁粉 - return fmt.Errorf("the iron fans unlock condition is not met, mid: %v, zid: %v", mid, zid) } // 解锁铁粉 - err := v.MustUnlockIronfanship(ctx, tx, mid, zid, -1, "ironfan", dbstruct.ZoneUnlockTypeReachConsume) + err = v.MustUnlockIronfanship(ctx, tx, mid, zid, -1, "ironfan", dbstruct.ZoneUnlockTypeReachConsume) if err != nil { - logger.Error("MustUnlockIronfanship fail, mid: %v, zid: %v, err: %v", mid, zid, err) + logger.Error("UnlockZoneIronfanshipRefresh MustUnlockIronfanship fail, mid: %v, zid: %v, err: %v", mid, zid, err) return err } // 添加到空间成员 err = v.store.AddZoneMember(ctx, tx, mid, zid, dbstruct.ZoneMemberTypeIronfan) if err != nil { - logger.Error("AddZoneMember normal fail, mid: %v, zid: %v, err: %v", mid, zid, err) + logger.Error("UnlockZoneIronfanshipRefresh AddZoneMember normal fail, mid: %v, zid: %v, err: %v", mid, zid, err) return err }