320 lines
20 KiB
Go
320 lines
20 KiB
Go
package usermod
|
||
|
||
import (
|
||
"reflect"
|
||
"time"
|
||
|
||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||
|
||
"91porn-server/models/v/videocoupon"
|
||
)
|
||
|
||
const (
|
||
DevIDLogin = 0
|
||
TokenLogin = 1
|
||
MobileLogin = 2
|
||
QrCodeLogin = 3
|
||
|
||
CouponPositionUnUsed = "unused" // 未使用
|
||
CouponPositionUsed = "used" // 已使用
|
||
)
|
||
|
||
// UserSelector 用户修改参数
|
||
type UserSelector struct {
|
||
Gender *string `json:"gender,omitempty" bson:"gender,omitempty"` //性别
|
||
Name *string `json:"name,omitempty" bson:"name,omitempty"`
|
||
Portrait *string `json:"portrait,omitempty" bson:"portrait,omitempty"` //头像
|
||
Background *[]string `json:"background,omitempty" bson:"background,omitempty"` //背景图
|
||
Summary *string `json:"summary,omitempty" bson:"summary,omitempty"` //简介
|
||
HasPrivateZone *bool `json:"hasPrivateZone,omitempty" bson:"hasPrivateZone,omitempty"` // 已关闭私密圈权限
|
||
Region *string `json:"region,omitempty" bson:"region,omitempty"` //地区
|
||
Birthday *string `json:"birthday,omitempty" bson:"birthday,omitempty"` //生日
|
||
VipLevel *int `json:"vipLevel,omitempty" bson:"vipLevel,omitempty"` //vip等级
|
||
VipExpireDate *time.Time `json:"vipExpireDate,omitempty" bson:"vipExpireDate,omitempty"` //vip过期时间
|
||
CoinMouthExpireDate *time.Time `json:"coinMouthExpireDate" bson:"coinMouthExpireDate"` //金币月卡过期时间
|
||
HasLocked *bool `json:"hasLocked,omitempty" bson:"hasLocked,omitempty"` //已禁止登陆
|
||
HasBanned *bool `json:"hasBanned,omitempty" bson:"hasBanned,omitempty"` //已禁言
|
||
LockReason *string `json:"lockReason,omitempty" bson:"lockReason,omitempty"` //禁止登录的原因
|
||
LockImg *string `json:"lockImg,omitempty" bson:"lockImg,omitempty"` //禁止登录的原因截图
|
||
LockAt *time.Time `json:"lockAt,omitempty" bson:"lockAt,omitempty"` //封禁开始时间
|
||
ForbidUpload *bool `json:"forbidUpload,omitempty" bson:"forbidUpload,omitempty"` //是否禁止上传文件
|
||
Token *string `json:"token,omitempty" bson:"token,omitempty"` //用户令牌
|
||
WatchCount *uint64 `json:"watchCount,omitempty" bson:"watchCount,omitempty"` //观看次数
|
||
UpdatedAt *time.Time `json:"updatedAt,omitempty" bson:"updatedAt,omitempty"` //更新时间
|
||
LastVisitAt *time.Time `json:"lastVisitAt,omitempty" bson:"lastVisitAt,omitempty"` //最后登陆时间
|
||
AppLock *string `json:"appLock,omitempty" bson:"appLock,omitempty"` //设备锁
|
||
IsDAgent *bool `json:"isDAgent,omitempty" bson:"isDAgent,omitempty"` //是商圈代理
|
||
LastVer *string `json:"lastVer,omitempty" bson:"lastVer,omitempty"` //最后登陆版本
|
||
TrueScore *int64 `json:"trueScore,omitempty" bson:"trueScore,omitempty"` //用户真实性得分
|
||
IsDirect *bool `json:"isDirect,omitempty" bson:"isDirect,omitempty"` //是直推用户
|
||
DiscCode *string `json:"districtCode,omitempty" bson:"districtCode,omitempty"` //商区码
|
||
PromSeqe *string `json:"promSeqe,omitempty" bson:"promSeqe,omitempty"` //推广序列
|
||
SuperUser *bool `json:"superUser" bson:"superUser,omitempty"` //大v
|
||
OfficialCert *bool `json:"officialCert" bson:"officialCert,omitempty"` //是否官方认证
|
||
TaxLevel *int64 `json:"taxLevel" bson:"taxLevel,omitempty"` //扣税等级,默认0,3.7;
|
||
ChatPrice *int64 `json:"chatPrice" bson:"chatPrice,omitempty"` //私信价格
|
||
LastSysType *string `json:"lastSysType,omitempty" bson:"lastSysType,omitempty"` //最后登陆系统类型
|
||
SnapVip *int `json:"snapVip,omitempty" bson:"snapVip,omitempty"` //临时vip
|
||
OriginVipExpire *time.Time `json:"originVipExpire,omitempty" bson:"originVipExpire,omitempty"` //临时vip记录的原始vip时间
|
||
OriginVipLevel *int `json:"originVipLevel,omitempty" bson:"originVipLevel,omitempty"` //临时vip记录的原始vip等级
|
||
AutoFollow *bool `json:"autoFollow" bson:"autoFollow,omitempty"` //是否配置被自动关注
|
||
HasEnteredGame *bool `json:"hasEnteredGame" bson:"hasEnteredGame,omitempty"` //是否进入过游戏
|
||
BankActName *string `json:"bankActName,omitempty" bson:"bankActName,omitempty"` //银行卡绑定名字
|
||
GoldVideoFreeExpire *time.Time `json:"goldVideoFreeExpire" bson:"goldVideoFreeExpire,omitempty"` //金币视频免费日期
|
||
GoldVideoFreeLimit *int64 `json:"goldVideoFreeLimit" bson:"goldVideoFreeLimit,omitempty"` // 金币视频免费限制门槛(包含acg)
|
||
WeeklyActiveValue *int64 `json:"weeklyActiveValue" bson:"weeklyActiveValue,omitempty"` //每周活跃度
|
||
OriginalSort *int `json:"originalSort" bson:"originalSort"` // 新版原创排序
|
||
VideoDeduction *float64 `json:"videoDeduction,omitempty" bson:"videoDeduction,omitempty"` //视频扣量,1:博主10单扣1单, 以此类推
|
||
VideoDeductionPayCount *int `json:"videoDeductionPayCount,omitempty" bson:"videoDeductionPayCount,omitempty"` //视频扣量购买次数
|
||
VideoDeductionCount *int `json:"videoDeductionCount,omitempty" bson:"videoDeductionCount,omitempty"` //视频扣量次数
|
||
MerchantAccount *string `json:"merchantAccount" bson:"merchantAccount,omitempty"` //商家账号
|
||
HasFirstChargeWaLi *bool `json:"hasFirstChargeWaLi,omitempty" bson:"hasFirstChargeWaLi,omitempty"` //是否首充充值瓦力
|
||
IsAdvertiser *bool `json:"isAdvertiser" bson:"isAdvertiser"` // 是否是打广告用户
|
||
HasWhoringCard *bool `json:"hasWhoringCard,omitempty" bson:"hasWhoringCard,omitempty"` // 是否有白嫖卡
|
||
PayVidDiscount *int `json:"payVidDiscount,omitempty" bson:"payVidDiscount,omitempty"` //支付视频折扣
|
||
GoldVideoCoupon *[]UserGoldVideoCoupon `json:"goldVideoCoupon,omitempty" bson:"goldVideoCoupon,omitempty"`
|
||
VideoFreeExpiration *time.Time `json:"videoFreeExpiration,omitempty" bson:"videoFreeExpiration,omitempty"` //视频免费过期时间
|
||
PassWord *string `json:"passWord,omitempty" bson:"passWord,omitempty"` //密码
|
||
VipName *string `json:"vipName,omitempty" bson:"vipName,omitempty"` //会员卡名称
|
||
LoufengBookDiscount *int `json:"loufengBookDiscount" bson:"loufengBookDiscount,omitempty"`
|
||
LoufengBookDiscountExpiration *time.Time `json:"loufengBookDiscountExpiration" bson:"loufengBookDiscountExpiration,omitempty"`
|
||
BannedTime *time.Time `json:"bannedTime" bson:"bannedTime,omitempty"` // 禁言时间
|
||
AllGoldVideoFree *bool `json:"allGoldVideoFree" bson:"allGoldVideoFree,omitempty"` // 是否所有金币视频免费
|
||
AiMateUid *string `json:"aiMateUid" bson:"aiMateUid,omitempty"` // ai伴侣uid
|
||
BroadcastExpire *time.Time `json:"broadcastExpire" bson:"broadcastExpire,omitempty"` //直播有效期
|
||
DramaExpire *time.Time `json:"dramaExpire" bson:"dramaExpire,omitempty"` //短剧权益有效期
|
||
|
||
}
|
||
|
||
// RenewDramaExpire 从当前有效期顺延短剧权益;已过期时从本次发放时间起算。
|
||
func RenewDramaExpire(current, now time.Time, days int) time.Time {
|
||
if current.After(now) {
|
||
return current.AddDate(0, 0, days)
|
||
}
|
||
return now.AddDate(0, 0, days)
|
||
}
|
||
|
||
func (u UserSelector) IsEmpty() bool {
|
||
return reflect.DeepEqual(u, UserSelector{})
|
||
}
|
||
|
||
// UserSelector 用户修改参数
|
||
type UserModifyReq struct {
|
||
Gender *string `json:"gender,omitempty" bson:"gender,omitempty"` //性别
|
||
Name *string `json:"name,omitempty" bson:"name,omitempty"`
|
||
Portrait *string `json:"portrait,omitempty" bson:"portrait,omitempty"` //头像
|
||
Background *[]string `json:"background,omitempty" bson:"background,omitempty"` //背景图
|
||
Summary *string `json:"summary,omitempty" bson:"summary,omitempty"` //简介
|
||
Region *string `json:"region,omitempty" bson:"region,omitempty"` //地区
|
||
Birthday *string `json:"birthday,omitempty" bson:"birthday,omitempty"` //生日
|
||
AppLock *string `json:"appLock,omitempty" bson:"appLock,omitempty"` //设备锁
|
||
UpdatedAt *time.Time `json:"updatedAt,omitempty" bson:"updatedAt,omitempty"`
|
||
}
|
||
|
||
type UserOpt struct {
|
||
//显示全民代理
|
||
ShowProxy bool `json:"showProxy"`
|
||
}
|
||
|
||
// RechargeLevel 充值等级
|
||
type RechargeLevel struct {
|
||
//等级
|
||
Level int `json:"level"`
|
||
//当前位置
|
||
Current int `json:"current"`
|
||
//当前等级最大值
|
||
Limit int `json:"limit"`
|
||
}
|
||
|
||
// AwardsExpireResp 奖章返回数据
|
||
type AwardsExpireResp struct {
|
||
Number int `json:"number" bson:"number,omitempty"` // 奖章价值
|
||
IsExpire bool `json:"isExpire" bson:"isExpire,omitempty"` // 奖章是否过期 true有效 false无效
|
||
}
|
||
|
||
type UserRes struct {
|
||
//年龄
|
||
Age int `form:"age" json:"age" bson:"age"`
|
||
//作品总数
|
||
CollectionCount int64 `form:"collectionCount" json:"collectionCount"`
|
||
//是否是vip
|
||
IsVIP bool `json:"isVip" bson:"isVip"`
|
||
//推广落地页
|
||
PromoteURL string `json:"promoteURL" bson:"promoteURL"`
|
||
// 邀请者推广码
|
||
InviterCode string `json:"inviterCode" bson:"inviterCode"`
|
||
//用户当前定位城市
|
||
City string `json:"city"`
|
||
//用户购买视频总数
|
||
BuyVidCount int64 `json:"buyVidCount"`
|
||
//用户访问web携带的Token
|
||
WebToken string `json:"webToken"`
|
||
//用户登陆方式
|
||
LoginType int `json:"loginType"`
|
||
// 邀请者推广码
|
||
AppStoreCode string `json:"appStoreCode" bson:"appStoreCode"`
|
||
// 视频折扣卡到期时间
|
||
VideoDiscountExpiration time.Time `json:"videoDiscountExpiration"`
|
||
// 新版金币视频观影券
|
||
NewGoldVideoCoupon []GoldVideoCoupon `json:"newGoldVideoCoupon"`
|
||
//我的图片作品总数
|
||
HappinessPlazaCount int64 `form:"happinessPlazaCount" json:"happinessPlazaCount"`
|
||
TotalInvite int64 `form:"totalInvite" json:"totalInvite"`
|
||
IsFollow bool `json:"isFollow"`
|
||
//是否弹领取框
|
||
IsPopUps bool `form:"isPopUps" json:"isPopUps"` //是否弹出领取框
|
||
WhoringCard WhoringCardInfo `json:"whoringCard" bson:"whoringCard"` // 白嫖卡信息
|
||
AdverAbTestShowType int `json:"adverAbTestShowType"` // 广告ab测展示类型 -1-首次免广告 0-所有广告都可以观看 其他数字N-新人注册N分钟内免广告
|
||
ImEnabled bool `json:"imEnabled"` // IM 功能是否启用
|
||
ImToken string `json:"imToken"` // IM 客户端登录 token
|
||
ImUserID int64 `json:"imUserId"` // IM 平台用户 ID
|
||
ImDynamicDomain string `json:"dynamicConfigDomain"` // IM SDK 动态配置域名
|
||
ImSocketURL string `json:"socketURL"` // IM SDK WebSocket 地址
|
||
User
|
||
UserOpt
|
||
RechargeLevel
|
||
IsUpgrade bool `json:"isUpgrade" bson:"isUpgrade"` // 是否vip升级
|
||
}
|
||
type WhoringCardInfo struct {
|
||
HasWhoringCard bool `json:"hasWhoringCard" bson:"hasWhoringCard"` // 是否有白嫖卡
|
||
DetailInfo []DetailInfo `json:"detailInfo" bson:"detailInfo"` // 详细信息
|
||
}
|
||
|
||
type DetailInfo struct {
|
||
ID primitive.ObjectID `json:"id" bson:"id"` // 白嫖卡ID
|
||
HasReturn bool `json:"hasReturn" bson:"hasReturn"` // 是否返现白嫖卡
|
||
TotalDays int64 `json:"totalDays" bson:"totalDays"` // 需要打卡天数
|
||
CurrentSignDays int64 `json:"currentSignDays" bson:"currentSignDays"` // 连续打卡天数
|
||
ForgetSignDays int64 `json:"forgetSignDays" bson:"forgetSignDays"` // 忘记打卡天数
|
||
RenewalSignDays int64 `json:"renewalSignDays" bson:"renewalSignDays"` // 补签打卡天数
|
||
RenewalSignPrice int64 `json:"renewalSignPrice" bson:"renewalSignPrice"` // 补签打卡价格
|
||
StartTime time.Time `json:"startTime" bson:"startTime"` // 开始时间
|
||
EndTime time.Time `json:"endTime" bson:"endTime"` // 结束时间
|
||
RecordTime []Record `json:"recordTime" bson:"recordTime"` // 打卡时间
|
||
}
|
||
|
||
type Record struct {
|
||
SignTime string `json:"signTime" bson:"signTime"` // 打卡时间
|
||
IsSign bool `json:"isSign" bson:"isSign"` // 是否打卡
|
||
}
|
||
|
||
// DevLoginP 块设备登陆参数
|
||
type DevLoginP struct {
|
||
DevID string `json:"devID"`
|
||
DevType string `json:"devType" ` //设备型号
|
||
SysType string `json:"sysType"` //操作系统类型 安卓 IOS
|
||
Ver string `json:"ver" ` //APP版本号
|
||
DevToken string `json:"devToken" bson:"devToken"` //设备token ios 推送用
|
||
CutInfos string `json:"cutInfos"` //剪切板信息
|
||
Mobile string `json:"mobile"` //手机号
|
||
QrCnt string `json:"qrCnt"` //二维码内容
|
||
}
|
||
|
||
// BaseInfo 返回的用户信息
|
||
type BaseInfo struct {
|
||
UID uint64 `json:"uid" bson:"uid"`
|
||
Name string `json:"name" bson:"name"`
|
||
Gender string `json:"gender" bson:"gender"`
|
||
Portrait string `json:"portrait" bson:"portrait"`
|
||
HasLocked bool `json:"hasLocked" bson:"hasLocked"` //已禁止登陆
|
||
HasBanned bool `json:"hasBanned" bson:"hasBanned"` //已禁言
|
||
}
|
||
|
||
// BaseInfoVip 返回的用户信息
|
||
type BaseInfoVip struct {
|
||
//用户id
|
||
UID uint64 `json:"uid"`
|
||
//姓名
|
||
Name string `json:"name"`
|
||
//性别
|
||
Gender string `json:"gender"`
|
||
//头像
|
||
Portrait string `json:"portrait"`
|
||
//已禁止登陆
|
||
HasLocked bool `json:"hasLocked"`
|
||
//已禁言
|
||
HasBanned bool `json:"hasBanned"`
|
||
//vip登记
|
||
VipLevel int `json:"vipLevel"`
|
||
//是否是vip
|
||
IsVip bool `json:"isVip"`
|
||
//充值等级
|
||
RechargeLevel int `json:"rechargeLevel" ` //头像显示的vip等级,累计充值决定
|
||
//是否是大v
|
||
SuperUser bool `json:"superUser"` //大v
|
||
//活跃值
|
||
ActiveValue int `json:"activeValue"` //活跃度
|
||
//是否官方认证
|
||
OfficialCert bool `json:"officialCert"` //是否官方认证
|
||
//年龄
|
||
Age int `json:"age"`
|
||
//关注数
|
||
Follows int64 `json:"follows"`
|
||
//粉丝数
|
||
Fans int64 `json:"fans"`
|
||
TotalWorks int64 `json:"totalWorks" bson:"totalWorks"` // 总作品数
|
||
Summary *string `json:"summary,omitempty" bson:"summary,omitempty"` // 简介
|
||
Awards []int `json:"awards"` // 用户奖章
|
||
UpTag string `json:"upTag" bson:"upTag"` // 用户标签
|
||
VipName string `json:"vipName" bson:"vipName"` // 用户VIP名称
|
||
VipExpireDate time.Time `json:"vipExpireDate" bson:"vipExpireDate"` // VIP过期时间
|
||
}
|
||
|
||
// UserInfo 用户基本信息和状态信息
|
||
type UserInfo struct {
|
||
BaseInfo
|
||
}
|
||
|
||
// LoginWithH5 h5登陆参数
|
||
type LoginWithH5 struct {
|
||
Mobile string `json:"mobile" ` // 手机号
|
||
Email string `json:"email"` // email
|
||
Account string `json:"account"` // 账号
|
||
Code string `json:"code" ` // 短信码
|
||
PassWord string `json:"passWord"` // 密码
|
||
DevID string `json:"devID" binding:"required"` // 设备id
|
||
SysType string `json:"sysType" binding:"required"` // 操作系统类型 安卓 IOS
|
||
CutInfos string `json:"cutInfos"` // 剪切板信息
|
||
IsAppStore bool `json:"isAppStore"` // 是否商店包用户
|
||
}
|
||
|
||
// LoginH5ByQRCode H5用户通过二维码登录
|
||
type LoginH5ByQRCode struct {
|
||
Content string `json:"content" binding:"required"` // 二维码内容
|
||
}
|
||
|
||
// GoldVideoCouponDetail 新版观影券详情
|
||
type GoldVideoCouponDetail struct {
|
||
Num int `json:"num"` // 观影券面值
|
||
Count int `json:"count"` // 观影券数量
|
||
Source videocoupon.GoldVideoCouponSource `json:"source"` // 观影券获得方式
|
||
}
|
||
|
||
// GoldVideoCoupon 观影券
|
||
type GoldVideoCoupon struct {
|
||
Position string `json:"position"` // 观影券位置,如“已获得”、“已使用”
|
||
Coupons []GoldVideoCouponDetail `json:"coupons"` // 观影券
|
||
}
|
||
|
||
type UserRights struct {
|
||
UID uint64 `json:"uid"` // 用户ID
|
||
GoldVideoCoupons []GoldVideoCoupon `json:"goldVideoCoupons"` // 观影券
|
||
Cards []Card `json:"cards"` // 各种会员卡特权卡信息
|
||
GoldVideoDiscount int `json:"videoDiscount"` // 视频折扣
|
||
VipExpireDate time.Time `json:"vipExpireDate"` // 会员到期时间
|
||
GoldVideoFreeExpire time.Time `json:"goldVideoFreeExpire"` // 金币视频免费到期时间
|
||
}
|
||
|
||
type Card struct {
|
||
Name string `json:"name"` // 卡片名称Name
|
||
Expiration time.Time `json:"expiration"` // 到期时间
|
||
}
|
||
|
||
type ResetPasswordRequest struct {
|
||
Email string `json:"email"` // email
|
||
Mobile string `json:"mobile"` // 电话号码
|
||
UID uint64 `json:"uid"` // 用户ID
|
||
TimeStamp int64 `json:"timestamp"` // 时间戳
|
||
RandNum int64 `json:"randNum"` // 随机数
|
||
}
|