Browse Source

添加定时任务同步到上海

xingzai 2 years ago
parent
commit
236b35e19e
6 changed files with 100 additions and 38 deletions
  1. 0 6
      controllers/config.go
  2. 1 0
      models/db.go
  3. 11 5
      models/send_company_user.go
  4. 21 0
      models/shanghai_company_log.go
  5. 63 26
      services/send_company_user.go
  6. 4 1
      services/task.go

+ 0 - 6
controllers/config.go

@@ -3,7 +3,6 @@ package controllers
 import (
 	"encoding/json"
 	"hongze/hongze_cygx/models"
-	"hongze/hongze_cygx/services"
 	"time"
 )
 
@@ -123,8 +122,3 @@ func (this *ConfigController) DescriptionOfResearch() {
 	br.Success = true
 	br.Data = resp
 }
-
-func init() {
-	services.Dotognbu()
-
-}

+ 1 - 0
models/db.go

@@ -86,5 +86,6 @@ func init() {
 		new(CygxActivityMeetDetailLog),
 		new(CygxUserSearchKeyWord),
 		new(CompanyReportPermission),
+		new(CygxShanghaiCompanyLog),
 	)
 }

+ 11 - 5
models/send_company_user.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"time"
 )
 
 type CompanyJson struct {
@@ -19,6 +20,8 @@ type CompanyJson struct {
 	EndDate      string `json:"end_time"`    //服务期限结束时间
 	Info         string `json:"info"`        //简介
 	CreatedTime  string `json:"create_time"` //创建时间
+	//CreatedTimes string //创建时间
+	EndDateTime time.Time //创建时间
 }
 
 type UserJson struct {
@@ -37,6 +40,7 @@ type UserJson struct {
 	Level               string `json:"level"`             //职位等级(研究员、基金经理、部门总监)
 	IsMaker             string `json:"policymakers"`      //是否决策人(是、否)
 	CreatedTime         string `json:"create_time"`       //创建时间
+
 }
 type CompanyJsonList struct {
 	SyncData *[]CompanyJson `json:"sync_data"`
@@ -54,6 +58,7 @@ func GetSendCompanyList() (items []*CompanyJson, err error) {
 			am.real_name,
 			am.mobile,
 			a.status,
+			p.end_date as end_date_time,
 			UNIX_TIMESTAMP( p.start_date ) AS start_date,
 			UNIX_TIMESTAMP( p.end_date ) AS end_date,
 			UNIX_TIMESTAMP( a.created_time ) AS created_time,
@@ -76,10 +81,10 @@ func GetSendCompanyList() (items []*CompanyJson, err error) {
 		WHERE
 			1 = 1 
 			AND c.enabled = 1 
-			AND b.cygx_auth = 1 
+			AND b.cygx_auth = 1
 			AND p.STATUS IN ( '正式', '试用' ) 
 			AND a.STATUS IN ( '正式', '试用' )
-			AND( c.credit_code LIKE '91%'  OR  c.credit_code LIKE 'HZ%' ) 
+			AND( c.credit_code LIKE '91%'  OR  c.credit_code LIKE 'HZ%' )
 			AND p.product_id = 2
 		GROUP BY
 			c.company_id  `
@@ -99,6 +104,7 @@ func GetSendCompanyFiccList() (items []*CompanyJson, err error) {
 			am.real_name,
 			am.mobile,
 			a.status,
+			p.end_date AS end_date_time,
 			UNIX_TIMESTAMP( p.start_date ) AS start_date,
 			UNIX_TIMESTAMP( p.end_date ) AS end_date,
 			UNIX_TIMESTAMP( a.created_time ) AS created_time,
@@ -126,7 +132,7 @@ func GetSendCompanyFiccList() (items []*CompanyJson, err error) {
 		WHERE
 			1 = 1 
 			AND c.enabled = 1 
-			AND b.cygx_auth = 1 
+			AND b.cygx_auth = 1
 			AND p.STATUS IN ( '正式', '试用' ) 
 			AND a.STATUS IN ( '正式', '试用' ) 
 			AND ( c.credit_code LIKE '91%' OR c.credit_code LIKE 'HZ%' ) 
@@ -170,7 +176,6 @@ func GetSendUserList() (items []*UserJson, err error) {
 			u.outbound_country_code,
 			u.telephone,
 			u.sex,
-			u.email,
 			u.is_maker,
 			c.company_id,
 			UNIX_TIMESTAMP( us.create_time ) AS created_time 
@@ -200,8 +205,9 @@ func GetSendUserList() (items []*UserJson, err error) {
 			GROUP BY
 				c.company_id 
 			)
-AND 	c.credit_code  IN ('91310000625910522N')
 			AND us.create_time != '' 
+			AND u.real_name != '' 
+			AND u.mobile != '' 
 			AND ( c.credit_code LIKE '91%' OR c.credit_code LIKE 'HZ%' ) GROUP BY u.user_id   ORDER BY  c.company_id  DESC `
 	_, err = o.Raw(sql).QueryRows(&items)
 	return

+ 21 - 0
models/shanghai_company_log.go

@@ -0,0 +1,21 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxShanghaiCompanyLog struct {
+	Id         int `orm:"column(id);pk"`
+	Url        string
+	Body       string
+	Result     string
+	CreateTime time.Time
+}
+
+//添加日志记录
+func AddCygxShanghaiCompanyLog(item *CygxShanghaiCompanyLog) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}

+ 63 - 26
services/send_company_user.go

@@ -1,13 +1,16 @@
 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 {
@@ -38,7 +41,7 @@ type ShangHaiResultApidateComPany struct {
 	ErrMsg string `json:"errMsg"`
 }
 
-//把信息同步到上海策略品台
+//c
 func SendComapnyToShanghai(url, jsonCompany string) {
 	method := "POST"
 	//fmt.Println(string(jsonCompany))
@@ -62,55 +65,77 @@ func SendComapnyToShanghai(url, jsonCompany string) {
 		fmt.Println(err)
 		return
 	}
-	var result GetShangHaiTokenResultApiComPany
+	var result GetShangHaiTokenResultApi
 	err = json.Unmarshal(body, &result)
 	if err != nil {
 		fmt.Println("Getres.pdfResult Err:", err.Error())
 	}
-	var companyCode string
-	for _, v := range result.Data.FailInfo {
-		if v.ErrMsg == "公司名称权益CRM已存在对应客户" {
-			companyCode += "'" + v.ErrVal + "',"
-		}
+	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)
 	}
-	//fmt.Println(result.Data.FailInfo)
-	utils.FileLog.Info(string(companyCode))
-	utils.FileLog.Info(string(body))
+	//var companyCode string
+	//for _, v := range result.Data.FailInfo {
+	//	if v.ErrMsg == "c" {
+	//		companyCode += "'" + v.ErrVal + "',"
+	//	}
+	//}
+	////fmt.Println(result.Data.FailInfo)
+	//utils.FileLog.Info(string(companyCode))
+	//utils.FileLog.Info(string(body))
 	//fmt.Println(string(body))
 }
 
-func Dotognbu() {
+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)
+		}
+		fmt.Println("line 21", err, msg)
+	}()
 	//获取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 {
-		fmt.Println(err)
-		return
+		msg = "GetToken Err:" + err.Error()
+		return err
 	}
 	res, err := client.Do(req)
 	if err != nil {
-		fmt.Println(err)
-		return
+		msg = "client Err:" + err.Error()
+		return err
 	}
 	defer res.Body.Close()
 	body, err := ioutil.ReadAll(res.Body)
 	if err != nil {
-		fmt.Println(err)
+		msg = "body Err:" + err.Error()
 		return
 	}
 	var result GetShangHaiTokenResultApi
 	err = json.Unmarshal(body, &result)
 	if err != nil {
-		fmt.Println("Getres.pdfResult Err:", err.Error())
+		msg = "Get result Err:" + err.Error()
+		return
 	}
 	accessToken := result.Data.AccessToken
 	fmt.Println(accessToken)
 	//同步权益客户
 	companyList, err := models.GetSendCompanyList()
 	if err != nil {
-		fmt.Println("Getres.pdfResult Err:", err.Error())
+		msg = "GetSendCompanyList Err:" + err.Error()
+		return
 	}
 	fmt.Println("权益客户", len(companyList))
 	var companyItems []*models.CompanyJson
@@ -118,12 +143,14 @@ func Dotognbu() {
 		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 {
-					fmt.Println(err)
+					msg = "companyItems Err:" + err.Error()
+					return err
 				}
 				jsonstr := string(data)
 				jsonstr = "{\"sync_data\": " + jsonstr + " }"
@@ -135,7 +162,8 @@ func Dotognbu() {
 		if len(companyItems) > 0 {
 			data, err := json.Marshal(companyItems)
 			if err != nil {
-				fmt.Println(err)
+				msg = "companyItems Err:" + err.Error()
+				return err
 			}
 			jsonstr := string(data)
 			jsonstr = "{\"sync_data\": " + jsonstr + " }"
@@ -146,7 +174,8 @@ func Dotognbu() {
 	//同步FICC客户
 	companyFiccList, err := models.GetSendCompanyFiccList()
 	if err != nil {
-		fmt.Println("Getres.pdfResult Err:", err.Error())
+		msg = "GetSendCompanyFiccList Err:" + err.Error()
+		return err
 	}
 	fmt.Println("FICC客户", len(companyFiccList))
 	var companyFiccItems []*models.CompanyJson
@@ -154,12 +183,14 @@ func Dotognbu() {
 		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 {
-					fmt.Println(err)
+					msg = "companyFiccItems Err:" + err.Error()
+					return err
 				}
 				jsonstr := string(data)
 				jsonstr = "{\"sync_data\": " + jsonstr + " }"
@@ -171,7 +202,8 @@ func Dotognbu() {
 		if len(companyFiccItems) > 0 {
 			data, err := json.Marshal(companyFiccItems)
 			if err != nil {
-				fmt.Println(err)
+				msg = "companyFiccItems Err:" + err.Error()
+				return err
 			}
 			jsonstr := string(data)
 			jsonstr = "{\"sync_data\": " + jsonstr + " }"
@@ -181,7 +213,8 @@ func Dotognbu() {
 
 	userList, err := models.GetSendUserList()
 	if err != nil {
-		fmt.Println("Getres.pdfResult Err:", err.Error())
+		msg = "GetSendUserList Err:" + err.Error()
+		return err
 	}
 	fmt.Println("userList", len(userList))
 	var userItems []*models.UserJson
@@ -209,8 +242,10 @@ func Dotognbu() {
 			if (k+1)%100 == 0 {
 				data, err := json.Marshal(userItems)
 				if err != nil {
-					fmt.Println(err)
+					msg = "userItems Err:" + err.Error()
+					return err
 				}
+				fmt.Println(k)
 				jsonstr := string(data)
 				jsonstr = "{\"sync_data\": " + jsonstr + " }"
 				SendComapnyToShanghai(url, jsonstr)
@@ -222,7 +257,8 @@ func Dotognbu() {
 		if len(userItems) > 0 {
 			data, err := json.Marshal(userItems)
 			if err != nil {
-				fmt.Println(err)
+				msg = "userItems Err:" + err.Error()
+				return err
 			}
 			jsonstr := string(data)
 			jsonstr = "{\"sync_data\": " + jsonstr + " }"
@@ -230,4 +266,5 @@ func Dotognbu() {
 			companyItems = make([]*models.CompanyJson, 0)
 		}
 	}
+	return
 }

+ 4 - 1
services/task.go

@@ -33,6 +33,9 @@ func Task() {
 
 		sendEmailUserWhiteListChange := task.NewTask("sendEmailUserWhiteListChange", "0 00 17 * * *", SendEmailUserWhiteListChange) //新增 和冻结的客户白名单
 		task.AddTask("白名单发送", sendEmailUserWhiteListChange)
+
+		dotongbuShangHai := task.NewTask("dotongbuShangHai", "0 30 3 * * *", DotongbuShangHai) //把信息同步到上海策略品台
+		task.AddTask("同步用户到上海", dotongbuShangHai)
 	}
 
 	if utils.IsTask {
@@ -62,7 +65,7 @@ func Task() {
 	//GetAddpArticle() //同步日度点评数据
 	//SendEmailAllUserWithRAI()     //发送当前所有权益用户到沈大爷的邮箱
 	//SendEmailAllUserWithCompany() //发送这些公司下的用户到沈大爷的邮箱
-	//task.StartTask()
+	task.StartTask()
 	//StatisticalReport()//导出报表
 	fmt.Println("end")
 }