From 82c89df80f5b8d204d7d5e2535808c1f0b06800f Mon Sep 17 00:00:00 2001 From: wangxinyu Date: Tue, 17 Dec 2024 13:51:59 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=E4=B8=BB=E6=92=AD=E6=B6=A8=E4=BB=B7?= =?UTF-8?q?=E9=99=8D=E4=BB=B7=E9=93=81=E7=B2=89=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/errcode/errcode.go | 22 ++++---- api/proto/zonemoment/proto/zonemoment_api.go | 10 ++++ app/mix/controller/init.go | 1 + app/mix/controller/zonemoment_api.go | 19 +++++++ app/mix/service/logic/vas.go | 19 +++++++ app/mix/service/logic/vas_zone.go | 56 ++++++++++++++++++++ app/mix/service/utilservice.go | 11 ++++ 7 files changed, 129 insertions(+), 9 deletions(-) diff --git a/api/errcode/errcode.go b/api/errcode/errcode.go index 4daf4307..0693384b 100644 --- a/api/errcode/errcode.go +++ b/api/errcode/errcode.go @@ -189,10 +189,12 @@ var ErrCodeMsgMap = map[ErrCode]string{ ErrCodeAccountCancellationSrvFail: "账户注销服务错误", ErrCodeAccountCancellationNotExist: "账户注销不存在", - ErrCodeZoneSrvFail: "空间服务错误", - ErrCodeZoneNotExist: "空间不存在", - ErrCodeUnlockedZone: "访客未解锁该空间", - ErrCodeZoneDuplicateKey: "您已创建空间", + ErrCodeZoneSrvFail: "空间服务错误", + ErrCodeZoneNotExist: "空间不存在", + ErrCodeUnlockedZone: "访客未解锁该空间", + ErrCodeZoneDuplicateKey: "您已创建空间", + ErrcodeZoneIronFansUnLock: "您已解锁空间铁粉", + ErrcodeZoneIronFansNotUnLock: "咱不满足铁粉条件", ErrCodeZoneMomentSrvFail: "私密圈动态服务错误", ErrCodeZoneMomentNotExist: "私密圈动态不存在", @@ -521,11 +523,13 @@ const ( ErrCodeAccountPunishmentStreamerOnly ErrCode = -32007 // 该账号处罚仅能对主播进行 // Zone: 33xxx - ErrCodeZoneSrvOk ErrCode = ErrCodeOk - ErrCodeZoneSrvFail ErrCode = -33001 // 空间服务错误 - ErrCodeZoneNotExist ErrCode = -33002 // 空间不存在 - ErrCodeUnlockedZone ErrCode = -33003 // 未解锁的空间 - ErrCodeZoneDuplicateKey ErrCode = -33004 // 空间已存在 + ErrCodeZoneSrvOk ErrCode = ErrCodeOk + ErrCodeZoneSrvFail ErrCode = -33001 // 空间服务错误 + ErrCodeZoneNotExist ErrCode = -33002 // 空间不存在 + ErrCodeUnlockedZone ErrCode = -33003 // 未解锁的空间 + ErrCodeZoneDuplicateKey ErrCode = -33004 // 空间已存在 + ErrcodeZoneIronFansUnLock ErrCode = -33005 // 空间已解锁铁粉 + ErrcodeZoneIronFansNotUnLock ErrCode = -33006 // 空间未解锁铁粉 // ZoneMoment: 34xxx ErrCodeZoneMomentSrvOk ErrCode = ErrCodeOk diff --git a/api/proto/zonemoment/proto/zonemoment_api.go b/api/proto/zonemoment/proto/zonemoment_api.go index f5d9fb37..c9d6b041 100644 --- a/api/proto/zonemoment/proto/zonemoment_api.go +++ b/api/proto/zonemoment/proto/zonemoment_api.go @@ -178,3 +178,13 @@ type ApiListByIdsFromCreaterResp struct { base.BaseResponse Data *ApiListByIdsFromCreaterData `json:"data"` } + +// 主播空间降价/涨价 +type ApiFansIdentityRefreshReq struct { + base.BaseRequest + Zid int64 `json:"zid"` +} + +type ApiFansIdentityRefreshResp struct { + base.BaseResponse +} diff --git a/app/mix/controller/init.go b/app/mix/controller/init.go index 9261dd43..2f76087c 100644 --- a/app/mix/controller/init.go +++ b/app/mix/controller/init.go @@ -268,6 +268,7 @@ func Init(r *gin.Engine) { apiZoneMomentGroup.POST("head", middleware.JSONParamValidator(zonemomentproto.ApiHeadReq{}), middleware.JwtAuthenticator(), ApiHeadZoneMoment) apiZoneMomentGroup.POST("list_statistics_by_creater_mid", middleware.JSONParamValidator(zonemomentproto.ApiListStatisticsByCreaterMidReq{}), middleware.JwtAuthenticator(), ApiGetZoneMomentStatisticsByCreaterMid) apiZoneMomentGroup.POST("list_by_ids_from_creater", middleware.JSONParamValidator(zonemomentproto.ApiListByIdsFromCreaterReq{}), middleware.JwtAuthenticator(), ApiGetZoneMomentListByIdsFromCreater) + apiZoneMomentGroup.POST("fans_identity_refresh", middleware.JSONParamValidator(zonemomentproto.ApiFansIdentityRefreshReq{}), middleware.JwtAuthenticator(), ApiFansIdentityRefresh) // 空间对话 apiZoneSessionGroup := r.Group("/api/zone_session", PrepareToC()) diff --git a/app/mix/controller/zonemoment_api.go b/app/mix/controller/zonemoment_api.go index 14ed6dae..1cdb9cb8 100644 --- a/app/mix/controller/zonemoment_api.go +++ b/app/mix/controller/zonemoment_api.go @@ -232,3 +232,22 @@ func ApiGetZoneMomentListByIdsFromCreater(ctx *gin.Context) { } ReplyOk(ctx, data) } + +// 铁粉刷新(主播涨价降价后更新逻辑) +func ApiFansIdentityRefresh(ctx *gin.Context) { + req := ctx.MustGet("client_req").(*zonemomentproto.ApiFansIdentityRefreshReq) + if req.Mid <= 0 || req.Zid <= 0 { + logger.Error("ApiFansIdentityRefresh, invalid param, req: %v", util.ToJson(req)) + ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam) + return + } + + err := service.DefaultService.FansIdentityRefresh(ctx, req) + if err != nil { + logger.Error("ApiFansIdentityRefresh fail, req: %v, err: %v", util.ToJson(req), err) + ReplyErrCodeMsg(ctx, errcode.ErrcodeZoneIronFansNotUnLock) + return + } + + ReplyOk(ctx, nil) +} diff --git a/app/mix/service/logic/vas.go b/app/mix/service/logic/vas.go index d4ed0786..300def64 100644 --- a/app/mix/service/logic/vas.go +++ b/app/mix/service/logic/vas.go @@ -4296,3 +4296,22 @@ func (v *Vas) UnilaterallyWithdrawAccomplish(ctx *gin.Context, orderId string) ( return } + +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) + + if err != nil { + logger.Error("vas FansIdentityRefresh UnlockZoneIronFanShipRefresh fail, mid: %v, zid: %v, err: %v", mid, zid, err) + return err + } + + return nil +} diff --git a/app/mix/service/logic/vas_zone.go b/app/mix/service/logic/vas_zone.go index 307d39c9..fce82805 100644 --- a/app/mix/service/logic/vas_zone.go +++ b/app/mix/service/logic/vas_zone.go @@ -529,6 +529,62 @@ func (v *Vas) UnlockZoneIronfanshipReachConsume(ctx *gin.Context, tx *sqlx.Tx, m return nil } +// 铁粉刷新(主播涨价降价后逻辑后更新逻辑) +func (v *Vas) UnlockZoneIronfanshipRefresh(ctx *gin.Context, tx *sqlx.Tx, mid, zid, streamerMid int64) error { + if tx == nil { + err := fmt.Errorf("nil tx") + return err + } + + // 获取zid + if zid <= 0 && streamerMid > 0 { + // 获取空间id + zone, _ := v.zone.GetByMid(ctx, streamerMid) + if zone != nil { + zid = zone.GetId() + } + } + if zid <= 0 { + return fmt.Errorf("zone not exist, mid: %v, streamerMid: %v", mid, streamerMid) + } + + // 获取空间价格 + zVas, _ := v.store.GetZoneVasById(ctx, zid) + if zVas == nil { + return fmt.Errorf("zone vas not exist, zid: %v", zid) + } + + // 获取空间消费信息 + zUnlock, exists := v.CheckZoneUnlockExist(ctx, tx, mid, zid) + if !exists { + return fmt.Errorf("zone unlock not exist, mid: %v, zid: %v", mid, zid) + } + + 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) + if err != nil { + logger.Error("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) + return err + } + + return nil +} + type IncomeInfo struct { Mid int64 `json:"mid"` // mid IncomeSType int32 `json:"income_stype"` // 收入类类型 diff --git a/app/mix/service/utilservice.go b/app/mix/service/utilservice.go index 0c80440b..8504aa06 100644 --- a/app/mix/service/utilservice.go +++ b/app/mix/service/utilservice.go @@ -2208,3 +2208,14 @@ func (s *Service) UtilEncryptVideosForZoneMomentVOs(ctx *gin.Context, list []*zo } } } + +func (s *Service) FansIdentityRefresh(ctx *gin.Context, req *zonemomentproto.ApiFansIdentityRefreshReq) error { + + err := _DefaultVas.FansIdentityRefresh(ctx, req.Mid, req.Zid) + if err != nil { + logger.Error("util service FansIdentityRefresh failed, err: %v", err) + return err + } + + return nil +} From 2117e782fb97c03797b7d9bfde4de1744059f775 Mon Sep 17 00:00:00 2001 From: wangxinyu Date: Thu, 19 Dec 2024 13:45:35 +0800 Subject: [PATCH 2/5] =?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 } From 3442269b4922c31a552d389d5803dfea87eac1a3 Mon Sep 17 00:00:00 2001 From: wangxinyu Date: Thu, 19 Dec 2024 14:41:58 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=E8=BF=94=E5=9B=9E=E6=96=87=E6=A1=88?= =?UTF-8?q?=E9=94=99=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/errcode/errcode.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/errcode/errcode.go b/api/errcode/errcode.go index 0693384b..7af9d41e 100644 --- a/api/errcode/errcode.go +++ b/api/errcode/errcode.go @@ -194,7 +194,7 @@ var ErrCodeMsgMap = map[ErrCode]string{ ErrCodeUnlockedZone: "访客未解锁该空间", ErrCodeZoneDuplicateKey: "您已创建空间", ErrcodeZoneIronFansUnLock: "您已解锁空间铁粉", - ErrcodeZoneIronFansNotUnLock: "咱不满足铁粉条件", + ErrcodeZoneIronFansNotUnLock: "暂不满足铁粉条件", ErrCodeZoneMomentSrvFail: "私密圈动态服务错误", ErrCodeZoneMomentNotExist: "私密圈动态不存在", From 8909679a8bee82cbfc0ee73ca1d263cef39efac5 Mon Sep 17 00:00:00 2001 From: wangxinyu Date: Fri, 20 Dec 2024 16:17:33 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E9=93=81=E7=B2=89=E5=88=B7=E6=96=B0?= =?UTF-8?q?=EF=BC=8Cret=20=E5=92=8C=20=20errcode=20=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/errcode/errcode.go | 30 +++++++++++++---------- app/mix/controller/zonemoment_api.go | 8 +++++-- app/mix/service/logic/vas.go | 9 +++---- app/mix/service/logic/vas_zone.go | 36 ++++++++++++++++++---------- app/mix/service/utilservice.go | 8 +++---- 5 files changed, 55 insertions(+), 36 deletions(-) diff --git a/api/errcode/errcode.go b/api/errcode/errcode.go index 7af9d41e..a8acabd1 100644 --- a/api/errcode/errcode.go +++ b/api/errcode/errcode.go @@ -189,12 +189,14 @@ var ErrCodeMsgMap = map[ErrCode]string{ ErrCodeAccountCancellationSrvFail: "账户注销服务错误", ErrCodeAccountCancellationNotExist: "账户注销不存在", - ErrCodeZoneSrvFail: "空间服务错误", - ErrCodeZoneNotExist: "空间不存在", - ErrCodeUnlockedZone: "访客未解锁该空间", - ErrCodeZoneDuplicateKey: "您已创建空间", - ErrcodeZoneIronFansUnLock: "您已解锁空间铁粉", - ErrcodeZoneIronFansNotUnLock: "暂不满足铁粉条件", + ErrCodeZoneSrvFail: "空间服务错误", + ErrCodeZoneNotExist: "空间不存在", + ErrCodeUnlockedZone: "访客未解锁该空间", + ErrCodeZoneDuplicateKey: "您已创建空间", + ErrcodeZoneIronFansUnLock: "您已解锁空间铁粉", + ErrcodeZoneIronFansAlreadyUnLock: "您已是空间铁粉", + ErrcodeZoneIronFansNotUnLock: "暂不满足铁粉条件", + ErrcodeZoneIronFansRefreshErr: "铁粉刷新失败,服务错误", ErrCodeZoneMomentSrvFail: "私密圈动态服务错误", ErrCodeZoneMomentNotExist: "私密圈动态不存在", @@ -523,13 +525,15 @@ const ( ErrCodeAccountPunishmentStreamerOnly ErrCode = -32007 // 该账号处罚仅能对主播进行 // Zone: 33xxx - ErrCodeZoneSrvOk ErrCode = ErrCodeOk - ErrCodeZoneSrvFail ErrCode = -33001 // 空间服务错误 - ErrCodeZoneNotExist ErrCode = -33002 // 空间不存在 - ErrCodeUnlockedZone ErrCode = -33003 // 未解锁的空间 - ErrCodeZoneDuplicateKey ErrCode = -33004 // 空间已存在 - ErrcodeZoneIronFansUnLock ErrCode = -33005 // 空间已解锁铁粉 - ErrcodeZoneIronFansNotUnLock ErrCode = -33006 // 空间未解锁铁粉 + ErrCodeZoneSrvOk ErrCode = ErrCodeOk + ErrCodeZoneSrvFail ErrCode = -33001 // 空间服务错误 + ErrCodeZoneNotExist ErrCode = -33002 // 空间不存在 + ErrCodeUnlockedZone ErrCode = -33003 // 未解锁的空间 + ErrCodeZoneDuplicateKey ErrCode = -33004 // 空间已存在 + ErrcodeZoneIronFansUnLock ErrCode = -33005 // 空间已解锁铁粉 + ErrcodeZoneIronFansNotUnLock ErrCode = -33006 // 空间未解锁铁粉 + ErrcodeZoneIronFansAlreadyUnLock ErrCode = -33007 // 已经是空间铁粉 + ErrcodeZoneIronFansRefreshErr ErrCode = -33008 // 铁粉刷新服务错误 // ZoneMoment: 34xxx ErrCodeZoneMomentSrvOk ErrCode = ErrCodeOk diff --git a/app/mix/controller/zonemoment_api.go b/app/mix/controller/zonemoment_api.go index 1cdb9cb8..b8ac8897 100644 --- a/app/mix/controller/zonemoment_api.go +++ b/app/mix/controller/zonemoment_api.go @@ -242,12 +242,16 @@ func ApiFansIdentityRefresh(ctx *gin.Context) { return } - err := service.DefaultService.FansIdentityRefresh(ctx, req) + ec, err := service.DefaultService.FansIdentityRefresh(ctx, req) if err != nil { logger.Error("ApiFansIdentityRefresh fail, req: %v, err: %v", util.ToJson(req), err) - ReplyErrCodeMsg(ctx, errcode.ErrcodeZoneIronFansNotUnLock) + ReplyErrCodeMsg(ctx, ec) return } + if ec != errcode.ErrCodeOk { + ReplyErrCodeMsg(ctx, ec) + } + ReplyOk(ctx, nil) } diff --git a/app/mix/service/logic/vas.go b/app/mix/service/logic/vas.go index 6bed31cd..b6096d10 100644 --- a/app/mix/service/logic/vas.go +++ b/app/mix/service/logic/vas.go @@ -15,6 +15,7 @@ import ( "net/http" "service/api/adapter/dingtalkapi" "service/api/base" + "service/api/errcode" "service/api/errs" "service/api/message/response" accountproto "service/api/proto/account/proto" @@ -4297,13 +4298,13 @@ func (v *Vas) UnilaterallyWithdrawAccomplish(ctx *gin.Context, orderId string) ( return } -func (v *Vas) FansIdentityRefresh(ctx *gin.Context, mid, zid int64) error { - err := v.UnlockZoneIronfanshipRefresh(ctx, mid, zid, 0) +func (v *Vas) FansIdentityRefresh(ctx *gin.Context, mid, zid int64) (errcode.ErrCode, error) { + ec, 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) - return err + return ec, err } - return nil + return ec, nil } diff --git a/app/mix/service/logic/vas_zone.go b/app/mix/service/logic/vas_zone.go index 2feff22d..fb2805bd 100644 --- a/app/mix/service/logic/vas_zone.go +++ b/app/mix/service/logic/vas_zone.go @@ -3,6 +3,7 @@ package logic import ( "database/sql" "fmt" + "service/api/errcode" "service/api/errs" vasproto "service/api/proto/vas/proto" zone_collaborator_proto "service/api/proto/zone_collaborator/proto" @@ -530,13 +531,14 @@ func (v *Vas) UnlockZoneIronfanshipReachConsume(ctx *gin.Context, tx *sqlx.Tx, m } // 铁粉刷新(主播涨价降价后逻辑后更新逻辑) -func (v *Vas) UnlockZoneIronfanshipRefresh(ctx *gin.Context, mid, zid, streamerMid int64) error { - +func (v *Vas) UnlockZoneIronfanshipRefresh(ctx *gin.Context, mid, zid, streamerMid int64) (errcode.ErrCode, error) { + ec := errcode.ErrCodeOk // 开启事务 tx, err := v.store.VasBegin(ctx) if err != nil { logger.Error("vas begin fail, err: %v", err) - return err + ec = errcode.ErrcodeZoneIronFansRefreshErr + return ec, err } defer func() { @@ -548,8 +550,9 @@ func (v *Vas) UnlockZoneIronfanshipRefresh(ctx *gin.Context, mid, zid, streamerM }() if tx == nil { + ec = errcode.ErrcodeZoneIronFansRefreshErr err := fmt.Errorf("nil tx") - return err + return ec, err } // 获取zid @@ -561,47 +564,54 @@ func (v *Vas) UnlockZoneIronfanshipRefresh(ctx *gin.Context, mid, zid, streamerM } } if zid <= 0 { - return fmt.Errorf("zone not exist, mid: %v, streamerMid: %v", mid, streamerMid) + ec = errcode.ErrcodeZoneIronFansRefreshErr + return ec, fmt.Errorf("zone not exist, mid: %v, streamerMid: %v", mid, streamerMid) } // 获取空间价格 zVas, _ := v.store.GetZoneVasById(ctx, zid) if zVas == nil { - return fmt.Errorf("zone vas not exist, zid: %v", zid) + ec = errcode.ErrcodeZoneIronFansRefreshErr + return ec, fmt.Errorf("zone vas not exist, zid: %v", zid) } // 获取空间消费信息 zUnlock, exists := v.CheckZoneUnlockExist(ctx, tx, mid, zid) if !exists { - return fmt.Errorf("zone unlock not exist, mid: %v, zid: %v", mid, zid) + ec = errcode.ErrcodeZoneIronFansRefreshErr + return ec, 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 + logger.Info("UnlockZoneIronFanShipRefresh, users are already iron fans, mid: %v, streamerMid: %v", mid, streamerMid) + ec = errcode.ErrcodeZoneIronFansAlreadyUnLock + return ec, nil } if zUnlock.GetConsume() < zVas.IronfanshipPrice { // 主播降价后消费额是否达到了解锁铁粉的消费额 - return fmt.Errorf("not reach ironfan unlock consume, mid: %v, zid: %v", mid, zid) + ec = errcode.ErrcodeZoneIronFansNotUnLock + return ec, nil } // 解锁铁粉 err = v.MustUnlockIronfanship(ctx, tx, mid, zid, -1, "ironfan", dbstruct.ZoneUnlockTypeReachConsume) if err != nil { logger.Error("UnlockZoneIronfanshipRefresh MustUnlockIronfanship fail, mid: %v, zid: %v, err: %v", mid, zid, err) - return err + ec = errcode.ErrcodeZoneIronFansRefreshErr + return ec, err } // 添加到空间成员 err = v.store.AddZoneMember(ctx, tx, mid, zid, dbstruct.ZoneMemberTypeIronfan) if err != nil { logger.Error("UnlockZoneIronfanshipRefresh AddZoneMember normal fail, mid: %v, zid: %v, err: %v", mid, zid, err) - return err + ec = errcode.ErrcodeZoneIronFansRefreshErr + return ec, err } - return nil + return ec, nil } type IncomeInfo struct { diff --git a/app/mix/service/utilservice.go b/app/mix/service/utilservice.go index 8504aa06..dca9e7ff 100644 --- a/app/mix/service/utilservice.go +++ b/app/mix/service/utilservice.go @@ -2209,13 +2209,13 @@ func (s *Service) UtilEncryptVideosForZoneMomentVOs(ctx *gin.Context, list []*zo } } -func (s *Service) FansIdentityRefresh(ctx *gin.Context, req *zonemomentproto.ApiFansIdentityRefreshReq) error { +func (s *Service) FansIdentityRefresh(ctx *gin.Context, req *zonemomentproto.ApiFansIdentityRefreshReq) (errcode.ErrCode, error) { - err := _DefaultVas.FansIdentityRefresh(ctx, req.Mid, req.Zid) + ec, err := _DefaultVas.FansIdentityRefresh(ctx, req.Mid, req.Zid) if err != nil { logger.Error("util service FansIdentityRefresh failed, err: %v", err) - return err + return ec, err } - return nil + return ec, nil } From 289a132eb71f36306b202f3cf0ebd77a8afa42ec Mon Sep 17 00:00:00 2001 From: wangxinyu Date: Fri, 20 Dec 2024 16:25:13 +0800 Subject: [PATCH 5/5] return --- app/mix/controller/zonemoment_api.go | 1 + 1 file changed, 1 insertion(+) diff --git a/app/mix/controller/zonemoment_api.go b/app/mix/controller/zonemoment_api.go index b8ac8897..ca180952 100644 --- a/app/mix/controller/zonemoment_api.go +++ b/app/mix/controller/zonemoment_api.go @@ -251,6 +251,7 @@ func ApiFansIdentityRefresh(ctx *gin.Context) { if ec != errcode.ErrCodeOk { ReplyErrCodeMsg(ctx, ec) + return } ReplyOk(ctx, nil)