fix: 铁粉降价后,满足条件的用户解锁铁粉

This commit is contained in:
wangxinyu 2024-12-19 13:45:35 +08:00
parent 82c89df80f
commit 2117e782fb
2 changed files with 27 additions and 16 deletions

View File

@ -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)

View File

@ -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
}