Просмотр исходного кода

Merge branch 'vmp_robot' of http://8.136.199.33:3000/hongze/hongze_cygx

xingzai 1 год назад
Родитель
Сommit
91b5cf3ac9
4 измененных файлов с 199 добавлено и 0 удалено
  1. 8 0
      models/activity.go
  2. 176 0
      services/activity_task.go
  3. 3 0
      services/task.go
  4. 12 0
      utils/common.go

+ 8 - 0
models/activity.go

@@ -1293,3 +1293,11 @@ func UpdateJmcjActivityIdGroup(items map[int]string) (err error) {
 	}
 	return
 }
+
+// UpdateActivityVmpRobotMeetingId 建立活动跟上海那边机器人助手参会信息的关联
+func UpdateActivityVmpRobotMeetingId(vmpRobotMeetingId, activityId int) (err error) {
+	sql := ` UPDATE cygx_activity SET   vmp_robot_meeting_id = ?  WHERE activity_id = ?`
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, vmpRobotMeetingId, activityId).Exec()
+	return
+}

+ 176 - 0
services/activity_task.go

@@ -0,0 +1,176 @@
+package services
+
+import (
+	"context"
+	"crypto/tls"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
+	"io/ioutil"
+	"net/http"
+	"strings"
+	"time"
+)
+
+//专门处理活动定时任务相关的业务逻辑
+
+type VmpRobotMeeting struct {
+	ModeID            int    `json:"mode_id"`
+	PhoneNumber       string `json:"phone_number"`
+	MeetingPassword   string `json:"meeting_password"`
+	MeetingStartTime  string `json:"meeting_start_time"`
+	MeetingTitle      string `json:"meeting_title"`
+	MeetingTypeID     int    `json:"meeting_type_id"`
+	ParsingMethodID   int    `json:"parsing_method_id"`
+	IndustryID        int    `json:"industry_id"`
+	FieldID           int    `json:"field_id"`
+	Stock             string `json:"stock"`
+	Remark            string `json:"remark"`
+	ProjectID         int    `json:"project_id"`
+	AuthorPhoneNumber int64  `json:"author_phone_number"`
+	ExecutionStatusID int    `json:"execution_status_id"`
+	ParsingID         int    `json:"parsing_id"`
+	SerialNumber      string `json:"serial_number"`
+	ChannelID         int    `json:"channel_id"`
+	IsActive          int    `json:"is_active"`
+}
+
+type VmpRobotMeetingDataResult struct {
+	Code int                   `json:"code"`
+	Msg  string                `json:"msg"`
+	Data VmpRobotMeetingResult `json:"data"`
+}
+
+type VmpRobotMeetingResult struct {
+	ModeID            int    `json:"mode_id"`
+	PhoneNumber       string `json:"phone_number"`
+	MeetingPassword   string `json:"meeting_password"`
+	MeetingStartTime  string `json:"meeting_start_time"`
+	MeetingTitle      string `json:"meeting_title"`
+	MeetingTypeID     int    `json:"meeting_type_id"`
+	ParsingMethodID   int    `json:"parsing_method_id"`
+	IndustryID        int    `json:"industry_id"`
+	FieldID           int    `json:"field_id"`
+	Stock             string `json:"stock"`
+	Remark            string `json:"remark"`
+	ProjectID         int    `json:"project_id"`
+	AuthorPhoneNumber int64  `json:"author_phone_number"`
+	ExecutionStatusID int    `json:"execution_status_id"`
+	ParsingID         int    `json:"parsing_id"`
+	SerialNumber      string `json:"serial_number"`
+	ChannelID         int    `json:"channel_id"`
+	IsActive          int    `json:"is_active"`
+	VmpRobotMeetinId  int    `json:"id"`
+}
+
+//func init() {
+//	PushVmpRobotMeeting()
+//}
+
+// 研选活动会前15分钟推送给上海那边的机器人
+func PushVmpRobotMeeting(cont context.Context) (err error) {
+	//func PushVmpRobotMeeting() (err error) {
+	defer func() {
+		if err != nil {
+			go utils.SendAlarmMsg("15分钟会议消息提醒失败", 2)
+			fmt.Println("发送失败,Err:", err.Error())
+		}
+	}()
+
+	postUrl := "https://vmp.hzinsights.com/v2api/meeting"
+	authorization := "bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxNTAwMDEyMzA1NiIsInBob25lX251bWJlciI6IjE1MDAwMTIzMDU2IiwibmFtZSI6IumrmOS6puaWhyIsImVudHJhbmNlIjoicGFzc3d3b3JkIiwiaWF0IjoxNzAzODM1OTc4LCJleHAiOjE3MDM4Mzk1Nzh9.qX6EFkVPn2R0SqIQXJ4tyub--iiqKqrJnz9lbdcVetw"
+	var condition string
+	var pars []interface{}
+	endDate := time.Now().Add(+time.Minute * 15).Format(utils.FormatDateTime)
+	condition = ` AND activity_time <= ? AND activity_time >= NOW()  AND  publish_status = 1  AND   chart_permission_id  = ? AND  vmp_robot_meeting_id = 0 AND active_state = 1  AND  mainland_tell != ''  `
+	pars = append(pars, endDate, utils.CHART_PERMISSION_ID_YANXUAN)
+	listActivity, e := models.GetCygxActivityList(condition, pars, 0, 10)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivityList, Err: " + e.Error())
+		return
+	}
+	//fmt.Println(len(listActivity))
+
+	//return
+	if len(listActivity) == 0 {
+		return
+	}
+	for _, v := range listActivity {
+		item := new(VmpRobotMeeting)
+		item.ModeID = 2
+		item.PhoneNumber = utils.GetArabicNumbers(v.MainlandTell)
+		item.MeetingPassword = utils.GetArabicNumbers(v.ParticipationCode) + "#" // 业务需求,必须带有一个#
+		item.MeetingStartTime = v.ActivityTime
+		item.MeetingTitle = v.ActivityName
+		item.MeetingTypeID = 1
+		item.ParsingMethodID = 0
+		item.IndustryID = 13
+		item.FieldID = 0
+		item.Stock = ""
+		item.Remark = v.Remarks // 处理HTML格式样式
+		item.ProjectID = 1
+		item.AuthorPhoneNumber = 15000123056 // 高亦文 手机号
+		item.ExecutionStatusID = 0
+		item.ParsingID = 0
+		item.SerialNumber = ""
+		item.ChannelID = -1
+		item.IsActive = 1
+		jsonBody, e := json.Marshal(item)
+		if e != nil {
+			err = errors.New("json.Marshal, Err: " + e.Error())
+			fmt.Println("json.Marshal Err:" + err.Error())
+			return
+		}
+		//fmt.Println(item)
+		//return
+		tr := &http.Transport{
+			TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
+		}
+		client := &http.Client{Transport: tr}
+		req, e := http.NewRequest("POST", postUrl, strings.NewReader(string(jsonBody)))
+		if e != nil {
+			err = e
+			return
+		}
+		req.Header.Set("Content-Type", "application/json")
+		req.Header.Set("Authorization", authorization)
+		resp, e := client.Do(req)
+		if e != nil {
+			err = errors.New("client.Do Err: " + e.Error())
+			fmt.Println("client.Do Err:" + err.Error())
+			return
+		}
+		//fmt.Println(resp)
+		defer resp.Body.Close()
+		body, e := ioutil.ReadAll(resp.Body)
+		if e != nil {
+			fmt.Println("err:" + err.Error())
+			err = e
+			return
+		}
+		result := new(VmpRobotMeetingDataResult)
+		e = json.Unmarshal(body, &result)
+		if e != nil {
+			fmt.Println(" json.Unmarshal Err:" + err.Error())
+			err = errors.New("json.Unmarshal Err: " + e.Error())
+			return
+		}
+		vmpRobotMeetinId := result.Data.VmpRobotMeetinId
+		e = models.UpdateActivityVmpRobotMeetingId(vmpRobotMeetinId, v.ActivityId)
+		if e != nil {
+			fmt.Println("UpdateActivityVmpRobotMeetingId  Err:" + err.Error())
+			err = errors.New("UpdateActivityVmpRobotMeetingId  Err: " + e.Error())
+			return
+		}
+		itemlog := new(models.CygxShanghaiCompanyLog)
+		itemlog.CreateTime = time.Now()
+		itemlog.Url = postUrl
+		itemlog.Body = string(jsonBody)
+		itemlog.Result = string(body)
+		go models.AddCygxShanghaiCompanyLog(itemlog)
+	}
+
+	return
+}

+ 3 - 0
services/task.go

@@ -43,6 +43,9 @@ func Task() {
 
 		getYiDongActivity := task.NewTask("getYiDongActivity", "0 */10 * * * *", GetYiDongActivity) //同步易董的活动信息
 		task.AddTask("getYiDongActivity", getYiDongActivity)
+
+		pushVmpRobotMeeting := task.NewTask("pushVmpRobotMeeting", "0 */10 6-23 * * *", PushVmpRobotMeeting) //研选活动会前15分钟推送给上海那边的机器人
+		task.AddTask("pushVmpRobotMeeting", pushVmpRobotMeeting)
 	}
 
 	if utils.IsTask {

+ 12 - 0
utils/common.go

@@ -20,6 +20,7 @@ import (
 	"strconv"
 	"strings"
 	"time"
+	"unicode"
 )
 
 // 随机数种子
@@ -970,3 +971,14 @@ func InterceptHtmlLength(body string, length int) (newbody string) {
 	newbody = bodyText[0:length]
 	return
 }
+
+// 获取字符串中的阿拉伯数字,并返回字符串
+func GetArabicNumbers(str string) string {
+	var numbers []rune
+	for _, char := range str {
+		if unicode.IsDigit(char) {
+			numbers = append(numbers, char)
+		}
+	}
+	return string(numbers)
+}