package integration import ( "context" "chatapp3-golang/internal/config" ) // Gateways 聚合按职责拆分后的 Java 接口网关。 type Gateways struct { Auth *AuthGateway Device *DeviceGateway InviteCode *InviteCodeGateway Notice *NoticeGateway RewardDispatch *RewardDispatchGateway RewardQuery *RewardQueryGateway Profile *ProfileGateway Wallet *WalletGateway } // NewGateways 基于共享 HTTP 客户端创建所有 Java 网关。 func NewGateways(cfg config.Config) Gateways { client := New(cfg) return Gateways{ Auth: &AuthGateway{client: client}, Device: &DeviceGateway{client: client}, InviteCode: &InviteCodeGateway{client: client}, Notice: &NoticeGateway{client: client}, RewardDispatch: &RewardDispatchGateway{client: client}, RewardQuery: &RewardQueryGateway{client: client}, Profile: &ProfileGateway{client: client}, Wallet: &WalletGateway{client: client}, } } // AuthenticateToken 透传到认证网关。 func (g *Gateways) AuthenticateToken(ctx context.Context, token string) (UserCredential, error) { return g.Auth.AuthenticateToken(ctx, token) } // CreateIfAbsentUserCredentialToken 透传到认证网关。 func (g *Gateways) CreateIfAbsentUserCredentialToken(ctx context.Context, userID int64) (string, error) { return g.Auth.CreateIfAbsentUserCredentialToken(ctx, userID) } // AuthenticateConsoleToken 透传到后台认证网关。 func (g *Gateways) AuthenticateConsoleToken(ctx context.Context, authorization string) (ConsoleAccount, error) { return g.Auth.AuthenticateConsoleToken(ctx, authorization) } // GetDeviceFingerprint 透传到设备网关。 func (g *Gateways) GetDeviceFingerprint(ctx context.Context, userID int64) (string, error) { return g.Device.GetDeviceFingerprint(ctx, userID) } // EnsureInviteCode 透传到邀请码网关。 func (g *Gateways) EnsureInviteCode(ctx context.Context, authorization string) (InviteCode, error) { return g.InviteCode.EnsureInviteCode(ctx, authorization) } // SendOfficialNoticeCustomize 透传到官方通知网关。 func (g *Gateways) SendOfficialNoticeCustomize(ctx context.Context, req OfficialNoticeCustomizeRequest) error { return g.Notice.SendOfficialNoticeCustomize(ctx, req) } // GrantGold 透传到奖励发放网关。 func (g *Gateways) GrantGold(ctx context.Context, req GrantGoldRequest) error { return g.RewardDispatch.GrantGold(ctx, req) } // GrantProps 透传到奖励发放网关。 func (g *Gateways) GrantProps(ctx context.Context, req GrantPropsRequest) error { return g.RewardDispatch.GrantProps(ctx, req) } // SendActivityReward 透传到奖励发放网关。 func (g *Gateways) SendActivityReward(ctx context.Context, req SendActivityRewardRequest) error { return g.RewardDispatch.SendActivityReward(ctx, req) } // GetRewardGroupDetail 透传到奖励查询网关。 func (g *Gateways) GetRewardGroupDetail(ctx context.Context, groupID int64) (RewardGroupDetail, error) { return g.RewardQuery.GetRewardGroupDetail(ctx, groupID) } // GetUserProfile 透传到资料网关。 func (g *Gateways) GetUserProfile(ctx context.Context, userID int64) (UserProfile, error) { return g.Profile.GetUserProfile(ctx, userID) } // GetUserProfileByAccount 透传到资料网关。 func (g *Gateways) GetUserProfileByAccount(ctx context.Context, sysOrigin, account string) (UserProfile, error) { return g.Profile.GetUserProfileByAccount(ctx, sysOrigin, account) } // GetUserProfileByAccountOne 透传到资料网关。 func (g *Gateways) GetUserProfileByAccountOne(ctx context.Context, account string) (UserProfile, error) { return g.Profile.GetUserProfileByAccountOne(ctx, account) } // GetUserLanguage 透传到资料网关。 func (g *Gateways) GetUserLanguage(ctx context.Context, userID int64) (string, error) { return g.Profile.GetUserLanguage(ctx, userID) } // MapGoldBalance 透传到钱包网关。 func (g *Gateways) MapGoldBalance(ctx context.Context, userIDs []int64) (map[int64]int64, error) { return g.Wallet.MapGoldBalance(ctx, userIDs) } // ExistsGoldEvent 透传到钱包网关。 func (g *Gateways) ExistsGoldEvent(ctx context.Context, eventID string) (bool, error) { return g.Wallet.ExistsGoldEvent(ctx, eventID) } // ChangeGoldBalance 透传到钱包网关。 func (g *Gateways) ChangeGoldBalance(ctx context.Context, cmd GoldReceiptCommand) error { return g.Wallet.ChangeGoldBalance(ctx, cmd) } // AuthGateway 负责认证相关接口。 type AuthGateway struct { client *Client } // AuthenticateToken 校验用户 token。 func (g *AuthGateway) AuthenticateToken(ctx context.Context, token string) (UserCredential, error) { return g.client.AuthenticateToken(ctx, token) } // CreateIfAbsentUserCredentialToken 创建或返回用户 token。 func (g *AuthGateway) CreateIfAbsentUserCredentialToken(ctx context.Context, userID int64) (string, error) { return g.client.CreateIfAbsentUserCredentialToken(ctx, userID) } // AuthenticateConsoleToken 校验后台 console token。 func (g *AuthGateway) AuthenticateConsoleToken(ctx context.Context, authorization string) (ConsoleAccount, error) { return g.client.AuthenticateConsoleToken(ctx, authorization) } // DeviceGateway 负责设备指纹相关接口。 type DeviceGateway struct { client *Client } // GetDeviceFingerprint 查询设备指纹。 func (g *DeviceGateway) GetDeviceFingerprint(ctx context.Context, userID int64) (string, error) { return g.client.GetDeviceFingerprint(ctx, userID) } // InviteCodeGateway 负责邀请码相关接口。 type InviteCodeGateway struct { client *Client } // EnsureInviteCode 确保用户存在邀请码。 func (g *InviteCodeGateway) EnsureInviteCode(ctx context.Context, authorization string) (InviteCode, error) { return g.client.EnsureInviteCode(ctx, authorization) } // NoticeGateway 负责实时官方通知接口。 type NoticeGateway struct { client *Client } // SendOfficialNoticeCustomize 发送自定义官方通知。 func (g *NoticeGateway) SendOfficialNoticeCustomize(ctx context.Context, req OfficialNoticeCustomizeRequest) error { return g.client.SendOfficialNoticeCustomize(ctx, req) } // RewardDispatchGateway 负责活动奖励发放接口。 type RewardDispatchGateway struct { client *Client } // GrantGold 发放金币奖励。 func (g *RewardDispatchGateway) GrantGold(ctx context.Context, req GrantGoldRequest) error { return g.client.GrantGold(ctx, req) } // GrantProps 发放道具奖励。 func (g *RewardDispatchGateway) GrantProps(ctx context.Context, req GrantPropsRequest) error { return g.client.GrantProps(ctx, req) } // SendActivityReward 发放活动奖励组。 func (g *RewardDispatchGateway) SendActivityReward(ctx context.Context, req SendActivityRewardRequest) error { return g.client.SendActivityReward(ctx, req) } // RewardQueryGateway 负责奖励配置查询接口。 type RewardQueryGateway struct { client *Client } // GetRewardGroupDetail 查询奖励组详情。 func (g *RewardQueryGateway) GetRewardGroupDetail(ctx context.Context, groupID int64) (RewardGroupDetail, error) { return g.client.GetRewardGroupDetail(ctx, groupID) } // ProfileGateway 负责用户资料相关接口。 type ProfileGateway struct { client *Client } // GetUserProfile 查询用户资料。 func (g *ProfileGateway) GetUserProfile(ctx context.Context, userID int64) (UserProfile, error) { return g.client.GetUserProfile(ctx, userID) } // GetUserProfileByAccount 根据账号查询用户资料。 func (g *ProfileGateway) GetUserProfileByAccount(ctx context.Context, sysOrigin, account string) (UserProfile, error) { return g.client.GetUserProfileByAccount(ctx, sysOrigin, account) } // GetUserProfileByAccountOne 根据账号查询单个用户资料。 func (g *ProfileGateway) GetUserProfileByAccountOne(ctx context.Context, account string) (UserProfile, error) { return g.client.GetUserProfileByAccountOne(ctx, account) } // GetUserLanguage 查询用户语言。 func (g *ProfileGateway) GetUserLanguage(ctx context.Context, userID int64) (string, error) { return g.client.GetUserLanguage(ctx, userID) } // WalletGateway 负责钱包相关接口。 type WalletGateway struct { client *Client } // MapGoldBalance 批量查询金币余额。 func (g *WalletGateway) MapGoldBalance(ctx context.Context, userIDs []int64) (map[int64]int64, error) { return g.client.MapGoldBalance(ctx, userIDs) } // ExistsGoldEvent 查询事件幂等是否存在。 func (g *WalletGateway) ExistsGoldEvent(ctx context.Context, eventID string) (bool, error) { return g.client.ExistsGoldEvent(ctx, eventID) } // ChangeGoldBalance 修改金币余额。 func (g *WalletGateway) ChangeGoldBalance(ctx context.Context, cmd GoldReceiptCommand) error { return g.client.ChangeGoldBalance(ctx, cmd) }