Pārlūkot izejas kodu

同步客户信息到上海策略平台

xingzai 3 gadi atpakaļ
vecāks
revīzija
c1999a939e
3 mainītis faili ar 300 papildinājumiem un 0 dzēšanām
  1. 6 0
      controllers/config.go
  2. 132 0
      models/send_company_user.go
  3. 162 0
      services/send_company_user.go

+ 6 - 0
controllers/config.go

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

+ 132 - 0
models/send_company_user.go

@@ -0,0 +1,132 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+)
+
+type CompanyJson struct {
+	CompanyName  string `json:"name"`        //公司名称
+	ShortName    string `json:"short_name"`  //公司简称
+	CreditCode   string `json:"social"`      //社会信用代码
+	City         string `json:"city"`        //所在地级市或直辖市
+	SignType     string `json:"sign_type"`   //客户重要度(A类、B类、C类、D类)
+	Fe           string `json:"f_e"`         //客户类型(FICC、权益、策略)
+	IndustryName string `json:"industry"`    //所属行业(公募、私募、券商资管、保险、海外、其他类型)
+	Mobile       string `json:"sale_phone"`  //所属销售(销售手机号)
+	Status       string `json:"status"`      //客户状态(正式、试用)
+	Permission   string `json:"permissions"` //客户权限(医药,科技,智造,消费,策略,专家,路演服务,研选)
+	StartDate    string `json:"start_time"`  //服务期限开始时间
+	EndDate      string `json:"end_time"`    //服务期限结束时间
+	Info         string `json:"info"`        //简介
+	CreatedTime  string `json:"create_time"` //创建时间
+}
+
+type UserJson struct {
+	CreditCode          string `json:"social"`            //社会信用代码
+	RealName            string `json:"name"`              //昵称
+	Mobile              string `json:"phone"`             //手机号1
+	CountryCode         string `json:"area_code"`         //国家号1(+86..)
+	OutboundMobile      string `json:"phone2"`            //手机号2
+	OutboundCountryCode string `json:"area_code2"`        //国家号2(+86..)
+	Telephone           string `json:"machine"`           //座机
+	MachineAreaCode     string `json:"machine_area_code"` //座机国家号(+86..)
+	Sex                 string `json:"sex"`               //性别(男、女)
+	Email               string `json:"email"`             //电子邮箱,比如 example@qq.com
+	Department          string `json:"department"`        //部门
+	Position            string `json:"position"`          //职位
+	Level               string `json:"level"`             //职位等级(研究员、基金经理、部门总监)
+	IsMaker             string `json:"policymakers"`      //是否决策人(是、否)
+	CreatedTime         string `json:"create_time"`       //创建时间
+}
+type CompanyJsonList struct {
+	SyncData *[]CompanyJson `json:"sync_data"`
+}
+
+//获取公司
+func GetSendCompanyList() (items []*CompanyJson, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+			c.company_name,
+			c.company_id as cid, 
+			c.credit_code,
+			c.city,
+			p.industry_name,
+			am.real_name,
+			am.mobile,
+			a.status,
+			UNIX_TIMESTAMP( p.start_date ) AS start_date,
+			UNIX_TIMESTAMP( p.end_date ) AS end_date,
+			UNIX_TIMESTAMP( a.created_time ) AS created_time,
+			(SELECT GROUP_CONCAT(DISTINCT b.chart_permission_name  ORDER BY b.sort ASC  SEPARATOR ',')
+					FROM company_report_permission AS a
+					INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
+					INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
+					WHERE  a.company_id=cid
+					AND c.is_suspend=0
+					AND b.cygx_auth=1
+					AND c.status IN('正式','试用')
+					AND a.status IN('正式','试用')) AS permission
+		FROM
+			company_report_permission AS a
+			INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
+			INNER JOIN company_product AS p ON a.company_id = p.company_id
+			INNER JOIN company AS c ON c.company_id = a.company_id
+			INNER JOIN admin AS am ON am.admin_id = p.seller_id 
+			AND a.product_id = p.product_id 
+		WHERE
+			1 = 1 
+			AND p.is_suspend = 0 
+			AND b.cygx_auth = 1 
+			AND p.STATUS IN ( '正式', '试用' ) 
+			AND a.STATUS IN ( '正式', '试用' )
+			AND c.credit_code != ''
+		GROUP BY
+			c.company_id LIMIT 3 `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+//获取用户
+func GetSendUserList() (items []*UserJson, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+			c.credit_code,
+			u.real_name,
+			u.mobile,
+			u.country_code,
+			u.outbound_mobile,
+			u.outbound_country_code,
+			u.telephone,
+			u.sex,
+			u.email,
+			u.is_maker,
+			c.company_id,
+			UNIX_TIMESTAMP( u.created_time ) AS created_time 
+		FROM
+			wx_user AS u
+			INNER JOIN company AS c ON c.company_id = u.company_id 
+		WHERE
+			1 = 1 
+			AND u.company_id IN (
+			SELECT
+				c.company_id 
+			FROM
+				company_report_permission AS a
+				INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
+				INNER JOIN company_product AS p ON a.company_id = p.company_id
+				INNER JOIN company AS c ON c.company_id = a.company_id
+				INNER JOIN admin AS am ON am.admin_id = p.seller_id 
+				AND a.product_id = p.product_id 
+			WHERE
+				1 = 1 
+				AND p.is_suspend = 0 
+				AND b.cygx_auth = 1 
+				AND p.STATUS IN ( '正式', '试用' ) 
+				AND a.STATUS IN ( '正式', '试用' ) 
+			GROUP BY
+				c.company_id 
+			) 
+			AND c.credit_code != '' LIMIT 3`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 162 - 0
services/send_company_user.go

@@ -0,0 +1,162 @@
+package services
+
+import (
+	"encoding/json"
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"io/ioutil"
+	"net/http"
+	"strings"
+)
+
+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"`
+}
+
+//把信息同步到上海策略品台
+func SendComapnyToShanghai(url, jsonCompany string) {
+	method := "POST"
+	fmt.Println(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
+	}
+	fmt.Println(string(body))
+}
+
+func Dotognbu() {
+	//获取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
+	}
+	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 GetShangHaiTokenResultApi
+	err = json.Unmarshal(body, &result)
+	if err != nil {
+		fmt.Println("Getres.pdfResult Err:", err.Error())
+	}
+	accessToken := result.Data.AccessToken
+	fmt.Println(accessToken)
+	companyList, err := models.GetSendCompanyList()
+	if err != nil {
+		fmt.Println("Getres.pdfResult Err:", err.Error())
+	}
+	var companyItems []*models.CompanyJson
+	if len(companyList) > 0 {
+		url = "https://crm.hzinsights.com/openapi/v1/Customer/batchSyncFiccCustomer?access_token=" + accessToken
+		for k, v := range companyList {
+			if v.Permission == "策略" {
+				companyList[k].Fe = "FICC"
+			} else {
+				companyList[k].Fe = "权益"
+			}
+			//一次同步一百条
+			companyItems = append(companyItems, companyList[k])
+			if (k+1)%100 == 0 {
+				data, err := json.Marshal(companyItems)
+				if err != nil {
+					fmt.Println(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 {
+				fmt.Println(err)
+			}
+			jsonstr := string(data)
+			jsonstr = "{\"sync_data\": " + jsonstr + " }"
+			SendComapnyToShanghai(url, jsonstr)
+			companyItems = make([]*models.CompanyJson, 0)
+		}
+	}
+
+	userList, err := models.GetSendUserList()
+	if err != nil {
+		fmt.Println("Getres.pdfResult Err:", err.Error())
+	}
+	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
+			//一次同步一百条
+			userItems = append(userItems, userList[k])
+			if (k+1)%100 == 0 {
+				data, err := json.Marshal(userItems)
+				if err != nil {
+					fmt.Println(err)
+				}
+				jsonstr := string(data)
+				jsonstr = "{\"sync_data\": " + jsonstr + " }"
+				SendComapnyToShanghai(url, jsonstr)
+				companyItems = make([]*models.CompanyJson, 0)
+			}
+		}
+		//如果剩下还有则同步剩下的部分
+		if len(userItems) > 0 {
+			data, err := json.Marshal(userItems)
+			if err != nil {
+				fmt.Println(err)
+			}
+			jsonstr := string(data)
+			jsonstr = "{\"sync_data\": " + jsonstr + " }"
+			SendComapnyToShanghai(url, jsonstr)
+			companyItems = make([]*models.CompanyJson, 0)
+		}
+	}
+}