123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- package comein
- import (
- "encoding/json"
- "errors"
- "fmt"
- "hongze/hz_crm_api/services/alarm_msg"
- "hongze/hz_crm_api/utils"
- "io/ioutil"
- "net/http"
- "net/url"
- "sort"
- "strconv"
- "time"
- )
- // EventListResp 会议列表返回数据结构
- type EventListResp struct {
- Code string `json:"code"`
- Data []EventListDataResp `json:"data"`
- Errorcode string `json:"errorcode"`
- Errordesc string `json:"errordesc"`
- Extra struct {
- HasMore bool `json:"hasMore"`
- More string `json:"more"`
- Pagestart string `json:"pagestart"`
- Total string `json:"total"`
- } `json:"extra"`
- Msg string `json:"msg"`
- Total int64 `json:"total"`
- }
- // EventListDataResp 会议数据
- type EventListDataResp struct {
- Authtag string `json:"authtag"`
- ConferenceType int64 `json:"conferenceType"`
- ContentTypeTagName string `json:"contentTypeTagName"`
- DescURL string `json:"descUrl"`
- Etime int64 `json:"etime"`
- ID int64 `json:"id"`
- IndustryName string `json:"industryName"`
- IsDel int64 `json:"isDel"`
- Livemode int64 `json:"livemode"`
- Logo string `json:"logo"`
- Logoweb string `json:"logoweb"`
- Members []struct {
- Identity int64 `json:"identity"`
- PhoneNumber string `json:"phoneNumber"`
- Type int64 `json:"type"`
- Uname string `json:"uname"`
- } `json:"members"`
- PresentURL string `json:"presentUrl"`
- RecordSupport int64 `json:"recordSupport"`
- RoadshowID int64 `json:"roadshowId"`
- ShortURL string `json:"shortUrl"`
- Status string `json:"status"`
- Stime int64 `json:"stime"`
- Title string `json:"title"`
- WxminiProgramID string `json:"wxminiProgramId"`
- WxminiProgramPage string `json:"wxminiProgramPage"`
- }
- // GetEventList 获取会议列表
- func GetEventList(startTime, endTime time.Time) (respData EventListResp, err error) {
- defer func() {
- if err != nil {
- go alarm_msg.SendAlarmMsg("查询组织下所有的会议列表失败;ERR:"+err.Error(), 3)
- }
- }()
- logMsg := ``
- pageStart := 0
- pageNum := 10
- paramsMap := map[string]string{
- "mod": "roadshow", //模块名
- "act": "opensearch", //处理方法名
- //"btime": fmt.Sprint(startTime.Unix() * 1000), //开始时间,时间戳
- //"etime": fmt.Sprint(endTime.Unix() * 1000), //结束时间,时间戳
- //"ignoredel": "1", //忽略已删除的数据 (1 删除的数据也可查询出)
- "pagestart": strconv.Itoa(pageStart), //翻页数 (第一页传 0 )
- "pagenum": strconv.Itoa(pageNum), //每页总条数(默认10条)
- "ts": fmt.Sprint(time.Now().Unix() * 1000), //请求发起的时间戳,单位:毫秒
- }
- paramStr := GetUrlParams(paramsMap)
- //fmt.Println(paramStr)
- //App string `json:"app" description:"数据类型"`
- //Mod string `json:"mod" description:"模块名"`
- //Act string `json:"act" description:"处理方法名"`
- //Appid string `json:"appid" description:"合作方ID"`
- getUrl := utils.COMEIN_URL + "?" + paramStr
- resp, err := http.Get(getUrl)
- if err != nil {
- logMsg = fmt.Sprint("comein get err; request:", getUrl, "; errMsg:", err.Error())
- utils.FileLog.Info(logMsg)
- return
- }
- defer resp.Body.Close()
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- logMsg = fmt.Sprint("comein get err; request:", getUrl, "; errMsg:", err.Error())
- utils.FileLog.Info(logMsg)
- return
- }
- utils.FileLog.Info(fmt.Sprint("comein get Result", ";url:", getUrl, ";\nresponse:", string(body)))
- err = json.Unmarshal(body, &respData)
- if err != nil {
- utils.FileLog.Info("comein get Err:", err.Error(), ";url:", getUrl, ";response:", string(body))
- err = errors.New("Unmarshal Err:" + err.Error())
- return
- }
- if respData.Errorcode != "0" {
- utils.FileLog.Info("comein get Err:", err.Error(), ";url:", getUrl, ";response:", string(body))
- err = errors.New(respData.Errordesc)
- return
- }
- return
- }
- // RoadshowDataResp 用户参会数据返回
- type RoadshowDataResp struct {
- Code string `json:"code"`
- Data []RoadshowData `json:"data"`
- Errorcode string `json:"errorcode"`
- Errordesc string `json:"errordesc"`
- Msg string `json:"msg"`
- }
- type RoadshowData struct {
- AreaCode string `json:"areaCode"`
- AskCount int64 `json:"askCount"`
- AuthInfo string `json:"authInfo"`
- Company string `json:"company"`
- DataType int64 `json:"dataType"`
- DutySeller string `json:"dutySeller"`
- Email string `json:"email"`
- FirstWatchTime int64 `json:"firstWatchTime"`
- GuestUserNames string `json:"guestUserNames"`
- ID int64 `json:"id"`
- JoinTime int64 `json:"joinTime"`
- JoinType int64 `json:"joinType"`
- LastWatchTime int64 `json:"lastWatchTime"`
- MeetingType string `json:"meetingType"`
- Occupation string `json:"occupation"`
- OrgRemarks string `json:"orgRemarks"`
- ResearchArea string `json:"researchArea"`
- RoadshowBeginTime int64 `json:"roadshowBeginTime"`
- RoadshowEndTime int64 `json:"roadshowEndTime"`
- RoadshowID int64 `json:"roadshowId"`
- RoadshowTitle string `json:"roadshowTitle"`
- RoadshowType int64 `json:"roadshowType"`
- SpeakerID int64 `json:"speakerId"`
- SpeakerName string `json:"speakerName"`
- TelFixedID int64 `json:"telFixedId"`
- TeleconferenceID string `json:"teleconferenceId"`
- ThirdMeetingID string `json:"thirdMeetingId"`
- UniqueID string `json:"uniqueId"`
- UserIdentity int64 `json:"userIdentity"`
- UserInfoSource string `json:"userInfoSource"`
- UserName string `json:"userName"`
- UserPhone string `json:"userPhone"`
- }
- // GetRoadshowDataList 获取参会人员列表
- func GetRoadshowDataList(startTime, endTime int64) (respData RoadshowDataResp, err error) {
- defer func() {
- if err != nil {
- go alarm_msg.SendAlarmMsg("获取参会人员列表失败;ERR:"+err.Error(), 3)
- }
- }()
- logMsg := ``
- paramsMap := map[string]string{
- "mod": "open", //模块名
- "act": "roadshow-datas", //处理方法名
- "beginTime": fmt.Sprint(startTime), //开始时间,时间戳
- "endTime": fmt.Sprint(endTime), //结束时间,时间戳
- "ts": fmt.Sprint(time.Now().Unix() * 1000), //请求发起的时间戳,单位:毫秒
- }
- paramStr := GetUrlParams(paramsMap)
- paramsMap["dataType"] = "1" //数据类型,1:直播 2:回放 (该参数不参与签名算法)
- //fmt.Println(paramStr)
- //App string `json:"app" description:"数据类型"`
- //Mod string `json:"mod" description:"模块名"`
- //Act string `json:"act" description:"处理方法名"`
- //Appid string `json:"appid" description:"合作方ID"`
- getUrl := utils.COMEIN_URL + "?" + paramStr
- resp, err := http.Get(getUrl)
- if err != nil {
- logMsg = fmt.Sprint("获取参会人员列表 comein get err; request:", getUrl, "; errMsg:", err.Error())
- utils.FileLog.Info(logMsg)
- return
- }
- defer resp.Body.Close()
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- logMsg = fmt.Sprint("获取参会人员列表 comein get err; request:", getUrl, "; errMsg:", err.Error())
- utils.FileLog.Info(logMsg)
- return
- }
- utils.FileLog.Info(fmt.Sprint("获取参会人员列表 comein get Result", ";url:", getUrl, ";\nresponse:", string(body)))
- err = json.Unmarshal(body, &respData)
- if err != nil {
- utils.FileLog.Info("获取参会人员列表 comein get Err:", err.Error(), ";url:", getUrl, ";response:", string(body))
- err = errors.New("Unmarshal Err:" + err.Error())
- return
- }
- if respData.Errorcode != "0" {
- utils.FileLog.Info("获取参会人员列表 comein get Err:", err.Error(), ";url:", getUrl, ";response:", string(body))
- err = errors.New(respData.Errordesc)
- return
- }
- return
- }
- // GetUrlParams 获取url请求参数
- func GetUrlParams(params map[string]string) (paramStr string) {
- GetSign(params)
- // 待签名字符串
- for index, val := range params {
- paramStr += index + `=` + val + `&`
- }
- paramStr = paramStr[:len(paramStr)-1]
- return
- }
- // GetSign 获取签名
- func GetSign(params map[string]string) (paramStr string) {
- //获取map的下标切片,然后对下标进行排序
- keySlice := make([]string, 0)
- //基础参数
- params["appid"] = utils.COMEIN_APPID //签名用的是appid,实际请求用的appId
- params["app"] = "json"
- ignoreStr := []string{"app", "mod", "act"}
- for index := range params {
- //需要忽略的字符
- if utils.InArrayByStr(ignoreStr, index) {
- continue
- }
- keySlice = append(keySlice, index)
- }
- sort.Strings(keySlice)
- // 待签名字符串
- for _, index := range keySlice {
- paramStr += index + `=` + params[index] + `&`
- }
- // 获取签名
- signStr := utils.HmacMd5(utils.COMEIN_SECREKEY, paramStr[:len(paramStr)-1])
- signature := url.QueryEscape(signStr)
- params["signature"] = signature
- delete(params, "appid")
- params["appId"] = utils.COMEIN_APPID
- return
- }
|