|
@@ -0,0 +1,108 @@
|
|
|
+package roadshow
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "errors"
|
|
|
+ "fmt"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/http"
|
|
|
+ "hongze/hongze_mobile_admin/models/roadshow"
|
|
|
+ "hongze/hongze_mobile_admin/utils"
|
|
|
+ "io/ioutil"
|
|
|
+ netHttp "net/http"
|
|
|
+ "net/url"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+// getAccessToken token内部请求接口
|
|
|
+func getAccessToken() (tokenData roadshow.TokenData, err error) {
|
|
|
+ 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)
|
|
|
+ body, err := http.Get(getUrl)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("NewRequest Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var tokenResp roadshow.GetTokenResp
|
|
|
+ err = json.Unmarshal(body, &tokenResp)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("Unmarshal Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if tokenResp.Code != 1 {
|
|
|
+ err = errors.New("getAccessToken err:" + tokenResp.Msg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ tokenData = tokenResp.TokenData
|
|
|
+ return
|
|
|
+ //return tokenResp.TokenData.AccessToken, err
|
|
|
+}
|
|
|
+
|
|
|
+// GetAccessToken 获取accessToken
|
|
|
+func GetAccessToken() (token string, err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendEmail(utils.APPNAME+"获取上海的token失败:"+time.Now().Format("2006-01-02 15:04:05"), err.Error(), utils.EmailSendToUsers)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ token, err = utils.Rc.RedisString("SH_ACCESS_TOKEN")
|
|
|
+ //如果从redis中accessToken 获取失败或者token为空了,那么重新获取accessToken
|
|
|
+ if err != nil || token == `` {
|
|
|
+ tokenInfo, tmpErr := getAccessToken()
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ token = tokenInfo.AccessToken
|
|
|
+ if !utils.Rc.SetNX("SH_ACCESS_TOKEN", token, time.Duration(tokenInfo.ExpireIn-600)*time.Second) {
|
|
|
+ err = errors.New("set Redis err")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// DeleteSHCalendar 删除上海日历活动
|
|
|
+func DeleteSHCalendar(rsCalendarResearcherId int) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendEmail(utils.APPNAME+"删除上海日历活动失败:"+time.Now().Format("2006-01-02 15:04:05"), fmt.Sprint("关系id:", rsCalendarResearcherId, ";err:", err.Error()), utils.EmailSendToUsers)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ token, err := GetAccessToken()
|
|
|
+ finalUrl := utils.CRM_OPEN_API_URL + "/v1/Calendar/delete?access_token=" + token
|
|
|
+
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+ condition = ` AND self_calendar_id = ? `
|
|
|
+ pars = append(pars, rsCalendarResearcherId)
|
|
|
+ relationItem, err := roadshow.GetRelationByPars(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("GetRelationByPars err" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp, err := netHttp.PostForm(finalUrl, url.Values{"user_phone": {relationItem.UserPhone}, "calendar_id": {fmt.Sprintf("%v", relationItem.ThirdCalendarId)}})
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("NewRequest Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer resp.Body.Close()
|
|
|
+
|
|
|
+ body, err := ioutil.ReadAll(resp.Body)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("reponse error", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //解析resp判断请求结果是否成功
|
|
|
+ var calendarResp roadshow.CreatSHCalendarResp
|
|
|
+ err = json.Unmarshal(body, &calendarResp)
|
|
|
+ if calendarResp.Code != 1 {
|
|
|
+ err = errors.New("Update SHCalendar err:" + calendarResp.Msg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //删除活动表及事项表
|
|
|
+ err = roadshow.DeleteRsCalendarRelation(relationItem.RelationId)
|
|
|
+ if err != nil {
|
|
|
+ err = errors.New("DeleteRsCalendarRelation err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|