|
@@ -0,0 +1,305 @@
|
|
|
+package services
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ "hongze/hongze_cygx/models"
|
|
|
+ "hongze/hongze_cygx/utils"
|
|
|
+ "io/ioutil"
|
|
|
+ "net/http"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+//
|
|
|
+//消费:家用电器,纺织服装,休闲服务,食品饮料
|
|
|
+//智造:汽车,机械设备,电气设备
|
|
|
+//科技:电子,计算机,通信
|
|
|
+//医药:医药生物
|
|
|
+//研选:非银金融、建筑装饰、化工、农林牧渔、传媒、公用事业、建筑材料、房地产、采掘、轻工制造,钢铁、交通运输、国防军工、银行、有色金属、综合、商业贸易
|
|
|
+
|
|
|
+//GetActivityTypeIdWithYiDong 根据易董同步过来的活动类型,自动匹配行业
|
|
|
+func GetActivityTypeIdWithYiDong(industrySwName string) (chartPermissionId int) {
|
|
|
+ mapIndustrySwName := map[string]int{
|
|
|
+ "家用电器": utils.XIAO_FEI_ID,
|
|
|
+ "纺织服装": utils.XIAO_FEI_ID,
|
|
|
+ "休闲服务": utils.XIAO_FEI_ID,
|
|
|
+ "食品饮料": utils.XIAO_FEI_ID,
|
|
|
+ //消费
|
|
|
+
|
|
|
+ "汽车": utils.ZHI_ZAO_ID,
|
|
|
+ "机械设备": utils.ZHI_ZAO_ID,
|
|
|
+ "电气设备": utils.ZHI_ZAO_ID,
|
|
|
+ //智造
|
|
|
+
|
|
|
+ "电子": utils.KE_JI_ID,
|
|
|
+ "计算机": utils.KE_JI_ID,
|
|
|
+ "通信": utils.KE_JI_ID,
|
|
|
+ //科技
|
|
|
+
|
|
|
+ "医药生物": utils.YI_YAO_ID,
|
|
|
+ //医药
|
|
|
+
|
|
|
+ "非银金融": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "建筑装饰": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "化工": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "农林牧渔": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "传媒": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "公用事业": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "建筑材料": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "房地产": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "采掘": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "轻工制造": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "钢铁": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "交通运输": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "国防军工": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "银行": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "有色金属": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "综合": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ "商业贸易": utils.CHART_PERMISSION_ID_YANXUAN,
|
|
|
+ //研选
|
|
|
+ }
|
|
|
+ fmt.Println(mapIndustrySwName)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//GetActivityTypeIdWithYiDong 根据易董同步过来的活动类型,自动匹配行业
|
|
|
+func GetActivityTypeNameWithYiDong(industrySwName string) (chartPermissionName string) {
|
|
|
+ mapIndustrySwName := map[string]string{
|
|
|
+ "家用电器": utils.XIAO_FEI_NAME,
|
|
|
+ "纺织服装": utils.XIAO_FEI_NAME,
|
|
|
+ "休闲服务": utils.XIAO_FEI_NAME,
|
|
|
+ "食品饮料": utils.XIAO_FEI_NAME,
|
|
|
+ //消费
|
|
|
+
|
|
|
+ "汽车": utils.ZHI_ZAO_NAME,
|
|
|
+ "机械设备": utils.ZHI_ZAO_NAME,
|
|
|
+ "电气设备": utils.ZHI_ZAO_NAME,
|
|
|
+ //智造
|
|
|
+
|
|
|
+ "电子": utils.KE_JI_NAME,
|
|
|
+ "计算机": utils.KE_JI_NAME,
|
|
|
+ "通信": utils.KE_JI_NAME,
|
|
|
+ //科技
|
|
|
+
|
|
|
+ "医药生物": utils.YI_YAO_NAME,
|
|
|
+ //医药
|
|
|
+
|
|
|
+ "非银金融": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "建筑装饰": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "化工": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "农林牧渔": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "传媒": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "公用事业": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "建筑材料": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "房地产": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "采掘": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "轻工制造": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "钢铁": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "交通运输": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "国防军工": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "银行": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "有色金属": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "综合": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ "商业贸易": utils.CHART_PERMISSION_NAME_MF_YANXUAN,
|
|
|
+ //研选
|
|
|
+ }
|
|
|
+ fmt.Println(mapIndustrySwName)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//获取易董token
|
|
|
+func GetYiDongToken() (token string, err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ cacheKey := utils.YD_TOKEN
|
|
|
+ ttlTime := utils.Rc.GetRedisTTL(cacheKey)
|
|
|
+ if ttlTime > 0 {
|
|
|
+ token, _ = utils.Rc.RedisString(cacheKey)
|
|
|
+ }
|
|
|
+ if token == "" {
|
|
|
+ url := utils.YiDongZhengTongYunUrl + "oauth/token?grant_type=client_credentials&response_type=token&client_id=" + utils.YiDongZhengTongYunAppid + "&client_secret=" + utils.YiDongZhengTongYunSecret
|
|
|
+ method := "GET"
|
|
|
+ client := &http.Client{}
|
|
|
+ req, errReq := http.NewRequest(method, url, nil)
|
|
|
+ if errReq != nil {
|
|
|
+ err = errReq
|
|
|
+ return
|
|
|
+ }
|
|
|
+ res, errReq := client.Do(req)
|
|
|
+ if errReq != nil {
|
|
|
+ err = errReq
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer res.Body.Close()
|
|
|
+
|
|
|
+ type Ydtoklen struct {
|
|
|
+ Success string `json:"success"`
|
|
|
+ ExpiresIn int `json:"expires_in"`
|
|
|
+ AccessToken string `json:"access_token"`
|
|
|
+ }
|
|
|
+ var ydtoklen Ydtoklen
|
|
|
+ body, errReq := ioutil.ReadAll(res.Body)
|
|
|
+ if errReq != nil {
|
|
|
+ err = errReq
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errReq = json.Unmarshal(body, &ydtoklen)
|
|
|
+ if errReq != nil {
|
|
|
+ err = errReq
|
|
|
+ return
|
|
|
+ }
|
|
|
+ token = ydtoklen.AccessToken
|
|
|
+ utils.Rc.Put(cacheKey, ydtoklen.AccessToken, time.Second*7000)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//获取易董活动列表
|
|
|
+func GetYiDongActivity() (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ var token string
|
|
|
+ token, _ = GetYiDongToken()
|
|
|
+ fmt.Println(token)
|
|
|
+ url := utils.YiDongZhengTongYunUrl + "interact/activityManageApi/getRoadshowList?access_token=" + token
|
|
|
+ method := "POST"
|
|
|
+ payload := strings.NewReader(`{
|
|
|
+ "meetingStatus": "0,1,2"
|
|
|
+}`)
|
|
|
+ client := &http.Client{}
|
|
|
+ req, err := http.NewRequest(method, url, payload)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ req.Header.Add("Content-Type", "application/json")
|
|
|
+
|
|
|
+ res, err := client.Do(req)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer res.Body.Close()
|
|
|
+ var ApifoxModal *models.ApifoxModal
|
|
|
+ body, err := ioutil.ReadAll(res.Body)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ utils.FileLog.Info(string(body))
|
|
|
+ err = json.Unmarshal(body, &ApifoxModal)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Getres.PublicGetDate Err:", err.Error())
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ OldActYIdongList, err := models.GetActivityListByYiDong()
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(string(err.Error()))
|
|
|
+ }
|
|
|
+ mapOldYiDong := make(map[string]string)
|
|
|
+ for _, v := range OldActYIdongList {
|
|
|
+ mapOldYiDong[v.YidongActivityId] = v.YidongActivityId
|
|
|
+ }
|
|
|
+ var itemsAdd []*models.CygxActivity
|
|
|
+ if len(ApifoxModal.Result) > 0 {
|
|
|
+ actList := ApifoxModal.Result
|
|
|
+ for _, v := range actList {
|
|
|
+ var item = new(models.CygxActivity)
|
|
|
+ item.YidongActivityId = v.ID
|
|
|
+ item.ActivityTypeId = 3
|
|
|
+ item.ActivityTypeName = "公司调研电话会"
|
|
|
+ item.ActivityName = v.Title
|
|
|
+ item.Label = v.CompanyInfo
|
|
|
+ item.TemporaryLabel = v.CompanyInfo
|
|
|
+ item.ChartPermissionId = GetActivityTypeIdWithYiDong(v.IndustrySwName)
|
|
|
+ item.ChartPermissionName = GetActivityTypeNameWithYiDong(v.IndustrySwName)
|
|
|
+ item.ChartPermissionNames = GetActivityTypeNameWithYiDong(v.IndustrySwName)
|
|
|
+ item.ActivityTime = v.Start
|
|
|
+ item.ActivityTimeText = v.Start
|
|
|
+ item.DistinguishedGuest = "嘉宾"
|
|
|
+
|
|
|
+ detailYidng, err := GetYiDongActivityDetail(v.ID)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ detailList := detailYidng.Resultdetail.GuestPersonList
|
|
|
+ for _, vdetail := range detailList {
|
|
|
+ item.DistinguishedGuest += vdetail.PersonName + ","
|
|
|
+ }
|
|
|
+ item.DistinguishedGuest = strings.TrimRight(item.DistinguishedGuest, ",")
|
|
|
+ item.Body = "<p>" + "【" + v.CompanyInfo + v.Title + "】" + "<p>时间:" + v.Start + "</p>嘉宾:" + item.DistinguishedGuest + "</p>"
|
|
|
+ if mapOldYiDong[v.ID] == "" {
|
|
|
+ itemsAdd = append(itemsAdd, item)
|
|
|
+ _, err = models.AddCygxActivity(item)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(string(err.Error()))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//获取易董活动详情
|
|
|
+func GetYiDongActivityDetail(activityId string) (detail *models.ApifoxModaldetail, err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ var token string
|
|
|
+ token, _ = GetYiDongToken()
|
|
|
+ fmt.Println(token)
|
|
|
+ url := utils.YiDongZhengTongYunUrl + "interact/activityManageApi/getRoadshowDetail?access_token=" + token
|
|
|
+ method := "POST"
|
|
|
+ payload := strings.NewReader(`{"activityId":"` + activityId + `",}`)
|
|
|
+ client := &http.Client{}
|
|
|
+ req, err := http.NewRequest(method, url, payload)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ req.Header.Add("Content-Type", "application/json")
|
|
|
+ res, err := client.Do(req)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer res.Body.Close()
|
|
|
+ var ApifoxModal *models.ApifoxModaldetail
|
|
|
+ body, err := ioutil.ReadAll(res.Body)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ utils.FileLog.Info(string(body))
|
|
|
+ fmt.Println(string(body))
|
|
|
+ err = json.Unmarshal(body, &ApifoxModal)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Getres.PublicGetDate Err:", err.Error())
|
|
|
+ utils.FileLog.Info(err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ detail = ApifoxModal
|
|
|
+ return
|
|
|
+}
|