104 lines
3.2 KiB
Go
104 lines
3.2 KiB
Go
package userser
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"time"
|
|
|
|
"91porn-server/app/appg"
|
|
"91porn-server/common/httputil"
|
|
"91porn-server/common/log"
|
|
"91porn-server/models/commod"
|
|
)
|
|
|
|
type UserDistrictReq struct {
|
|
AppId int32 `form:"appId" json:"appId" binding:"required"` // APPID
|
|
DistrictCode string `json:"dc"` // 剪切板信息 dc(渠道)
|
|
PromSeqe string `json:"pc"` // 剪切板信息 pc(代理)
|
|
IP string `json:"ip"` // IP信息
|
|
SysType string `json:"sysType"` // 操作系统类型 安卓 IOS
|
|
}
|
|
|
|
type UserDistrictInfo struct {
|
|
IsDirect bool `json:"isDirect"` // 是否是直推
|
|
DistrictCode string `json:"districtCode"` // 渠道码
|
|
ParentPromCode string `json:"parentPromCode"` // 全民代理 上级用户推广码
|
|
ParentId uint64 `json:"parentId"` // 全名代理 上级用户
|
|
ParentInviteCount int64 `json:"parentInviteCount"` // 全名代理 上级用户下级用户
|
|
}
|
|
|
|
type ShareUrlReq struct {
|
|
AppId int32 `from:"appid" json:"appid"` // AppID
|
|
}
|
|
|
|
// 落地页获取显示的按钮信息
|
|
type ShareUrlResp struct {
|
|
Url []string `from:"url" json:"url"` // 分享地址
|
|
}
|
|
|
|
func GetUserDistictInfo(dc, pc, ip, sysType string) (dictrictInfo UserDistrictInfo) {
|
|
url := appg.Conf.URL.ProductUrl + "/api/stat/userInvite/district"
|
|
// 设置默认值
|
|
request := UserDistrictReq{
|
|
AppId: commod.KFK_APPID,
|
|
SysType: sysType,
|
|
DistrictCode: dc,
|
|
PromSeqe: pc,
|
|
IP: ip,
|
|
}
|
|
//限制有渠道码or分享码的就不请求统计中心参与补量查询
|
|
if dc != "" || pc != "" {
|
|
if pc != "" {
|
|
dictrictInfo.IsDirect = false
|
|
dictrictInfo.ParentPromCode = pc
|
|
} else {
|
|
dictrictInfo.IsDirect = true
|
|
dictrictInfo.DistrictCode = dc
|
|
}
|
|
return
|
|
}
|
|
// 2秒超时
|
|
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
|
|
defer cancel()
|
|
if err := httpRequest(ctx, url, &request, &dictrictInfo); err != nil {
|
|
log.Error("GetUserDistictInfo HttpRequest", log.Any("url", url), log.Any("request", request), log.E(err))
|
|
if pc != "" {
|
|
dictrictInfo.IsDirect = false
|
|
dictrictInfo.ParentPromCode = pc
|
|
} else {
|
|
dictrictInfo.IsDirect = true
|
|
dictrictInfo.DistrictCode = dc
|
|
}
|
|
return
|
|
}
|
|
fmt.Println("resp", dictrictInfo)
|
|
return dictrictInfo
|
|
}
|
|
|
|
func httpRequest(ctx context.Context, url string, request interface{}, resp interface{}) error {
|
|
code, err := httputil.DefaultClientPostJsonWithRespWithCtx(ctx, resp, url, nil, &request)
|
|
if err != nil {
|
|
log.Error("HttpRequest err", log.Any("Url", url), log.E(err))
|
|
return err
|
|
}
|
|
if code != http.StatusOK {
|
|
log.Error("HttpRequest err", log.Any("code", code))
|
|
return fmt.Errorf("code err, %d", code)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func UserShareList(ctx context.Context) (urls []string, err error) {
|
|
request := ShareUrlReq{
|
|
AppId: commod.KFK_APPID,
|
|
}
|
|
url := appg.Conf.URL.ProductUrl + "/api/stat/share/list"
|
|
resp := &ShareUrlResp{}
|
|
if err = httpRequest(ctx, url, &request, resp); err != nil {
|
|
log.Error("UserInviteRechargeHandle HttpRequest", log.Any("url", url), log.Any("request", request), log.E(err))
|
|
return nil, err
|
|
}
|
|
return resp.Url, nil
|
|
}
|