feat: 同步 huangguo2-server 的 11 个非基线提交

按意图重做在 huakui 代码底:
- 删除数据埋点逻辑:移除 pub/dataReport、reportser、srv_report、
  eventmod、上报定时任务及注册/登录/点赞/收藏/评论/解锁/订单处的
  上报调用和 reportSdkConfig 配置下发
- app 认证改为按设备ID识别用户:去掉 token 校验、Register/Login/
  ResetPassword/GuestLogin 接口,新增 ResolveDeviceUser 和设备缓存
- 广告改为按 AppId 从媒资中心拉取:pub/storage 新增 QueryAdvitise,
  UpdateAdvitiseData 替代 UpdateAdvitiseDataFromJt
- 后台登录取消谷歌二次验证,密码正确即登录
- 短剧/专题 slug 改为 10 位大小写字母+数字混合
- 本地 app.yaml/web.yaml 保留 HKDJNET_* 模板(不提交生产凭据)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 12:59:14 +08:00
co-authored by Claude Opus 4.7
parent 85c0071fd8
commit e7179da072
48 changed files with 346 additions and 2933 deletions
+24
View File
@@ -156,6 +156,30 @@ func QueryMedia(baseInfo *MediaQueryeReq, domain string) (result *VideoQueryResu
return
}
func QueryAdvitise(baseInfo *AppAdvitiseInfoReq, domain string) (result *AdvitiseQuerysResult, err error) {
result = &AdvitiseQuerysResult{}
paramJson, err := json.Marshal(baseInfo)
if err != nil {
return
}
if len(domain) == 0 {
domain = DomainAddressRepair(domain, BucketVideoAddressV2)
}
url := domain
if !strings.Contains(domain, "/media/web/app/advitise") {
url = domain + "/media/web/app/advitise"
}
fr, err := http.Post(url, header, bytes.NewReader(paramJson))
if err != nil {
return
}
if err = json.Unmarshal(fr.Data, result); err != nil {
fmt.Println(err)
return nil, err
}
return
}
func QueryMedias(baseInfo *MediaQueryesReq, domain string) (result *VideoQuerysResult, err error) {
result = &VideoQuerysResult{
Data: make([]MediaResp, 0),
+27
View File
@@ -1,6 +1,7 @@
package proxy
import (
"encoding/json"
"hkdj-web-server/pub/models/videoinformationmod"
"hkdj-web-server/pub/mongos"
"strings"
@@ -425,6 +426,32 @@ type AdvitiseInfo struct {
Images string `json:"images" bson:"images"` // 视频banner
Link string `json:"link" bson:"link"` // 链接
}
// UnmarshalJSON 兼容远端 id 返回数字或字符串两种格式,统一解析为字符串,避免大整数(雪花ID)在 JS 端丢精度
func (a *AdvitiseInfo) UnmarshalJSON(data []byte) error {
type alias AdvitiseInfo
aux := &struct {
Id json.RawMessage `json:"id"`
*alias
}{alias: (*alias)(a)}
if err := json.Unmarshal(data, aux); err != nil {
return err
}
raw := strings.TrimSpace(string(aux.Id))
switch {
case raw == "" || raw == "null":
a.Id = ""
case strings.HasPrefix(raw, `"`):
var s string
if err := json.Unmarshal([]byte(raw), &s); err != nil {
return err
}
a.Id = s
default:
a.Id = raw
}
return nil
}
type AdvitiseData struct {
DialogList []AdvitiseInfo `json:"dialogList" bson:"dialogList"` // 弹窗广告
HomeList []AdvitiseInfo `json:"homeList" bson:"homeList"` // 首页列表