init: web_hgcg_server 初始化提交
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package statcenter
|
||||
|
||||
// IOSRegistrationDistrictCode 原生 iOS 商店包用户的固定渠道码。
|
||||
// 未配置时不覆盖用户原 DistrictCode。
|
||||
const IOSRegistrationDistrictCode = ""
|
||||
@@ -0,0 +1,227 @@
|
||||
package statcenter
|
||||
|
||||
import (
|
||||
"time"
|
||||
"videoweb/pub/pubdef"
|
||||
|
||||
"github.com/shopspring/decimal"
|
||||
)
|
||||
|
||||
type KFKTopic string
|
||||
|
||||
const (
|
||||
STAT_APPID int32 = pubdef.AppId
|
||||
USER_REG KFKTopic = "user_register" // 用户注册
|
||||
USER_RECH KFKTopic = "user_recharge" // 用户充值(成功)
|
||||
USER_RECH_ALL KFKTopic = "user_recharge_all" // 全部充值订单
|
||||
USER_ACCE KFKTopic = "user_access" // 用户访问
|
||||
USER_BINDING KFKTopic = "user_binding" // 用户绑定(邮箱/正式注册)
|
||||
USER_INVITE KFKTopic = "user_invite" // 用户邀请绑定
|
||||
VipJob KFKTopic = "vip" // VIP 购买(兼容旧任务)
|
||||
RechargeAll KFKTopic = "rechargeAll" // 全部充值(兼容旧任务名)
|
||||
RegisterLightJob KFKTopic = "registerLight" // H5 轻量注册
|
||||
ConsumeRecordJob KFKTopic = "consume_record" // 产品消费流水
|
||||
CardSellJob KFKTopic = "card_sell" // 会员卡销售流水
|
||||
AI_SELL_JOB KFKTopic = "ai_sell" // AI 消费(本项目无此业务)
|
||||
)
|
||||
|
||||
const (
|
||||
StatVipCard = iota // 会员卡
|
||||
StatValueAddSer // 增值/其他消费
|
||||
StatVideoUnlock // 视频解锁
|
||||
)
|
||||
|
||||
const (
|
||||
CurrencyTypeGold = iota // 金币
|
||||
CurrencyTypeCash // 现金
|
||||
)
|
||||
|
||||
// StatcenterSyncReq 统计中心增量同步请求
|
||||
type StatcenterSyncReq struct {
|
||||
Job string `json:"job" bson:"job"` // 同步任务类型
|
||||
UserId uint64 `json:"userId" bson:"userId"` // 用户(注册)
|
||||
PlatformId string `json:"platformId" bson:"platformId"` // 原始平台Id(访问/流水)
|
||||
SuccessTime time.Time `json:"successTime"` // 游标时间(购买会员、提现、充值)
|
||||
MaxSize int64 `json:"maxSize" bson:"maxSize"` // 最大条数
|
||||
}
|
||||
|
||||
// StatcenterSyncResp 统计中心增量同步响应
|
||||
type StatcenterSyncResp struct {
|
||||
Code int `json:"code"` // 200正常 其他异常
|
||||
Msg string `json:"msg"` // 错误消息
|
||||
Job string `json:"job" bson:"job"` // 类型
|
||||
VisitList []UserVisitMsg `json:"visitList"` // 日活记录(旧字段,兼容)
|
||||
AccessList []UserVisitMsg `json:"accessList"` // 日活记录
|
||||
RegisterList []UserRegisterMsg `json:"registerList"` // 注册记录
|
||||
BindingList []UserBindingMsg `json:"bindingList"` // 用户绑定记录
|
||||
InviteList []UserInviteBindMsg `json:"inviteList"` // 邀请绑定
|
||||
ConsumeList []ConsumeRecordMsg `json:"consumeList"` // 消费流水
|
||||
RechargeList []UserRechargeMsg `json:"rechargeList"` // 充值记录
|
||||
AllRechargeList []UserRechargeMsg `json:"allRechargeList"` // 全部支付订单
|
||||
VipList []UserBuyVIPMsg `json:"buyVipList"` // VIP购买记录
|
||||
CardSellList []CardSellMsg `json:"cardSellList"` // 会员卡销售流水
|
||||
AiSellList []AiSellMsg `json:"aiSellList"` // AI销售流水
|
||||
}
|
||||
|
||||
// 用户访问消息
|
||||
type UserVisitMsg struct {
|
||||
UserId uint64 `json:"userId" bson:"userId"` // 用户ID
|
||||
PlatformId string `json:"platformId" bson:"platformId"` // 原始平台流水Id
|
||||
AppId int32 `json:"appId" bson:"appId"` // appID
|
||||
SysType string `json:"sysType" bson:"sysType"` // 操作系统类型 安卓 IOS
|
||||
DevType string `json:"devType,omitempty" bson:"devType"` // 设备型号
|
||||
IP string `json:"ip,omitempty" bson:"ip"` // IP
|
||||
Version string `json:"version,omitempty" bson:"version"` // APP版本号
|
||||
DevID string `json:"devID,omitempty" bson:"devID"` // 设备ID
|
||||
VisitAt time.Time `json:"visitAt,omitempty" bson:"visitAt"` // 访问时间
|
||||
IsDirect bool `json:"isDirect,omitempty"` // true:是直推用户
|
||||
DistrictCode string `json:"districtCode,omitempty"` // 渠道码
|
||||
RegisterTime time.Time `json:"registerTime,omitempty"` // 用户注册时间
|
||||
}
|
||||
|
||||
// 用户注册消息
|
||||
type UserRegisterMsg struct {
|
||||
UserId uint64 `json:"userId" bson:"userId" binding:"required"` // 用户ID
|
||||
AppId int32 `json:"appId" bson:"appId" binding:"required"` // appID
|
||||
SysType string `json:"sysType" bson:"sysType" binding:"required"` // 操作系统类型 安卓 IOS
|
||||
PlatformId string `json:"platformId" bson:"platformId"` // 原始平台流水Id
|
||||
DevType string `json:"devType" bson:"devType"` // 设备类型
|
||||
Mobile string `json:"mobile" bson:"mobile"` // 手机号
|
||||
IP string `json:"ip,omitempty" bson:"ip"` // IP
|
||||
Name string `json:"name" bson:"name"` // 名称
|
||||
IsDirect bool `json:"isDirect" bson:"isDirect" binding:"required"` // true:是直推用户
|
||||
DistrictCode string `json:"districtCode" bson:"districtCode" ` // 渠道码
|
||||
PromSeqe string `json:"promSeqe,omitempty" bson:"promSeqe"` // 全名代理
|
||||
PromCode string `json:"promCode,omitempty" bson:"promCode"` // 推广序列
|
||||
PUC string `json:"puc" bson:"puc"` // 应用中心推广
|
||||
RegisterTime time.Time `json:"registerTime,omitempty" bson:"registerTime" binding:"required"` // 注册时间
|
||||
}
|
||||
|
||||
// UserBindingMsg 用户绑定(本项目对应邮箱正式注册)
|
||||
type UserBindingMsg struct {
|
||||
UserId uint64 `json:"userId"` // 用户ID
|
||||
AppId int32 `json:"appId"` // appID
|
||||
PlatformId string `json:"platformId"` // 原始平台流水Id
|
||||
SysType string `json:"sysType"` // 操作系统类型
|
||||
DevType string `json:"devType"` // 设备类型
|
||||
Mobile string `json:"mobile"` // 手机号/绑定账号(本项目填邮箱)
|
||||
BindingTime *time.Time `json:"bindingTime"` // 绑定时间
|
||||
}
|
||||
|
||||
// UserInviteBindMsg 邀请绑定
|
||||
type UserInviteBindMsg struct {
|
||||
UserId uint64 `json:"userId" bson:"userId" binding:"required"`
|
||||
AppId int32 `json:"appId" bson:"appId" binding:"required"`
|
||||
ParentPromCode string `json:"parentPromCode,omitempty" bson:"promSeqe"`
|
||||
InviteTime time.Time `json:"inviteTime,omitempty" bson:"inviteTime" binding:"required"`
|
||||
}
|
||||
|
||||
// ConsumeRecordMsg 消费流水
|
||||
type ConsumeRecordMsg struct {
|
||||
AppID int32 `json:"appID" bson:"appID"`
|
||||
UID uint64 `json:"uid" bson:"uid"`
|
||||
Type int `json:"type" bson:"type"` // 消费类型
|
||||
CurrencyType int `json:"currencyType" bson:"currencyType"` // 0金币 1人民币
|
||||
Money decimal.Decimal `json:"money" bson:"money"` // 人民币 元
|
||||
Amount decimal.Decimal `json:"amount" bson:"amount"` // 金币
|
||||
Uniq string `json:"uniq" bson:"uniq"`
|
||||
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
|
||||
}
|
||||
|
||||
// AiSellMsg AI 销售流水
|
||||
type AiSellMsg struct {
|
||||
AppID int32 `json:"appID" bson:"appID"`
|
||||
UID uint64 `json:"uid" bson:"uid"`
|
||||
UniqID string `json:"uniqID" bson:"uniqID"`
|
||||
Amount int64 `json:"amount" bson:"amount"`
|
||||
TranType string `json:"tranType" bson:"tranType"`
|
||||
SysType string `json:"sysType" bson:"sysType"`
|
||||
DevType string `json:"devType" bson:"devType"`
|
||||
CurrencyType string `json:"currencyType" bson:"currencyType"`
|
||||
TranCreatedAt time.Time `json:"tranCreatedAt" bson:"tranCreatedAt"`
|
||||
IsRepurchase string `json:"isRepurchase" bson:"isRepurchase"`
|
||||
}
|
||||
|
||||
// CardSellMsg 会员卡销售流水
|
||||
type CardSellMsg struct {
|
||||
AppID int32 `json:"appID" bson:"appID"`
|
||||
UID uint64 `json:"uid" bson:"uid"`
|
||||
UniqID string `json:"uniqID" bson:"uniqID"`
|
||||
Amount int64 `json:"amount" bson:"amount"`
|
||||
TranTypeInt int64 `json:"tranTypeInt" bson:"tranTypeInt"`
|
||||
TranType string `json:"tranType" bson:"tranType"`
|
||||
SysType string `json:"sysType" bson:"sysType"`
|
||||
CurrencyType int `json:"currencyType" bson:"currencyType"` // 0金币 1现金
|
||||
TranCreatedAt time.Time `json:"tranCreatedAt" bson:"tranCreatedAt"`
|
||||
Product Product `json:"product" bson:"product"`
|
||||
}
|
||||
|
||||
// Product 售卡产品信息
|
||||
type Product struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
DiscountedPrice int64 `json:"discountedPrice"`
|
||||
}
|
||||
|
||||
// 用户充值消息
|
||||
type UserRechargeMsg struct {
|
||||
UserId uint64 `json:"userId" bson:"userId" binding:"required"`
|
||||
AppId int32 `json:"appId" bson:"appId" binding:"required"`
|
||||
PlatformId string `json:"platformId" bson:"platformId"`
|
||||
SysType string `json:"sysType" bson:"sysType" binding:"required"`
|
||||
DevType string `json:"devType" bson:"devType"`
|
||||
ChannelName string `json:"channelName" bson:"channelName"`
|
||||
CID string `json:"cid" bson:"cid"`
|
||||
Type string `bson:"type" json:"type"`
|
||||
OrderId string `json:"orderId" bson:"orderId" binding:"required"`
|
||||
OID string `json:"oid" bson:"oid"`
|
||||
Money int64 `json:"money" bson:"money" binding:"required"`
|
||||
PayMoney int64 `json:"payMoney" bson:"payMoney" binding:"required"`
|
||||
Status int `json:"status" bson:"status"`
|
||||
Rate string `json:"rate"`
|
||||
SuccessAt time.Time `json:"successAt,omitempty" bson:"successAt"`
|
||||
PaymentAt time.Time `json:"paymentAt"`
|
||||
ProductType int `json:"productType" bson:"productType"`
|
||||
ChanShareMod int `json:"chanShareMod" bson:"chanShareMod"`
|
||||
IsNewOrOldUser bool `json:"isNewOrOldUser" bson:"isNewOrOldUser"`
|
||||
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
|
||||
DistrictCode string `json:"districtCode" bson:"districtCode"`
|
||||
RegisterTime time.Time `json:"registerTime,omitempty" bson:"registerTime"`
|
||||
}
|
||||
|
||||
type BuyVIPType int64
|
||||
|
||||
const (
|
||||
BuyVIPTypeMoney BuyVIPType = 0 + iota // 现金
|
||||
BuyVIPTypeGold // 金币
|
||||
)
|
||||
|
||||
// 用户购买VIP
|
||||
type UserBuyVIPMsg struct {
|
||||
AppId int32 `json:"appId" bson:"appId"`
|
||||
UID uint64 `json:"uid" bson:"uid"`
|
||||
PlatformId string `json:"platformId" bson:"platformId"`
|
||||
Name string `json:"name" bson:"name"`
|
||||
Money int64 `json:"money" bson:"money"`
|
||||
Amount int64 `json:"amount" bson:"amount"`
|
||||
BuyVIPType BuyVIPType `json:"buyVIPType" bson:"buyVIPType"`
|
||||
OID string `json:"oid" bson:"oid"`
|
||||
DeviceType string `json:"deviceType" bson:"deviceType"`
|
||||
Status int `json:"status" bson:"status"`
|
||||
SuccessAt time.Time `json:"successTime"`
|
||||
IsDirect bool `json:"isDirect" bson:"isDirect"`
|
||||
DistrictCode string `json:"districtCode" bson:"districtCode"`
|
||||
PromCode string `json:"promCode" bson:"promCode"`
|
||||
}
|
||||
|
||||
// MapOrderStatusToStat 将本项目订单状态映射为统计中心约定:2失败 3成功
|
||||
func MapOrderStatusToStat(status pubdef.VipOrderStatus) int {
|
||||
switch status {
|
||||
case pubdef.VipOrderSuccess:
|
||||
return 3
|
||||
case pubdef.VipOrderFailed:
|
||||
return 2
|
||||
default:
|
||||
return int(status)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user