From ccf8b4e16158db79203aa591ae640da49fc610fc Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Tue, 15 Apr 2025 23:55:08 +0800 Subject: [PATCH] add agent vip renew --- .../logic/agent/activateagentmembershiplogic.go | 1 + .../api/internal/logic/pay/alipaycallbacklogic.go | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/app/user/cmd/api/internal/logic/agent/activateagentmembershiplogic.go b/app/user/cmd/api/internal/logic/agent/activateagentmembershiplogic.go index 58258f0..6d0814a 100644 --- a/app/user/cmd/api/internal/logic/agent/activateagentmembershiplogic.go +++ b/app/user/cmd/api/internal/logic/agent/activateagentmembershiplogic.go @@ -66,6 +66,7 @@ func (l *ActivateAgentMembershipLogic) ActivateAgentMembership(req *types.AgentA return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "禁止降级操作(当前等级:%s,请求等级:%s)", agentModel.LevelName, req.Type) } + // 同等级视为续费,允许操作 } outTradeNo := "A_" + l.svcCtx.AlipayService.GenerateOutTradeNo() redisKey := fmt.Sprintf(types.AgentVipCacheKey, userID, outTradeNo) diff --git a/app/user/cmd/api/internal/logic/pay/alipaycallbacklogic.go b/app/user/cmd/api/internal/logic/pay/alipaycallbacklogic.go index 9bde985..bd56d02 100644 --- a/app/user/cmd/api/internal/logic/pay/alipaycallbacklogic.go +++ b/app/user/cmd/api/internal/logic/pay/alipaycallbacklogic.go @@ -151,8 +151,20 @@ func (l *AlipayCallbackLogic) handleAgentVipOrderPayment(w http.ResponseWriter, if updateErr := l.svcCtx.AgentMembershipRechargeOrderModel.UpdateWithVersion(l.ctx, nil, agentOrder); updateErr != nil { return fmt.Errorf("修改代理会员订单信息失败: %+v", updateErr) } + + // 设置会员等级 agentModel.LevelName = agentOrder.LevelName + + // 延长会员时间 + // 检查是否是同级续费并记录到日志 + isRenewal := agentModel.LevelName == agentOrder.LevelName && agentModel.MembershipExpiryTime.Valid + if isRenewal { + logx.Infof("代理会员续费成功,会员ID:%d,等级:%s", agentModel.Id, agentModel.LevelName) + } else { + logx.Infof("代理会员新购或升级成功,会员ID:%d,等级:%s", agentModel.Id, agentModel.LevelName) + } agentModel.MembershipExpiryTime = RenewMembership(agentModel.MembershipExpiryTime) + if updateErr := l.svcCtx.AgentModel.UpdateWithVersion(l.ctx, nil, agentModel); updateErr != nil { return fmt.Errorf("修改代理信息失败: %+v", updateErr) }