first commit
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
package websrv
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"xiawan/wx/clientsdk/baseutils"
|
||||
"xiawan/wx/srv/srvconfig"
|
||||
)
|
||||
|
||||
func createParamData(paramMap map[string]string) []byte {
|
||||
retString := ""
|
||||
for key, value := range paramMap {
|
||||
retString = retString + key + "=" + value + "&"
|
||||
}
|
||||
retBytes := []byte(retString)
|
||||
count := len(retBytes)
|
||||
retBytes = retBytes[0 : count-1]
|
||||
return retBytes
|
||||
}
|
||||
|
||||
func getBaseParamMap(taskInfo *TaskInfo) map[string]string {
|
||||
retMap := make(map[string]string)
|
||||
curTime := strconv.Itoa(int(time.Now().UnixNano() / 1000000000))
|
||||
head := curTime + taskInfo.SignKey
|
||||
hsWebTime := curTime + baseutils.RandomBigHexString(20)
|
||||
apiKey := baseutils.Md5Value(head)
|
||||
|
||||
retMap["name"] = taskInfo.Name
|
||||
retMap["app_number"] = taskInfo.AppNumber
|
||||
retMap["apikey"] = apiKey
|
||||
retMap["hswebtime"] = hsWebTime
|
||||
retMap["time"] = curTime
|
||||
|
||||
return retMap
|
||||
}
|
||||
|
||||
// UploadTaskStatus 上传任务状态
|
||||
func UploadTaskStatus(webTask *WebTask) error {
|
||||
baseParamMap := getBaseParamMap(webTask.TaskInfo)
|
||||
baseParamMap["name"] = webTask.UserInfo.NickName
|
||||
baseParamMap["task_id"] = webTask.TaskInfo.TaskID
|
||||
baseParamMap["account"] = webTask.UserInfo.WxId
|
||||
baseParamMap["headimg"] = webTask.UserInfo.HeadURL
|
||||
baseParamMap["status"] = webTask.Status
|
||||
if webTask.Status == TaskStateLoginSuccess {
|
||||
tmpToken := base64.StdEncoding.EncodeToString(webTask.UserInfo.AutoAuthKey)
|
||||
baseParamMap["token"] = tmpToken
|
||||
baseParamMap["data"] = ""
|
||||
baseParamMap["autoauth"] = "data=" + "token=" + tmpToken
|
||||
}
|
||||
paramBytes := createParamData(baseParamMap)
|
||||
respData, err := TaskPost("http://"+srvconfig.GlobalSetting.WebDomain+"/statistic/Wechat/upd.html", paramBytes)
|
||||
if err != nil {
|
||||
baseutils.PrintLog(err.Error())
|
||||
return err
|
||||
}
|
||||
resp := &UploadTaskStatusResp{}
|
||||
err = json.Unmarshal(respData, resp)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 如果显示44
|
||||
if resp.Code == 44 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ReportWechatStatus 上报状态
|
||||
func ReportWechatStatus(webTask *WebTask, tmpType string) error {
|
||||
baseParamMap := getBaseParamMap(webTask.TaskInfo)
|
||||
baseParamMap["name"] = webTask.UserInfo.NickName
|
||||
baseParamMap["uuid"] = webTask.UserInfo.UUID
|
||||
baseParamMap["task_id"] = webTask.TaskInfo.TaskID
|
||||
baseParamMap["account"] = webTask.UserInfo.WxId
|
||||
baseParamMap["task_type"] = "2"
|
||||
baseParamMap["service"] = srvconfig.GlobalSetting.WebDomainNum
|
||||
baseParamMap["type"] = tmpType
|
||||
connectInfo := map[string]interface{}{}
|
||||
connectInfo["info"] = baseParamMap
|
||||
|
||||
// 复制所有能够被序列化的字段
|
||||
for key, value := range webTask.ConnectInfo {
|
||||
switch v := value.(type) {
|
||||
case func(): // 这里检查并排除不支持的字段
|
||||
fmt.Println("Skipping function:", key)
|
||||
default:
|
||||
// 判断是否是基本类型
|
||||
if reflect.TypeOf(v).Kind() == reflect.String || reflect.TypeOf(v).Kind() == reflect.Int || reflect.TypeOf(v).Kind() == reflect.Bool {
|
||||
connectInfo[key] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
// 将参数转换为 JSON 格式
|
||||
paramBytes, err := json.Marshal(connectInfo)
|
||||
if err != nil {
|
||||
fmt.Println("Error marshaling JSON:", err)
|
||||
return err
|
||||
}
|
||||
if srvconfig.GlobalSetting.WebDomain == "" {
|
||||
return nil
|
||||
}
|
||||
respData, err := TaskPostJson("http://"+srvconfig.GlobalSetting.WebDomain+"/statistic/Wechat/reportStatus", paramBytes)
|
||||
if err != nil {
|
||||
baseutils.PrintLog(err.Error())
|
||||
return err
|
||||
}
|
||||
resp := &UploadTaskStatusResp{}
|
||||
err = json.Unmarshal(respData, resp)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// 上报错误
|
||||
if resp.Code == 44 {
|
||||
return errors.New("上报错误")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user