comein.go 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916
  1. package comein
  2. import (
  3. "context"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. "hongze/hongze_task/models"
  8. "hongze/hongze_task/models/yb"
  9. "hongze/hongze_task/services/alarm_msg"
  10. "hongze/hongze_task/utils"
  11. "io/ioutil"
  12. "net/http"
  13. "net/url"
  14. "sort"
  15. "strconv"
  16. "time"
  17. )
  18. // EventListResp 会议列表返回数据结构
  19. type EventListResp struct {
  20. Code string `json:"code"`
  21. Data []EventListDataResp `json:"data"`
  22. Errorcode string `json:"errorcode"`
  23. Errordesc string `json:"errordesc"`
  24. Extra struct {
  25. HasMore bool `json:"hasMore"`
  26. More string `json:"more"`
  27. Pagestart string `json:"pagestart"`
  28. Total string `json:"total"`
  29. } `json:"extra"`
  30. Msg string `json:"msg"`
  31. Total int64 `json:"total"`
  32. }
  33. // EventListDataResp 会议数据
  34. type EventListDataResp struct {
  35. Authtag string `json:"authtag"`
  36. ConferenceType int64 `json:"conferenceType"`
  37. ContentTypeTagName string `json:"contentTypeTagName"`
  38. DescURL string `json:"descUrl"`
  39. Etime int64 `json:"etime"`
  40. ID int64 `json:"id"`
  41. IndustryName string `json:"industryName"`
  42. IsDel int64 `json:"isDel"`
  43. Livemode int64 `json:"livemode"`
  44. Logo string `json:"logo"`
  45. Logoweb string `json:"logoweb"`
  46. Members []struct {
  47. Identity int64 `json:"identity"`
  48. PhoneNumber string `json:"phoneNumber"`
  49. Type int64 `json:"type"`
  50. Uname string `json:"uname"`
  51. } `json:"members"`
  52. PresentURL string `json:"presentUrl"`
  53. RecordSupport int64 `json:"recordSupport"`
  54. RoadshowID int64 `json:"roadshowId"`
  55. ShortURL string `json:"shortUrl"`
  56. Status string `json:"status"`
  57. Stime int64 `json:"stime"`
  58. Title string `json:"title"`
  59. WxminiProgramID string `json:"wxminiProgramId"`
  60. WxminiProgramPage string `json:"wxminiProgramPage"`
  61. }
  62. // GetEventList 获取会议列表
  63. func GetEventList(startTime, endTime time.Time) (respData EventListResp, err error) {
  64. defer func() {
  65. if err != nil {
  66. go alarm_msg.SendAlarmMsg("查询组织下所有的会议列表失败;ERR:"+err.Error(), 3)
  67. }
  68. }()
  69. logMsg := ``
  70. pageStart := 0
  71. pageNum := 10
  72. paramsMap := map[string]string{
  73. "mod": "roadshow", //模块名
  74. "act": "opensearch", //处理方法名
  75. //"btime": fmt.Sprint(startTime.Unix() * 1000), //开始时间,时间戳
  76. //"etime": fmt.Sprint(endTime.Unix() * 1000), //结束时间,时间戳
  77. //"ignoredel": "1", //忽略已删除的数据 (1 删除的数据也可查询出)
  78. "pagestart": strconv.Itoa(pageStart), //翻页数 (第一页传 0 )
  79. "pagenum": strconv.Itoa(pageNum), //每页总条数(默认10条)
  80. "ts": fmt.Sprint(time.Now().Unix() * 1000), //请求发起的时间戳,单位:毫秒
  81. }
  82. paramStr := GetUrlParams(paramsMap)
  83. //fmt.Println(paramStr)
  84. //App string `json:"app" description:"数据类型"`
  85. //Mod string `json:"mod" description:"模块名"`
  86. //Act string `json:"act" description:"处理方法名"`
  87. //Appid string `json:"appid" description:"合作方ID"`
  88. getUrl := utils.COMEIN_URL + "?" + paramStr
  89. resp, err := http.Get(getUrl)
  90. if err != nil {
  91. logMsg = fmt.Sprint("comein get err; request:", getUrl, "; errMsg:", err.Error())
  92. utils.FileLog.Info(logMsg)
  93. return
  94. }
  95. defer resp.Body.Close()
  96. body, err := ioutil.ReadAll(resp.Body)
  97. if err != nil {
  98. logMsg = fmt.Sprint("comein get err; request:", getUrl, "; errMsg:", err.Error())
  99. utils.FileLog.Info(logMsg)
  100. return
  101. }
  102. utils.FileLog.Info(fmt.Sprint("comein get Result", ";url:", getUrl, ";\nresponse:", string(body)))
  103. err = json.Unmarshal(body, &respData)
  104. if err != nil {
  105. utils.FileLog.Info("comein get Err:", err.Error(), ";url:", getUrl, ";response:", string(body))
  106. err = errors.New("Unmarshal Err:" + err.Error())
  107. return
  108. }
  109. if respData.Errorcode != "0" {
  110. utils.FileLog.Info("comein get Err:", err.Error(), ";url:", getUrl, ";response:", string(body))
  111. err = errors.New(respData.Errordesc)
  112. return
  113. }
  114. return
  115. }
  116. // RoadshowDataResp 用户参会数据返回
  117. type RoadshowDataResp struct {
  118. Code string `json:"code"`
  119. Data []RoadshowData `json:"data"`
  120. Errorcode string `json:"errorcode"`
  121. Errordesc string `json:"errordesc"`
  122. Msg string `json:"msg"`
  123. }
  124. type RoadshowData struct {
  125. AreaCode string `json:"areaCode"`
  126. AskCount int64 `json:"askCount"`
  127. AuthInfo string `json:"authInfo"`
  128. Company string `json:"company"`
  129. DataType int64 `json:"dataType"`
  130. DutySeller string `json:"dutySeller"`
  131. Email string `json:"email"`
  132. FirstWatchTime int64 `json:"firstWatchTime"`
  133. GuestUserNames string `json:"guestUserNames"`
  134. ID int64 `json:"id"`
  135. JoinTime int64 `json:"joinTime"`
  136. JoinType int64 `json:"joinType"`
  137. LastWatchTime int64 `json:"lastWatchTime"`
  138. MeetingType string `json:"meetingType"`
  139. Occupation string `json:"occupation"`
  140. OrgRemarks string `json:"orgRemarks"`
  141. ResearchArea string `json:"researchArea"`
  142. RoadshowBeginTime int64 `json:"roadshowBeginTime"`
  143. RoadshowEndTime int64 `json:"roadshowEndTime"`
  144. RoadshowID int64 `json:"roadshowId"`
  145. RoadshowTitle string `json:"roadshowTitle"`
  146. RoadshowType int64 `json:"roadshowType"`
  147. SpeakerID int64 `json:"speakerId"`
  148. SpeakerName string `json:"speakerName"`
  149. TelFixedID int64 `json:"telFixedId"`
  150. TeleconferenceID string `json:"teleconferenceId"`
  151. ThirdMeetingID string `json:"thirdMeetingId"`
  152. UniqueID string `json:"uniqueId"`
  153. UserIdentity int64 `json:"userIdentity"`
  154. UserInfoSource string `json:"userInfoSource"`
  155. UserName string `json:"userName"`
  156. UserPhone string `json:"userPhone"`
  157. }
  158. // GetRoadshowDataList 获取参会人员列表
  159. func GetRoadshowDataList(startTime, endTime int64) (respData RoadshowDataResp, err error) {
  160. defer func() {
  161. if err != nil {
  162. go alarm_msg.SendAlarmMsg("获取参会人员列表失败;ERR:"+err.Error(), 3)
  163. }
  164. }()
  165. logMsg := ``
  166. paramsMap := map[string]string{
  167. "mod": "open", //模块名
  168. "act": "roadshow-datas", //处理方法名
  169. "beginTime": fmt.Sprint(startTime), //开始时间,时间戳
  170. "endTime": fmt.Sprint(endTime), //结束时间,时间戳
  171. "ts": fmt.Sprint(time.Now().Unix() * 1000), //请求发起的时间戳,单位:毫秒
  172. }
  173. paramStr := GetUrlParams(paramsMap)
  174. paramsMap["dataType"] = "1" //数据类型,1:直播 2:回放 (该参数不参与签名算法)
  175. //fmt.Println(paramStr)
  176. //App string `json:"app" description:"数据类型"`
  177. //Mod string `json:"mod" description:"模块名"`
  178. //Act string `json:"act" description:"处理方法名"`
  179. //Appid string `json:"appid" description:"合作方ID"`
  180. getUrl := utils.COMEIN_URL + "?" + paramStr
  181. resp, err := http.Get(getUrl)
  182. if err != nil {
  183. logMsg = fmt.Sprint("获取参会人员列表 comein get err; request:", getUrl, "; errMsg:", err.Error())
  184. utils.FileLog.Info(logMsg)
  185. return
  186. }
  187. defer resp.Body.Close()
  188. body, err := ioutil.ReadAll(resp.Body)
  189. if err != nil {
  190. logMsg = fmt.Sprint("获取参会人员列表 comein get err; request:", getUrl, "; errMsg:", err.Error())
  191. utils.FileLog.Info(logMsg)
  192. return
  193. }
  194. utils.FileLog.Info(fmt.Sprint("获取参会人员列表 comein get Result", ";url:", getUrl, ";\nresponse:", string(body)))
  195. err = json.Unmarshal(body, &respData)
  196. if err != nil {
  197. utils.FileLog.Info("获取参会人员列表 comein get Err:", err.Error(), ";url:", getUrl, ";response:", string(body))
  198. err = errors.New("Unmarshal Err:" + err.Error())
  199. return
  200. }
  201. if respData.Errorcode != "0" {
  202. utils.FileLog.Info("获取参会人员列表 comein get Err:", err.Error(), ";url:", getUrl, ";response:", string(body))
  203. err = errors.New(respData.Errordesc)
  204. return
  205. }
  206. return
  207. }
  208. // GetUrlParams 获取url请求参数
  209. func GetUrlParams(params map[string]string) (paramStr string) {
  210. GetSign(params)
  211. // 待签名字符串
  212. for index, val := range params {
  213. paramStr += index + `=` + val + `&`
  214. }
  215. paramStr = paramStr[:len(paramStr)-1]
  216. return
  217. }
  218. // GetSign 获取签名
  219. func GetSign(params map[string]string) (paramStr string) {
  220. //获取map的下标切片,然后对下标进行排序
  221. keySlice := make([]string, 0)
  222. //基础参数
  223. params["appid"] = utils.COMEIN_APPID //签名用的是appid,实际请求用的appId
  224. params["app"] = "json"
  225. ignoreStr := []string{"app", "mod", "act"}
  226. for index := range params {
  227. //需要忽略的字符
  228. if utils.InArrayByStr(ignoreStr, index) {
  229. continue
  230. }
  231. keySlice = append(keySlice, index)
  232. }
  233. sort.Strings(keySlice)
  234. // 待签名字符串
  235. for _, index := range keySlice {
  236. paramStr += index + `=` + params[index] + `&`
  237. }
  238. // 获取签名
  239. signStr := utils.HmacMd5(utils.COMEIN_SECREKEY, paramStr[:len(paramStr)-1])
  240. signature := url.QueryEscape(signStr)
  241. params["signature"] = signature
  242. delete(params, "appid")
  243. params["appId"] = utils.COMEIN_APPID
  244. return
  245. }
  246. // InitAddWhiteList 初始化进门财经白名单
  247. func InitAddWhiteList() (err error) {
  248. defer func() {
  249. if err != nil {
  250. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  251. }
  252. }()
  253. postUrl := utils.COMEIN_URL
  254. list, err := models.GetComeinWhiteUserMulti()
  255. if err != nil {
  256. fmt.Println("GetUserMobileFormal Err:", err.Error())
  257. return
  258. }
  259. whiteList := make([]yb.Whitelist, 0)
  260. for _, v := range list {
  261. whiteUser := yb.Whitelist{}
  262. if v.Mobile != "" {
  263. whiteUser.Phone = v.Mobile
  264. whiteUser.Areacode = v.CountryCode
  265. whiteUser.Guid = utils.MD5(strconv.Itoa(v.UserId))
  266. whiteList = append(whiteList, whiteUser)
  267. } else if v.Email != "" {
  268. whiteUser.Email = v.Email
  269. whiteUser.Guid = utils.MD5(strconv.Itoa(v.UserId))
  270. whiteList = append(whiteList, whiteUser)
  271. }
  272. }
  273. fmt.Println("共" + strconv.Itoa(len(whiteList)) + "条数据")
  274. // 分批发送请求
  275. var count int
  276. request := yb.SyncWhitelist{
  277. Opt: 1,
  278. AppID: utils.COMEIN_WHITELIST_APPID,
  279. }
  280. for i, v := range whiteList {
  281. //whiteItem := yb.Whitelist{
  282. // Guid: v.Guid,
  283. // Phone: v.Phone,
  284. // Email: v.Email,
  285. // Areacode: v.Areacode,
  286. //}
  287. request.Whitelist = append(request.Whitelist, v)
  288. if count < 10000 && (len(whiteList)-i-1) > 0 {
  289. count++
  290. continue
  291. }
  292. count = 0
  293. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  294. signature := GetSignature("1", timestamp)
  295. request.Signature = signature
  296. request.Timestamp = timestamp
  297. jsonData, e := json.Marshal(request)
  298. if e != nil {
  299. err = e
  300. return
  301. }
  302. headers := map[string]string{
  303. "app": "json",
  304. "mod": "channelopen",
  305. "act": "whitelist",
  306. }
  307. // 发起POST请求
  308. resp, e := utils.MakePostRequest(postUrl, jsonData, headers)
  309. if e != nil {
  310. err = e
  311. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl)
  312. return
  313. }
  314. defer resp.Body.Close()
  315. body, e := ioutil.ReadAll(resp.Body)
  316. if e != nil {
  317. err = e
  318. fmt.Println("reponse error", err)
  319. return
  320. }
  321. result := new(yb.ComeinResponse)
  322. err = json.Unmarshal(body, &result)
  323. if err != nil {
  324. fmt.Println("json.Unmarshal Err:" + err.Error())
  325. return
  326. }
  327. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";url:", postUrl, ";\nrequest:", jsonData, ";\nresponse:", string(body)))
  328. err = json.Unmarshal(body, &result)
  329. if err != nil {
  330. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";url:", postUrl, ";\nrequest:", jsonData, ";\nresponse:", string(body)))
  331. err = errors.New("Unmarshal Err:" + err.Error())
  332. return
  333. }
  334. if result.ErrorCode != "0" {
  335. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";url:", postUrl, ";\nrequest:", request, ";\nresponse:", string(body)))
  336. err = errors.New(result.ErrorDesc)
  337. return
  338. }
  339. request.Whitelist = nil
  340. time.Sleep(110 * time.Second)
  341. fmt.Println("同步成功:" + strconv.Itoa(i+1) + "条数据")
  342. }
  343. return
  344. }
  345. func GetSignature(opt, timestamp string) (signature string) {
  346. //获取map的下标切片,然后对下标进行排序
  347. keySlice := make([]string, 0)
  348. //基础参数
  349. params := make(map[string]string, 0)
  350. params["appid"] = utils.COMEIN_WHITELIST_APPID //签名用的是appid,实际请求用的appId
  351. if opt != "" {
  352. params["opt"] = opt
  353. }
  354. params["timestamp"] = timestamp
  355. for index := range params {
  356. keySlice = append(keySlice, index)
  357. }
  358. sort.Strings(keySlice)
  359. var paramStr string
  360. // 待签名字符串
  361. for _, index := range keySlice {
  362. paramStr += index + `=` + params[index] + `&`
  363. }
  364. paramStr = paramStr[:len(paramStr)-1]
  365. // 获取签名
  366. signStr := utils.HmacMd5(utils.COMEIN_WHITELIST_SECREKEY, paramStr)
  367. signature = url.QueryEscape(signStr)
  368. return
  369. }
  370. func InitComeinWhiteList() (err error) {
  371. list := make([]*models.ComeinWhiteUser, 0)
  372. realList, err := models.GetUserMobileFormal()
  373. if err != nil {
  374. fmt.Println("GetUserMobileFormal Err:", err.Error())
  375. return
  376. }
  377. for _, v := range realList {
  378. user := models.ComeinWhiteUser{
  379. Email: v.Email,
  380. Mobile: v.Mobile,
  381. CountryCode: "+86",
  382. IsFake: 0,
  383. }
  384. list = append(list, &user)
  385. }
  386. for i := 0; i < 100000-len(realList); i++ {
  387. phone := utils.RandomPhone()
  388. user := models.ComeinWhiteUser{
  389. Mobile: phone,
  390. CountryCode: "+86",
  391. IsFake: 1,
  392. }
  393. list = append(list, &user)
  394. }
  395. err = models.AddComeinWhiteUserMulti(list)
  396. if err != nil {
  397. fmt.Println("添加随机手机号失败", err.Error())
  398. return
  399. }
  400. fmt.Println("添加随机手机号成功")
  401. return
  402. }
  403. // SyncWhiteList 同步进门财经白名单定时任务
  404. func SyncWhiteList(cont context.Context) (err error) {
  405. defer func() {
  406. if err != nil {
  407. go alarm_msg.SendAlarmMsg("SyncWhiteList;ERR:"+err.Error(), 3)
  408. }
  409. }()
  410. // 拿白名单表
  411. list, err := models.GetComeinWhiteUserMulti()
  412. if err != nil {
  413. fmt.Println("GetUserMobileFormal Err:", err.Error())
  414. return
  415. }
  416. syncedMap := make(map[string]bool, 0)
  417. for _, v := range list {
  418. syncedMap[v.Mobile+v.Email] = true
  419. }
  420. //拿联系人表,需要进白名单的
  421. needAddList, err := models.GetUserMobileFormal()
  422. if err != nil {
  423. fmt.Println("GetUserMobileFormal Err:", err.Error())
  424. return
  425. }
  426. addList := make([]*models.ComeinWhiteUser, 0)
  427. for _, v := range needAddList {
  428. if _, ok := syncedMap[v.Mobile+v.Email]; !ok {
  429. user := models.ComeinWhiteUser{
  430. UserId: v.UserId,
  431. Mobile: v.Mobile,
  432. CountryCode: v.CountryCode,
  433. Email: v.Email,
  434. IsFake: 0,
  435. }
  436. addList = append(addList, &user)
  437. }
  438. }
  439. err = syncWhiteList(addList, 1)
  440. if err != nil {
  441. fmt.Println("新增白名单失败", err.Error())
  442. return
  443. }
  444. err = models.AddComeinWhiteUserMulti(addList)
  445. if err != nil {
  446. fmt.Println("新增白名单失败,AddComeinWhiteUserMulti", err.Error())
  447. return
  448. }
  449. //拿联系人表,需要删除的
  450. needDelList, err := models.GetUserMobileNotFormal()
  451. if err != nil {
  452. fmt.Println("GetUserMobileFormal Err:", err.Error())
  453. return
  454. }
  455. delList := make([]*models.ComeinWhiteUser, 0)
  456. for _, v := range needDelList {
  457. if _, ok := syncedMap[v.Mobile+v.Email]; ok {
  458. user := models.ComeinWhiteUser{
  459. UserId: v.UserId,
  460. Mobile: v.Mobile,
  461. CountryCode: v.CountryCode,
  462. Email: v.Email,
  463. IsFake: 0,
  464. }
  465. delList = append(delList, &user)
  466. }
  467. }
  468. err = syncWhiteList(delList, 2)
  469. if err != nil {
  470. fmt.Println("删除白名单失败", err.Error())
  471. return
  472. }
  473. delIds := make([]int, 0)
  474. for _, v := range delList {
  475. delIds = append(delIds, v.UserId)
  476. }
  477. err = models.DelComeinWhiteUserMulti(delIds)
  478. if err != nil {
  479. fmt.Println("删除白名单失败,DelComeinWhiteUserMulti", err.Error())
  480. return
  481. }
  482. return
  483. }
  484. func syncWhiteList(list []*models.ComeinWhiteUser, opt int) (err error) {
  485. postUrl := utils.COMEIN_URL
  486. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  487. signature := GetSignature(strconv.Itoa(opt), timestamp)
  488. request := yb.SyncWhitelist{
  489. Opt: opt,
  490. Timestamp: timestamp,
  491. AppID: utils.COMEIN_WHITELIST_APPID,
  492. Signature: signature,
  493. }
  494. whiteList := make([]yb.Whitelist, 0)
  495. for _, v := range list {
  496. whiteUser := yb.Whitelist{}
  497. if v.Mobile != "" {
  498. whiteUser.Phone = v.Mobile
  499. whiteUser.Areacode = "+" + v.CountryCode
  500. whiteUser.Guid = utils.MD5(strconv.Itoa(v.UserId))
  501. whiteList = append(whiteList, whiteUser)
  502. } else if v.Email != "" {
  503. whiteUser.Email = v.Email
  504. whiteUser.Guid = utils.MD5(strconv.Itoa(v.UserId))
  505. whiteList = append(whiteList, whiteUser)
  506. }
  507. }
  508. request.Whitelist = whiteList
  509. jsonData, err := json.Marshal(request)
  510. if err != nil {
  511. return
  512. }
  513. headers := map[string]string{
  514. "app": "json",
  515. "mod": "channelopen",
  516. "act": "whitelist",
  517. }
  518. // 发起POST请求
  519. resp, err := utils.MakePostRequest(postUrl, jsonData, headers)
  520. if err != nil {
  521. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl)
  522. return
  523. }
  524. defer resp.Body.Close()
  525. body, err := ioutil.ReadAll(resp.Body)
  526. if err != nil {
  527. fmt.Println("reponse error", err)
  528. return
  529. }
  530. utils.FileLog.Info(fmt.Sprint("comein syncWhiteList Result", ";url:", postUrl, ";\nrequest:", request, ";\nresponse:", string(body)))
  531. result := new(yb.ComeinResponse)
  532. err = json.Unmarshal(body, &result)
  533. if err != nil {
  534. utils.FileLog.Info("comein syncWhiteList Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  535. err = errors.New("Unmarshal Err:" + err.Error())
  536. return
  537. }
  538. if result.ErrorCode != "0" {
  539. utils.FileLog.Info("comein syncWhiteList Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  540. err = errors.New(result.ErrorDesc)
  541. return
  542. }
  543. return
  544. }
  545. // CheckWhiteList
  546. func CheckComeinWhiteList() (err error) {
  547. defer func() {
  548. if err != nil {
  549. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  550. }
  551. }()
  552. logMsg := ``
  553. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  554. signature := GetSignature("", timestamp)
  555. headers := map[string]string{
  556. "app": "json", //模块名
  557. "mod": "channelopen", //模块名
  558. "act": "list-detail", //处理方法名
  559. }
  560. paramsMap := map[string]string{
  561. "appId": utils.COMEIN_WHITELIST_APPID,
  562. "signature": signature,
  563. "timestamp": timestamp,
  564. "phone": "138108810525",
  565. }
  566. paramStr := ``
  567. for index, val := range paramsMap {
  568. paramStr += index + `=` + val + `&`
  569. }
  570. paramStr = paramStr[:len(paramStr)-1]
  571. getUrl := utils.COMEIN_URL + "?" + paramStr
  572. // 创建一个新的请求
  573. req, err := http.NewRequest("GET", getUrl, nil)
  574. if err != nil {
  575. fmt.Println("Error creating request:", err)
  576. return
  577. }
  578. // 添加自定义的头部信息
  579. for k, v := range headers {
  580. req.Header.Add(k, v)
  581. }
  582. // 发送请求并获取响应
  583. client := http.Client{}
  584. resp, err := client.Do(req)
  585. if err != nil {
  586. fmt.Println("Error sending request:", err)
  587. return
  588. }
  589. defer resp.Body.Close()
  590. body, err := ioutil.ReadAll(resp.Body)
  591. if err != nil {
  592. logMsg = fmt.Sprint("获取参会人员列表 comein get err; request:", getUrl, "; errMsg:", err.Error())
  593. utils.FileLog.Info(logMsg)
  594. return
  595. }
  596. result := new(yb.ComeinResponse)
  597. err = json.Unmarshal(body, &result)
  598. if err != nil {
  599. fmt.Println("json.Unmarshal Err:" + err.Error())
  600. return
  601. }
  602. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";\nresponse:", string(body)))
  603. err = json.Unmarshal(body, &result)
  604. if err != nil {
  605. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";response:", string(body))
  606. err = errors.New("Unmarshal Err:" + err.Error())
  607. return
  608. }
  609. if result.ErrorCode != "0" {
  610. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";response:", string(body))
  611. err = errors.New(result.ErrorDesc)
  612. return
  613. }
  614. return
  615. }
  616. func AddWhiteList() (err error) {
  617. defer func() {
  618. if err != nil {
  619. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  620. }
  621. }()
  622. postUrl := utils.COMEIN_URL
  623. whiteUser := yb.Whitelist{}
  624. whiteUser.Phone = "188286375317"
  625. whiteUser.Areacode = "+86"
  626. whiteUser.Guid = "26968fa5f8753ffdbaaab97fbe092f4f"
  627. request := yb.SyncWhitelist{
  628. Opt: 1,
  629. AppID: utils.COMEIN_WHITELIST_APPID,
  630. }
  631. request.Whitelist = append(request.Whitelist, whiteUser)
  632. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  633. signature := GetSignature("1", timestamp)
  634. request.Signature = signature
  635. request.Timestamp = timestamp
  636. jsonData, e := json.Marshal(request)
  637. if e != nil {
  638. err = e
  639. return
  640. }
  641. headers := map[string]string{
  642. "app": "json",
  643. "mod": "channelopen",
  644. "act": "whitelist",
  645. }
  646. // 发起POST请求
  647. resp, e := utils.MakePostRequest(postUrl, jsonData, headers)
  648. if e != nil {
  649. err = e
  650. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl)
  651. return
  652. }
  653. defer resp.Body.Close()
  654. body, e := ioutil.ReadAll(resp.Body)
  655. if e != nil {
  656. err = e
  657. fmt.Println("reponse error", err)
  658. return
  659. }
  660. result := new(yb.ComeinResponse)
  661. err = json.Unmarshal(body, &result)
  662. if err != nil {
  663. fmt.Println("json.Unmarshal Err:" + err.Error())
  664. return
  665. }
  666. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";url:", postUrl, ";\nresponse:", string(body)))
  667. err = json.Unmarshal(body, &result)
  668. if err != nil {
  669. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  670. err = errors.New("Unmarshal Err:" + err.Error())
  671. return
  672. }
  673. if result.ErrorCode != "0" {
  674. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  675. err = errors.New(result.ErrorDesc)
  676. return
  677. }
  678. request.Whitelist = nil
  679. return
  680. }
  681. // CheckWhiteList
  682. func CheckComeinWhiteListByJobId() (err error) {
  683. defer func() {
  684. if err != nil {
  685. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  686. }
  687. }()
  688. logMsg := ``
  689. headers := map[string]string{
  690. "app": "json", //模块名
  691. "mod": "channelopen", //模块名
  692. "act": "get-result", //处理方法名
  693. }
  694. paramsMap := map[string]string{
  695. "jobId": "a180a8a4-a674-48ce-aa96-5a373c7dcc9c",
  696. }
  697. paramStr := ``
  698. for index, val := range paramsMap {
  699. paramStr += index + `=` + val + `&`
  700. }
  701. paramStr = paramStr[:len(paramStr)-1]
  702. getUrl := utils.COMEIN_URL + "?" + paramStr
  703. // 创建一个新的请求
  704. req, err := http.NewRequest("GET", getUrl, nil)
  705. if err != nil {
  706. fmt.Println("Error creating request:", err)
  707. return
  708. }
  709. // 添加自定义的头部信息
  710. for k, v := range headers {
  711. req.Header.Add(k, v)
  712. }
  713. // 发送请求并获取响应
  714. client := http.Client{}
  715. resp, err := client.Do(req)
  716. if err != nil {
  717. fmt.Println("Error sending request:", err)
  718. return
  719. }
  720. defer resp.Body.Close()
  721. body, err := ioutil.ReadAll(resp.Body)
  722. if err != nil {
  723. logMsg = fmt.Sprint("获取参会人员列表 comein get err; request:", getUrl, "; errMsg:", err.Error())
  724. utils.FileLog.Info(logMsg)
  725. return
  726. }
  727. result := new(yb.ComeinResponse)
  728. err = json.Unmarshal(body, &result)
  729. if err != nil {
  730. fmt.Println("json.Unmarshal Err:" + err.Error())
  731. return
  732. }
  733. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";\nresponse:", string(body)))
  734. err = json.Unmarshal(body, &result)
  735. if err != nil {
  736. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";response:", string(body))
  737. err = errors.New("Unmarshal Err:" + err.Error())
  738. return
  739. }
  740. if result.ErrorCode != "0" {
  741. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";response:", string(body))
  742. err = errors.New(result.ErrorDesc)
  743. return
  744. }
  745. return
  746. }
  747. func GetWhiteList() (err error) {
  748. defer func() {
  749. if err != nil {
  750. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  751. }
  752. }()
  753. postUrl := utils.COMEIN_URL
  754. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  755. signature := GetSignature("", timestamp)
  756. request := yb.GetWhitelist{
  757. Ts: timestamp,
  758. AppID: utils.COMEIN_WHITELIST_APPID,
  759. Signature: signature,
  760. }
  761. jsonData, e := json.Marshal(request)
  762. if e != nil {
  763. err = e
  764. return
  765. }
  766. headers := map[string]string{
  767. "app": "json",
  768. "mod": "channelopen",
  769. "act": "get-whitelist-v1",
  770. }
  771. // 发起POST请求
  772. resp, e := utils.MakePostRequest(postUrl, jsonData, headers)
  773. if e != nil {
  774. err = e
  775. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl)
  776. return
  777. }
  778. defer resp.Body.Close()
  779. body, e := ioutil.ReadAll(resp.Body)
  780. if e != nil {
  781. err = e
  782. fmt.Println("reponse error", err)
  783. return
  784. }
  785. result := new(yb.ComeinResponse)
  786. err = json.Unmarshal(body, &result)
  787. if err != nil {
  788. fmt.Println("json.Unmarshal Err:" + err.Error())
  789. return
  790. }
  791. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";url:", postUrl, ";\nresponse:", string(body)))
  792. err = json.Unmarshal(body, &result)
  793. if err != nil {
  794. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  795. err = errors.New("Unmarshal Err:" + err.Error())
  796. return
  797. }
  798. if result.ErrorCode != "0" {
  799. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  800. err = errors.New(result.ErrorDesc)
  801. return
  802. }
  803. return
  804. }