calendar.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package roadshow
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "github.com/rdlucklib/rdluck_tools/http"
  7. "hongze/hongze_mobile_admin/models/roadshow"
  8. "hongze/hongze_mobile_admin/utils"
  9. "io/ioutil"
  10. netHttp "net/http"
  11. "net/url"
  12. "time"
  13. )
  14. // getAccessToken token内部请求接口
  15. func getAccessToken() (tokenData roadshow.TokenData, err error) {
  16. getUrl := fmt.Sprintf(utils.CRM_OPEN_API_URL+"/v1/auth/getAccessToken?app_key=%s&app_secret=%s", utils.CRM_OPEN_API_APP_KEY, utils.CRM_OPEN_API_APP_SECRET)
  17. body, err := http.Get(getUrl)
  18. if err != nil {
  19. err = errors.New("NewRequest Err:" + err.Error())
  20. return
  21. }
  22. var tokenResp roadshow.GetTokenResp
  23. err = json.Unmarshal(body, &tokenResp)
  24. if err != nil {
  25. err = errors.New("Unmarshal Err:" + err.Error())
  26. return
  27. }
  28. if tokenResp.Code != 1 {
  29. err = errors.New("getAccessToken err:" + tokenResp.Msg)
  30. return
  31. }
  32. tokenData = tokenResp.TokenData
  33. return
  34. //return tokenResp.TokenData.AccessToken, err
  35. }
  36. // GetAccessToken 获取accessToken
  37. func GetAccessToken() (token string, err error) {
  38. defer func() {
  39. if err != nil {
  40. go utils.SendEmail(utils.APPNAME+"获取上海的token失败:"+time.Now().Format("2006-01-02 15:04:05"), err.Error(), utils.EmailSendToUsers)
  41. }
  42. }()
  43. token, err = utils.Rc.RedisString("SH_ACCESS_TOKEN")
  44. //如果从redis中accessToken 获取失败或者token为空了,那么重新获取accessToken
  45. if err != nil || token == `` {
  46. tokenInfo, tmpErr := getAccessToken()
  47. if tmpErr != nil {
  48. err = tmpErr
  49. return
  50. }
  51. token = tokenInfo.AccessToken
  52. if !utils.Rc.SetNX("SH_ACCESS_TOKEN", token, time.Duration(tokenInfo.ExpireIn-600)*time.Second) {
  53. err = errors.New("set Redis err")
  54. }
  55. }
  56. return
  57. }
  58. // DeleteSHCalendar 删除上海日历活动
  59. func DeleteSHCalendar(rsCalendarResearcherId int) (err error) {
  60. defer func() {
  61. if err != nil {
  62. go utils.SendEmail(utils.APPNAME+"删除上海日历活动失败:"+time.Now().Format("2006-01-02 15:04:05"), fmt.Sprint("关系id:", rsCalendarResearcherId, ";err:", err.Error()), utils.EmailSendToUsers)
  63. }
  64. }()
  65. token, err := GetAccessToken()
  66. finalUrl := utils.CRM_OPEN_API_URL + "/v1/Calendar/delete?access_token=" + token
  67. var condition string
  68. var pars []interface{}
  69. condition = ` AND self_calendar_id = ? `
  70. pars = append(pars, rsCalendarResearcherId)
  71. relationItem, err := roadshow.GetRelationByPars(condition, pars)
  72. if err != nil {
  73. err = errors.New("GetRelationByPars err" + err.Error())
  74. return
  75. }
  76. resp, err := netHttp.PostForm(finalUrl, url.Values{"user_phone": {relationItem.UserPhone}, "calendar_id": {fmt.Sprintf("%v", relationItem.ThirdCalendarId)}})
  77. if err != nil {
  78. err = errors.New("NewRequest Err:" + err.Error())
  79. return
  80. }
  81. defer resp.Body.Close()
  82. body, err := ioutil.ReadAll(resp.Body)
  83. if err != nil {
  84. fmt.Println("reponse error", err)
  85. return
  86. }
  87. //解析resp判断请求结果是否成功
  88. var calendarResp roadshow.CreatSHCalendarResp
  89. err = json.Unmarshal(body, &calendarResp)
  90. if calendarResp.Code != 1 {
  91. err = errors.New("Update SHCalendar err:" + calendarResp.Msg)
  92. return
  93. }
  94. //删除活动表及事项表
  95. err = roadshow.DeleteRsCalendarRelation(relationItem.RelationId)
  96. if err != nil {
  97. err = errors.New("DeleteRsCalendarRelation err:" + err.Error())
  98. return
  99. }
  100. return
  101. }