|
@@ -0,0 +1,277 @@
|
|
|
|
+package services
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "context"
|
|
|
|
+ "encoding/json"
|
|
|
|
+ "fmt"
|
|
|
|
+ "hongze/hongze_cygx/models"
|
|
|
|
+ "hongze/hongze_cygx/utils"
|
|
|
|
+ "io/ioutil"
|
|
|
|
+ "net/http"
|
|
|
|
+ "strconv"
|
|
|
|
+ "strings"
|
|
|
|
+ "time"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+type GetShangHaiTokenResultApi struct {
|
|
|
|
+ Code int `json:"code"`
|
|
|
|
+ Msg string `json:"msg"`
|
|
|
|
+ Time int `json:"time"`
|
|
|
|
+ Data ShangHaiResultApidate `json:"data"`
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type ShangHaiResultApidate struct {
|
|
|
|
+ AccessToken string `json:"access_token"`
|
|
|
|
+ ExpireIn int `json:"expire_in"`
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type GetShangHaiTokenResultApiComPany struct {
|
|
|
|
+ Code int `json:"code"`
|
|
|
|
+ Msg string `json:"msg"`
|
|
|
|
+ Time int `json:"time"`
|
|
|
|
+ Data FailInfos `json:"data"`
|
|
|
|
+}
|
|
|
|
+type FailInfos struct {
|
|
|
|
+ TotalCount int `json:"total_count"`
|
|
|
|
+ FailInfo []ShangHaiResultApidateComPany `json:"fail_info"`
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type ShangHaiResultApidateComPany struct {
|
|
|
|
+ ErrVal string `json:"errVal"`
|
|
|
|
+ ErrMsg string `json:"errMsg"`
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//c
|
|
|
|
+func SendComapnyToShanghai(url, jsonCompany, postType string) {
|
|
|
|
+ method := "POST"
|
|
|
|
+ //fmt.Println(string(jsonCompany))
|
|
|
|
+ //utils.FileLog.Info(string(jsonCompany))
|
|
|
|
+ payload := strings.NewReader(jsonCompany)
|
|
|
|
+ client := &http.Client{}
|
|
|
|
+ req, err := http.NewRequest(method, url, payload)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ req.Header.Add("Content-Type", "application/json")
|
|
|
|
+ res, err := client.Do(req)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer res.Body.Close()
|
|
|
|
+ body, err := ioutil.ReadAll(res.Body)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println(err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ var result GetShangHaiTokenResultApiComPany
|
|
|
|
+ err = json.Unmarshal(body, &result)
|
|
|
|
+ if err != nil {
|
|
|
|
+ fmt.Println("Getres.pdfResult Err:", err.Error())
|
|
|
|
+ }
|
|
|
|
+ if result.Code != 1 {
|
|
|
|
+ go utils.SendEmail("同步策略平台信息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), url, utils.EmailSendToExpert)
|
|
|
|
+ }
|
|
|
|
+ item := new(models.CygxShanghaiCompanyLog)
|
|
|
|
+ item.CreateTime = time.Now()
|
|
|
|
+ item.Url = url
|
|
|
|
+ item.Body = jsonCompany
|
|
|
|
+ item.Result = string(body)
|
|
|
|
+ go models.AddCygxShanghaiCompanyLog(item)
|
|
|
|
+
|
|
|
|
+ if strings.Index(string(body), "必填") > 0 || strings.Index(string(body), "失败") > 0 || strings.Index(string(body), "社会信用代码格式错误") > 0 {
|
|
|
|
+ go utils.SendEmail("同步策略平台信息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), string(body), utils.EmailSendToExpert)
|
|
|
|
+ }
|
|
|
|
+ //var companyCode string
|
|
|
|
+ for _, v := range result.Data.FailInfo {
|
|
|
|
+ if v.ErrMsg != "" {
|
|
|
|
+ //companyCode += "'" + v.ErrVal + "',"
|
|
|
|
+ item := new(models.CygxShanghaiErrLog)
|
|
|
|
+ item.CreateTime = time.Now()
|
|
|
|
+ item.ErrMsg = v.ErrMsg
|
|
|
|
+ item.ErrVal = v.ErrVal
|
|
|
|
+ item.ErrType = postType
|
|
|
|
+ go models.AddCygxShanghaiErrLog(item)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //给产品导数据用,别删
|
|
|
|
+ //companyCode = postType + companyCode
|
|
|
|
+ ////fmt.Println(result.Data.FailInfo)
|
|
|
|
+ //utils.FileLog.Info(string(companyCode))
|
|
|
|
+ //utils.FileLog.Info(string(body))
|
|
|
|
+ //fmt.Println(string(body))
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func DotongbuShangHai(cont context.Context) (err error) {
|
|
|
|
+ var msg string
|
|
|
|
+ defer func() {
|
|
|
|
+ if err != nil {
|
|
|
|
+ go utils.SendEmail("同步策略平台获取数据信息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToExpert)
|
|
|
|
+ }
|
|
|
|
+ }()
|
|
|
|
+ //获取token
|
|
|
|
+ url := "https://crm.hzinsights.com/openapi/v1/auth/getAccessToken?app_key=26945134&app_secret=b99cb2bdec70d20156000f664ec5ac30"
|
|
|
|
+ method := "GET"
|
|
|
|
+ client := &http.Client{}
|
|
|
|
+ req, err := http.NewRequest(method, url, nil)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "GetToken Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ res, err := client.Do(req)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "client Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ defer res.Body.Close()
|
|
|
|
+ body, err := ioutil.ReadAll(res.Body)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "body Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ var result GetShangHaiTokenResultApi
|
|
|
|
+ err = json.Unmarshal(body, &result)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "Get result Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ accessToken := result.Data.AccessToken
|
|
|
|
+ fmt.Println(accessToken)
|
|
|
|
+ //同步权益客户
|
|
|
|
+ companyList, err := models.GetSendCompanyList()
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "GetSendCompanyList Err:" + err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ fmt.Println("权益客户", len(companyList))
|
|
|
|
+ var companyItems []*models.CompanyJson
|
|
|
|
+ if len(companyList) > 0 {
|
|
|
|
+ url = "https://crm.hzinsights.com/openapi/v1/Customer/batchSyncFiccCustomer?access_token=" + accessToken
|
|
|
|
+ for k, _ := range companyList {
|
|
|
|
+ companyList[k].Fe = "权益"
|
|
|
|
+ companyList[k].EndDate = strconv.Itoa(int(companyList[k].EndDateTime.Unix()))
|
|
|
|
+ //一次同步一百条
|
|
|
|
+ companyItems = append(companyItems, companyList[k])
|
|
|
|
+ if (k+1)%100 == 0 {
|
|
|
|
+ data, err := json.Marshal(companyItems)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "companyItems Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ jsonstr := string(data)
|
|
|
|
+ jsonstr = "{\"sync_data\": " + jsonstr + " }"
|
|
|
|
+ SendComapnyToShanghai(url, jsonstr, "权益")
|
|
|
|
+ companyItems = make([]*models.CompanyJson, 0)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //如果剩下还有则同步剩下的部分
|
|
|
|
+ if len(companyItems) > 0 {
|
|
|
|
+ data, err := json.Marshal(companyItems)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "companyItems Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ jsonstr := string(data)
|
|
|
|
+ jsonstr = "{\"sync_data\": " + jsonstr + " }"
|
|
|
|
+ SendComapnyToShanghai(url, jsonstr, "权益")
|
|
|
|
+ companyItems = make([]*models.CompanyJson, 0)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //同步FICC客户
|
|
|
|
+ companyFiccList, err := models.GetSendCompanyFiccList()
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "GetSendCompanyFiccList Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ fmt.Println("FICC客户", len(companyFiccList))
|
|
|
|
+ var companyFiccItems []*models.CompanyJson
|
|
|
|
+ if len(companyFiccList) > 0 {
|
|
|
|
+ url = "https://crm.hzinsights.com/openapi/v1/Customer/batchSyncFiccCustomer?access_token=" + accessToken
|
|
|
|
+ for k, _ := range companyFiccList {
|
|
|
|
+ companyFiccList[k].Fe = "FICC"
|
|
|
|
+ companyFiccList[k].EndDate = strconv.Itoa(int(companyFiccList[k].EndDateTime.Unix()))
|
|
|
|
+ //一次同步一百条
|
|
|
|
+ companyFiccItems = append(companyFiccItems, companyFiccList[k])
|
|
|
|
+ if (k+1)%100 == 0 {
|
|
|
|
+ data, err := json.Marshal(companyFiccItems)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "companyFiccItems Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ jsonstr := string(data)
|
|
|
|
+ jsonstr = "{\"sync_data\": " + jsonstr + " }"
|
|
|
|
+ SendComapnyToShanghai(url, jsonstr, "FICC")
|
|
|
|
+ companyFiccItems = make([]*models.CompanyJson, 0)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //如果剩下还有则同步剩下的部分
|
|
|
|
+ if len(companyFiccItems) > 0 {
|
|
|
|
+ data, err := json.Marshal(companyFiccItems)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "companyFiccItems Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ jsonstr := string(data)
|
|
|
|
+ jsonstr = "{\"sync_data\": " + jsonstr + " }"
|
|
|
|
+ SendComapnyToShanghai(url, jsonstr, "FICC")
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ userList, err := models.GetSendUserList()
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "GetSendUserList Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ fmt.Println("userList", len(userList))
|
|
|
|
+ var userItems []*models.UserJson
|
|
|
|
+ if len(userList) > 0 {
|
|
|
|
+ url = "https://crm.hzinsights.com/openapi/v1/CustomerContact/batchSyncFiccCustomerContact?access_token=" + accessToken
|
|
|
|
+ for k, v := range userList {
|
|
|
|
+ if v.Sex == "1" {
|
|
|
|
+ userList[k].Sex = "男"
|
|
|
|
+ } else {
|
|
|
|
+ userList[k].Sex = "女"
|
|
|
|
+ }
|
|
|
|
+ if v.IsMaker == "1" {
|
|
|
|
+ userList[k].IsMaker = "是"
|
|
|
|
+ } else {
|
|
|
|
+ userList[k].IsMaker = "否"
|
|
|
|
+ }
|
|
|
|
+ userList[k].CountryCode = "+" + v.CountryCode
|
|
|
|
+ userList[k].OutboundCountryCode = "+" + v.OutboundCountryCode
|
|
|
|
+ if userList[k].Mobile != "" && userList[k].OutboundMobile != "" && userList[k].Mobile == userList[k].OutboundMobile {
|
|
|
|
+ userList[k].OutboundMobile = ""
|
|
|
|
+ userList[k].OutboundCountryCode = ""
|
|
|
|
+ }
|
|
|
|
+ //一次同步一百条
|
|
|
|
+ userItems = append(userItems, userList[k])
|
|
|
|
+ if (k+1)%100 == 0 {
|
|
|
|
+ data, err := json.Marshal(userItems)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "userItems Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ fmt.Println(k)
|
|
|
|
+ jsonstr := string(data)
|
|
|
|
+ jsonstr = "{\"sync_data\": " + jsonstr + " }"
|
|
|
|
+ SendComapnyToShanghai(url, jsonstr, "user")
|
|
|
|
+ userItems = make([]*models.UserJson, 0)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //如果剩下还有则同步剩下的部分
|
|
|
|
+ if len(userItems) > 0 {
|
|
|
|
+ data, err := json.Marshal(userItems)
|
|
|
|
+ if err != nil {
|
|
|
|
+ msg = "userItems Err:" + err.Error()
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ jsonstr := string(data)
|
|
|
|
+ jsonstr = "{\"sync_data\": " + jsonstr + " }"
|
|
|
|
+ SendComapnyToShanghai(url, jsonstr, "user")
|
|
|
|
+ companyItems = make([]*models.CompanyJson, 0)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|