// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.6 // protoc v7.34.1 // source: db.proto package pb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" unsafe "unsafe" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // 用户渠道 type UserChannel int32 const ( UserChannel_UNKNOWN UserChannel = 0 //未知 UserChannel_CHINA_HUAWEI UserChannel = 1 //中国-华为 UserChannel_CHINA_XIAOMI UserChannel = 2 //中国-小米 UserChannel_CHINA_OPPO UserChannel = 3 //中国-OPPO UserChannel_CHINA_VIVO UserChannel = 4 //中国-VIVO UserChannel_CHINA_HONOR UserChannel = 5 //中国-荣耀 UserChannel_OFFICIAL UserChannel = 100 //官方包 UserChannel_GLOBAL_APPLE UserChannel = 101 //全球-苹果 UserChannel_GLOBAL_GOOGLE UserChannel = 102 //全球-谷歌 ) // Enum value maps for UserChannel. var ( UserChannel_name = map[int32]string{ 0: "UNKNOWN", 1: "CHINA_HUAWEI", 2: "CHINA_XIAOMI", 3: "CHINA_OPPO", 4: "CHINA_VIVO", 5: "CHINA_HONOR", 100: "OFFICIAL", 101: "GLOBAL_APPLE", 102: "GLOBAL_GOOGLE", } UserChannel_value = map[string]int32{ "UNKNOWN": 0, "CHINA_HUAWEI": 1, "CHINA_XIAOMI": 2, "CHINA_OPPO": 3, "CHINA_VIVO": 4, "CHINA_HONOR": 5, "OFFICIAL": 100, "GLOBAL_APPLE": 101, "GLOBAL_GOOGLE": 102, } ) func (x UserChannel) Enum() *UserChannel { p := new(UserChannel) *p = x return p } func (x UserChannel) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (UserChannel) Descriptor() protoreflect.EnumDescriptor { return file_db_proto_enumTypes[0].Descriptor() } func (UserChannel) Type() protoreflect.EnumType { return &file_db_proto_enumTypes[0] } func (x UserChannel) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use UserChannel.Descriptor instead. func (UserChannel) EnumDescriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{0} } type Codetype int32 const ( Codetype_AUTHCODE Codetype = 0 //认证码 Codetype_DEVICECODE Codetype = 1 //设备码 ) // Enum value maps for Codetype. var ( Codetype_name = map[int32]string{ 0: "AUTHCODE", 1: "DEVICECODE", } Codetype_value = map[string]int32{ "AUTHCODE": 0, "DEVICECODE": 1, } ) func (x Codetype) Enum() *Codetype { p := new(Codetype) *p = x return p } func (x Codetype) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (Codetype) Descriptor() protoreflect.EnumDescriptor { return file_db_proto_enumTypes[1].Descriptor() } func (Codetype) Type() protoreflect.EnumType { return &file_db_proto_enumTypes[1] } func (x Codetype) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use Codetype.Descriptor instead. func (Codetype) EnumDescriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{1} } // 厂家数据管理 // 方案商所属芯片厂商(分组维度)。一个芯片厂商可以有多套方案,每套方案一条 DBSolutionProvider 记录。 // // ⚠️【2026-09-01 已停止扩充】芯片厂商已转成 chip_vendor 表(后台「芯片管理」页自助增删改, // 见 modules/console/model_chipvendor.go)。DBSolutionProvider.vendor 存的是那张表的 id, // 表 id 与下面这几个枚举值一一对应(启动时幂等补种),故存量数据无需迁移。 // 新增厂商请到后台加,**不要再往这个枚举里加值**——加了也没人读,反而会让人以为还得改代码发版。 // 本枚举保留是为了字段类型不变(proto3 开放枚举按数值收发,表 id ≥5 也能正常传输)。 type SolutionVendor int32 const ( SolutionVendor_VENDOR_UNKNOWN SolutionVendor = 0 //未指定 SolutionVendor_VENDOR_JIELI SolutionVendor = 1 //杰里 SolutionVendor_VENDOR_LANXUN SolutionVendor = 2 //蓝汛 SolutionVendor_VENDOR_HENGXUAN SolutionVendor = 3 //恒玄 SolutionVendor_VENDOR_BOTONG SolutionVendor = 4 //博通 ) // Enum value maps for SolutionVendor. var ( SolutionVendor_name = map[int32]string{ 0: "VENDOR_UNKNOWN", 1: "VENDOR_JIELI", 2: "VENDOR_LANXUN", 3: "VENDOR_HENGXUAN", 4: "VENDOR_BOTONG", } SolutionVendor_value = map[string]int32{ "VENDOR_UNKNOWN": 0, "VENDOR_JIELI": 1, "VENDOR_LANXUN": 2, "VENDOR_HENGXUAN": 3, "VENDOR_BOTONG": 4, } ) func (x SolutionVendor) Enum() *SolutionVendor { p := new(SolutionVendor) *p = x return p } func (x SolutionVendor) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (SolutionVendor) Descriptor() protoreflect.EnumDescriptor { return file_db_proto_enumTypes[2].Descriptor() } func (SolutionVendor) Type() protoreflect.EnumType { return &file_db_proto_enumTypes[2] } func (x SolutionVendor) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use SolutionVendor.Descriptor instead. func (SolutionVendor) EnumDescriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{2} } // 用户数据 type DBUser struct { state protoimpl.MessageState `protogen:"open.v1"` Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid" gorm:"uid:50;primaryKey"` //@go_tags(`gorm:"uid:50;primaryKey" json:"uid"`) 用户ID Mail string `protobuf:"bytes,2,opt,name=mail,proto3" json:"mail" gorm:"mail:50;index"` //@go_tags(`gorm:"mail:50;index" json:"mail"`) 邮箱 Phone string `protobuf:"bytes,3,opt,name=phone,proto3" json:"phone" gorm:"phone:50;index"` //@go_tags(`gorm:"phone:50;index" json:"phone"`) 手机号 Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name" gorm:"name:50"` //@go_tags(`gorm:"name:50" json:"name"`) 用户名 Avatar string `protobuf:"bytes,8,opt,name=avatar,proto3" json:"avatar" gorm:"avatar"` //@go_tags(`gorm:"avatar" json:"avatar"`) 玩家头像 Phonemodel string `protobuf:"bytes,10,opt,name=phonemodel,proto3" json:"phonemodel"` //@go_tags(`json:"phonemodel"`) 手机型号 Phonemac string `protobuf:"bytes,11,opt,name=phonemac,proto3" json:"phonemac" gorm:"phonemac:50;index"` //@go_tags(`gorm:"phonemac:50;index" json:"phonemac"`) 手机硬件id Account string `protobuf:"bytes,12,opt,name=account,proto3" json:"account" gorm:"account:50;index"` //@go_tags(`gorm:"account:50;index" json:"account"`) 登录帐号 Password string `protobuf:"bytes,13,opt,name=password,proto3" json:"password"` //@go_tags(`json:"password"`) 密码登录 Lastsgintime int64 `protobuf:"varint,20,opt,name=lastsgintime,proto3" json:"lastsgintime" gorm:"lastsgintime"` //@go_tags(`gorm:"lastsgintime" json:"lastsgintime"`) 最后登录四件 Createtime int64 `protobuf:"varint,21,opt,name=createtime,proto3" json:"createtime" gorm:"createtime"` //@go_tags(`gorm:"createtime" json:"createtime"`) 注册时间 Language string `protobuf:"bytes,22,opt,name=language,proto3" json:"language" gorm:"language"` //@go_tags(`gorm:"language" json:"language"`) 语言 Servicetag string `protobuf:"bytes,23,opt,name=servicetag,proto3" json:"servicetag" gorm:"servicetag"` //@go_tags(`gorm:"servicetag" json:"servicetag"`) 服务所属区 Channel UserChannel `protobuf:"varint,24,opt,name=channel,proto3,enum=UserChannel" json:"channel" gorm:"channel"` //@go_tags(`gorm:"channel" json:"channel"`) 用户渠道 Version string `protobuf:"bytes,25,opt,name=version,proto3" json:"version" gorm:"version"` //@go_tags(`gorm:"version" json:"version"`) 版本 State UserState `protobuf:"varint,26,opt,name=State,proto3,enum=UserState" json:"State" gorm:"State"` //@go_tags(`gorm:"State" json:"State"`) 状态 Canceltime int64 `protobuf:"varint,27,opt,name=canceltime,proto3" json:"canceltime" gorm:"canceltime"` //@go_tags(`gorm:"canceltime" json:"canceltime"`) 注销时间(0 未注销) Wxopenid string `protobuf:"bytes,30,opt,name=wxopenid,proto3" json:"wxopenid" gorm:"wxopenid:50;index"` //@go_tags(`gorm:"wxopenid:50;index" json:"wxopenid"`) 微信openid Googleopenid string `protobuf:"bytes,31,opt,name=googleopenid,proto3" json:"googleopenid" gorm:"googleopenid:50;index"` //@go_tags(`gorm:"googleopenid:50;index" json:"googleopenid"`) 谷歌openid Facebookopenid string `protobuf:"bytes,32,opt,name=facebookopenid,proto3" json:"facebookopenid" gorm:"facebookopenid:50;index"` //@go_tags(`gorm:"facebookopenid:50;index" json:"facebookopenid"`) FaceBook Appleopenid string `protobuf:"bytes,33,opt,name=appleopenid,proto3" json:"appleopenid" gorm:"appleopenid:50;index"` //@go_tags(`gorm:"appleopenid:50;index" json:"appleopenid"`) Isgiveaway bool `protobuf:"varint,36,opt,name=isgiveaway,proto3" json:"isgiveaway" gorm:"isgiveaway"` //@go_tags(`gorm:"isgiveaway" json:"isgiveaway"`) 是否是第一次绑定 Gender int32 `protobuf:"varint,37,opt,name=gender,proto3" json:"gender" gorm:"gender"` //@go_tags(`gorm:"gender" json:"gender"` 性别 1-男 2-女 CountryCode string `protobuf:"bytes,38,opt,name=country_code,json=countryCode,proto3" json:"country_code" gorm:"country_code"` //@go_tags(`gorm:"country_code" json:"country_code"` // 国家编码 ContinentCode string `protobuf:"bytes,39,opt,name=continent_code,json=continentCode,proto3" json:"continent_code" gorm:"continent_code"` //@go_tags(`gorm:"continent_code" json:"continent_code"` // 国家 Viplv int32 `protobuf:"varint,40,opt,name=viplv,proto3" json:"viplv" gorm:"viplv:50"` //@go_tags(`gorm:"viplv:50" json:"viplv"`) viplv Vipexptime int64 `protobuf:"varint,41,opt,name=vipexptime,proto3" json:"vipexptime" gorm:"vipexptime"` //@go_tags(`gorm:"vipexptime" json:"vipexptime"`) 会员过期时间 Aichatintegral int64 `protobuf:"varint,42,opt,name=aichatintegral,proto3" json:"aichatintegral" gorm:"aichatintegral"` //@go_tags(`gorm:"aichatintegral" json:"aichatintegral"`) ai聊天积分 Aichattotalintegral int64 `protobuf:"varint,43,opt,name=aichattotalintegral,proto3" json:"aichattotalintegral" gorm:"aichattotalintegral"` //@go_tags(`gorm:"aichattotalintegral" json:"aichattotalintegral"`) ai聊天总积分 Tradeintegral int64 `protobuf:"varint,44,opt,name=tradeintegral,proto3" json:"tradeintegral" gorm:"tradeintegral"` //@go_tags(`gorm:"tradeintegral" json:"tradeintegral"`) 翻译积分 Tradetotalintegral int64 `protobuf:"varint,45,opt,name=tradetotalintegral,proto3" json:"tradetotalintegral" gorm:"tradetotalintegral"` //@go_tags(`gorm:"tradetotalintegral" json:"tradetotalintegral"`) 翻译总积分 Meetintegral int64 `protobuf:"varint,46,opt,name=meetintegral,proto3" json:"meetintegral" gorm:"meetintegral"` //@go_tags(`gorm:"meetintegral" json:"meetintegral"`) 会议积分 Meettotalintegral int64 `protobuf:"varint,47,opt,name=meettotalintegral,proto3" json:"meettotalintegral" gorm:"meettotalintegral"` //@go_tags(`gorm:"meettotalintegral" json:"meettotalintegral"`) 会议总积分 Isactivatecode bool `protobuf:"varint,48,opt,name=isactivatecode,proto3" json:"isactivatecode" gorm:"isactivatecode"` //@go_tags(`gorm:"isactivatecode" json:"isactivatecode"`) 是否已使用过激活码(厂家公码)每账号一生限领一次 Lastbindproductid uint32 `protobuf:"varint,49,opt,name=lastbindproductid,proto3" json:"lastbindproductid" gorm:"lastbindproductid"` //@go_tags(`gorm:"lastbindproductid" json:"lastbindproductid"`) 最后绑定的产品ID(充值/消耗按此产品归属统计) Lastbindchannelid string `protobuf:"bytes,50,opt,name=lastbindchannelid,proto3" json:"lastbindchannelid" gorm:"lastbindchannelid;size:16;index"` //@go_tags(`gorm:"lastbindchannelid;size:16;index" json:"lastbindchannelid"`) 最后绑定设备的渠道商ID(充值/消耗按此渠道商归属统计与结算) Idverified bool `protobuf:"varint,51,opt,name=idverified,proto3" json:"idverified" gorm:"idverified;index"` //@go_tags(`gorm:"idverified;index" json:"idverified"`) 是否已通过身份证实名校验(明细见 useridverify 表) Idverifiedtime int64 `protobuf:"varint,52,opt,name=idverifiedtime,proto3" json:"idverifiedtime" gorm:"idverifiedtime"` //@go_tags(`gorm:"idverifiedtime" json:"idverifiedtime"`) 实名校验通过时间(0=未通过) // 用户算力余额(充值/后台调整获得,归属账号,不过期)。 // 三个旧额度桶(aichatintegral/tradeintegral/meetintegral)自 2026-09 起停用、不再作为闸门, // 存量值已按换算系数折进本字段(见 docs/会员权益与用量统计-设计与开发文档.md §10 存量迁移)。 Computebalance int64 `protobuf:"varint,53,opt,name=computebalance,proto3" json:"computebalance" gorm:"computebalance"` //@go_tags(`gorm:"computebalance" json:"computebalance"`) 算力余额(账号自有,不过期) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBUser) Reset() { *x = DBUser{} mi := &file_db_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBUser) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBUser) ProtoMessage() {} func (x *DBUser) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBUser.ProtoReflect.Descriptor instead. func (*DBUser) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{0} } func (x *DBUser) GetUid() string { if x != nil { return x.Uid } return "" } func (x *DBUser) GetMail() string { if x != nil { return x.Mail } return "" } func (x *DBUser) GetPhone() string { if x != nil { return x.Phone } return "" } func (x *DBUser) GetName() string { if x != nil { return x.Name } return "" } func (x *DBUser) GetAvatar() string { if x != nil { return x.Avatar } return "" } func (x *DBUser) GetPhonemodel() string { if x != nil { return x.Phonemodel } return "" } func (x *DBUser) GetPhonemac() string { if x != nil { return x.Phonemac } return "" } func (x *DBUser) GetAccount() string { if x != nil { return x.Account } return "" } func (x *DBUser) GetPassword() string { if x != nil { return x.Password } return "" } func (x *DBUser) GetLastsgintime() int64 { if x != nil { return x.Lastsgintime } return 0 } func (x *DBUser) GetCreatetime() int64 { if x != nil { return x.Createtime } return 0 } func (x *DBUser) GetLanguage() string { if x != nil { return x.Language } return "" } func (x *DBUser) GetServicetag() string { if x != nil { return x.Servicetag } return "" } func (x *DBUser) GetChannel() UserChannel { if x != nil { return x.Channel } return UserChannel_UNKNOWN } func (x *DBUser) GetVersion() string { if x != nil { return x.Version } return "" } func (x *DBUser) GetState() UserState { if x != nil { return x.State } return UserState_Normal } func (x *DBUser) GetCanceltime() int64 { if x != nil { return x.Canceltime } return 0 } func (x *DBUser) GetWxopenid() string { if x != nil { return x.Wxopenid } return "" } func (x *DBUser) GetGoogleopenid() string { if x != nil { return x.Googleopenid } return "" } func (x *DBUser) GetFacebookopenid() string { if x != nil { return x.Facebookopenid } return "" } func (x *DBUser) GetAppleopenid() string { if x != nil { return x.Appleopenid } return "" } func (x *DBUser) GetIsgiveaway() bool { if x != nil { return x.Isgiveaway } return false } func (x *DBUser) GetGender() int32 { if x != nil { return x.Gender } return 0 } func (x *DBUser) GetCountryCode() string { if x != nil { return x.CountryCode } return "" } func (x *DBUser) GetContinentCode() string { if x != nil { return x.ContinentCode } return "" } func (x *DBUser) GetViplv() int32 { if x != nil { return x.Viplv } return 0 } func (x *DBUser) GetVipexptime() int64 { if x != nil { return x.Vipexptime } return 0 } func (x *DBUser) GetAichatintegral() int64 { if x != nil { return x.Aichatintegral } return 0 } func (x *DBUser) GetAichattotalintegral() int64 { if x != nil { return x.Aichattotalintegral } return 0 } func (x *DBUser) GetTradeintegral() int64 { if x != nil { return x.Tradeintegral } return 0 } func (x *DBUser) GetTradetotalintegral() int64 { if x != nil { return x.Tradetotalintegral } return 0 } func (x *DBUser) GetMeetintegral() int64 { if x != nil { return x.Meetintegral } return 0 } func (x *DBUser) GetMeettotalintegral() int64 { if x != nil { return x.Meettotalintegral } return 0 } func (x *DBUser) GetIsactivatecode() bool { if x != nil { return x.Isactivatecode } return false } func (x *DBUser) GetLastbindproductid() uint32 { if x != nil { return x.Lastbindproductid } return 0 } func (x *DBUser) GetLastbindchannelid() string { if x != nil { return x.Lastbindchannelid } return "" } func (x *DBUser) GetIdverified() bool { if x != nil { return x.Idverified } return false } func (x *DBUser) GetIdverifiedtime() int64 { if x != nil { return x.Idverifiedtime } return 0 } func (x *DBUser) GetComputebalance() int64 { if x != nil { return x.Computebalance } return 0 } // 用户实名认证记录(表 useridverify)。一个用户一行。 // // 合规口径:身份证号**全文不落库**——只存掩码(展示用)与 SHA-256 指纹(排查同证多号用)。 // 指纹加了盐(ID_HASH_SALT),避免拿全国身份证号做彩虹表反查。 // 姓名按业务需要保留原文(开票/客服核实要用),若后续要求更严可再改为加密字段。 type DBUserIdVerify struct { state protoimpl.MessageState `protogen:"open.v1"` Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid" gorm:"uid;size:50;primaryKey"` //@go_tags(`gorm:"uid;size:50;primaryKey" json:"uid"`) 用户ID Realname string `protobuf:"bytes,2,opt,name=realname,proto3" json:"realname" gorm:"realname;size:64"` //@go_tags(`gorm:"realname;size:64" json:"realname"`) 姓名 Idcardmask string `protobuf:"bytes,3,opt,name=idcardmask,proto3" json:"idcardmask" gorm:"idcardmask;size:32"` //@go_tags(`gorm:"idcardmask;size:32" json:"idcardmask"`) 身份证号掩码,如 4403**********1234 Idcardhash string `protobuf:"bytes,4,opt,name=idcardhash,proto3" json:"idcardhash" gorm:"idcardhash;size:64;index"` //@go_tags(`gorm:"idcardhash;size:64;index" json:"idcardhash"`) 身份证号加盐 SHA-256(后台排查"同一证件多个账号") Provider string `protobuf:"bytes,5,opt,name=provider,proto3" json:"provider" gorm:"provider;size:32"` //@go_tags(`gorm:"provider;size:32" json:"provider"`) 核验服务商 aliyun/tencent Svcid string `protobuf:"bytes,6,opt,name=svcid,proto3" json:"svcid" gorm:"svcid;size:64"` //@go_tags(`gorm:"svcid;size:64" json:"svcid"`) 使用的第三方服务配置 id Bizcode string `protobuf:"bytes,7,opt,name=bizcode,proto3" json:"bizcode" gorm:"bizcode;size:16"` //@go_tags(`gorm:"bizcode;size:16" json:"bizcode"`) 服务商返回的原始结果码(阿里 BizCode / 腾讯 Result) Verifytime int64 `protobuf:"varint,8,opt,name=verifytime,proto3" json:"verifytime" gorm:"verifytime"` //@go_tags(`gorm:"verifytime" json:"verifytime"`) 校验通过时间(0=未通过) Failcount int32 `protobuf:"varint,9,opt,name=failcount,proto3" json:"failcount" gorm:"failcount"` //@go_tags(`gorm:"failcount" json:"failcount"`) 累计失败次数(限频用) Lastfailtime int64 `protobuf:"varint,10,opt,name=lastfailtime,proto3" json:"lastfailtime" gorm:"lastfailtime"` //@go_tags(`gorm:"lastfailtime" json:"lastfailtime"`) 最后一次失败时间 Createtime int64 `protobuf:"varint,11,opt,name=createtime,proto3" json:"createtime" gorm:"createtime"` //@go_tags(`gorm:"createtime" json:"createtime"`) 首次提交时间 Updatetime int64 `protobuf:"varint,12,opt,name=updatetime,proto3" json:"updatetime" gorm:"updatetime"` //@go_tags(`gorm:"updatetime" json:"updatetime"`) 最后更新时间 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBUserIdVerify) Reset() { *x = DBUserIdVerify{} mi := &file_db_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBUserIdVerify) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBUserIdVerify) ProtoMessage() {} func (x *DBUserIdVerify) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBUserIdVerify.ProtoReflect.Descriptor instead. func (*DBUserIdVerify) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{1} } func (x *DBUserIdVerify) GetUid() string { if x != nil { return x.Uid } return "" } func (x *DBUserIdVerify) GetRealname() string { if x != nil { return x.Realname } return "" } func (x *DBUserIdVerify) GetIdcardmask() string { if x != nil { return x.Idcardmask } return "" } func (x *DBUserIdVerify) GetIdcardhash() string { if x != nil { return x.Idcardhash } return "" } func (x *DBUserIdVerify) GetProvider() string { if x != nil { return x.Provider } return "" } func (x *DBUserIdVerify) GetSvcid() string { if x != nil { return x.Svcid } return "" } func (x *DBUserIdVerify) GetBizcode() string { if x != nil { return x.Bizcode } return "" } func (x *DBUserIdVerify) GetVerifytime() int64 { if x != nil { return x.Verifytime } return 0 } func (x *DBUserIdVerify) GetFailcount() int32 { if x != nil { return x.Failcount } return 0 } func (x *DBUserIdVerify) GetLastfailtime() int64 { if x != nil { return x.Lastfailtime } return 0 } func (x *DBUserIdVerify) GetCreatetime() int64 { if x != nil { return x.Createtime } return 0 } func (x *DBUserIdVerify) GetUpdatetime() int64 { if x != nil { return x.Updatetime } return 0 } // 用户设备数据 type DBUserDivice struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"id:50;primaryKey;autoIncrement json:"` //@go_tags(`gorm:"id:50;primaryKey;autoIncrement json:"id"`) id Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" gorm:"uid:50;index"` //@go_tags(`gorm:"uid:50;index" json:"uid"`) 用户ID Productid uint32 `protobuf:"varint,3,opt,name=productid,proto3" json:"productid" gorm:"productid:50;index"` //@go_tags(`gorm:"productid:50;index" json:"productid"`) 产品ID Devicetype DeviceType `protobuf:"varint,4,opt,name=devicetype,proto3,enum=DeviceType" json:"devicetype" gorm:"devicetype:50;index"` //@go_tags(`gorm:"devicetype:50;index" json:"devicetype"`) 设备类型 Devicename string `protobuf:"bytes,5,opt,name=devicename,proto3" json:"devicename" gorm:"devicename:50"` //@go_tags(`gorm:"devicename:50" json:"devicename"`) 设备名称 Devicemac string `protobuf:"bytes,6,opt,name=devicemac,proto3" json:"devicemac" gorm:"devicemac:50;index"` //@go_tags(`gorm:"devicemac:50;index" json:"devicemac"`) 设备地址 License string `protobuf:"bytes,7,opt,name=license,proto3" json:"license" gorm:"license:50;index"` //@go_tags(`gorm:"license:50;index" json:"license"`) 认证码 Cmei string `protobuf:"bytes,8,opt,name=cmei,proto3" json:"cmei" gorm:"cmei:50;index"` //@go_tags(`gorm:"cmei:50;index" json:"cmei"`) cmei码 Version string `protobuf:"bytes,9,opt,name=version,proto3" json:"version" gorm:"version:50"` //@go_tags(`gorm:"version:50" json:"version"`) 版本 Lxsetting string `protobuf:"bytes,10,opt,name=lxsetting,proto3" json:"lxsetting" gorm:"lxsetting:256"` //@go_tags(`gorm:"lxsetting:256" json:"lxsetting"`) 蓝训设置 Channelid string `protobuf:"bytes,11,opt,name=channelid,proto3" json:"channelid" gorm:"channelid;size:16;index"` //@go_tags(`gorm:"channelid;size:16;index" json:"channelid"`) 渠道商ID(绑定时从授权码带入,空=未分配渠道) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBUserDivice) Reset() { *x = DBUserDivice{} mi := &file_db_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBUserDivice) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBUserDivice) ProtoMessage() {} func (x *DBUserDivice) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBUserDivice.ProtoReflect.Descriptor instead. func (*DBUserDivice) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{2} } func (x *DBUserDivice) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *DBUserDivice) GetUid() string { if x != nil { return x.Uid } return "" } func (x *DBUserDivice) GetProductid() uint32 { if x != nil { return x.Productid } return 0 } func (x *DBUserDivice) GetDevicetype() DeviceType { if x != nil { return x.Devicetype } return DeviceType_DeviceTypeUnknown } func (x *DBUserDivice) GetDevicename() string { if x != nil { return x.Devicename } return "" } func (x *DBUserDivice) GetDevicemac() string { if x != nil { return x.Devicemac } return "" } func (x *DBUserDivice) GetLicense() string { if x != nil { return x.License } return "" } func (x *DBUserDivice) GetCmei() string { if x != nil { return x.Cmei } return "" } func (x *DBUserDivice) GetVersion() string { if x != nil { return x.Version } return "" } func (x *DBUserDivice) GetLxsetting() string { if x != nil { return x.Lxsetting } return "" } func (x *DBUserDivice) GetChannelid() string { if x != nil { return x.Channelid } return "" } // 用户画像数据结构 type DBUserPortrait struct { state protoimpl.MessageState `protogen:"open.v1"` Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid" gorm:"uid:50;primaryKey"` //@go_tags(`gorm:"uid:50;primaryKey" json:"uid"`) 用户ID Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Gender int32 `protobuf:"varint,3,opt,name=gender,proto3" json:"gender,omitempty"` Age string `protobuf:"bytes,4,opt,name=age,proto3" json:"age,omitempty"` City string `protobuf:"bytes,5,opt,name=city,proto3" json:"city,omitempty"` Homeaddr string `protobuf:"bytes,6,opt,name=homeaddr,proto3" json:"homeaddr,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBUserPortrait) Reset() { *x = DBUserPortrait{} mi := &file_db_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBUserPortrait) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBUserPortrait) ProtoMessage() {} func (x *DBUserPortrait) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBUserPortrait.ProtoReflect.Descriptor instead. func (*DBUserPortrait) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{3} } func (x *DBUserPortrait) GetUid() string { if x != nil { return x.Uid } return "" } func (x *DBUserPortrait) GetName() string { if x != nil { return x.Name } return "" } func (x *DBUserPortrait) GetGender() int32 { if x != nil { return x.Gender } return 0 } func (x *DBUserPortrait) GetAge() string { if x != nil { return x.Age } return "" } func (x *DBUserPortrait) GetCity() string { if x != nil { return x.City } return "" } func (x *DBUserPortrait) GetHomeaddr() string { if x != nil { return x.Homeaddr } return "" } // 智能体数据 type DBAgent struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" gorm:"id:50;primaryKey"` //@go_tags(`gorm:"id:50;primaryKey" json:"id"`) 智能体id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name" gorm:"name:50"` //@go_tags(`gorm:"name:50" json:"name"`) 智能体名称 AvatarUrl string `protobuf:"bytes,3,opt,name=avatarUrl,proto3" json:"avatarUrl" gorm:"avatarUrl:50"` //@go_tags(`gorm:"avatarUrl:50" json:"avatarUrl"`) 头像 Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description" gorm:"description"` //@go_tags(`gorm:"description" json:"description"`) 智能体描述 Tag string `protobuf:"bytes,5,opt,name=tag,proto3" json:"tag" gorm:"tag"` //@go_tags(`gorm:"tag" json:"tag"`) 类型 多个用逗号分隔 Enable bool `protobuf:"varint,6,opt,name=enable,proto3" json:"enable" gorm:"enable"` //@go_tags(`gorm:"enable" json:"enable"`) 是否启用 IsOnline bool `protobuf:"varint,7,opt,name=isOnline,proto3" json:"isOnline" gorm:"isOnline"` //@go_tags(`gorm:"isOnline" json:"isOnline"`) 是否在线 WelcomeMessage string `protobuf:"bytes,8,opt,name=welcomeMessage,proto3" json:"welcomeMessage" gorm:"welcomeMessage"` //@go_tags(`gorm:"welcomeMessage" json:"welcomeMessage"`) 文字欢迎消息 VoiceWelcomeMessage string `protobuf:"bytes,9,opt,name=voiceWelcomeMessage,proto3" json:"voiceWelcomeMessage" gorm:"voiceWelcomeMessage"` //@go_tags(`gorm:"voiceWelcomeMessage" json:"voiceWelcomeMessage"`) 声音欢迎消息 SystemPrompt string `protobuf:"bytes,10,opt,name=systemPrompt,proto3" json:"systemPrompt" gorm:"systemPrompt"` //@go_tags(`gorm:"systemPrompt" json:"systemPrompt"`) 提示词 Languages string `protobuf:"bytes,11,opt,name=languages,proto3" json:"languages" gorm:"languages"` //@go_tags(`gorm:"languages" json:"languages"`) 支持语言 多个用逗号分隔 zh-CN,en-US Source AgentSource `protobuf:"varint,12,opt,name=source,proto3,enum=AgentSource" json:"source" gorm:"source;index"` //@go_tags(`gorm:"source;index" json:"source"`) Agent来源 0:内置 1:PolyChat 2:阿里云 3:火山 ServiceData string `protobuf:"bytes,13,opt,name=serviceData,proto3" json:"serviceData" gorm:"serviceData"` //@go_tags(`gorm:"serviceData" json:"serviceData"`) 服务数据 JSON 存放各平台所需的接入参数 RoleId string `protobuf:"bytes,14,opt,name=roleId,proto3" json:"roleId" gorm:"roleId:50;index"` //@go_tags(`gorm:"roleId:50;index" json:"roleId"`) 角色ID Voice string `protobuf:"bytes,15,opt,name=voice,proto3" json:"voice" gorm:"voice"` //@go_tags(`gorm:"voice" json:"voice"`) 音色配置 多个用逗号分隔 平台音色id Voices string `protobuf:"bytes,16,opt,name=voices,proto3" json:"voices" gorm:"voices"` //@go_tags(`gorm:"voices" json:"voices"`) 音色配置 多个用逗号分隔 平台音色id Sort int32 `protobuf:"varint,17,opt,name=sort,proto3" json:"sort" gorm:"sort;index"` //@go_tags(`gorm:"sort;index" json:"sort"`) 排序权重 值越小越靠前 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBAgent) Reset() { *x = DBAgent{} mi := &file_db_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBAgent) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBAgent) ProtoMessage() {} func (x *DBAgent) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBAgent.ProtoReflect.Descriptor instead. func (*DBAgent) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{4} } func (x *DBAgent) GetId() string { if x != nil { return x.Id } return "" } func (x *DBAgent) GetName() string { if x != nil { return x.Name } return "" } func (x *DBAgent) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } func (x *DBAgent) GetDescription() string { if x != nil { return x.Description } return "" } func (x *DBAgent) GetTag() string { if x != nil { return x.Tag } return "" } func (x *DBAgent) GetEnable() bool { if x != nil { return x.Enable } return false } func (x *DBAgent) GetIsOnline() bool { if x != nil { return x.IsOnline } return false } func (x *DBAgent) GetWelcomeMessage() string { if x != nil { return x.WelcomeMessage } return "" } func (x *DBAgent) GetVoiceWelcomeMessage() string { if x != nil { return x.VoiceWelcomeMessage } return "" } func (x *DBAgent) GetSystemPrompt() string { if x != nil { return x.SystemPrompt } return "" } func (x *DBAgent) GetLanguages() string { if x != nil { return x.Languages } return "" } func (x *DBAgent) GetSource() AgentSource { if x != nil { return x.Source } return AgentSource_AgentSourceBuiltin } func (x *DBAgent) GetServiceData() string { if x != nil { return x.ServiceData } return "" } func (x *DBAgent) GetRoleId() string { if x != nil { return x.RoleId } return "" } func (x *DBAgent) GetVoice() string { if x != nil { return x.Voice } return "" } func (x *DBAgent) GetVoices() string { if x != nil { return x.Voices } return "" } func (x *DBAgent) GetSort() int32 { if x != nil { return x.Sort } return 0 } // mcp 服务列表 type DBMcpServer struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" gorm:"id:50;primaryKey"` //@go_tags(`gorm:"id:50;primaryKey" json:"id"`) mcp服务id Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name" gorm:"name:50"` //@go_tags(`gorm:"name:50" json:"name"`) mcp服务名称 Region Region `protobuf:"varint,3,opt,name=region,proto3,enum=Region" json:"region" gorm:"region;index"` //@go_tags(`gorm:"region;index" json:"region"`) 配置组 Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description" gorm:"description"` //@go_tags(`gorm:"description" json:"description"`) mcp服务名称 Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url" gorm:"url"` //@go_tags(`gorm:"url" json:"url"`) 地址 Stype MCPServerType `protobuf:"varint,6,opt,name=stype,proto3,enum=MCPServerType" json:"type" gorm:"stype"` //@go_tags(`gorm:"stype" json:"type"`) 服务类型 Tools string `protobuf:"bytes,7,opt,name=tools,proto3" json:"tools" gorm:"tools"` //@go_tags(`gorm:"tools" json:"tools"`) 启用工具 空表示 全部启用 Enable bool `protobuf:"varint,8,opt,name=enable,proto3" json:"enable" gorm:"enable"` //@go_tags(`gorm:"enable" json:"enable"`) 是否启用 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBMcpServer) Reset() { *x = DBMcpServer{} mi := &file_db_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBMcpServer) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBMcpServer) ProtoMessage() {} func (x *DBMcpServer) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBMcpServer.ProtoReflect.Descriptor instead. func (*DBMcpServer) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{5} } func (x *DBMcpServer) GetId() string { if x != nil { return x.Id } return "" } func (x *DBMcpServer) GetName() string { if x != nil { return x.Name } return "" } func (x *DBMcpServer) GetRegion() Region { if x != nil { return x.Region } return Region_RegionUnknown } func (x *DBMcpServer) GetDescription() string { if x != nil { return x.Description } return "" } func (x *DBMcpServer) GetUrl() string { if x != nil { return x.Url } return "" } func (x *DBMcpServer) GetStype() MCPServerType { if x != nil { return x.Stype } return MCPServerType_Http } func (x *DBMcpServer) GetTools() string { if x != nil { return x.Tools } return "" } func (x *DBMcpServer) GetEnable() bool { if x != nil { return x.Enable } return false } // app 配置数据 type DBGlobalConfigItem struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primaryKey;autoIncrement json:"` //@go_tags(`gorm:"primaryKey;autoIncrement json:"group"`) 配置组 Region Region `protobuf:"varint,2,opt,name=region,proto3,enum=Region" json:"region,omitempty" gorm:"region;index json:"` //@go_tags(`gorm:"region;index json:"region"`) 区域枚举,用于根据区域适配服务配置 Group string `protobuf:"bytes,3,opt,name=group,proto3" json:"group" gorm:"group:50;index"` //@go_tags(`gorm:"group:50;index" json:"group"`) 配置组 Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBGlobalConfigItem) Reset() { *x = DBGlobalConfigItem{} mi := &file_db_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBGlobalConfigItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBGlobalConfigItem) ProtoMessage() {} func (x *DBGlobalConfigItem) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBGlobalConfigItem.ProtoReflect.Descriptor instead. func (*DBGlobalConfigItem) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{6} } func (x *DBGlobalConfigItem) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *DBGlobalConfigItem) GetRegion() Region { if x != nil { return x.Region } return Region_RegionUnknown } func (x *DBGlobalConfigItem) GetGroup() string { if x != nil { return x.Group } return "" } func (x *DBGlobalConfigItem) GetKey() string { if x != nil { return x.Key } return "" } func (x *DBGlobalConfigItem) GetValue() string { if x != nil { return x.Value } return "" } func (x *DBGlobalConfigItem) GetDescription() string { if x != nil { return x.Description } return "" } // app 配置数据 type DBAppConfigItem struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" gorm:"primaryKey;autoIncrement json:"` //@go_tags(`gorm:"primaryKey;autoIncrement json:"group"`) 配置组 Group string `protobuf:"bytes,3,opt,name=group,proto3" json:"group" gorm:"group:50;index"` //@go_tags(`gorm:"group:50;index" json:"group"`) 配置组 Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBAppConfigItem) Reset() { *x = DBAppConfigItem{} mi := &file_db_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBAppConfigItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBAppConfigItem) ProtoMessage() {} func (x *DBAppConfigItem) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBAppConfigItem.ProtoReflect.Descriptor instead. func (*DBAppConfigItem) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{7} } func (x *DBAppConfigItem) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *DBAppConfigItem) GetGroup() string { if x != nil { return x.Group } return "" } func (x *DBAppConfigItem) GetKey() string { if x != nil { return x.Key } return "" } func (x *DBAppConfigItem) GetValue() string { if x != nil { return x.Value } return "" } func (x *DBAppConfigItem) GetDescription() string { if x != nil { return x.Description } return "" } // 方案商(芯片/整体方案提供方) // id 是「手工指定的有含义编码」,不是自增:十六进制看,如 0xABEF=杰里老方案、0xC101=杰里01方案。 // 历史 ID(ABEF/ABF0~ABF4/AB21)已烧录进设备,不可变更;新增方案商一律用 C 开头段(C1xx…)。 type DBSolutionProvider struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey"` //@go_tags(`gorm:"id;primaryKey" json:"id"`) 方案商id(手工指定,不自增) Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name" gorm:"name;index"` //@go_tags(`gorm:"name;index" json:"name"`) 方案商公司名称 Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description" gorm:"description"` //@go_tags(`gorm:"description" json:"description"`) 方案说明(这套方案做什么) Contactmails string `protobuf:"bytes,4,opt,name=contactmails,proto3" json:"contactmails" gorm:"contactmails"` //@go_tags(`gorm:"contactmails" json:"contactmails"`) 联系人邮箱 Createtime int64 `protobuf:"varint,5,opt,name=createtime,proto3" json:"createtime" gorm:"createtime"` //@go_tags(`gorm:"createtime" json:"createtime"`) 创建时间 Vendor SolutionVendor `protobuf:"varint,6,opt,name=vendor,proto3,enum=SolutionVendor" json:"vendor" gorm:"vendor;index"` //@go_tags(`gorm:"vendor;index" json:"vendor"`) 所属芯片厂商分组(杰里/蓝汛/恒玄/博通) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBSolutionProvider) Reset() { *x = DBSolutionProvider{} mi := &file_db_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBSolutionProvider) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBSolutionProvider) ProtoMessage() {} func (x *DBSolutionProvider) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBSolutionProvider.ProtoReflect.Descriptor instead. func (*DBSolutionProvider) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{8} } func (x *DBSolutionProvider) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *DBSolutionProvider) GetName() string { if x != nil { return x.Name } return "" } func (x *DBSolutionProvider) GetDescription() string { if x != nil { return x.Description } return "" } func (x *DBSolutionProvider) GetContactmails() string { if x != nil { return x.Contactmails } return "" } func (x *DBSolutionProvider) GetCreatetime() int64 { if x != nil { return x.Createtime } return 0 } func (x *DBSolutionProvider) GetVendor() SolutionVendor { if x != nil { return x.Vendor } return SolutionVendor_VENDOR_UNKNOWN } // 品牌商(原厂家;归属一个方案商) type DBBrand struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey;autoIncrement"` //@go_tags(`gorm:"id;primaryKey;autoIncrement" json:"id"`) 品牌商id Brand string `protobuf:"bytes,2,opt,name=brand,proto3" json:"brand" gorm:"brand"` //@go_tags(`gorm:"brand" json:"brand"`) 品牌商名称 // 【已废弃】品牌商不归属方案商——方案商是「产品用了哪套芯片方案」,同一品牌不同产品可以用不同方案, // 所以归属挂在 DBProduct.providerid 上。本字段与 brand.providerid 列均已停写,仅为兼容旧数据保留,勿再使用。 Providerid uint32 `protobuf:"varint,3,opt,name=providerid,proto3" json:"providerid" gorm:"providerid;index"` //@go_tags(`gorm:"providerid;index" json:"providerid"`) [已废弃]原「归属方案商id」 Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description" gorm:"description"` //@go_tags(`gorm:"description" json:"description"`) 描述 Contactmails string `protobuf:"bytes,5,opt,name=contactmails,proto3" json:"contactmails" gorm:"contactmails"` //@go_tags(`gorm:"contactmails" json:"contactmails"`) 联系人邮箱 xxx@qq.com,xxx@gmail.com Productlists string `protobuf:"bytes,7,opt,name=productlists,proto3" json:"productlists" gorm:"productlists"` //@go_tags(`gorm:"productlists" json:"productlists"`) 产品列表 1,2,3 Sharerate int32 `protobuf:"varint,8,opt,name=sharerate,proto3" json:"sharerate" gorm:"sharerate"` //@go_tags(`gorm:"sharerate" json:"sharerate"`) 分成比例(万分比):平台从订单实付里分给品牌商的总提成,渠道商再从这份里切 Createtime int64 `protobuf:"varint,9,opt,name=createtime,proto3" json:"createtime" gorm:"createtime"` //@go_tags(`gorm:"createtime" json:"createtime"`) 创建时间(秒);历史品牌商为0 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBBrand) Reset() { *x = DBBrand{} mi := &file_db_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBBrand) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBBrand) ProtoMessage() {} func (x *DBBrand) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBBrand.ProtoReflect.Descriptor instead. func (*DBBrand) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{9} } func (x *DBBrand) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *DBBrand) GetBrand() string { if x != nil { return x.Brand } return "" } func (x *DBBrand) GetProviderid() uint32 { if x != nil { return x.Providerid } return 0 } func (x *DBBrand) GetDescription() string { if x != nil { return x.Description } return "" } func (x *DBBrand) GetContactmails() string { if x != nil { return x.Contactmails } return "" } func (x *DBBrand) GetProductlists() string { if x != nil { return x.Productlists } return "" } func (x *DBBrand) GetSharerate() int32 { if x != nil { return x.Sharerate } return 0 } func (x *DBBrand) GetCreatetime() int64 { if x != nil { return x.Createtime } return 0 } // 渠道商(挂在品牌商下,一个品牌商可绑定多个渠道商) // id 用 8 位可读短码而非自增:会印在生产台账/结算单上并对外沟通,短码可读、不暴露规模, // 且作为统计与结算的维度键(string)跨库不冲突。新增走审批:status=0 时不可用于生产。 type DBChannel struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" gorm:"column:id;size:16;primaryKey"` //@go_tags(`gorm:"column:id;size:16;primaryKey" json:"id"`) 渠道商id(短码) // 归属品牌商id。**0 = 不归属任何品牌商**(后台新增渠道商时已不再要求选品牌商, // 渠道商是全局实体)。仅 addOfficialChannel 生成的「品牌官方渠道」才带非 0 值。 Brandid uint32 `protobuf:"varint,2,opt,name=brandid,proto3" json:"brandid" gorm:"brandid;index"` //@go_tags(`gorm:"brandid;index" json:"brandid"`) 归属品牌商id(0=全局渠道商) Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name" gorm:"name;index"` //@go_tags(`gorm:"name;index" json:"name"`) 渠道商名称 Contact string `protobuf:"bytes,4,opt,name=contact,proto3" json:"contact" gorm:"contact"` //@go_tags(`gorm:"contact" json:"contact"`) 联系人/电话 Contactmails string `protobuf:"bytes,5,opt,name=contactmails,proto3" json:"contactmails" gorm:"contactmails"` //@go_tags(`gorm:"contactmails" json:"contactmails"`) 联系人邮箱 xxx@qq.com,xxx@gmail.com Remark string `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark" gorm:"remark"` //@go_tags(`gorm:"remark" json:"remark"`) 备注 // 【已停止在后台维护,2026-09-02】分成比例改为按【生产批次】设置(production_batch.sharerate), // 因为同一渠道商不同批次的比例可能不同。本列保留存量值,月结算暂时仍读它(见 api_settlement.go), // 新建渠道商一律为 0。别再在渠道商表单里加回这个字段。 Sharerate int32 `protobuf:"varint,7,opt,name=sharerate,proto3" json:"sharerate" gorm:"sharerate"` //@go_tags(`gorm:"sharerate" json:"sharerate"`) [遗留]渠道商级分成比例(万分比) Status int32 `protobuf:"varint,8,opt,name=status,proto3" json:"status" gorm:"status;index"` //@go_tags(`gorm:"status;index" json:"status"`) 状态 0:待审核 1:启用 2:停用 3:驳回 Applyaccount string `protobuf:"bytes,9,opt,name=applyaccount,proto3" json:"applyaccount" gorm:"applyaccount"` //@go_tags(`gorm:"applyaccount" json:"applyaccount"`) 申请人账号(品牌商自助添加时记录) Auditaccount string `protobuf:"bytes,10,opt,name=auditaccount,proto3" json:"auditaccount" gorm:"auditaccount"` //@go_tags(`gorm:"auditaccount" json:"auditaccount"`) 审核人账号 Auditremark string `protobuf:"bytes,11,opt,name=auditremark,proto3" json:"auditremark" gorm:"auditremark"` //@go_tags(`gorm:"auditremark" json:"auditremark"`) 审核意见(驳回原因) Audittime int64 `protobuf:"varint,12,opt,name=audittime,proto3" json:"audittime" gorm:"audittime"` //@go_tags(`gorm:"audittime" json:"audittime"`) 审核时间 Createtime int64 `protobuf:"varint,13,opt,name=createtime,proto3" json:"createtime" gorm:"createtime"` //@go_tags(`gorm:"createtime" json:"createtime"`) 创建时间 Updatetime int64 `protobuf:"varint,14,opt,name=updatetime,proto3" json:"updatetime" gorm:"updatetime"` //@go_tags(`gorm:"updatetime" json:"updatetime"`) 更新时间 Official bool `protobuf:"varint,15,opt,name=official,proto3" json:"official" gorm:"official;index"` //@go_tags(`gorm:"official;index" json:"official"`) 品牌官方渠道:随品牌商创建自动生成、直接启用,不可删除(品牌自营的那条销售线) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBChannel) Reset() { *x = DBChannel{} mi := &file_db_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBChannel) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBChannel) ProtoMessage() {} func (x *DBChannel) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBChannel.ProtoReflect.Descriptor instead. func (*DBChannel) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{10} } func (x *DBChannel) GetId() string { if x != nil { return x.Id } return "" } func (x *DBChannel) GetBrandid() uint32 { if x != nil { return x.Brandid } return 0 } func (x *DBChannel) GetName() string { if x != nil { return x.Name } return "" } func (x *DBChannel) GetContact() string { if x != nil { return x.Contact } return "" } func (x *DBChannel) GetContactmails() string { if x != nil { return x.Contactmails } return "" } func (x *DBChannel) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *DBChannel) GetSharerate() int32 { if x != nil { return x.Sharerate } return 0 } func (x *DBChannel) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *DBChannel) GetApplyaccount() string { if x != nil { return x.Applyaccount } return "" } func (x *DBChannel) GetAuditaccount() string { if x != nil { return x.Auditaccount } return "" } func (x *DBChannel) GetAuditremark() string { if x != nil { return x.Auditremark } return "" } func (x *DBChannel) GetAudittime() int64 { if x != nil { return x.Audittime } return 0 } func (x *DBChannel) GetCreatetime() int64 { if x != nil { return x.Createtime } return 0 } func (x *DBChannel) GetUpdatetime() int64 { if x != nil { return x.Updatetime } return 0 } func (x *DBChannel) GetOfficial() bool { if x != nil { return x.Official } return false } // 月结算单(每 结算月×渠道商×生产批次 一行) // // 分成算法(2026-09-02 起): // // base = 该月归属该 (渠道商, 批次) 的订单实付金额之和(分) // channel_amount = base * channel_rate 渠道商分成 // platform_amount = base - channel_amount 平台留存 // // ⚠️ 为什么按【批次】而不是按渠道商出行:分成比例是一批一谈的,存在 // // production_batch.sharerate 上(见「MAC生成管理 → 生成MAC」的表单)。同一家渠道商 // 不同批次比例可以不同,一个渠道商一行只能装一个比例,装不下。 // // 订单如何落到批次:payorder 下单时冻结了来源设备快照(src_license / src_mac / src_productid), // 拿它去 license_ 分表反查到 batchno。查不到(用户没绑过设备、批次被撤销)的订单 // 落 batchno=” 的行,比例 0、全归平台。 // // 比例按【结算时快照】存进本行,事后改批次比例不影响已确认的月份。 // // ⚠️ 品牌商维度已移除:生产链路不再涉及品牌商(生成MAC 表单已去掉该字段), // // 留着只会产出一堆 brandid=0 的行。字段号 2/6/7/10 保留不复用。 type DBSettlementMonth struct { state protoimpl.MessageState `protogen:"open.v1"` Period uint32 `protobuf:"varint,1,opt,name=period,proto3" json:"period" gorm:"period;primaryKey;index"` //@go_tags(`gorm:"period;primaryKey;index" json:"period"`) 结算月 YYYYMM Channelid string `protobuf:"bytes,3,opt,name=channelid,proto3" json:"channelid" gorm:"channelid;size:16;primaryKey;index"` //@go_tags(`gorm:"channelid;size:16;primaryKey;index" json:"channelid"`) 渠道商id(空=无渠道归属) Batchno string `protobuf:"bytes,17,opt,name=batchno,proto3" json:"batchno" gorm:"batchno;size:16;primaryKey;index"` //@go_tags(`gorm:"batchno;size:16;primaryKey;index" json:"batchno"`) 生产批次号(空=无法归到批次) Productid uint32 `protobuf:"varint,18,opt,name=productid,proto3" json:"productid" gorm:"productid;index"` //@go_tags(`gorm:"productid;index" json:"productid"`) 该批次的产品id(展示用,0=未知) OrderCount int64 `protobuf:"varint,4,opt,name=order_count,json=orderCount,proto3" json:"order_count" gorm:"order_count"` //@go_tags(`gorm:"order_count" json:"order_count"`) 已支付订单数 BaseAmount int64 `protobuf:"varint,5,opt,name=base_amount,json=baseAmount,proto3" json:"base_amount" gorm:"base_amount"` //@go_tags(`gorm:"base_amount" json:"base_amount"`) 结算基数=订单实付金额合计(分) ChannelRate int32 `protobuf:"varint,8,opt,name=channel_rate,json=channelRate,proto3" json:"channel_rate" gorm:"channel_rate"` //@go_tags(`gorm:"channel_rate" json:"channel_rate"`) 渠道分成比例快照(万分比,取自该批次) ChannelAmount int64 `protobuf:"varint,9,opt,name=channel_amount,json=channelAmount,proto3" json:"channel_amount" gorm:"channel_amount"` //@go_tags(`gorm:"channel_amount" json:"channel_amount"`) 渠道商分成金额(分) PlatformAmount int64 `protobuf:"varint,11,opt,name=platform_amount,json=platformAmount,proto3" json:"platform_amount" gorm:"platform_amount"` //@go_tags(`gorm:"platform_amount" json:"platform_amount"`) 平台留存(分)=基数-渠道分成 Status int32 `protobuf:"varint,12,opt,name=status,proto3" json:"status" gorm:"status;index"` //@go_tags(`gorm:"status;index" json:"status"`) 状态 0:草稿(可重算) 1:已确认(锁定) 2:已支付 GenTime int64 `protobuf:"varint,13,opt,name=gen_time,json=genTime,proto3" json:"gen_time" gorm:"gen_time"` //@go_tags(`gorm:"gen_time" json:"gen_time"`) 生成/重算时间 ConfirmAccount string `protobuf:"bytes,14,opt,name=confirm_account,json=confirmAccount,proto3" json:"confirm_account" gorm:"confirm_account"` //@go_tags(`gorm:"confirm_account" json:"confirm_account"`) 确认人账号 ConfirmTime int64 `protobuf:"varint,15,opt,name=confirm_time,json=confirmTime,proto3" json:"confirm_time" gorm:"confirm_time"` //@go_tags(`gorm:"confirm_time" json:"confirm_time"`) 确认时间 Remark string `protobuf:"bytes,16,opt,name=remark,proto3" json:"remark" gorm:"remark"` //@go_tags(`gorm:"remark" json:"remark"`) 备注 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBSettlementMonth) Reset() { *x = DBSettlementMonth{} mi := &file_db_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBSettlementMonth) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBSettlementMonth) ProtoMessage() {} func (x *DBSettlementMonth) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBSettlementMonth.ProtoReflect.Descriptor instead. func (*DBSettlementMonth) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{11} } func (x *DBSettlementMonth) GetPeriod() uint32 { if x != nil { return x.Period } return 0 } func (x *DBSettlementMonth) GetChannelid() string { if x != nil { return x.Channelid } return "" } func (x *DBSettlementMonth) GetBatchno() string { if x != nil { return x.Batchno } return "" } func (x *DBSettlementMonth) GetProductid() uint32 { if x != nil { return x.Productid } return 0 } func (x *DBSettlementMonth) GetOrderCount() int64 { if x != nil { return x.OrderCount } return 0 } func (x *DBSettlementMonth) GetBaseAmount() int64 { if x != nil { return x.BaseAmount } return 0 } func (x *DBSettlementMonth) GetChannelRate() int32 { if x != nil { return x.ChannelRate } return 0 } func (x *DBSettlementMonth) GetChannelAmount() int64 { if x != nil { return x.ChannelAmount } return 0 } func (x *DBSettlementMonth) GetPlatformAmount() int64 { if x != nil { return x.PlatformAmount } return 0 } func (x *DBSettlementMonth) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *DBSettlementMonth) GetGenTime() int64 { if x != nil { return x.GenTime } return 0 } func (x *DBSettlementMonth) GetConfirmAccount() string { if x != nil { return x.ConfirmAccount } return "" } func (x *DBSettlementMonth) GetConfirmTime() int64 { if x != nil { return x.ConfirmTime } return 0 } func (x *DBSettlementMonth) GetRemark() string { if x != nil { return x.Remark } return "" } // 生产批次(每次生产一条,记录产品/时间/数量/序号区间/MAC区间;替代原出货单) type DBProductionBatch struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey;autoIncrement"` //@go_tags(`gorm:"id;primaryKey;autoIncrement" json:"id"`) 批次id Ts int64 `protobuf:"varint,2,opt,name=ts,proto3" json:"ts" gorm:"ts;index"` //@go_tags(`gorm:"ts;index" json:"ts"`) 生产时间戳 Brandid uint32 `protobuf:"varint,3,opt,name=brandid,proto3" json:"brandid" gorm:"brandid;index"` //@go_tags(`gorm:"brandid;index" json:"brandid"`) 品牌商id Productid uint32 `protobuf:"varint,4,opt,name=productid,proto3" json:"productid" gorm:"productid;index"` //@go_tags(`gorm:"productid;index" json:"productid"`) 产品id Serialstart int64 `protobuf:"varint,5,opt,name=serialstart,proto3" json:"serialstart" gorm:"serialstart"` //@go_tags(`gorm:"serialstart" json:"serialstart"`) 序号区间起 Serialend int64 `protobuf:"varint,6,opt,name=serialend,proto3" json:"serialend" gorm:"serialend"` //@go_tags(`gorm:"serialend" json:"serialend"`) 序号区间止 Startmac string `protobuf:"bytes,7,opt,name=startmac,proto3" json:"startmac" gorm:"startmac:50"` //@go_tags(`gorm:"startmac:50" json:"startmac"`) 开始设备地址 Endmac string `protobuf:"bytes,8,opt,name=endmac,proto3" json:"endmac" gorm:"endmac:50"` //@go_tags(`gorm:"endmac:50" json:"endmac"`) 结束设备地址 Devicenum uint32 `protobuf:"varint,9,opt,name=devicenum,proto3" json:"devicenum" gorm:"devicenum"` //@go_tags(`gorm:"devicenum" json:"devicenum"`) 设备数量 Batchno string `protobuf:"bytes,10,opt,name=batchno,proto3" json:"batchno" gorm:"batchno;size:16;uniqueIndex"` //@go_tags(`gorm:"batchno;size:16;uniqueIndex" json:"batchno"`) 可读批次号(短码,全局唯一) Remark string `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark" gorm:"remark"` //@go_tags(`gorm:"remark" json:"remark"`) 备注 Channelid string `protobuf:"bytes,12,opt,name=channelid,proto3" json:"channelid" gorm:"channelid;size:16;index"` //@go_tags(`gorm:"channelid;size:16;index" json:"channelid"`) 渠道商id(短码,空=未分配渠道) // 这批货由哪家代工厂生产(oem_factory.id,0=未指定)。与 brandid「挂谁的牌子卖」是两回事: // 同一品牌可以换厂、同一家厂也给多个品牌代工,故独立成维度。存量批次为 0(当时还没有工厂档案)。 Factoryid uint32 `protobuf:"varint,13,opt,name=factoryid,proto3" json:"factoryid" gorm:"factoryid;index"` //@go_tags(`gorm:"factoryid;index" json:"factoryid"`) 代工厂id(0=未指定) // 这一批货给渠道商的分成比例(万分比,0~10000)。放在批次而不是渠道商上: // 同一家渠道商不同批次谈的比例可能不同,挂在渠道商上只能存一个值。 // ⚠️ 生产时冻结,事后改批次比例不影响已算完的结算单。 Sharerate int32 `protobuf:"varint,14,opt,name=sharerate,proto3" json:"sharerate" gorm:"sharerate"` //@go_tags(`gorm:"sharerate" json:"sharerate"`) 本批次渠道分成比例(万分比) // 这一批设备的「绑定赠送」。放在批次而不是产品上:同一款产品不同批次(不同渠道/不同活动) // 送的东西经常不一样,挂在产品上只能存一套,改一次会连带改掉已发出去的货的权益。 // 绑定时按设备所属批次发放,批次三项全为 0 才回退到产品上的旧字段(见 api_binddevice.go)。 Rewardvip uint32 `protobuf:"varint,15,opt,name=rewardvip,proto3" json:"rewardvip" gorm:"rewardvip"` //@go_tags(`gorm:"rewardvip" json:"rewardvip"`) 绑定赠送VIP天数(0=不送) Rewardtranslate uint32 `protobuf:"varint,16,opt,name=rewardtranslate,proto3" json:"rewardtranslate" gorm:"rewardtranslate"` //@go_tags(`gorm:"rewardtranslate" json:"rewardtranslate"`) 绑定赠送翻译时长(分钟,0=不送) Rewardmeeting uint32 `protobuf:"varint,17,opt,name=rewardmeeting,proto3" json:"rewardmeeting" gorm:"rewardmeeting"` //@go_tags(`gorm:"rewardmeeting" json:"rewardmeeting"`) 绑定赠送会议时长(分钟,0=不送) // 2026-09 起绑定赠送只剩「VIP 天数 + VIP 等级 + 算力」三项:rewardvip 复用为天数, // rewardtranslate/rewardmeeting **不再读写**(列保留,避免存量批次表结构变动)。 Viplevel int32 `protobuf:"varint,18,opt,name=viplevel,proto3" json:"viplevel" gorm:"viplevel"` //@go_tags(`gorm:"viplevel" json:"viplevel"`) 绑定赠送VIP等级(1=VIP 2=VIP-Pro,默认1) Computegrant int64 `protobuf:"varint,19,opt,name=computegrant,proto3" json:"computegrant" gorm:"computegrant"` //@go_tags(`gorm:"computegrant" json:"computegrant"`) 绑定赠送算力(0=不送) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBProductionBatch) Reset() { *x = DBProductionBatch{} mi := &file_db_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBProductionBatch) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBProductionBatch) ProtoMessage() {} func (x *DBProductionBatch) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBProductionBatch.ProtoReflect.Descriptor instead. func (*DBProductionBatch) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{12} } func (x *DBProductionBatch) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *DBProductionBatch) GetTs() int64 { if x != nil { return x.Ts } return 0 } func (x *DBProductionBatch) GetBrandid() uint32 { if x != nil { return x.Brandid } return 0 } func (x *DBProductionBatch) GetProductid() uint32 { if x != nil { return x.Productid } return 0 } func (x *DBProductionBatch) GetSerialstart() int64 { if x != nil { return x.Serialstart } return 0 } func (x *DBProductionBatch) GetSerialend() int64 { if x != nil { return x.Serialend } return 0 } func (x *DBProductionBatch) GetStartmac() string { if x != nil { return x.Startmac } return "" } func (x *DBProductionBatch) GetEndmac() string { if x != nil { return x.Endmac } return "" } func (x *DBProductionBatch) GetDevicenum() uint32 { if x != nil { return x.Devicenum } return 0 } func (x *DBProductionBatch) GetBatchno() string { if x != nil { return x.Batchno } return "" } func (x *DBProductionBatch) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *DBProductionBatch) GetChannelid() string { if x != nil { return x.Channelid } return "" } func (x *DBProductionBatch) GetFactoryid() uint32 { if x != nil { return x.Factoryid } return 0 } func (x *DBProductionBatch) GetSharerate() int32 { if x != nil { return x.Sharerate } return 0 } func (x *DBProductionBatch) GetRewardvip() uint32 { if x != nil { return x.Rewardvip } return 0 } func (x *DBProductionBatch) GetRewardtranslate() uint32 { if x != nil { return x.Rewardtranslate } return 0 } func (x *DBProductionBatch) GetRewardmeeting() uint32 { if x != nil { return x.Rewardmeeting } return 0 } func (x *DBProductionBatch) GetViplevel() int32 { if x != nil { return x.Viplevel } return 0 } func (x *DBProductionBatch) GetComputegrant() int64 { if x != nil { return x.Computegrant } return 0 } // 工厂产品 type DBProduct struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey;autoIncrement"` //@go_tags(`gorm:"id;primaryKey;autoIncrement" json:"id"`) 设备编码 Brandid uint32 `protobuf:"varint,2,opt,name=brandid,proto3" json:"brandid" gorm:"brandid;index"` //@go_tags(`gorm:"brandid;index" json:"brandid"`) 品牌商id // 【已废弃 2026-09-08】产品上的「设备类型」已删除:服务端没有任何逻辑读它, // 后台表单也已去掉这一项。枚举把「连接方式」(经典/BLE单双端)和「产品形态」(录音笔/眼镜/卡片) // 混在一根轴上,客户端早已另建 DeviceCategories 做品类,这里只剩误配来源。 // ⚠️ 字段保留为**纯下发兼容字段**,理由同下面的 factoryid:已发布的 App 包按「非空 int」解析 // devicetype,字段一旦不下发,整个 user_getappconfig 响应就抛 TypeError(产品表、设备列表全废)。 // gorm:"-" 不建列、不参与读写,恒为 0 下发。老包淘汰干净后可整条删除。 // ⚠️ 字段号 3 不要复用。 Devicetype DeviceType `protobuf:"varint,3,opt,name=devicetype,proto3,enum=DeviceType" json:"devicetype" gorm:"-"` //@go_tags(`gorm:"-" json:"devicetype"`) [兼容]已废弃,恒为0 Devicename string `protobuf:"bytes,4,opt,name=devicename,proto3" json:"devicename" gorm:"devicename"` //@go_tags(`gorm:"devicename" json:"devicename"`) 设备名称 Productimage string `protobuf:"bytes,5,opt,name=productimage,proto3" json:"productimage" gorm:"productimage"` //@go_tags(`gorm:"productimage" json:"productimage"`) 产品图片 // 【已废弃 2026-09-08】设备扫描UUID 已删除:设备校验早就换成按 MAC 走(device_mac 全局表, // 见 comm.TableDeviceMac),绑定奖励也是按 MAC 判「这台设备有没有被绑过」(codestate), // 跟这个 UUID 没有任何关系。后台产品表单里那一栏也已去掉。 // ⚠️ 字段保留为**纯下发兼容字段**,理由同 devicetype / factoryid:已发布的 App 包按 // 「非空 String」解析 scanuuid(`json['scanuuid'] as String`),字段一旦不下发, // 整个 user_getappconfig 响应就抛 TypeError(产品表、设备列表全废)。 // gorm:"-" 不建列、不参与读写,恒为空串下发。老包淘汰干净后可整条删除。 // ⚠️ 字段号 6 不要复用。 Scanuuid string `protobuf:"bytes,6,opt,name=scanuuid,proto3" json:"scanuuid" gorm:"-"` //@go_tags(`gorm:"-" json:"scanuuid"`) [兼容]已废弃,恒为空 Version string `protobuf:"bytes,7,opt,name=version,proto3" json:"version" gorm:"version"` //@go_tags(`gorm:"version" json:"version"`) 版本 Updatedescription string `protobuf:"bytes,9,opt,name=updatedescription,proto3" json:"updatedescription" gorm:"updatedescription"` //@go_tags(`gorm:"updatedescription" json:"updatedescription"`) 描述 Updatepackageaddress string `protobuf:"bytes,10,opt,name=updatepackageaddress,proto3" json:"updatepackageaddress" gorm:"updatepackageaddress"` //@go_tags(`gorm:"updatepackageaddress" json:"updatepackageaddress"`) 更新包地址=url Versionid uint32 `protobuf:"varint,11,opt,name=versionid,proto3" json:"versionid" gorm:"versionid"` //@go_tags(`gorm:"versionid" json:"versionid"`) 版本id Iscanbindagain bool `protobuf:"varint,12,opt,name=iscanbindagain,proto3" json:"iscanbindagain" gorm:"iscanbindagain"` //@go_tags(`gorm:"iscanbindagain" json:"iscanbindagain"`) 是否可以反复下发奖励 Bindrewardvpitime uint32 `protobuf:"varint,13,opt,name=bindrewardvpitime,proto3" json:"bindrewardvpitime" gorm:"bindrewardvpitime"` //@go_tags(`gorm:"bindrewardvpitime" json:"bindrewardvpitime"`) 是否奖励vip时间 Bindrewardtranslate uint32 `protobuf:"varint,14,opt,name=bindrewardtranslate,proto3" json:"bindrewardtranslate" gorm:"bindrewardtranslate"` //@go_tags(`gorm:"bindrewardtranslate" json:"bindrewardtranslate"`) 绑定奖励翻译次数 Bindrewardmeeting uint32 `protobuf:"varint,15,opt,name=bindrewardmeeting,proto3" json:"bindrewardmeeting" gorm:"bindrewardmeeting"` //@go_tags(`gorm:"bindrewardmeeting" json:"bindrewardmeeting"`) 绑定奖励会议次数 Iscontinuouschat bool `protobuf:"varint,16,opt,name=iscontinuouschat,proto3" json:"iscontinuouschat" gorm:"iscontinuouschat"` //@go_tags(`gorm:"iscontinuouschat" json:"iscontinuouschat"`) 是否连续对话 Eqenable bool `protobuf:"varint,17,opt,name=eqenable,proto3" json:"eqenable" gorm:"eqenable"` //@go_tags(`gorm:"eqenable" json:"eqenable"`) EQ是否启用 Keyenable bool `protobuf:"varint,18,opt,name=keyenable,proto3" json:"keyenable" gorm:"keyenable"` //@go_tags(`gorm:"keyenable" json:"keyenable"`) 按键是否启用 Workmodeenable bool `protobuf:"varint,19,opt,name=workmodeenable,proto3" json:"workmodeenable" gorm:"workmodeenable"` //@go_tags(`gorm:"workmodeenable" json:"workmodeenable"`) 工作模式是否启用 Callmodeenable bool `protobuf:"varint,20,opt,name=callmodeenable,proto3" json:"callmodeenable" gorm:"callmodeenable"` //@go_tags(`gorm:"callmodeenable" json:"callmodeenable"`) 通话模式是否启用 Ledenable bool `protobuf:"varint,21,opt,name=ledenable,proto3" json:"ledenable" gorm:"ledenable"` //@go_tags(`gorm:"ledenable" json:"ledenable"`) 闪灯开关是否启用 Finddeviceenable bool `protobuf:"varint,22,opt,name=finddeviceenable,proto3" json:"finddeviceenable" gorm:"finddeviceenable"` //@go_tags(`gorm:"finddeviceenable" json:"finddeviceenable"`) 查找设备开关是否启用 Noisereductionenable bool `protobuf:"varint,23,opt,name=noisereductionenable,proto3" json:"noisereductionenable" gorm:"noisereductionenable"` //@go_tags(`gorm:"noisereductionenable" json:"noisereductionenable"`) 降噪开关是否启用 Shutdownenable bool `protobuf:"varint,24,opt,name=shutdownenable,proto3" json:"shutdownenable" gorm:"shutdownenable"` //@go_tags(`gorm:"shutdownenable" json:"shutdownenable"`) 定时关机开关是否启用 Showcasebattery bool `protobuf:"varint,25,opt,name=showcasebattery,proto3" json:"showcasebattery" gorm:"showcasebattery"` //@go_tags(`gorm:"showcasebattery" json:"showcasebattery"`) 是否显示仓盒电量 Wakeupenable bool `protobuf:"varint,26,opt,name=wakeupenable,proto3" json:"wakeupenable" gorm:"wakeupenable"` //@go_tags(`gorm:"wakeupenable" json:"wakeupenable"`) 唤醒控制开关是否启用 Broadcastpeertranslate bool `protobuf:"varint,27,opt,name=broadcastpeertranslate,proto3" json:"broadcastpeertranslate" gorm:"broadcastpeertranslate"` //@go_tags(`gorm:"broadcastpeertranslate" json:"broadcastpeertranslate"`) 是否播报对方翻译内容 Channel string `protobuf:"bytes,28,opt,name=channel,proto3" json:"channel" gorm:"channel"` //@go_tags(`gorm:"channel" json:"channel"`) 产品渠道方 official/mobile Channelextra string `protobuf:"bytes,29,opt,name=channelextra,proto3" json:"channelextra" gorm:"channelextra"` //@go_tags(`gorm:"channelextra" json:"channelextra"`) 渠道附加数据(JSON字符串) Hideaiassistant bool `protobuf:"varint,30,opt,name=hideaiassistant,proto3" json:"hideaiassistant" gorm:"hideaiassistant"` //@go_tags(`gorm:"hideaiassistant" json:"hideaiassistant"`) 是否隐藏AI助手功能 Devicecodecount uint32 `protobuf:"varint,31,opt,name=devicecodecount,proto3" json:"devicecodecount" gorm:"devicecodecount"` //@go_tags(`gorm:"devicecodecount" json:"devicecodecount"`) 每副产品生产的设备码数量(0或1=单份,2=双份) Bassfilter uint32 `protobuf:"varint,32,opt,name=bassfilter,proto3" json:"bassfilter" gorm:"bassfilter"` //@go_tags(`gorm:"bassfilter" json:"bassfilter"`) 过滤低音音频参数(0-1000) Serialcursor int64 `protobuf:"varint,33,opt,name=serialcursor,proto3" json:"serialcursor" gorm:"serialcursor"` //@go_tags(`gorm:"serialcursor" json:"serialcursor"`) 产品级授权码序号游标(累加分配) // 【老客户端兼容】厂家→品牌商改名前发布的 App 包按「非空 int」解析 factoryid, // 字段一旦缺失,整个 user_getappconfig / user_getproduct 响应解析就抛 TypeError(设备列表、应用配置全废)。 // 此字段只出不入:gorm:"-" 不建列、不参与读写,由 user 模块读取层统一填成 brandid 的值下发。 // 服务端与新端一律以 brandid 为准,勿往这里写值。老包全部淘汰后可删。 Factoryid uint32 `protobuf:"varint,34,opt,name=factoryid,proto3" json:"factoryid" gorm:"-"` //@go_tags(`gorm:"-" json:"factoryid"`) [兼容]老客户端字段,值同 brandid // 产品归属的应用(应用中心 app_product.name,如 Voitrans,Lumi),CSV 可多选、空=未绑定。 // 品牌商/渠道商账号的「应用」下拉即由本字段推导:只列出自己品牌名下产品绑定过的应用。 Appnames string `protobuf:"bytes,35,opt,name=appnames,proto3" json:"appnames" gorm:"appnames;size:255"` //@go_tags(`gorm:"appnames;size:255" json:"appnames"`) 绑定应用名CSV(空=未绑定) // 产品用的是哪套芯片方案(DBSolutionProvider.id),也就是**方案ID(BID)**。 // 三个烧进固件的标识口径固定:CID=芯片公司(chip_vendor.id) / BID=方案公司(本字段) / PID=产品(本表 id); // CID 由本字段 → solution_provider.vendor 推出,不在产品上另存(另存会在方案商换芯片时变成对不上的旧值)。 // 以前从品牌商推导,但同一品牌的不同产品可能用不同方案商的方案,推导会串号,故改为产品级绑定,新建产品必填。 Providerid uint32 `protobuf:"varint,36,opt,name=providerid,proto3" json:"providerid" gorm:"providerid;index"` //@go_tags(`gorm:"providerid;index" json:"providerid"`) 归属方案商id(CID) Createtime int64 `protobuf:"varint,37,opt,name=createtime,proto3" json:"createtime" gorm:"createtime"` //@go_tags(`gorm:"createtime" json:"createtime"`) 创建时间(秒);历史产品为0 // 产品说明:这款产品是什么、有什么特性,给后台运营与客户看的,与版本更新说明(updatedescription)无关。 Description string `protobuf:"bytes,38,opt,name=description,proto3" json:"description" gorm:"description"` //@go_tags(`gorm:"description" json:"description"`) 产品说明(特性描述) // 这款产品由哪家代工厂生产(oem_factory.id,0=未指定)。产品级是「默认由谁生产」, // 生产批次上还有一个 factoryid,那个是「这一批实际由谁生产」——换厂时批次能覆盖,产品不用改。 // ⚠️ 字段名不能叫 factoryid:上面 34 号已被【老客户端兼容字段】占着,那个 factoryid 是 // 「厂家→品牌商」改名前老 App 解析用的,值恒等于 brandid、由 user 模块读取层填充, // 复用它会让代工厂 id 被 brandid 覆盖掉。 // 注意芯片没有产品级字段:芯片由 providerid → solution_provider.vendor 推导, // 存一份到产品上会在方案商换芯片时变成对不上的旧值,而 CID 是要烧进固件的。 Oemfactoryid uint32 `protobuf:"varint,39,opt,name=oemfactoryid,proto3" json:"oemfactoryid" gorm:"oemfactoryid;index"` //@go_tags(`gorm:"oemfactoryid;index" json:"oemfactoryid"`) 代工厂id(0=未指定) // 固件升级判定放宽:开着时「设备版本 != 服务端版本」就允许升级,而不是只允许升到更高版本。 // 给开发/测试环境用——测试机的固件常常比后台挂的还新,按「更高才升级」会永远点不动升级按钮, // 也没法把耳机刷回旧固件反复验证 OTA 流程。 // ⚠️ 正式产品别开:一次配置失误(比如后台挂了个旧版固件)就会把全量用户降级。 Updateonmismatch bool `protobuf:"varint,40,opt,name=updateonmismatch,proto3" json:"updateonmismatch" gorm:"updateonmismatch"` //@go_tags(`gorm:"updateonmismatch" json:"updateonmismatch"`) 版本不一致即可升级(开发用,默认关) // 批次未配置赠送时的回退(与 production_batch 同语义)。bindrewardvpitime 复用为 VIP 天数, // bindrewardtranslate/bindrewardmeeting 不再读写。 Bindviplevel int32 `protobuf:"varint,60,opt,name=bindviplevel,proto3" json:"bindviplevel" gorm:"bindviplevel"` //@go_tags(`gorm:"bindviplevel" json:"bindviplevel"`) 绑定赠送VIP等级回退值(默认1) Bindcompute int64 `protobuf:"varint,61,opt,name=bindcompute,proto3" json:"bindcompute" gorm:"bindcompute"` //@go_tags(`gorm:"bindcompute" json:"bindcompute"`) 绑定赠送算力回退值(0=不送) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBProduct) Reset() { *x = DBProduct{} mi := &file_db_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBProduct) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBProduct) ProtoMessage() {} func (x *DBProduct) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBProduct.ProtoReflect.Descriptor instead. func (*DBProduct) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{13} } func (x *DBProduct) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *DBProduct) GetBrandid() uint32 { if x != nil { return x.Brandid } return 0 } func (x *DBProduct) GetDevicetype() DeviceType { if x != nil { return x.Devicetype } return DeviceType_DeviceTypeUnknown } func (x *DBProduct) GetDevicename() string { if x != nil { return x.Devicename } return "" } func (x *DBProduct) GetProductimage() string { if x != nil { return x.Productimage } return "" } func (x *DBProduct) GetScanuuid() string { if x != nil { return x.Scanuuid } return "" } func (x *DBProduct) GetVersion() string { if x != nil { return x.Version } return "" } func (x *DBProduct) GetUpdatedescription() string { if x != nil { return x.Updatedescription } return "" } func (x *DBProduct) GetUpdatepackageaddress() string { if x != nil { return x.Updatepackageaddress } return "" } func (x *DBProduct) GetVersionid() uint32 { if x != nil { return x.Versionid } return 0 } func (x *DBProduct) GetIscanbindagain() bool { if x != nil { return x.Iscanbindagain } return false } func (x *DBProduct) GetBindrewardvpitime() uint32 { if x != nil { return x.Bindrewardvpitime } return 0 } func (x *DBProduct) GetBindrewardtranslate() uint32 { if x != nil { return x.Bindrewardtranslate } return 0 } func (x *DBProduct) GetBindrewardmeeting() uint32 { if x != nil { return x.Bindrewardmeeting } return 0 } func (x *DBProduct) GetIscontinuouschat() bool { if x != nil { return x.Iscontinuouschat } return false } func (x *DBProduct) GetEqenable() bool { if x != nil { return x.Eqenable } return false } func (x *DBProduct) GetKeyenable() bool { if x != nil { return x.Keyenable } return false } func (x *DBProduct) GetWorkmodeenable() bool { if x != nil { return x.Workmodeenable } return false } func (x *DBProduct) GetCallmodeenable() bool { if x != nil { return x.Callmodeenable } return false } func (x *DBProduct) GetLedenable() bool { if x != nil { return x.Ledenable } return false } func (x *DBProduct) GetFinddeviceenable() bool { if x != nil { return x.Finddeviceenable } return false } func (x *DBProduct) GetNoisereductionenable() bool { if x != nil { return x.Noisereductionenable } return false } func (x *DBProduct) GetShutdownenable() bool { if x != nil { return x.Shutdownenable } return false } func (x *DBProduct) GetShowcasebattery() bool { if x != nil { return x.Showcasebattery } return false } func (x *DBProduct) GetWakeupenable() bool { if x != nil { return x.Wakeupenable } return false } func (x *DBProduct) GetBroadcastpeertranslate() bool { if x != nil { return x.Broadcastpeertranslate } return false } func (x *DBProduct) GetChannel() string { if x != nil { return x.Channel } return "" } func (x *DBProduct) GetChannelextra() string { if x != nil { return x.Channelextra } return "" } func (x *DBProduct) GetHideaiassistant() bool { if x != nil { return x.Hideaiassistant } return false } func (x *DBProduct) GetDevicecodecount() uint32 { if x != nil { return x.Devicecodecount } return 0 } func (x *DBProduct) GetBassfilter() uint32 { if x != nil { return x.Bassfilter } return 0 } func (x *DBProduct) GetSerialcursor() int64 { if x != nil { return x.Serialcursor } return 0 } func (x *DBProduct) GetFactoryid() uint32 { if x != nil { return x.Factoryid } return 0 } func (x *DBProduct) GetAppnames() string { if x != nil { return x.Appnames } return "" } func (x *DBProduct) GetProviderid() uint32 { if x != nil { return x.Providerid } return 0 } func (x *DBProduct) GetCreatetime() int64 { if x != nil { return x.Createtime } return 0 } func (x *DBProduct) GetDescription() string { if x != nil { return x.Description } return "" } func (x *DBProduct) GetOemfactoryid() uint32 { if x != nil { return x.Oemfactoryid } return 0 } func (x *DBProduct) GetUpdateonmismatch() bool { if x != nil { return x.Updateonmismatch } return false } func (x *DBProduct) GetBindviplevel() int32 { if x != nil { return x.Bindviplevel } return 0 } func (x *DBProduct) GetBindcompute() int64 { if x != nil { return x.Bindcompute } return 0 } type DBProductVersion struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey;autoIncrement"` //@go_tags(`gorm:"id;primaryKey;autoIncrement" json:"id"`) 版本id Productid uint32 `protobuf:"varint,2,opt,name=productid,proto3" json:"productid" gorm:"productid;index"` //@go_tags(`gorm:"productid;index" json:"productid"`) 产品id Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version" gorm:"version;index"` //@go_tags(`gorm:"version;index" json:"version"`) 版本 Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description" gorm:"description"` //@go_tags(`gorm:"description" json:"description"`) 描述 Updatepackageaddress string `protobuf:"bytes,5,opt,name=updatepackageaddress,proto3" json:"updatepackageaddress" gorm:"updatepackageaddress"` //@go_tags(`gorm:"updatepackageaddress" json:"updatepackageaddress"`) 更新包地址 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBProductVersion) Reset() { *x = DBProductVersion{} mi := &file_db_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBProductVersion) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBProductVersion) ProtoMessage() {} func (x *DBProductVersion) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBProductVersion.ProtoReflect.Descriptor instead. func (*DBProductVersion) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{14} } func (x *DBProductVersion) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *DBProductVersion) GetProductid() uint32 { if x != nil { return x.Productid } return 0 } func (x *DBProductVersion) GetVersion() string { if x != nil { return x.Version } return "" } func (x *DBProductVersion) GetDescription() string { if x != nil { return x.Description } return "" } func (x *DBProductVersion) GetUpdatepackageaddress() string { if x != nil { return x.Updatepackageaddress } return "" } // 渠道分发配置(下发客户端)。后台数据源已从各应用业务库的 channelapp 表迁到 // console 主库的 channel_app 表(comm.ChannelApp,按 app_name 作用域),此消息只作下发结构。 type DBChannelApp struct { state protoimpl.MessageState `protogen:"open.v1"` Channel int32 `protobuf:"varint,1,opt,name=channel,proto3" json:"channel" gorm:"channel;primaryKey"` //@go_tags(`gorm:"channel;primaryKey" json:"channel"`) 渠道 Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version" gorm:"version"` //@go_tags(`gorm:"version" json:"version"`) 当前线上版本 Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description" gorm:"description"` //@go_tags(`gorm:"description" json:"description"`) 描述 Address string `protobuf:"bytes,4,opt,name=address,proto3" json:"address" gorm:"address"` //@go_tags(`gorm:"address" json:"address"`) 下载地址 Tourists bool `protobuf:"varint,5,opt,name=tourists,proto3" json:"tourists" gorm:"tourists"` //@go_tags(`gorm:"tourists" json:"tourists"`) 是否开启游客登录 Allowskipdevicebinding bool `protobuf:"varint,6,opt,name=allowskipdevicebinding,proto3" json:"allowskipdevicebinding" gorm:"allowskipdevicebinding"` //@go_tags(`gorm:"allowskipdevicebinding" json:"allowskipdevicebinding"`) 是否允许跳过设备绑定 Paychannels string `protobuf:"bytes,7,opt,name=paychannels,proto3" json:"paychannels" gorm:"paychannels"` //@go_tags(`gorm:"paychannels" json:"paychannels"`) 支付渠道 wxpay,alipay,paypal,google,apple Minversion string `protobuf:"bytes,8,opt,name=minversion,proto3" json:"minversion" gorm:"minversion"` //@go_tags(`gorm:"minversion" json:"minversion"`) 最低支持版本,低于它需更新 Forceupdate bool `protobuf:"varint,9,opt,name=forceupdate,proto3" json:"forceupdate" gorm:"forceupdate"` //@go_tags(`gorm:"forceupdate" json:"forceupdate"`) 强制更新开关(配合 minversion) Changelog string `protobuf:"bytes,10,opt,name=changelog,proto3" json:"changelog" gorm:"changelog"` //@go_tags(`gorm:"changelog" json:"changelog"`) 更新日志 Reviewversion string `protobuf:"bytes,11,opt,name=reviewversion,proto3" json:"reviewversion" gorm:"reviewversion"` //@go_tags(`gorm:"reviewversion" json:"reviewversion"`) 审核中的版本号,客户端报此版本时可隐藏未过审功能 Status int32 `protobuf:"varint,12,opt,name=status,proto3" json:"status" gorm:"status"` //@go_tags(`gorm:"status" json:"status"`) 上架状态 0草稿 1已上架 2审核中 3已下架 Touristsversion string `protobuf:"bytes,13,opt,name=touristsversion,proto3" json:"touristsversion" gorm:"touristsversion"` //@go_tags(`gorm:"touristsversion" json:"touristsversion"`) 游客登录生效版本号;非空时仅该版本客户端可见游客登录,其余版本一律隐藏 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBChannelApp) Reset() { *x = DBChannelApp{} mi := &file_db_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBChannelApp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBChannelApp) ProtoMessage() {} func (x *DBChannelApp) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBChannelApp.ProtoReflect.Descriptor instead. func (*DBChannelApp) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{15} } func (x *DBChannelApp) GetChannel() int32 { if x != nil { return x.Channel } return 0 } func (x *DBChannelApp) GetVersion() string { if x != nil { return x.Version } return "" } func (x *DBChannelApp) GetDescription() string { if x != nil { return x.Description } return "" } func (x *DBChannelApp) GetAddress() string { if x != nil { return x.Address } return "" } func (x *DBChannelApp) GetTourists() bool { if x != nil { return x.Tourists } return false } func (x *DBChannelApp) GetAllowskipdevicebinding() bool { if x != nil { return x.Allowskipdevicebinding } return false } func (x *DBChannelApp) GetPaychannels() string { if x != nil { return x.Paychannels } return "" } func (x *DBChannelApp) GetMinversion() string { if x != nil { return x.Minversion } return "" } func (x *DBChannelApp) GetForceupdate() bool { if x != nil { return x.Forceupdate } return false } func (x *DBChannelApp) GetChangelog() string { if x != nil { return x.Changelog } return "" } func (x *DBChannelApp) GetReviewversion() string { if x != nil { return x.Reviewversion } return "" } func (x *DBChannelApp) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *DBChannelApp) GetTouristsversion() string { if x != nil { return x.Touristsversion } return "" } // 授权码数据(按产品分表 license_;核心=productid+number 产品级全局序号) type DBAuthCode struct { state protoimpl.MessageState `protogen:"open.v1"` Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code" gorm:"code;primaryKey"` //@go_tags(`gorm:"code;primaryKey" json:"code"`) 授权码ID Codetype Codetype `protobuf:"varint,2,opt,name=codetype,proto3,enum=Codetype" json:"codetype" gorm:"codetype"` //@go_tags(`gorm:"codetype" json:"codetype"`) 授权码类型 0:认证码 1:设备码 Brandid uint32 `protobuf:"varint,3,opt,name=brandid,proto3" json:"brandid" gorm:"brandid;index"` //@go_tags(`gorm:"brandid;index" json:"brandid"`) 品牌商id Productid uint32 `protobuf:"varint,4,opt,name=productid,proto3" json:"productid" gorm:"productid;index:idx_product_mac"` //@go_tags(`gorm:"productid;index:idx_product_mac" json:"productid"`) 产品id Number int64 `protobuf:"varint,5,opt,name=number,proto3" json:"number" gorm:"number;index"` //@go_tags(`gorm:"number;index" json:"number"`) 产品级全局序号 Batchno string `protobuf:"bytes,6,opt,name=batchno,proto3" json:"batchno" gorm:"batchno;size:16;index"` //@go_tags(`gorm:"batchno;size:16;index" json:"batchno"`) 生产批次号(短码,引用 production_batch.batchno) Createtime int64 `protobuf:"varint,7,opt,name=createtime,proto3" json:"createtime" gorm:"createtime"` //@go_tags(`gorm:"createtime" json:"createtime"`) 创建时间 Usedtime int64 `protobuf:"varint,9,opt,name=usedtime,proto3" json:"usedtime" gorm:"usedtime"` //@go_tags(`gorm:"usedtime" json:"usedtime"`) 使用时间 Status int32 `protobuf:"varint,10,opt,name=status,proto3" json:"status" gorm:"status;index"` //@go_tags(`gorm:"status;index" json:"status"`) 状态 0:未使用 1:已使用 2:已过期 Uid string `protobuf:"bytes,11,opt,name=uid,proto3" json:"uid" gorm:"uid:50;index"` //@go_tags(`gorm:"uid:50;index" json:"uid"`) 用户ID Devicemac string `protobuf:"bytes,12,opt,name=devicemac,proto3" json:"devicemac" gorm:"devicemac;index:idx_product_mac"` //@go_tags(`gorm:"devicemac;index:idx_product_mac" json:"devicemac"`) 地址 Disabled int32 `protobuf:"varint,13,opt,name=disabled,proto3" json:"disabled" gorm:"disabled;index"` //@go_tags(`gorm:"disabled;index" json:"disabled"`) 封禁状态 0:正常 -1:禁用 Channelid string `protobuf:"bytes,14,opt,name=channelid,proto3" json:"channelid" gorm:"channelid;size:16;index"` //@go_tags(`gorm:"channelid;size:16;index" json:"channelid"`) 渠道商id(短码,生产时随批次落库;空=未分配渠道) // ── 设备权益快照(首次绑定=激活时从生产批次固化,此后改批次不影响已激活设备)── // 设备 VIP 期 = [usedtime, usedtime + vipdays*86400),按日历天连续走、解绑不暂停; // 判定时按「当前绑定着且未到期」算,**不写用户表**,解绑无需回收。 Vipdays int32 `protobuf:"varint,15,opt,name=vipdays,proto3" json:"vipdays" gorm:"vipdays"` //@go_tags(`gorm:"vipdays" json:"vipdays"`) 设备赠送VIP天数(激活时快照,0=不送) Viplevel int32 `protobuf:"varint,16,opt,name=viplevel,proto3" json:"viplevel" gorm:"viplevel"` //@go_tags(`gorm:"viplevel" json:"viplevel"`) 设备赠送VIP等级(1=VIP 2=VIP-Pro,激活时快照) // 设备赠送算力:总量快照 + 已消耗。剩余 = computegrant - computeused。 // computeused 解绑**不重置**:设备算力是共用一份、随设备流转,重置等于换个账号就能无限刷。 Computegrant int64 `protobuf:"varint,17,opt,name=computegrant,proto3" json:"computegrant" gorm:"computegrant"` //@go_tags(`gorm:"computegrant" json:"computegrant"`) 设备赠送算力总量(激活时快照,0=不送) Computeused int64 `protobuf:"varint,18,opt,name=computeused,proto3" json:"computeused" gorm:"computeused"` //@go_tags(`gorm:"computeused" json:"computeused"`) 设备算力已消耗(解绑不重置) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBAuthCode) Reset() { *x = DBAuthCode{} mi := &file_db_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBAuthCode) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBAuthCode) ProtoMessage() {} func (x *DBAuthCode) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBAuthCode.ProtoReflect.Descriptor instead. func (*DBAuthCode) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{16} } func (x *DBAuthCode) GetCode() string { if x != nil { return x.Code } return "" } func (x *DBAuthCode) GetCodetype() Codetype { if x != nil { return x.Codetype } return Codetype_AUTHCODE } func (x *DBAuthCode) GetBrandid() uint32 { if x != nil { return x.Brandid } return 0 } func (x *DBAuthCode) GetProductid() uint32 { if x != nil { return x.Productid } return 0 } func (x *DBAuthCode) GetNumber() int64 { if x != nil { return x.Number } return 0 } func (x *DBAuthCode) GetBatchno() string { if x != nil { return x.Batchno } return "" } func (x *DBAuthCode) GetCreatetime() int64 { if x != nil { return x.Createtime } return 0 } func (x *DBAuthCode) GetUsedtime() int64 { if x != nil { return x.Usedtime } return 0 } func (x *DBAuthCode) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *DBAuthCode) GetUid() string { if x != nil { return x.Uid } return "" } func (x *DBAuthCode) GetDevicemac() string { if x != nil { return x.Devicemac } return "" } func (x *DBAuthCode) GetDisabled() int32 { if x != nil { return x.Disabled } return 0 } func (x *DBAuthCode) GetChannelid() string { if x != nil { return x.Channelid } return "" } func (x *DBAuthCode) GetVipdays() int32 { if x != nil { return x.Vipdays } return 0 } func (x *DBAuthCode) GetViplevel() int32 { if x != nil { return x.Viplevel } return 0 } func (x *DBAuthCode) GetComputegrant() int64 { if x != nil { return x.Computegrant } return 0 } func (x *DBAuthCode) GetComputeused() int64 { if x != nil { return x.Computeused } return 0 } // 厂家公码(一厂家可有多码,每码独立启停且独立配置奖励;新用户扫码领奖励) type DBFactoryPublicCode struct { state protoimpl.MessageState `protogen:"open.v1"` Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code" gorm:"column:code;size:32;primaryKey"` //@go_tags(`gorm:"column:code;size:32;primaryKey" json:"code"`) 公码(主键) Brandid uint32 `protobuf:"varint,2,opt,name=brandid,proto3" json:"brandid" gorm:"brandid;index"` //@go_tags(`gorm:"brandid;index" json:"brandid"`) 品牌商id Productid uint32 `protobuf:"varint,3,opt,name=productid,proto3" json:"productid" gorm:"productid;index"` //@go_tags(`gorm:"productid;index" json:"productid"`) 关联产品id(仅作分类标识,奖励读本表字段) Remark string `protobuf:"bytes,4,opt,name=remark,proto3" json:"remark" gorm:"remark"` //@go_tags(`gorm:"remark" json:"remark"`) 备注(如批次/渠道说明) Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status" gorm:"status;index"` //@go_tags(`gorm:"status;index" json:"status"`) 状态 0:启用 1:停用 Maxuses uint32 `protobuf:"varint,6,opt,name=maxuses,proto3" json:"maxuses" gorm:"maxuses"` //@go_tags(`gorm:"maxuses" json:"maxuses"`) 最大核销人数 0=不限 Useduses uint32 `protobuf:"varint,7,opt,name=useduses,proto3" json:"useduses" gorm:"useduses"` //@go_tags(`gorm:"useduses" json:"useduses"`) 已核销人数 Expiretime int64 `protobuf:"varint,8,opt,name=expiretime,proto3" json:"expiretime" gorm:"expiretime"` //@go_tags(`gorm:"expiretime" json:"expiretime"`) 失效时间戳 0=永久 Bindrewardvpitime uint32 `protobuf:"varint,9,opt,name=bindrewardvpitime,proto3" json:"bindrewardvpitime" gorm:"bindrewardvpitime"` //@go_tags(`gorm:"bindrewardvpitime" json:"bindrewardvpitime"`) 奖励VIP天数 Bindrewardtranslate uint32 `protobuf:"varint,10,opt,name=bindrewardtranslate,proto3" json:"bindrewardtranslate" gorm:"bindrewardtranslate"` //@go_tags(`gorm:"bindrewardtranslate" json:"bindrewardtranslate"`) 奖励翻译分钟数 Bindrewardmeeting uint32 `protobuf:"varint,11,opt,name=bindrewardmeeting,proto3" json:"bindrewardmeeting" gorm:"bindrewardmeeting"` //@go_tags(`gorm:"bindrewardmeeting" json:"bindrewardmeeting"`) 奖励会议分钟数 Createtime int64 `protobuf:"varint,12,opt,name=createtime,proto3" json:"createtime" gorm:"createtime"` //@go_tags(`gorm:"createtime" json:"createtime"`) 创建时间 Updatetime int64 `protobuf:"varint,13,opt,name=updatetime,proto3" json:"updatetime" gorm:"updatetime"` //@go_tags(`gorm:"updatetime" json:"updatetime"`) 更新时间 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBFactoryPublicCode) Reset() { *x = DBFactoryPublicCode{} mi := &file_db_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBFactoryPublicCode) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBFactoryPublicCode) ProtoMessage() {} func (x *DBFactoryPublicCode) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBFactoryPublicCode.ProtoReflect.Descriptor instead. func (*DBFactoryPublicCode) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{17} } func (x *DBFactoryPublicCode) GetCode() string { if x != nil { return x.Code } return "" } func (x *DBFactoryPublicCode) GetBrandid() uint32 { if x != nil { return x.Brandid } return 0 } func (x *DBFactoryPublicCode) GetProductid() uint32 { if x != nil { return x.Productid } return 0 } func (x *DBFactoryPublicCode) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *DBFactoryPublicCode) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *DBFactoryPublicCode) GetMaxuses() uint32 { if x != nil { return x.Maxuses } return 0 } func (x *DBFactoryPublicCode) GetUseduses() uint32 { if x != nil { return x.Useduses } return 0 } func (x *DBFactoryPublicCode) GetExpiretime() int64 { if x != nil { return x.Expiretime } return 0 } func (x *DBFactoryPublicCode) GetBindrewardvpitime() uint32 { if x != nil { return x.Bindrewardvpitime } return 0 } func (x *DBFactoryPublicCode) GetBindrewardtranslate() uint32 { if x != nil { return x.Bindrewardtranslate } return 0 } func (x *DBFactoryPublicCode) GetBindrewardmeeting() uint32 { if x != nil { return x.Bindrewardmeeting } return 0 } func (x *DBFactoryPublicCode) GetCreatetime() int64 { if x != nil { return x.Createtime } return 0 } func (x *DBFactoryPublicCode) GetUpdatetime() int64 { if x != nil { return x.Updatetime } return 0 } // 本地化商品名称 type DBGoodsLocal struct { state protoimpl.MessageState `protogen:"open.v1"` Lang string `protobuf:"bytes,1,opt,name=lang,proto3" json:"lang" gorm:"lang"` //@go_tags(`gorm:"lang" json:"lang"`) 语言 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name" gorm:"name"` //@go_tags(`gorm:"name" json:"name"`) 产品名称 Currency string `protobuf:"bytes,3,opt,name=currency,proto3" json:"currency" gorm:"currency"` //@go_tags(`gorm:"currency" json:"currency"`) 货币符号 Price float64 `protobuf:"fixed64,6,opt,name=price,proto3" json:"price" gorm:"price"` //@go_tags(`gorm:"price" json:"price"`) 产品价格 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBGoodsLocal) Reset() { *x = DBGoodsLocal{} mi := &file_db_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBGoodsLocal) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBGoodsLocal) ProtoMessage() {} func (x *DBGoodsLocal) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBGoodsLocal.ProtoReflect.Descriptor instead. func (*DBGoodsLocal) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{18} } func (x *DBGoodsLocal) GetLang() string { if x != nil { return x.Lang } return "" } func (x *DBGoodsLocal) GetName() string { if x != nil { return x.Name } return "" } func (x *DBGoodsLocal) GetCurrency() string { if x != nil { return x.Currency } return "" } func (x *DBGoodsLocal) GetPrice() float64 { if x != nil { return x.Price } return 0 } // 支付商品 type DBGoods struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey"` //@go_tags(`gorm:"id;primaryKey" json:"id"`) 产品id Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable" gorm:"enable"` //@go_tags(`gorm:"enable" json:"enable"`) 是否启用 Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name" gorm:"name"` //@go_tags(`gorm:"name" json:"name"`) 产品名称 Localname string `protobuf:"bytes,4,opt,name=localname,proto3" json:"localname" gorm:"localname"` //@go_tags(`gorm:"localname" json:"localname"`) 产品本地名称 采用json存储 {"zh-CN":{"name":"中文名称","currency":"¥","price":100}} Price int32 `protobuf:"varint,6,opt,name=price,proto3" json:"price" gorm:"price"` //@go_tags(`gorm:"price" json:"price"`) 产品价格 Usagetype UsageType `protobuf:"varint,7,opt,name=usagetype,proto3,enum=UsageType" json:"usagetype" gorm:"usagetype"` //@go_tags(`gorm:"usagetype" json:"usagetype"`) 产品类型 0:普通产品 1:会员产品 Ainum int64 `protobuf:"varint,8,opt,name=ainum,proto3" json:"ainum" gorm:"ainum"` //@go_tags(`gorm:"ainum" json:"ainum"`) AI资源点 Meetnum int64 `protobuf:"varint,9,opt,name=meetnum,proto3" json:"meetnum" gorm:"meetnum"` //@go_tags(`gorm:"meetnum" json:"meetnum"`) 会议使用量资源点 Tradenum int64 `protobuf:"varint,10,opt,name=tradenum,proto3" json:"tradenum" gorm:"tradenum"` //@go_tags(`gorm:"tradenum" json:"tradenum"`) 翻译资源点 Viptime int32 `protobuf:"varint,11,opt,name=viptime,proto3" json:"viptime" gorm:"viptime"` //@go_tags(`gorm:"viptime" json:"viptime"`) 会员时间 Compute int64 `protobuf:"varint,12,opt,name=compute,proto3" json:"compute" gorm:"compute"` //@go_tags(`gorm:"compute" json:"compute"`) 发放算力(2026-09 起 ainum/meetnum/tradenum 不再发放) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBGoods) Reset() { *x = DBGoods{} mi := &file_db_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBGoods) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBGoods) ProtoMessage() {} func (x *DBGoods) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBGoods.ProtoReflect.Descriptor instead. func (*DBGoods) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{19} } func (x *DBGoods) GetId() string { if x != nil { return x.Id } return "" } func (x *DBGoods) GetEnable() bool { if x != nil { return x.Enable } return false } func (x *DBGoods) GetName() string { if x != nil { return x.Name } return "" } func (x *DBGoods) GetLocalname() string { if x != nil { return x.Localname } return "" } func (x *DBGoods) GetPrice() int32 { if x != nil { return x.Price } return 0 } func (x *DBGoods) GetUsagetype() UsageType { if x != nil { return x.Usagetype } return UsageType_UsageNull } func (x *DBGoods) GetAinum() int64 { if x != nil { return x.Ainum } return 0 } func (x *DBGoods) GetMeetnum() int64 { if x != nil { return x.Meetnum } return 0 } func (x *DBGoods) GetTradenum() int64 { if x != nil { return x.Tradenum } return 0 } func (x *DBGoods) GetViptime() int32 { if x != nil { return x.Viptime } return 0 } func (x *DBGoods) GetCompute() int64 { if x != nil { return x.Compute } return 0 } // 语音包管理 type DBWakeupVoice struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey;autoIncrement"` //@go_tags(`gorm:"id;primaryKey;autoIncrement" json:"id"`) 唤醒语音id Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable" gorm:"enable"` //@go_tags(`gorm:"enable" json:"enable"`) 是否启用 Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name" gorm:"name"` //@go_tags(`gorm:"name" json:"name"`) 唤醒语音名称 Desc string `protobuf:"bytes,4,opt,name=desc,proto3" json:"desc" gorm:"desc"` //@go_tags(`gorm:"desc" json:"desc"`) 唤醒语音描述 Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version" gorm:"version;index"` //@go_tags(`gorm:"version;index" json:"version"`) 版本 Packagaddress string `protobuf:"bytes,6,opt,name=packagaddress,proto3" json:"packagaddress" gorm:"packagaddress"` //@go_tags(`gorm:"packagaddress" json:"packagaddress"`) 唤醒语音地址 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBWakeupVoice) Reset() { *x = DBWakeupVoice{} mi := &file_db_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBWakeupVoice) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBWakeupVoice) ProtoMessage() {} func (x *DBWakeupVoice) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBWakeupVoice.ProtoReflect.Descriptor instead. func (*DBWakeupVoice) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{20} } func (x *DBWakeupVoice) GetId() uint32 { if x != nil { return x.Id } return 0 } func (x *DBWakeupVoice) GetEnable() bool { if x != nil { return x.Enable } return false } func (x *DBWakeupVoice) GetName() string { if x != nil { return x.Name } return "" } func (x *DBWakeupVoice) GetDesc() string { if x != nil { return x.Desc } return "" } func (x *DBWakeupVoice) GetVersion() string { if x != nil { return x.Version } return "" } func (x *DBWakeupVoice) GetPackagaddress() string { if x != nil { return x.Packagaddress } return "" } // 用户日志 type DBUserUseLog struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey;autoIncrement"` //@go_tags(`gorm:"id;primaryKey;autoIncrement" json:"id"`) 积分日志id Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" gorm:"uid:50;index"` //@go_tags(`gorm:"uid:50;index" json:"uid"`) 用户ID Ts int64 `protobuf:"varint,3,opt,name=ts,proto3" json:"ts" gorm:"ts;index"` //@go_tags(`gorm:"ts;index" json:"ts"`) 记录时间 Logtype UserLogType `protobuf:"varint,4,opt,name=logtype,proto3,enum=UserLogType" json:"logtype" gorm:"logtype;index"` //@go_tags(`gorm:"logtype;index" json:"logtype"`) 日志类型 Addvipday int64 `protobuf:"varint,5,opt,name=addvipday,proto3" json:"addvipday" gorm:"viptime"` //@go_tags(`gorm:"viptime" json:"addvipday"`) 会员时间 Addagentintegral int64 `protobuf:"varint,6,opt,name=addagentintegral,proto3" json:"addagentintegral" gorm:"addagentintegral"` //@go_tags(`gorm:"addagentintegral" json:"addagentintegral"`) 智能体资源点 Addtradesecond int64 `protobuf:"varint,7,opt,name=addtradesecond,proto3" json:"addtradesecond" gorm:"addtradesecond"` //@go_tags(`gorm:"addtradesecond" json:"addtradesecond"`) 翻译资源点使用时常 Addmeetsecond int64 `protobuf:"varint,8,opt,name=addmeetsecond,proto3" json:"addmeetsecond" gorm:"addmeetsecond"` //@go_tags(`gorm:"addmeetsecond" json:"addmeetsecond"`) 会议使用时常 Extra string `protobuf:"bytes,9,opt,name=extra,proto3" json:"extra" gorm:"extra"` //@go_tags(`gorm:"extra" json:"extra"`) 附加数据 // ── 算力记账(2026-09 起)。消耗为负、发放/调整为正;来源拆分三列之和 = compute 的绝对值 ── Compute int64 `protobuf:"varint,10,opt,name=compute,proto3" json:"compute" gorm:"compute"` //@go_tags(`gorm:"compute" json:"compute"`) 本次算力变动(消耗为负) Computedevice int64 `protobuf:"varint,11,opt,name=computedevice,proto3" json:"computedevice" gorm:"computedevice"` //@go_tags(`gorm:"computedevice" json:"computedevice"`) 从设备赠送额度扣的部分 Computeuser int64 `protobuf:"varint,12,opt,name=computeuser,proto3" json:"computeuser" gorm:"computeuser"` //@go_tags(`gorm:"computeuser" json:"computeuser"`) 从用户余额扣的部分 Computeover int64 `protobuf:"varint,13,opt,name=computeover,proto3" json:"computeover" gorm:"computeover"` //@go_tags(`gorm:"computeover" json:"computeover"`) 超额部分(闸门关时余额不足仍放行的量) Devicemac string `protobuf:"bytes,14,opt,name=devicemac,proto3" json:"devicemac" gorm:"devicemac;size:50"` //@go_tags(`gorm:"devicemac;size:50" json:"devicemac"`) 扣了哪台设备(为空=未动设备额度) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBUserUseLog) Reset() { *x = DBUserUseLog{} mi := &file_db_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBUserUseLog) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBUserUseLog) ProtoMessage() {} func (x *DBUserUseLog) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBUserUseLog.ProtoReflect.Descriptor instead. func (*DBUserUseLog) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{21} } func (x *DBUserUseLog) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *DBUserUseLog) GetUid() string { if x != nil { return x.Uid } return "" } func (x *DBUserUseLog) GetTs() int64 { if x != nil { return x.Ts } return 0 } func (x *DBUserUseLog) GetLogtype() UserLogType { if x != nil { return x.Logtype } return UserLogType_UserLogTypeUnknown } func (x *DBUserUseLog) GetAddvipday() int64 { if x != nil { return x.Addvipday } return 0 } func (x *DBUserUseLog) GetAddagentintegral() int64 { if x != nil { return x.Addagentintegral } return 0 } func (x *DBUserUseLog) GetAddtradesecond() int64 { if x != nil { return x.Addtradesecond } return 0 } func (x *DBUserUseLog) GetAddmeetsecond() int64 { if x != nil { return x.Addmeetsecond } return 0 } func (x *DBUserUseLog) GetExtra() string { if x != nil { return x.Extra } return "" } func (x *DBUserUseLog) GetCompute() int64 { if x != nil { return x.Compute } return 0 } func (x *DBUserUseLog) GetComputedevice() int64 { if x != nil { return x.Computedevice } return 0 } func (x *DBUserUseLog) GetComputeuser() int64 { if x != nil { return x.Computeuser } return 0 } func (x *DBUserUseLog) GetComputeover() int64 { if x != nil { return x.Computeover } return 0 } func (x *DBUserUseLog) GetDevicemac() string { if x != nil { return x.Devicemac } return "" } // 用户统计数据 type DBUserStatistics struct { state protoimpl.MessageState `protogen:"open.v1"` Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid" gorm:"uid:50;primaryKey"` //@go_tags(`gorm:"uid:50;primaryKey" json:"uid"`) 用户ID Aichatnum int64 `protobuf:"varint,2,opt,name=aichatnum,proto3" json:"aichatnum" gorm:"aichatnum"` //@go_tags(`gorm:"aichatnum" json:"aichatnum"`) AI聊天次数 Aichatuptoken int64 `protobuf:"varint,3,opt,name=aichatuptoken,proto3" json:"aichatuptoken" gorm:"aichatuptoken"` //@go_tags(`gorm:"aichatuptoken" json:"aichatuptoken"`) AI聊天上报token Aichatdowntoken int64 `protobuf:"varint,4,opt,name=aichatdowntoken,proto3" json:"aichatdowntoken" gorm:"aichatdowntoken"` //@go_tags(`gorm:"aichatdowntoken" json:"aichatdowntoken"`) AI聊天下行token Meetnum int64 `protobuf:"varint,5,opt,name=meetnum,proto3" json:"meetnum" gorm:"meetnum"` //@go_tags(`gorm:"meetnum" json:"meetnum"`) 会议使用量资源点 Meettime int64 `protobuf:"varint,6,opt,name=meettime,proto3" json:"meettime" gorm:"meettime"` //@go_tags(`gorm:"meettime" json:"meettime"`) 会议使用时常 Trademodel1Num int64 `protobuf:"varint,7,opt,name=trademodel1num,proto3" json:"trademodel1num" gorm:"trademodel1num"` //@go_tags(`gorm:"trademodel1num" json:"trademodel1num"`) 翻译模式1次数 Trademodel1Time int64 `protobuf:"varint,8,opt,name=trademodel1time,proto3" json:"trademodel1time" gorm:"trademodel1time"` //@go_tags(`gorm:"trademodel1time" json:"trademodel1time"`) 翻译模式1时常 Trademodel2Num int64 `protobuf:"varint,9,opt,name=trademodel2num,proto3" json:"trademodel2num" gorm:"trademodel2num"` //@go_tags(`gorm:"trademodel2num" json:"trademodel2num"`) 翻译模式2次数 Trademodel2Time int64 `protobuf:"varint,10,opt,name=trademodel2time,proto3" json:"trademodel2time" gorm:"trademodel2time"` //@go_tags(`gorm:"trademodel2time" json:"trademodel2time"`) 翻译模式2时常 Trademodel3Num int32 `protobuf:"varint,11,opt,name=trademodel3num,proto3" json:"trademodel3num" gorm:"trademodel3num"` //@go_tags(`gorm:"trademodel3num" json:"trademodel3num"`) 翻译模式3次数 Trademodel3Time int64 `protobuf:"varint,12,opt,name=trademodel3time,proto3" json:"trademodel3time" gorm:"trademodel3time"` //@go_tags(`gorm:"trademodel3time" json:"trademodel3time"`) 翻译模式3时常 Trademodel4Num int32 `protobuf:"varint,13,opt,name=trademodel4num,proto3" json:"trademodel4num" gorm:"trademodel4num"` //@go_tags(`gorm:"trademodel4num" json:"trademodel4num"`) 翻译模式4次数 Trademodel4Time int64 `protobuf:"varint,14,opt,name=trademodel4time,proto3" json:"trademodel4time" gorm:"trademodel4time"` //@go_tags(`gorm:"trademodel4time" json:"trademodel4time"`) 翻译模式4时常 Trademodel5Num int32 `protobuf:"varint,15,opt,name=trademodel5num,proto3" json:"trademodel5num" gorm:"trademodel5num"` //@go_tags(`gorm:"trademodel5num" json:"trademodel5num"`) 翻译模式5次数 Tradewordcount int32 `protobuf:"varint,16,opt,name=tradewordcount,proto3" json:"tradewordcount" gorm:"tradewordcount"` //@go_tags(`gorm:"tradewordcount" json:"tradewordcount"`) 翻译文本长度 Computetotal int64 `protobuf:"varint,17,opt,name=computetotal,proto3" json:"computetotal" gorm:"computetotal"` //@go_tags(`gorm:"computetotal" json:"computetotal"`) 累计消耗算力 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBUserStatistics) Reset() { *x = DBUserStatistics{} mi := &file_db_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBUserStatistics) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBUserStatistics) ProtoMessage() {} func (x *DBUserStatistics) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBUserStatistics.ProtoReflect.Descriptor instead. func (*DBUserStatistics) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{22} } func (x *DBUserStatistics) GetUid() string { if x != nil { return x.Uid } return "" } func (x *DBUserStatistics) GetAichatnum() int64 { if x != nil { return x.Aichatnum } return 0 } func (x *DBUserStatistics) GetAichatuptoken() int64 { if x != nil { return x.Aichatuptoken } return 0 } func (x *DBUserStatistics) GetAichatdowntoken() int64 { if x != nil { return x.Aichatdowntoken } return 0 } func (x *DBUserStatistics) GetMeetnum() int64 { if x != nil { return x.Meetnum } return 0 } func (x *DBUserStatistics) GetMeettime() int64 { if x != nil { return x.Meettime } return 0 } func (x *DBUserStatistics) GetTrademodel1Num() int64 { if x != nil { return x.Trademodel1Num } return 0 } func (x *DBUserStatistics) GetTrademodel1Time() int64 { if x != nil { return x.Trademodel1Time } return 0 } func (x *DBUserStatistics) GetTrademodel2Num() int64 { if x != nil { return x.Trademodel2Num } return 0 } func (x *DBUserStatistics) GetTrademodel2Time() int64 { if x != nil { return x.Trademodel2Time } return 0 } func (x *DBUserStatistics) GetTrademodel3Num() int32 { if x != nil { return x.Trademodel3Num } return 0 } func (x *DBUserStatistics) GetTrademodel3Time() int64 { if x != nil { return x.Trademodel3Time } return 0 } func (x *DBUserStatistics) GetTrademodel4Num() int32 { if x != nil { return x.Trademodel4Num } return 0 } func (x *DBUserStatistics) GetTrademodel4Time() int64 { if x != nil { return x.Trademodel4Time } return 0 } func (x *DBUserStatistics) GetTrademodel5Num() int32 { if x != nil { return x.Trademodel5Num } return 0 } func (x *DBUserStatistics) GetTradewordcount() int32 { if x != nil { return x.Tradewordcount } return 0 } func (x *DBUserStatistics) GetComputetotal() int64 { if x != nil { return x.Computetotal } return 0 } // App综合统计(日/月/年三张表共用同一结构) type DBAppStat struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id" gorm:"id;primaryKey;autoIncrement"` //@go_tags(`gorm:"id;primaryKey;autoIncrement" json:"id"`) 主键 StatDate string `protobuf:"bytes,2,opt,name=stat_date,json=statDate,proto3" json:"stat_date" gorm:"type:varchar(20);uniqueIndex"` //@go_tags(`gorm:"type:varchar(20);uniqueIndex" json:"stat_date"`) 统计日期 日:2006-01-02 月:2006-01 年:2006 // 支付统计 PayAmount int64 `protobuf:"varint,3,opt,name=pay_amount,json=payAmount,proto3" json:"pay_amount" gorm:"pay_amount"` //@go_tags(`gorm:"pay_amount" json:"pay_amount"`) 支付金额(分) OrderCount int32 `protobuf:"varint,22,opt,name=order_count,json=orderCount,proto3" json:"order_count" gorm:"order_count"` //@go_tags(`gorm:"order_count" json:"order_count"`) 创建订单数 PayCount int32 `protobuf:"varint,4,opt,name=pay_count,json=payCount,proto3" json:"pay_count" gorm:"pay_count"` //@go_tags(`gorm:"pay_count" json:"pay_count"`) 有效订单数(已支付) FailedOrderCount int32 `protobuf:"varint,23,opt,name=failed_order_count,json=failedOrderCount,proto3" json:"failed_order_count" gorm:"failed_order_count"` //@go_tags(`gorm:"failed_order_count" json:"failed_order_count"`) 失败订单数 PayUserCount int32 `protobuf:"varint,5,opt,name=pay_user_count,json=payUserCount,proto3" json:"pay_user_count" gorm:"pay_user_count"` //@go_tags(`gorm:"pay_user_count" json:"pay_user_count"`) 付费用户数 // 发放资源统计 AddVipDays int64 `protobuf:"varint,6,opt,name=add_vip_days,json=addVipDays,proto3" json:"add_vip_days" gorm:"add_vip_days"` //@go_tags(`gorm:"add_vip_days" json:"add_vip_days"`) 发放VIP天数 AddAiIntegral int64 `protobuf:"varint,7,opt,name=add_ai_integral,json=addAiIntegral,proto3" json:"add_ai_integral" gorm:"add_ai_integral"` //@go_tags(`gorm:"add_ai_integral" json:"add_ai_integral"`) 发放AI积分 AddTradeSecond int64 `protobuf:"varint,8,opt,name=add_trade_second,json=addTradeSecond,proto3" json:"add_trade_second" gorm:"add_trade_second"` //@go_tags(`gorm:"add_trade_second" json:"add_trade_second"`) 发放翻译时长(秒) AddMeetSecond int64 `protobuf:"varint,9,opt,name=add_meet_second,json=addMeetSecond,proto3" json:"add_meet_second" gorm:"add_meet_second"` //@go_tags(`gorm:"add_meet_second" json:"add_meet_second"`) 发放会议时长(秒) // AI聊天消耗统计 AiChatCount int64 `protobuf:"varint,10,opt,name=ai_chat_count,json=aiChatCount,proto3" json:"ai_chat_count" gorm:"ai_chat_count"` //@go_tags(`gorm:"ai_chat_count" json:"ai_chat_count"`) AI聊天次数 AiUpToken int64 `protobuf:"varint,11,opt,name=ai_up_token,json=aiUpToken,proto3" json:"ai_up_token" gorm:"ai_up_token"` //@go_tags(`gorm:"ai_up_token" json:"ai_up_token"`) AI上行token AiDownToken int64 `protobuf:"varint,12,opt,name=ai_down_token,json=aiDownToken,proto3" json:"ai_down_token" gorm:"ai_down_token"` //@go_tags(`gorm:"ai_down_token" json:"ai_down_token"`) AI下行token // 翻译消耗统计 TradeCount int64 `protobuf:"varint,13,opt,name=trade_count,json=tradeCount,proto3" json:"trade_count" gorm:"trade_count"` //@go_tags(`gorm:"trade_count" json:"trade_count"`) 翻译次数 TradeTime int64 `protobuf:"varint,14,opt,name=trade_time,json=tradeTime,proto3" json:"trade_time" gorm:"trade_time"` //@go_tags(`gorm:"trade_time" json:"trade_time"`) 翻译时长消耗(秒) TradeWords int64 `protobuf:"varint,15,opt,name=trade_words,json=tradeWords,proto3" json:"trade_words" gorm:"trade_words"` //@go_tags(`gorm:"trade_words" json:"trade_words"`) 翻译字数 // 会议消耗统计 MeetCount int64 `protobuf:"varint,16,opt,name=meet_count,json=meetCount,proto3" json:"meet_count" gorm:"meet_count"` //@go_tags(`gorm:"meet_count" json:"meet_count"`) 会议次数 MeetTime int64 `protobuf:"varint,17,opt,name=meet_time,json=meetTime,proto3" json:"meet_time" gorm:"meet_time"` //@go_tags(`gorm:"meet_time" json:"meet_time"`) 会议时长消耗(秒) // 用户统计 NewUserCount int32 `protobuf:"varint,18,opt,name=new_user_count,json=newUserCount,proto3" json:"new_user_count" gorm:"new_user_count"` //@go_tags(`gorm:"new_user_count" json:"new_user_count"`) 新增注册用户数 LoginCount int32 `protobuf:"varint,19,opt,name=login_count,json=loginCount,proto3" json:"login_count" gorm:"login_count"` //@go_tags(`gorm:"login_count" json:"login_count"`) 登录次数 ActiveUserCount int32 `protobuf:"varint,24,opt,name=active_user_count,json=activeUserCount,proto3" json:"active_user_count" gorm:"active_user_count"` //@go_tags(`gorm:"active_user_count" json:"active_user_count"`) 活跃用户数(当期有登录行为) TotalUserCount int64 `protobuf:"varint,25,opt,name=total_user_count,json=totalUserCount,proto3" json:"total_user_count" gorm:"total_user_count"` //@go_tags(`gorm:"total_user_count" json:"total_user_count"`) 累计用户总数(快照) VipUserCount int32 `protobuf:"varint,26,opt,name=vip_user_count,json=vipUserCount,proto3" json:"vip_user_count" gorm:"vip_user_count"` //@go_tags(`gorm:"vip_user_count" json:"vip_user_count"`) 当期新增VIP用户数 // 设备统计 BindDeviceCount int32 `protobuf:"varint,20,opt,name=bind_device_count,json=bindDeviceCount,proto3" json:"bind_device_count" gorm:"bind_device_count"` //@go_tags(`gorm:"bind_device_count" json:"bind_device_count"`) 绑定设备数(激活) ActiveDeviceCount int32 `protobuf:"varint,27,opt,name=active_device_count,json=activeDeviceCount,proto3" json:"active_device_count" gorm:"active_device_count"` //@go_tags(`gorm:"active_device_count" json:"active_device_count"`) 活跃设备数(当期有使用) UpdateTime int64 `protobuf:"varint,21,opt,name=update_time,json=updateTime,proto3" json:"update_time" gorm:"update_time"` //@go_tags(`gorm:"update_time" json:"update_time"`) 更新时间 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DBAppStat) Reset() { *x = DBAppStat{} mi := &file_db_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DBAppStat) String() string { return protoimpl.X.MessageStringOf(x) } func (*DBAppStat) ProtoMessage() {} func (x *DBAppStat) ProtoReflect() protoreflect.Message { mi := &file_db_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DBAppStat.ProtoReflect.Descriptor instead. func (*DBAppStat) Descriptor() ([]byte, []int) { return file_db_proto_rawDescGZIP(), []int{23} } func (x *DBAppStat) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *DBAppStat) GetStatDate() string { if x != nil { return x.StatDate } return "" } func (x *DBAppStat) GetPayAmount() int64 { if x != nil { return x.PayAmount } return 0 } func (x *DBAppStat) GetOrderCount() int32 { if x != nil { return x.OrderCount } return 0 } func (x *DBAppStat) GetPayCount() int32 { if x != nil { return x.PayCount } return 0 } func (x *DBAppStat) GetFailedOrderCount() int32 { if x != nil { return x.FailedOrderCount } return 0 } func (x *DBAppStat) GetPayUserCount() int32 { if x != nil { return x.PayUserCount } return 0 } func (x *DBAppStat) GetAddVipDays() int64 { if x != nil { return x.AddVipDays } return 0 } func (x *DBAppStat) GetAddAiIntegral() int64 { if x != nil { return x.AddAiIntegral } return 0 } func (x *DBAppStat) GetAddTradeSecond() int64 { if x != nil { return x.AddTradeSecond } return 0 } func (x *DBAppStat) GetAddMeetSecond() int64 { if x != nil { return x.AddMeetSecond } return 0 } func (x *DBAppStat) GetAiChatCount() int64 { if x != nil { return x.AiChatCount } return 0 } func (x *DBAppStat) GetAiUpToken() int64 { if x != nil { return x.AiUpToken } return 0 } func (x *DBAppStat) GetAiDownToken() int64 { if x != nil { return x.AiDownToken } return 0 } func (x *DBAppStat) GetTradeCount() int64 { if x != nil { return x.TradeCount } return 0 } func (x *DBAppStat) GetTradeTime() int64 { if x != nil { return x.TradeTime } return 0 } func (x *DBAppStat) GetTradeWords() int64 { if x != nil { return x.TradeWords } return 0 } func (x *DBAppStat) GetMeetCount() int64 { if x != nil { return x.MeetCount } return 0 } func (x *DBAppStat) GetMeetTime() int64 { if x != nil { return x.MeetTime } return 0 } func (x *DBAppStat) GetNewUserCount() int32 { if x != nil { return x.NewUserCount } return 0 } func (x *DBAppStat) GetLoginCount() int32 { if x != nil { return x.LoginCount } return 0 } func (x *DBAppStat) GetActiveUserCount() int32 { if x != nil { return x.ActiveUserCount } return 0 } func (x *DBAppStat) GetTotalUserCount() int64 { if x != nil { return x.TotalUserCount } return 0 } func (x *DBAppStat) GetVipUserCount() int32 { if x != nil { return x.VipUserCount } return 0 } func (x *DBAppStat) GetBindDeviceCount() int32 { if x != nil { return x.BindDeviceCount } return 0 } func (x *DBAppStat) GetActiveDeviceCount() int32 { if x != nil { return x.ActiveDeviceCount } return 0 } func (x *DBAppStat) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } var File_db_proto protoreflect.FileDescriptor const file_db_proto_rawDesc = "" + "\n" + "\bdb.proto\x1a\n" + "enum.proto\"\x9e\n" + "\n" + "\x06DBUser\x12\x10\n" + "\x03uid\x18\x01 \x01(\tR\x03uid\x12\x12\n" + "\x04mail\x18\x02 \x01(\tR\x04mail\x12\x14\n" + "\x05phone\x18\x03 \x01(\tR\x05phone\x12\x12\n" + "\x04name\x18\x05 \x01(\tR\x04name\x12\x16\n" + "\x06avatar\x18\b \x01(\tR\x06avatar\x12\x1e\n" + "\n" + "phonemodel\x18\n" + " \x01(\tR\n" + "phonemodel\x12\x1a\n" + "\bphonemac\x18\v \x01(\tR\bphonemac\x12\x18\n" + "\aaccount\x18\f \x01(\tR\aaccount\x12\x1a\n" + "\bpassword\x18\r \x01(\tR\bpassword\x12\"\n" + "\flastsgintime\x18\x14 \x01(\x03R\flastsgintime\x12\x1e\n" + "\n" + "createtime\x18\x15 \x01(\x03R\n" + "createtime\x12\x1a\n" + "\blanguage\x18\x16 \x01(\tR\blanguage\x12\x1e\n" + "\n" + "servicetag\x18\x17 \x01(\tR\n" + "servicetag\x12&\n" + "\achannel\x18\x18 \x01(\x0e2\f.UserChannelR\achannel\x12\x18\n" + "\aversion\x18\x19 \x01(\tR\aversion\x12 \n" + "\x05State\x18\x1a \x01(\x0e2\n" + ".UserStateR\x05State\x12\x1e\n" + "\n" + "canceltime\x18\x1b \x01(\x03R\n" + "canceltime\x12\x1a\n" + "\bwxopenid\x18\x1e \x01(\tR\bwxopenid\x12\"\n" + "\fgoogleopenid\x18\x1f \x01(\tR\fgoogleopenid\x12&\n" + "\x0efacebookopenid\x18 \x01(\tR\x0efacebookopenid\x12 \n" + "\vappleopenid\x18! \x01(\tR\vappleopenid\x12\x1e\n" + "\n" + "isgiveaway\x18$ \x01(\bR\n" + "isgiveaway\x12\x16\n" + "\x06gender\x18% \x01(\x05R\x06gender\x12!\n" + "\fcountry_code\x18& \x01(\tR\vcountryCode\x12%\n" + "\x0econtinent_code\x18' \x01(\tR\rcontinentCode\x12\x14\n" + "\x05viplv\x18( \x01(\x05R\x05viplv\x12\x1e\n" + "\n" + "vipexptime\x18) \x01(\x03R\n" + "vipexptime\x12&\n" + "\x0eaichatintegral\x18* \x01(\x03R\x0eaichatintegral\x120\n" + "\x13aichattotalintegral\x18+ \x01(\x03R\x13aichattotalintegral\x12$\n" + "\rtradeintegral\x18, \x01(\x03R\rtradeintegral\x12.\n" + "\x12tradetotalintegral\x18- \x01(\x03R\x12tradetotalintegral\x12\"\n" + "\fmeetintegral\x18. \x01(\x03R\fmeetintegral\x12,\n" + "\x11meettotalintegral\x18/ \x01(\x03R\x11meettotalintegral\x12&\n" + "\x0eisactivatecode\x180 \x01(\bR\x0eisactivatecode\x12,\n" + "\x11lastbindproductid\x181 \x01(\rR\x11lastbindproductid\x12,\n" + "\x11lastbindchannelid\x182 \x01(\tR\x11lastbindchannelid\x12\x1e\n" + "\n" + "idverified\x183 \x01(\bR\n" + "idverified\x12&\n" + "\x0eidverifiedtime\x184 \x01(\x03R\x0eidverifiedtime\x12&\n" + "\x0ecomputebalance\x185 \x01(\x03R\x0ecomputebalance\"\xec\x02\n" + "\x0eDBUserIdVerify\x12\x10\n" + "\x03uid\x18\x01 \x01(\tR\x03uid\x12\x1a\n" + "\brealname\x18\x02 \x01(\tR\brealname\x12\x1e\n" + "\n" + "idcardmask\x18\x03 \x01(\tR\n" + "idcardmask\x12\x1e\n" + "\n" + "idcardhash\x18\x04 \x01(\tR\n" + "idcardhash\x12\x1a\n" + "\bprovider\x18\x05 \x01(\tR\bprovider\x12\x14\n" + "\x05svcid\x18\x06 \x01(\tR\x05svcid\x12\x18\n" + "\abizcode\x18\a \x01(\tR\abizcode\x12\x1e\n" + "\n" + "verifytime\x18\b \x01(\x03R\n" + "verifytime\x12\x1c\n" + "\tfailcount\x18\t \x01(\x05R\tfailcount\x12\"\n" + "\flastfailtime\x18\n" + " \x01(\x03R\flastfailtime\x12\x1e\n" + "\n" + "createtime\x18\v \x01(\x03R\n" + "createtime\x12\x1e\n" + "\n" + "updatetime\x18\f \x01(\x03R\n" + "updatetime\"\xbd\x02\n" + "\fDBUserDivice\x12\x0e\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x12\x10\n" + "\x03uid\x18\x02 \x01(\tR\x03uid\x12\x1c\n" + "\tproductid\x18\x03 \x01(\rR\tproductid\x12+\n" + "\n" + "devicetype\x18\x04 \x01(\x0e2\v.DeviceTypeR\n" + "devicetype\x12\x1e\n" + "\n" + "devicename\x18\x05 \x01(\tR\n" + "devicename\x12\x1c\n" + "\tdevicemac\x18\x06 \x01(\tR\tdevicemac\x12\x18\n" + "\alicense\x18\a \x01(\tR\alicense\x12\x12\n" + "\x04cmei\x18\b \x01(\tR\x04cmei\x12\x18\n" + "\aversion\x18\t \x01(\tR\aversion\x12\x1c\n" + "\tlxsetting\x18\n" + " \x01(\tR\tlxsetting\x12\x1c\n" + "\tchannelid\x18\v \x01(\tR\tchannelid\"\x90\x01\n" + "\x0eDBUserPortrait\x12\x10\n" + "\x03uid\x18\x01 \x01(\tR\x03uid\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" + "\x06gender\x18\x03 \x01(\x05R\x06gender\x12\x10\n" + "\x03age\x18\x04 \x01(\tR\x03age\x12\x12\n" + "\x04city\x18\x05 \x01(\tR\x04city\x12\x1a\n" + "\bhomeaddr\x18\x06 \x01(\tR\bhomeaddr\"\xf1\x03\n" + "\aDBAgent\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + "\tavatarUrl\x18\x03 \x01(\tR\tavatarUrl\x12 \n" + "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x10\n" + "\x03tag\x18\x05 \x01(\tR\x03tag\x12\x16\n" + "\x06enable\x18\x06 \x01(\bR\x06enable\x12\x1a\n" + "\bisOnline\x18\a \x01(\bR\bisOnline\x12&\n" + "\x0ewelcomeMessage\x18\b \x01(\tR\x0ewelcomeMessage\x120\n" + "\x13voiceWelcomeMessage\x18\t \x01(\tR\x13voiceWelcomeMessage\x12\"\n" + "\fsystemPrompt\x18\n" + " \x01(\tR\fsystemPrompt\x12\x1c\n" + "\tlanguages\x18\v \x01(\tR\tlanguages\x12$\n" + "\x06source\x18\f \x01(\x0e2\f.AgentSourceR\x06source\x12 \n" + "\vserviceData\x18\r \x01(\tR\vserviceData\x12\x16\n" + "\x06roleId\x18\x0e \x01(\tR\x06roleId\x12\x14\n" + "\x05voice\x18\x0f \x01(\tR\x05voice\x12\x16\n" + "\x06voices\x18\x10 \x01(\tR\x06voices\x12\x12\n" + "\x04sort\x18\x11 \x01(\x05R\x04sort\"\xda\x01\n" + "\vDBMcpServer\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1f\n" + "\x06region\x18\x03 \x01(\x0e2\a.RegionR\x06region\x12 \n" + "\vdescription\x18\x04 \x01(\tR\vdescription\x12\x10\n" + "\x03url\x18\x05 \x01(\tR\x03url\x12$\n" + "\x05stype\x18\x06 \x01(\x0e2\x0e.MCPServerTypeR\x05stype\x12\x14\n" + "\x05tools\x18\a \x01(\tR\x05tools\x12\x16\n" + "\x06enable\x18\b \x01(\bR\x06enable\"\xa5\x01\n" + "\x12DBGlobalConfigItem\x12\x0e\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x12\x1f\n" + "\x06region\x18\x02 \x01(\x0e2\a.RegionR\x06region\x12\x14\n" + "\x05group\x18\x03 \x01(\tR\x05group\x12\x10\n" + "\x03key\x18\x04 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x05 \x01(\tR\x05value\x12 \n" + "\vdescription\x18\x06 \x01(\tR\vdescription\"\x81\x01\n" + "\x0fDBAppConfigItem\x12\x0e\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x12\x14\n" + "\x05group\x18\x03 \x01(\tR\x05group\x12\x10\n" + "\x03key\x18\x04 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x05 \x01(\tR\x05value\x12 \n" + "\vdescription\x18\x06 \x01(\tR\vdescription\"\xc7\x01\n" + "\x12DBSolutionProvider\x12\x0e\n" + "\x02id\x18\x01 \x01(\rR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\"\n" + "\fcontactmails\x18\x04 \x01(\tR\fcontactmails\x12\x1e\n" + "\n" + "createtime\x18\x05 \x01(\x03R\n" + "createtime\x12'\n" + "\x06vendor\x18\x06 \x01(\x0e2\x0f.SolutionVendorR\x06vendor\"\xf7\x01\n" + "\aDBBrand\x12\x0e\n" + "\x02id\x18\x01 \x01(\rR\x02id\x12\x14\n" + "\x05brand\x18\x02 \x01(\tR\x05brand\x12\x1e\n" + "\n" + "providerid\x18\x03 \x01(\rR\n" + "providerid\x12 \n" + "\vdescription\x18\x04 \x01(\tR\vdescription\x12\"\n" + "\fcontactmails\x18\x05 \x01(\tR\fcontactmails\x12\"\n" + "\fproductlists\x18\a \x01(\tR\fproductlists\x12\x1c\n" + "\tsharerate\x18\b \x01(\x05R\tsharerate\x12\x1e\n" + "\n" + "createtime\x18\t \x01(\x03R\n" + "createtime\"\xb9\x03\n" + "\tDBChannel\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n" + "\abrandid\x18\x02 \x01(\rR\abrandid\x12\x12\n" + "\x04name\x18\x03 \x01(\tR\x04name\x12\x18\n" + "\acontact\x18\x04 \x01(\tR\acontact\x12\"\n" + "\fcontactmails\x18\x05 \x01(\tR\fcontactmails\x12\x16\n" + "\x06remark\x18\x06 \x01(\tR\x06remark\x12\x1c\n" + "\tsharerate\x18\a \x01(\x05R\tsharerate\x12\x16\n" + "\x06status\x18\b \x01(\x05R\x06status\x12\"\n" + "\fapplyaccount\x18\t \x01(\tR\fapplyaccount\x12\"\n" + "\fauditaccount\x18\n" + " \x01(\tR\fauditaccount\x12 \n" + "\vauditremark\x18\v \x01(\tR\vauditremark\x12\x1c\n" + "\taudittime\x18\f \x01(\x03R\taudittime\x12\x1e\n" + "\n" + "createtime\x18\r \x01(\x03R\n" + "createtime\x12\x1e\n" + "\n" + "updatetime\x18\x0e \x01(\x03R\n" + "updatetime\x12\x1a\n" + "\bofficial\x18\x0f \x01(\bR\bofficial\"\xe5\x03\n" + "\x11DBSettlementMonth\x12\x16\n" + "\x06period\x18\x01 \x01(\rR\x06period\x12\x1c\n" + "\tchannelid\x18\x03 \x01(\tR\tchannelid\x12\x18\n" + "\abatchno\x18\x11 \x01(\tR\abatchno\x12\x1c\n" + "\tproductid\x18\x12 \x01(\rR\tproductid\x12\x1f\n" + "\vorder_count\x18\x04 \x01(\x03R\n" + "orderCount\x12\x1f\n" + "\vbase_amount\x18\x05 \x01(\x03R\n" + "baseAmount\x12!\n" + "\fchannel_rate\x18\b \x01(\x05R\vchannelRate\x12%\n" + "\x0echannel_amount\x18\t \x01(\x03R\rchannelAmount\x12'\n" + "\x0fplatform_amount\x18\v \x01(\x03R\x0eplatformAmount\x12\x16\n" + "\x06status\x18\f \x01(\x05R\x06status\x12\x19\n" + "\bgen_time\x18\r \x01(\x03R\agenTime\x12'\n" + "\x0fconfirm_account\x18\x0e \x01(\tR\x0econfirmAccount\x12!\n" + "\fconfirm_time\x18\x0f \x01(\x03R\vconfirmTime\x12\x16\n" + "\x06remark\x18\x10 \x01(\tR\x06remarkJ\x04\b\x02\x10\x03J\x04\b\x06\x10\aJ\x04\b\a\x10\bJ\x04\b\n" + "\x10\v\"\xb7\x04\n" + "\x11DBProductionBatch\x12\x0e\n" + "\x02id\x18\x01 \x01(\rR\x02id\x12\x0e\n" + "\x02ts\x18\x02 \x01(\x03R\x02ts\x12\x18\n" + "\abrandid\x18\x03 \x01(\rR\abrandid\x12\x1c\n" + "\tproductid\x18\x04 \x01(\rR\tproductid\x12 \n" + "\vserialstart\x18\x05 \x01(\x03R\vserialstart\x12\x1c\n" + "\tserialend\x18\x06 \x01(\x03R\tserialend\x12\x1a\n" + "\bstartmac\x18\a \x01(\tR\bstartmac\x12\x16\n" + "\x06endmac\x18\b \x01(\tR\x06endmac\x12\x1c\n" + "\tdevicenum\x18\t \x01(\rR\tdevicenum\x12\x18\n" + "\abatchno\x18\n" + " \x01(\tR\abatchno\x12\x16\n" + "\x06remark\x18\v \x01(\tR\x06remark\x12\x1c\n" + "\tchannelid\x18\f \x01(\tR\tchannelid\x12\x1c\n" + "\tfactoryid\x18\r \x01(\rR\tfactoryid\x12\x1c\n" + "\tsharerate\x18\x0e \x01(\x05R\tsharerate\x12\x1c\n" + "\trewardvip\x18\x0f \x01(\rR\trewardvip\x12(\n" + "\x0frewardtranslate\x18\x10 \x01(\rR\x0frewardtranslate\x12$\n" + "\rrewardmeeting\x18\x11 \x01(\rR\rrewardmeeting\x12\x1a\n" + "\bviplevel\x18\x12 \x01(\x05R\bviplevel\x12\"\n" + "\fcomputegrant\x18\x13 \x01(\x03R\fcomputegrant\"\xfc\v\n" + "\tDBProduct\x12\x0e\n" + "\x02id\x18\x01 \x01(\rR\x02id\x12\x18\n" + "\abrandid\x18\x02 \x01(\rR\abrandid\x12+\n" + "\n" + "devicetype\x18\x03 \x01(\x0e2\v.DeviceTypeR\n" + "devicetype\x12\x1e\n" + "\n" + "devicename\x18\x04 \x01(\tR\n" + "devicename\x12\"\n" + "\fproductimage\x18\x05 \x01(\tR\fproductimage\x12\x1a\n" + "\bscanuuid\x18\x06 \x01(\tR\bscanuuid\x12\x18\n" + "\aversion\x18\a \x01(\tR\aversion\x12,\n" + "\x11updatedescription\x18\t \x01(\tR\x11updatedescription\x122\n" + "\x14updatepackageaddress\x18\n" + " \x01(\tR\x14updatepackageaddress\x12\x1c\n" + "\tversionid\x18\v \x01(\rR\tversionid\x12&\n" + "\x0eiscanbindagain\x18\f \x01(\bR\x0eiscanbindagain\x12,\n" + "\x11bindrewardvpitime\x18\r \x01(\rR\x11bindrewardvpitime\x120\n" + "\x13bindrewardtranslate\x18\x0e \x01(\rR\x13bindrewardtranslate\x12,\n" + "\x11bindrewardmeeting\x18\x0f \x01(\rR\x11bindrewardmeeting\x12*\n" + "\x10iscontinuouschat\x18\x10 \x01(\bR\x10iscontinuouschat\x12\x1a\n" + "\beqenable\x18\x11 \x01(\bR\beqenable\x12\x1c\n" + "\tkeyenable\x18\x12 \x01(\bR\tkeyenable\x12&\n" + "\x0eworkmodeenable\x18\x13 \x01(\bR\x0eworkmodeenable\x12&\n" + "\x0ecallmodeenable\x18\x14 \x01(\bR\x0ecallmodeenable\x12\x1c\n" + "\tledenable\x18\x15 \x01(\bR\tledenable\x12*\n" + "\x10finddeviceenable\x18\x16 \x01(\bR\x10finddeviceenable\x122\n" + "\x14noisereductionenable\x18\x17 \x01(\bR\x14noisereductionenable\x12&\n" + "\x0eshutdownenable\x18\x18 \x01(\bR\x0eshutdownenable\x12(\n" + "\x0fshowcasebattery\x18\x19 \x01(\bR\x0fshowcasebattery\x12\"\n" + "\fwakeupenable\x18\x1a \x01(\bR\fwakeupenable\x126\n" + "\x16broadcastpeertranslate\x18\x1b \x01(\bR\x16broadcastpeertranslate\x12\x18\n" + "\achannel\x18\x1c \x01(\tR\achannel\x12\"\n" + "\fchannelextra\x18\x1d \x01(\tR\fchannelextra\x12(\n" + "\x0fhideaiassistant\x18\x1e \x01(\bR\x0fhideaiassistant\x12(\n" + "\x0fdevicecodecount\x18\x1f \x01(\rR\x0fdevicecodecount\x12\x1e\n" + "\n" + "bassfilter\x18 \x01(\rR\n" + "bassfilter\x12\"\n" + "\fserialcursor\x18! \x01(\x03R\fserialcursor\x12\x1c\n" + "\tfactoryid\x18\" \x01(\rR\tfactoryid\x12\x1a\n" + "\bappnames\x18# \x01(\tR\bappnames\x12\x1e\n" + "\n" + "providerid\x18$ \x01(\rR\n" + "providerid\x12\x1e\n" + "\n" + "createtime\x18% \x01(\x03R\n" + "createtime\x12 \n" + "\vdescription\x18& \x01(\tR\vdescription\x12\"\n" + "\foemfactoryid\x18' \x01(\rR\foemfactoryid\x12*\n" + "\x10updateonmismatch\x18( \x01(\bR\x10updateonmismatch\x12\"\n" + "\fbindviplevel\x18< \x01(\x05R\fbindviplevel\x12 \n" + "\vbindcompute\x18= \x01(\x03R\vbindcompute\"\xb0\x01\n" + "\x10DBProductVersion\x12\x0e\n" + "\x02id\x18\x01 \x01(\rR\x02id\x12\x1c\n" + "\tproductid\x18\x02 \x01(\rR\tproductid\x12\x18\n" + "\aversion\x18\x03 \x01(\tR\aversion\x12 \n" + "\vdescription\x18\x04 \x01(\tR\vdescription\x122\n" + "\x14updatepackageaddress\x18\x05 \x01(\tR\x14updatepackageaddress\"\xbc\x03\n" + "\fDBChannelApp\x12\x18\n" + "\achannel\x18\x01 \x01(\x05R\achannel\x12\x18\n" + "\aversion\x18\x02 \x01(\tR\aversion\x12 \n" + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x18\n" + "\aaddress\x18\x04 \x01(\tR\aaddress\x12\x1a\n" + "\btourists\x18\x05 \x01(\bR\btourists\x126\n" + "\x16allowskipdevicebinding\x18\x06 \x01(\bR\x16allowskipdevicebinding\x12 \n" + "\vpaychannels\x18\a \x01(\tR\vpaychannels\x12\x1e\n" + "\n" + "minversion\x18\b \x01(\tR\n" + "minversion\x12 \n" + "\vforceupdate\x18\t \x01(\bR\vforceupdate\x12\x1c\n" + "\tchangelog\x18\n" + " \x01(\tR\tchangelog\x12$\n" + "\rreviewversion\x18\v \x01(\tR\rreviewversion\x12\x16\n" + "\x06status\x18\f \x01(\x05R\x06status\x12(\n" + "\x0ftouristsversion\x18\r \x01(\tR\x0ftouristsversion\"\xeb\x03\n" + "\n" + "DBAuthCode\x12\x12\n" + "\x04code\x18\x01 \x01(\tR\x04code\x12%\n" + "\bcodetype\x18\x02 \x01(\x0e2\t.CodetypeR\bcodetype\x12\x18\n" + "\abrandid\x18\x03 \x01(\rR\abrandid\x12\x1c\n" + "\tproductid\x18\x04 \x01(\rR\tproductid\x12\x16\n" + "\x06number\x18\x05 \x01(\x03R\x06number\x12\x18\n" + "\abatchno\x18\x06 \x01(\tR\abatchno\x12\x1e\n" + "\n" + "createtime\x18\a \x01(\x03R\n" + "createtime\x12\x1a\n" + "\busedtime\x18\t \x01(\x03R\busedtime\x12\x16\n" + "\x06status\x18\n" + " \x01(\x05R\x06status\x12\x10\n" + "\x03uid\x18\v \x01(\tR\x03uid\x12\x1c\n" + "\tdevicemac\x18\f \x01(\tR\tdevicemac\x12\x1a\n" + "\bdisabled\x18\r \x01(\x05R\bdisabled\x12\x1c\n" + "\tchannelid\x18\x0e \x01(\tR\tchannelid\x12\x18\n" + "\avipdays\x18\x0f \x01(\x05R\avipdays\x12\x1a\n" + "\bviplevel\x18\x10 \x01(\x05R\bviplevel\x12\"\n" + "\fcomputegrant\x18\x11 \x01(\x03R\fcomputegrant\x12 \n" + "\vcomputeused\x18\x12 \x01(\x03R\vcomputeused\"\xb5\x03\n" + "\x13DBFactoryPublicCode\x12\x12\n" + "\x04code\x18\x01 \x01(\tR\x04code\x12\x18\n" + "\abrandid\x18\x02 \x01(\rR\abrandid\x12\x1c\n" + "\tproductid\x18\x03 \x01(\rR\tproductid\x12\x16\n" + "\x06remark\x18\x04 \x01(\tR\x06remark\x12\x16\n" + "\x06status\x18\x05 \x01(\x05R\x06status\x12\x18\n" + "\amaxuses\x18\x06 \x01(\rR\amaxuses\x12\x1a\n" + "\buseduses\x18\a \x01(\rR\buseduses\x12\x1e\n" + "\n" + "expiretime\x18\b \x01(\x03R\n" + "expiretime\x12,\n" + "\x11bindrewardvpitime\x18\t \x01(\rR\x11bindrewardvpitime\x120\n" + "\x13bindrewardtranslate\x18\n" + " \x01(\rR\x13bindrewardtranslate\x12,\n" + "\x11bindrewardmeeting\x18\v \x01(\rR\x11bindrewardmeeting\x12\x1e\n" + "\n" + "createtime\x18\f \x01(\x03R\n" + "createtime\x12\x1e\n" + "\n" + "updatetime\x18\r \x01(\x03R\n" + "updatetime\"h\n" + "\fDBGoodsLocal\x12\x12\n" + "\x04lang\x18\x01 \x01(\tR\x04lang\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1a\n" + "\bcurrency\x18\x03 \x01(\tR\bcurrency\x12\x14\n" + "\x05price\x18\x06 \x01(\x01R\x05price\"\xa3\x02\n" + "\aDBGoods\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" + "\x06enable\x18\x02 \x01(\bR\x06enable\x12\x12\n" + "\x04name\x18\x03 \x01(\tR\x04name\x12\x1c\n" + "\tlocalname\x18\x04 \x01(\tR\tlocalname\x12\x14\n" + "\x05price\x18\x06 \x01(\x05R\x05price\x12(\n" + "\tusagetype\x18\a \x01(\x0e2\n" + ".UsageTypeR\tusagetype\x12\x14\n" + "\x05ainum\x18\b \x01(\x03R\x05ainum\x12\x18\n" + "\ameetnum\x18\t \x01(\x03R\ameetnum\x12\x1a\n" + "\btradenum\x18\n" + " \x01(\x03R\btradenum\x12\x18\n" + "\aviptime\x18\v \x01(\x05R\aviptime\x12\x18\n" + "\acompute\x18\f \x01(\x03R\acompute\"\x9f\x01\n" + "\rDBWakeupVoice\x12\x0e\n" + "\x02id\x18\x01 \x01(\rR\x02id\x12\x16\n" + "\x06enable\x18\x02 \x01(\bR\x06enable\x12\x12\n" + "\x04name\x18\x03 \x01(\tR\x04name\x12\x12\n" + "\x04desc\x18\x04 \x01(\tR\x04desc\x12\x18\n" + "\aversion\x18\x05 \x01(\tR\aversion\x12$\n" + "\rpackagaddress\x18\x06 \x01(\tR\rpackagaddress\"\xb8\x03\n" + "\fDBUserUseLog\x12\x0e\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x12\x10\n" + "\x03uid\x18\x02 \x01(\tR\x03uid\x12\x0e\n" + "\x02ts\x18\x03 \x01(\x03R\x02ts\x12&\n" + "\alogtype\x18\x04 \x01(\x0e2\f.UserLogTypeR\alogtype\x12\x1c\n" + "\taddvipday\x18\x05 \x01(\x03R\taddvipday\x12*\n" + "\x10addagentintegral\x18\x06 \x01(\x03R\x10addagentintegral\x12&\n" + "\x0eaddtradesecond\x18\a \x01(\x03R\x0eaddtradesecond\x12$\n" + "\raddmeetsecond\x18\b \x01(\x03R\raddmeetsecond\x12\x14\n" + "\x05extra\x18\t \x01(\tR\x05extra\x12\x18\n" + "\acompute\x18\n" + " \x01(\x03R\acompute\x12$\n" + "\rcomputedevice\x18\v \x01(\x03R\rcomputedevice\x12 \n" + "\vcomputeuser\x18\f \x01(\x03R\vcomputeuser\x12 \n" + "\vcomputeover\x18\r \x01(\x03R\vcomputeover\x12\x1c\n" + "\tdevicemac\x18\x0e \x01(\tR\tdevicemac\"\x84\x05\n" + "\x10DBUserStatistics\x12\x10\n" + "\x03uid\x18\x01 \x01(\tR\x03uid\x12\x1c\n" + "\taichatnum\x18\x02 \x01(\x03R\taichatnum\x12$\n" + "\raichatuptoken\x18\x03 \x01(\x03R\raichatuptoken\x12(\n" + "\x0faichatdowntoken\x18\x04 \x01(\x03R\x0faichatdowntoken\x12\x18\n" + "\ameetnum\x18\x05 \x01(\x03R\ameetnum\x12\x1a\n" + "\bmeettime\x18\x06 \x01(\x03R\bmeettime\x12&\n" + "\x0etrademodel1num\x18\a \x01(\x03R\x0etrademodel1num\x12(\n" + "\x0ftrademodel1time\x18\b \x01(\x03R\x0ftrademodel1time\x12&\n" + "\x0etrademodel2num\x18\t \x01(\x03R\x0etrademodel2num\x12(\n" + "\x0ftrademodel2time\x18\n" + " \x01(\x03R\x0ftrademodel2time\x12&\n" + "\x0etrademodel3num\x18\v \x01(\x05R\x0etrademodel3num\x12(\n" + "\x0ftrademodel3time\x18\f \x01(\x03R\x0ftrademodel3time\x12&\n" + "\x0etrademodel4num\x18\r \x01(\x05R\x0etrademodel4num\x12(\n" + "\x0ftrademodel4time\x18\x0e \x01(\x03R\x0ftrademodel4time\x12&\n" + "\x0etrademodel5num\x18\x0f \x01(\x05R\x0etrademodel5num\x12&\n" + "\x0etradewordcount\x18\x10 \x01(\x05R\x0etradewordcount\x12\"\n" + "\fcomputetotal\x18\x11 \x01(\x03R\fcomputetotal\"\xca\a\n" + "\tDBAppStat\x12\x0e\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x12\x1b\n" + "\tstat_date\x18\x02 \x01(\tR\bstatDate\x12\x1d\n" + "\n" + "pay_amount\x18\x03 \x01(\x03R\tpayAmount\x12\x1f\n" + "\vorder_count\x18\x16 \x01(\x05R\n" + "orderCount\x12\x1b\n" + "\tpay_count\x18\x04 \x01(\x05R\bpayCount\x12,\n" + "\x12failed_order_count\x18\x17 \x01(\x05R\x10failedOrderCount\x12$\n" + "\x0epay_user_count\x18\x05 \x01(\x05R\fpayUserCount\x12 \n" + "\fadd_vip_days\x18\x06 \x01(\x03R\n" + "addVipDays\x12&\n" + "\x0fadd_ai_integral\x18\a \x01(\x03R\raddAiIntegral\x12(\n" + "\x10add_trade_second\x18\b \x01(\x03R\x0eaddTradeSecond\x12&\n" + "\x0fadd_meet_second\x18\t \x01(\x03R\raddMeetSecond\x12\"\n" + "\rai_chat_count\x18\n" + " \x01(\x03R\vaiChatCount\x12\x1e\n" + "\vai_up_token\x18\v \x01(\x03R\taiUpToken\x12\"\n" + "\rai_down_token\x18\f \x01(\x03R\vaiDownToken\x12\x1f\n" + "\vtrade_count\x18\r \x01(\x03R\n" + "tradeCount\x12\x1d\n" + "\n" + "trade_time\x18\x0e \x01(\x03R\ttradeTime\x12\x1f\n" + "\vtrade_words\x18\x0f \x01(\x03R\n" + "tradeWords\x12\x1d\n" + "\n" + "meet_count\x18\x10 \x01(\x03R\tmeetCount\x12\x1b\n" + "\tmeet_time\x18\x11 \x01(\x03R\bmeetTime\x12$\n" + "\x0enew_user_count\x18\x12 \x01(\x05R\fnewUserCount\x12\x1f\n" + "\vlogin_count\x18\x13 \x01(\x05R\n" + "loginCount\x12*\n" + "\x11active_user_count\x18\x18 \x01(\x05R\x0factiveUserCount\x12(\n" + "\x10total_user_count\x18\x19 \x01(\x03R\x0etotalUserCount\x12$\n" + "\x0evip_user_count\x18\x1a \x01(\x05R\fvipUserCount\x12*\n" + "\x11bind_device_count\x18\x14 \x01(\x05R\x0fbindDeviceCount\x12.\n" + "\x13active_device_count\x18\x1b \x01(\x05R\x11activeDeviceCount\x12\x1f\n" + "\vupdate_time\x18\x15 \x01(\x03R\n" + "updateTime*\xa2\x01\n" + "\vUserChannel\x12\v\n" + "\aUNKNOWN\x10\x00\x12\x10\n" + "\fCHINA_HUAWEI\x10\x01\x12\x10\n" + "\fCHINA_XIAOMI\x10\x02\x12\x0e\n" + "\n" + "CHINA_OPPO\x10\x03\x12\x0e\n" + "\n" + "CHINA_VIVO\x10\x04\x12\x0f\n" + "\vCHINA_HONOR\x10\x05\x12\f\n" + "\bOFFICIAL\x10d\x12\x10\n" + "\fGLOBAL_APPLE\x10e\x12\x11\n" + "\rGLOBAL_GOOGLE\x10f*(\n" + "\bCodetype\x12\f\n" + "\bAUTHCODE\x10\x00\x12\x0e\n" + "\n" + "DEVICECODE\x10\x01*q\n" + "\x0eSolutionVendor\x12\x12\n" + "\x0eVENDOR_UNKNOWN\x10\x00\x12\x10\n" + "\fVENDOR_JIELI\x10\x01\x12\x11\n" + "\rVENDOR_LANXUN\x10\x02\x12\x13\n" + "\x0fVENDOR_HENGXUAN\x10\x03\x12\x11\n" + "\rVENDOR_BOTONG\x10\x04B\x06Z\x04.;pbb\x06proto3" var ( file_db_proto_rawDescOnce sync.Once file_db_proto_rawDescData []byte ) func file_db_proto_rawDescGZIP() []byte { file_db_proto_rawDescOnce.Do(func() { file_db_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_db_proto_rawDesc), len(file_db_proto_rawDesc))) }) return file_db_proto_rawDescData } var file_db_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_db_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_db_proto_goTypes = []any{ (UserChannel)(0), // 0: UserChannel (Codetype)(0), // 1: Codetype (SolutionVendor)(0), // 2: SolutionVendor (*DBUser)(nil), // 3: DBUser (*DBUserIdVerify)(nil), // 4: DBUserIdVerify (*DBUserDivice)(nil), // 5: DBUserDivice (*DBUserPortrait)(nil), // 6: DBUserPortrait (*DBAgent)(nil), // 7: DBAgent (*DBMcpServer)(nil), // 8: DBMcpServer (*DBGlobalConfigItem)(nil), // 9: DBGlobalConfigItem (*DBAppConfigItem)(nil), // 10: DBAppConfigItem (*DBSolutionProvider)(nil), // 11: DBSolutionProvider (*DBBrand)(nil), // 12: DBBrand (*DBChannel)(nil), // 13: DBChannel (*DBSettlementMonth)(nil), // 14: DBSettlementMonth (*DBProductionBatch)(nil), // 15: DBProductionBatch (*DBProduct)(nil), // 16: DBProduct (*DBProductVersion)(nil), // 17: DBProductVersion (*DBChannelApp)(nil), // 18: DBChannelApp (*DBAuthCode)(nil), // 19: DBAuthCode (*DBFactoryPublicCode)(nil), // 20: DBFactoryPublicCode (*DBGoodsLocal)(nil), // 21: DBGoodsLocal (*DBGoods)(nil), // 22: DBGoods (*DBWakeupVoice)(nil), // 23: DBWakeupVoice (*DBUserUseLog)(nil), // 24: DBUserUseLog (*DBUserStatistics)(nil), // 25: DBUserStatistics (*DBAppStat)(nil), // 26: DBAppStat (UserState)(0), // 27: UserState (DeviceType)(0), // 28: DeviceType (AgentSource)(0), // 29: AgentSource (Region)(0), // 30: Region (MCPServerType)(0), // 31: MCPServerType (UsageType)(0), // 32: UsageType (UserLogType)(0), // 33: UserLogType } var file_db_proto_depIdxs = []int32{ 0, // 0: DBUser.channel:type_name -> UserChannel 27, // 1: DBUser.State:type_name -> UserState 28, // 2: DBUserDivice.devicetype:type_name -> DeviceType 29, // 3: DBAgent.source:type_name -> AgentSource 30, // 4: DBMcpServer.region:type_name -> Region 31, // 5: DBMcpServer.stype:type_name -> MCPServerType 30, // 6: DBGlobalConfigItem.region:type_name -> Region 2, // 7: DBSolutionProvider.vendor:type_name -> SolutionVendor 28, // 8: DBProduct.devicetype:type_name -> DeviceType 1, // 9: DBAuthCode.codetype:type_name -> Codetype 32, // 10: DBGoods.usagetype:type_name -> UsageType 33, // 11: DBUserUseLog.logtype:type_name -> UserLogType 12, // [12:12] is the sub-list for method output_type 12, // [12:12] is the sub-list for method input_type 12, // [12:12] is the sub-list for extension type_name 12, // [12:12] is the sub-list for extension extendee 0, // [0:12] is the sub-list for field type_name } func init() { file_db_proto_init() } func file_db_proto_init() { if File_db_proto != nil { return } file_enum_proto_init() type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_db_proto_rawDesc), len(file_db_proto_rawDesc)), NumEnums: 3, NumMessages: 24, NumExtensions: 0, NumServices: 0, }, GoTypes: file_db_proto_goTypes, DependencyIndexes: file_db_proto_depIdxs, EnumInfos: file_db_proto_enumTypes, MessageInfos: file_db_proto_msgTypes, }.Build() File_db_proto = out.File file_db_proto_goTypes = nil file_db_proto_depIdxs = nil }