diff --git a/.travis.yml b/.travis.yml index 4620277..73ecf84 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: go go: + - 1.9 - 1.8 - 1.7 - 1.6 diff --git a/cache/redis.go b/cache/redis.go index 31438c9..9d102b0 100644 --- a/cache/redis.go +++ b/cache/redis.go @@ -14,12 +14,12 @@ type Redis struct { //RedisOpts redis 连接属性 type RedisOpts struct { - Host string - Password string - Database int - MaxIdle int - MaxActive int - IdleTimeout time.Duration //second + Host string `yml:"host" json:"host"` + Password string `yml:"password" json:"password"` + Database int `yml:"database" json:"database"` + MaxIdle int `yml:"max_idle" json:"max_idle"` + MaxActive int `yml:"max_active" json:"max_active"` + IdleTimeout int32 `yml:"idle_timeout" json:"idle_timeout"` //second } //NewRedis 实例化 @@ -27,7 +27,7 @@ func NewRedis(opts *RedisOpts) *Redis { pool := &redis.Pool{ MaxActive: opts.MaxActive, MaxIdle: opts.MaxIdle, - IdleTimeout: opts.IdleTimeout, + IdleTimeout: time.Second * time.Duration(opts.IdleTimeout), Dial: func() (redis.Conn, error) { return redis.Dial("tcp", opts.Host, redis.DialDatabase(opts.Database), diff --git a/context/access_token.go b/context/access_token.go index 3b3d263..a7f7810 100644 --- a/context/access_token.go +++ b/context/access_token.go @@ -55,6 +55,9 @@ func (ctx *Context) GetAccessTokenFromServer() (resAccessToken ResAccessToken, e url := fmt.Sprintf("%s?grant_type=client_credential&appid=%s&secret=%s", AccessTokenURL, ctx.AppID, ctx.AppSecret) var body []byte body, err = util.HTTPGet(url) + if err != nil { + return + } err = json.Unmarshal(body, &resAccessToken) if err != nil { return diff --git a/js/js.go b/js/js.go index a8bdaa9..d6b93f4 100644 --- a/js/js.go +++ b/js/js.go @@ -44,7 +44,7 @@ func NewJs(context *context.Context) *Js { func (js *Js) GetConfig(uri string) (config *Config, err error) { config = new(Config) var ticketStr string - ticketStr, err = js.getTicket() + ticketStr, err = js.GetTicket() if err != nil { return } @@ -61,8 +61,8 @@ func (js *Js) GetConfig(uri string) (config *Config, err error) { return } -//getTicket 获取jsapi_tocket全局缓存 -func (js *Js) getTicket() (ticketStr string, err error) { +//GetTicket 获取jsapi_ticket +func (js *Js) GetTicket() (ticketStr string, err error) { js.GetJsAPITicketLock().Lock() defer js.GetJsAPITicketLock().Unlock() diff --git a/message/message.go b/message/message.go index 42a22f4..b426a7f 100644 --- a/message/message.go +++ b/message/message.go @@ -58,6 +58,8 @@ const ( EventPicWeixin = "pic_weixin" //EventLocationSelect 弹出地理位置选择器的事件推送 EventLocationSelect = "location_select" + //EventTemplateSendJobFinish 发送模板消息推送通知 + EventTemplateSendJobFinish = "TEMPLATESENDJOBFINISH" ) //MixMessage 存放所有微信发送过来的消息和事件 @@ -87,6 +89,8 @@ type MixMessage struct { Longitude string `xml:"Longitude"` Precision string `xml:"Precision"` MenuID string `xml:"MenuId"` + Status string `xml:"Status"` + SessionFrom string `xml:"SessionFrom"` ScanCodeInfo struct { ScanType string `xml:"ScanType"` diff --git a/oauth/oauth.go b/oauth/oauth.go index 5e49e60..6b2b710 100644 --- a/oauth/oauth.go +++ b/oauth/oauth.go @@ -38,13 +38,12 @@ func (oauth *Oauth) GetRedirectURL(redirectURI, scope, state string) (string, er } //Redirect 跳转到网页授权 -func (oauth *Oauth) Redirect(writer http.ResponseWriter, redirectURI, scope, state string) error { +func (oauth *Oauth) Redirect(writer http.ResponseWriter, req *http.Request, redirectURI, scope, state string) error { location, err := oauth.GetRedirectURL(redirectURI, scope, state) if err != nil { return err } - //location 为完整地址,所以不需要request - http.Redirect(writer, nil, location, 302) + http.Redirect(writer, req, location, 302) return nil } diff --git a/template/template.go b/template/template.go index cbd07bb..e0c15f1 100644 --- a/template/template.go +++ b/template/template.go @@ -47,11 +47,11 @@ type DataItem struct { type resTemplateSend struct { util.CommonError - MsgID int32 `json:"msgid"` + MsgID int64 `json:"msgid"` } //Send 发送模板消息 -func (tpl *Template) Send(msg *Message) (msgID int32, err error) { +func (tpl *Template) Send(msg *Message) (msgID int64, err error) { var accessToken string accessToken, err = tpl.GetAccessToken() if err != nil {