comein.go 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914
  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 < 17000 && (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, ";\nresponse:", string(body)))
  328. err = json.Unmarshal(body, &result)
  329. if err != nil {
  330. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  331. err = errors.New("Unmarshal Err:" + err.Error())
  332. return
  333. }
  334. if result.ErrorCode != "0" {
  335. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", 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. Mobile: v.Mobile,
  431. CountryCode: v.CountryCode,
  432. Email: v.Email,
  433. IsFake: 0,
  434. }
  435. addList = append(addList, &user)
  436. }
  437. }
  438. err = syncWhiteList(addList, 1)
  439. if err != nil {
  440. fmt.Println("新增白名单失败", err.Error())
  441. return
  442. }
  443. err = models.AddComeinWhiteUserMulti(addList)
  444. if err != nil {
  445. fmt.Println("新增白名单失败,AddComeinWhiteUserMulti", err.Error())
  446. return
  447. }
  448. //拿联系人表,需要删除的
  449. needDelList, err := models.GetUserMobileNotFormal()
  450. if err != nil {
  451. fmt.Println("GetUserMobileFormal Err:", err.Error())
  452. return
  453. }
  454. delList := make([]*models.ComeinWhiteUser, 0)
  455. for _, v := range needDelList {
  456. if _, ok := syncedMap[v.Mobile+v.Email]; ok {
  457. user := models.ComeinWhiteUser{
  458. Mobile: v.Mobile,
  459. CountryCode: v.CountryCode,
  460. Email: v.Email,
  461. IsFake: 0,
  462. }
  463. delList = append(delList, &user)
  464. }
  465. }
  466. err = syncWhiteList(delList, 2)
  467. if err != nil {
  468. fmt.Println("删除白名单失败", err.Error())
  469. return
  470. }
  471. delIds := make([]int, 0)
  472. for _, v := range delList {
  473. delIds = append(delIds, v.UserId)
  474. }
  475. err = models.DelComeinWhiteUserMulti(delIds)
  476. if err != nil {
  477. fmt.Println("删除白名单失败,DelComeinWhiteUserMulti", err.Error())
  478. return
  479. }
  480. return
  481. }
  482. func syncWhiteList(list []*models.ComeinWhiteUser, opt int) (err error) {
  483. postUrl := utils.COMEIN_URL
  484. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  485. signature := GetSignature(strconv.Itoa(opt), timestamp)
  486. request := yb.SyncWhitelist{
  487. Opt: opt,
  488. Timestamp: timestamp,
  489. AppID: utils.COMEIN_WHITELIST_APPID,
  490. Signature: signature,
  491. }
  492. whiteList := make([]yb.Whitelist, 0)
  493. for _, v := range list {
  494. whiteUser := yb.Whitelist{}
  495. if v.Mobile != "" {
  496. whiteUser.Phone = v.Mobile
  497. whiteUser.Areacode = "+" + v.CountryCode
  498. whiteUser.Guid = utils.MD5(strconv.Itoa(v.UserId))
  499. whiteList = append(whiteList, whiteUser)
  500. } else if v.Email != "" {
  501. whiteUser.Email = v.Email
  502. whiteUser.Guid = utils.MD5(strconv.Itoa(v.UserId))
  503. whiteList = append(whiteList, whiteUser)
  504. }
  505. }
  506. request.Whitelist = whiteList
  507. jsonData, err := json.Marshal(request)
  508. if err != nil {
  509. return
  510. }
  511. headers := map[string]string{
  512. "app": "json",
  513. "mod": "channelopen",
  514. "act": "whitelist",
  515. }
  516. // 发起POST请求
  517. resp, err := utils.MakePostRequest(postUrl, jsonData, headers)
  518. if err != nil {
  519. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl)
  520. return
  521. }
  522. defer resp.Body.Close()
  523. body, err := ioutil.ReadAll(resp.Body)
  524. if err != nil {
  525. fmt.Println("reponse error", err)
  526. return
  527. }
  528. utils.FileLog.Info(fmt.Sprint("comein syncWhiteList Result", ";url:", postUrl, ";\nrequest:", request, ";\nresponse:", string(body)))
  529. result := new(yb.ComeinResponse)
  530. err = json.Unmarshal(body, &result)
  531. if err != nil {
  532. utils.FileLog.Info("comein syncWhiteList Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  533. err = errors.New("Unmarshal Err:" + err.Error())
  534. return
  535. }
  536. if result.ErrorCode != "0" {
  537. utils.FileLog.Info("comein syncWhiteList Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  538. err = errors.New(result.ErrorDesc)
  539. return
  540. }
  541. return
  542. }
  543. // CheckWhiteList
  544. func CheckComeinWhiteList() (err error) {
  545. defer func() {
  546. if err != nil {
  547. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  548. }
  549. }()
  550. logMsg := ``
  551. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  552. signature := GetSignature("", timestamp)
  553. headers := map[string]string{
  554. "app": "json", //模块名
  555. "mod": "channelopen", //模块名
  556. "act": "list-detail", //处理方法名
  557. }
  558. paramsMap := map[string]string{
  559. "appId": utils.COMEIN_WHITELIST_APPID,
  560. "signature": signature,
  561. "timestamp": timestamp,
  562. "phone": "18958041673",
  563. }
  564. paramStr := ``
  565. for index, val := range paramsMap {
  566. paramStr += index + `=` + val + `&`
  567. }
  568. paramStr = paramStr[:len(paramStr)-1]
  569. getUrl := utils.COMEIN_URL + "?" + paramStr
  570. // 创建一个新的请求
  571. req, err := http.NewRequest("GET", getUrl, nil)
  572. if err != nil {
  573. fmt.Println("Error creating request:", err)
  574. return
  575. }
  576. // 添加自定义的头部信息
  577. for k, v := range headers {
  578. req.Header.Add(k, v)
  579. }
  580. // 发送请求并获取响应
  581. client := http.Client{}
  582. resp, err := client.Do(req)
  583. if err != nil {
  584. fmt.Println("Error sending request:", err)
  585. return
  586. }
  587. defer resp.Body.Close()
  588. body, err := ioutil.ReadAll(resp.Body)
  589. if err != nil {
  590. logMsg = fmt.Sprint("获取参会人员列表 comein get err; request:", getUrl, "; errMsg:", err.Error())
  591. utils.FileLog.Info(logMsg)
  592. return
  593. }
  594. result := new(yb.ComeinResponse)
  595. err = json.Unmarshal(body, &result)
  596. if err != nil {
  597. fmt.Println("json.Unmarshal Err:" + err.Error())
  598. return
  599. }
  600. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";\nresponse:", string(body)))
  601. err = json.Unmarshal(body, &result)
  602. if err != nil {
  603. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";response:", string(body))
  604. err = errors.New("Unmarshal Err:" + err.Error())
  605. return
  606. }
  607. if result.ErrorCode != "0" {
  608. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";response:", string(body))
  609. err = errors.New(result.ErrorDesc)
  610. return
  611. }
  612. return
  613. }
  614. func AddWhiteList() (err error) {
  615. defer func() {
  616. if err != nil {
  617. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  618. }
  619. }()
  620. postUrl := utils.COMEIN_URL
  621. whiteUser := yb.Whitelist{}
  622. whiteUser.Phone = "18958041673"
  623. whiteUser.Areacode = "+86"
  624. whiteUser.Guid = utils.MD5(strconv.Itoa(114808))
  625. request := yb.SyncWhitelist{
  626. Opt: 1,
  627. AppID: utils.COMEIN_WHITELIST_APPID,
  628. }
  629. request.Whitelist = append(request.Whitelist, whiteUser)
  630. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  631. signature := GetSignature("1", timestamp)
  632. request.Signature = signature
  633. request.Timestamp = timestamp
  634. jsonData, e := json.Marshal(request)
  635. if e != nil {
  636. err = e
  637. return
  638. }
  639. headers := map[string]string{
  640. "app": "json",
  641. "mod": "channelopen",
  642. "act": "whitelist",
  643. }
  644. // 发起POST请求
  645. resp, e := utils.MakePostRequest(postUrl, jsonData, headers)
  646. if e != nil {
  647. err = e
  648. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl)
  649. return
  650. }
  651. defer resp.Body.Close()
  652. body, e := ioutil.ReadAll(resp.Body)
  653. if e != nil {
  654. err = e
  655. fmt.Println("reponse error", err)
  656. return
  657. }
  658. result := new(yb.ComeinResponse)
  659. err = json.Unmarshal(body, &result)
  660. if err != nil {
  661. fmt.Println("json.Unmarshal Err:" + err.Error())
  662. return
  663. }
  664. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";url:", postUrl, ";\nresponse:", string(body)))
  665. err = json.Unmarshal(body, &result)
  666. if err != nil {
  667. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  668. err = errors.New("Unmarshal Err:" + err.Error())
  669. return
  670. }
  671. if result.ErrorCode != "0" {
  672. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  673. err = errors.New(result.ErrorDesc)
  674. return
  675. }
  676. request.Whitelist = nil
  677. return
  678. }
  679. // CheckWhiteList
  680. func CheckComeinWhiteListByJobId() (err error) {
  681. defer func() {
  682. if err != nil {
  683. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  684. }
  685. }()
  686. logMsg := ``
  687. headers := map[string]string{
  688. "app": "json", //模块名
  689. "mod": "channelopen", //模块名
  690. "act": "get-result", //处理方法名
  691. }
  692. paramsMap := map[string]string{
  693. "jobId": "52b7fcf4-304b-4061-8139-0ad1a3d1bde6",
  694. }
  695. paramStr := ``
  696. for index, val := range paramsMap {
  697. paramStr += index + `=` + val + `&`
  698. }
  699. paramStr = paramStr[:len(paramStr)-1]
  700. getUrl := utils.COMEIN_URL + "?" + paramStr
  701. // 创建一个新的请求
  702. req, err := http.NewRequest("GET", getUrl, nil)
  703. if err != nil {
  704. fmt.Println("Error creating request:", err)
  705. return
  706. }
  707. // 添加自定义的头部信息
  708. for k, v := range headers {
  709. req.Header.Add(k, v)
  710. }
  711. // 发送请求并获取响应
  712. client := http.Client{}
  713. resp, err := client.Do(req)
  714. if err != nil {
  715. fmt.Println("Error sending request:", err)
  716. return
  717. }
  718. defer resp.Body.Close()
  719. body, err := ioutil.ReadAll(resp.Body)
  720. if err != nil {
  721. logMsg = fmt.Sprint("获取参会人员列表 comein get err; request:", getUrl, "; errMsg:", err.Error())
  722. utils.FileLog.Info(logMsg)
  723. return
  724. }
  725. result := new(yb.ComeinResponse)
  726. err = json.Unmarshal(body, &result)
  727. if err != nil {
  728. fmt.Println("json.Unmarshal Err:" + err.Error())
  729. return
  730. }
  731. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";\nresponse:", string(body)))
  732. err = json.Unmarshal(body, &result)
  733. if err != nil {
  734. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";response:", string(body))
  735. err = errors.New("Unmarshal Err:" + err.Error())
  736. return
  737. }
  738. if result.ErrorCode != "0" {
  739. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";response:", string(body))
  740. err = errors.New(result.ErrorDesc)
  741. return
  742. }
  743. return
  744. }
  745. func GetWhiteList() (err error) {
  746. defer func() {
  747. if err != nil {
  748. go alarm_msg.SendAlarmMsg("InitAddWhiteList;ERR:"+err.Error(), 3)
  749. }
  750. }()
  751. postUrl := utils.COMEIN_URL
  752. timestamp := fmt.Sprintf("%d", time.Now().UnixNano()/1e6)
  753. signature := GetSignature("", timestamp)
  754. request := yb.GetWhitelist{
  755. Ts: timestamp,
  756. AppID: utils.COMEIN_WHITELIST_APPID,
  757. Signature: signature,
  758. }
  759. jsonData, e := json.Marshal(request)
  760. if e != nil {
  761. err = e
  762. return
  763. }
  764. headers := map[string]string{
  765. "app": "json",
  766. "mod": "channelopen",
  767. "act": "get-whitelist-v1",
  768. }
  769. // 发起POST请求
  770. resp, e := utils.MakePostRequest(postUrl, jsonData, headers)
  771. if e != nil {
  772. err = e
  773. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl)
  774. return
  775. }
  776. defer resp.Body.Close()
  777. body, e := ioutil.ReadAll(resp.Body)
  778. if e != nil {
  779. err = e
  780. fmt.Println("reponse error", err)
  781. return
  782. }
  783. result := new(yb.ComeinResponse)
  784. err = json.Unmarshal(body, &result)
  785. if err != nil {
  786. fmt.Println("json.Unmarshal Err:" + err.Error())
  787. return
  788. }
  789. utils.FileLog.Info(fmt.Sprint("comein addWhitelist Result", ";url:", postUrl, ";\nresponse:", string(body)))
  790. err = json.Unmarshal(body, &result)
  791. if err != nil {
  792. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  793. err = errors.New("Unmarshal Err:" + err.Error())
  794. return
  795. }
  796. if result.ErrorCode != "0" {
  797. utils.FileLog.Info("comein addWhitelist Err:", err.Error(), ";url:", postUrl, ";response:", string(body))
  798. err = errors.New(result.ErrorDesc)
  799. return
  800. }
  801. return
  802. }