mirror of
https://github.com/silenceper/wechat.git
synced 2026-03-01 00:35:26 +08:00
Compare commits
2 Commits
v2.1.7-rc.
...
a6a0f38c3d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6a0f38c3d | ||
|
|
d55a170570 |
6
cache/memory.go
vendored
6
cache/memory.go
vendored
@@ -26,25 +26,31 @@ func NewMemory() *Memory {
|
|||||||
|
|
||||||
// Get return cached value
|
// Get return cached value
|
||||||
func (mem *Memory) Get(key string) interface{} {
|
func (mem *Memory) Get(key string) interface{} {
|
||||||
|
mem.Lock()
|
||||||
if ret, ok := mem.data[key]; ok {
|
if ret, ok := mem.data[key]; ok {
|
||||||
|
mem.Unlock()
|
||||||
if ret.Expired.Before(time.Now()) {
|
if ret.Expired.Before(time.Now()) {
|
||||||
mem.deleteKey(key)
|
mem.deleteKey(key)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return ret.Data
|
return ret.Data
|
||||||
}
|
}
|
||||||
|
mem.Unlock()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsExist check value exists in memcache.
|
// IsExist check value exists in memcache.
|
||||||
func (mem *Memory) IsExist(key string) bool {
|
func (mem *Memory) IsExist(key string) bool {
|
||||||
|
mem.Lock()
|
||||||
if ret, ok := mem.data[key]; ok {
|
if ret, ok := mem.data[key]; ok {
|
||||||
|
mem.Unlock()
|
||||||
if ret.Expired.Before(time.Now()) {
|
if ret.Expired.Before(time.Now()) {
|
||||||
mem.deleteKey(key)
|
mem.deleteKey(key)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
mem.Unlock()
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
package message
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/silenceper/wechat/v2/miniprogram/context"
|
|
||||||
"github.com/silenceper/wechat/v2/util"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// createActivityURL 创建activity_id
|
|
||||||
createActivityURL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/activityid/create?access_token=%s"
|
|
||||||
// SendUpdatableMsgURL 修改动态消息
|
|
||||||
setUpdatableMsgURL = "https://api.weixin.qq.com/cgi-bin/message/wxopen/updatablemsg/send?access_token=%s"
|
|
||||||
)
|
|
||||||
|
|
||||||
// UpdatableTargetState 动态消息状态
|
|
||||||
type UpdatableTargetState int
|
|
||||||
|
|
||||||
const (
|
|
||||||
// TargetStateNotStarted 未开始
|
|
||||||
TargetStateNotStarted UpdatableTargetState = 0
|
|
||||||
// TargetStateStarted 已开始
|
|
||||||
TargetStateStarted UpdatableTargetState = 1
|
|
||||||
// TargetStateFinished 已结束
|
|
||||||
TargetStateFinished UpdatableTargetState = 2
|
|
||||||
)
|
|
||||||
|
|
||||||
// UpdatableMessage 动态消息
|
|
||||||
type UpdatableMessage struct {
|
|
||||||
*context.Context
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewUpdatableMessage 实例化
|
|
||||||
func NewUpdatableMessage(ctx *context.Context) *UpdatableMessage {
|
|
||||||
return &UpdatableMessage{
|
|
||||||
Context: ctx,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateActivityID 创建activity_id
|
|
||||||
func (updatableMessage *UpdatableMessage) CreateActivityID() (res CreateActivityIDResponse, err error) {
|
|
||||||
accessToken, err := updatableMessage.GetAccessToken()
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
uri := fmt.Sprintf(createActivityURL, accessToken)
|
|
||||||
response, err := util.HTTPGet(uri)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = util.DecodeWithError(response, &res, "CreateActivityID")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetUpdatableMsg 修改动态消息
|
|
||||||
func (updatableMessage *UpdatableMessage) SetUpdatableMsg(activityID string, targetState UpdatableTargetState, template UpdatableMsgTemplate) (err error) {
|
|
||||||
accessToken, err := updatableMessage.GetAccessToken()
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
uri := fmt.Sprintf(setUpdatableMsgURL, accessToken)
|
|
||||||
data := SendUpdatableMsgReq{
|
|
||||||
ActivityID: activityID,
|
|
||||||
TargetState: targetState,
|
|
||||||
TemplateInfo: template,
|
|
||||||
}
|
|
||||||
|
|
||||||
response, err := util.PostJSON(uri, data)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return util.DecodeWithCommonError(response, "SendUpdatableMsg")
|
|
||||||
}
|
|
||||||
|
|
||||||
// CreateActivityIDResponse 创建activity_id 返回
|
|
||||||
type CreateActivityIDResponse struct {
|
|
||||||
util.CommonError
|
|
||||||
|
|
||||||
ActivityID string `json:"activity_id"`
|
|
||||||
ExpirationTime int64 `json:"expiration_time"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdatableMsgTemplate 动态消息模板
|
|
||||||
type UpdatableMsgTemplate struct {
|
|
||||||
ParameterList []UpdatableMsgParameter `json:"parameter_list"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// UpdatableMsgParameter 动态消息参数
|
|
||||||
type UpdatableMsgParameter struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Value string `json:"value"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// SendUpdatableMsgReq 修改动态消息参数
|
|
||||||
type SendUpdatableMsgReq struct {
|
|
||||||
ActivityID string `json:"activity_id"`
|
|
||||||
TemplateInfo UpdatableMsgTemplate `json:"template_info"`
|
|
||||||
TargetState UpdatableTargetState `json:"target_state"`
|
|
||||||
}
|
|
||||||
@@ -161,8 +161,3 @@ func (miniProgram *MiniProgram) GetMiniDrama() *minidrama.MiniDrama {
|
|||||||
func (miniProgram *MiniProgram) GetRedPacketCover() *redpacketcover.RedPacketCover {
|
func (miniProgram *MiniProgram) GetRedPacketCover() *redpacketcover.RedPacketCover {
|
||||||
return redpacketcover.NewRedPacketCover(miniProgram.ctx)
|
return redpacketcover.NewRedPacketCover(miniProgram.ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUpdatableMessage 小程序动态消息
|
|
||||||
func (miniProgram *MiniProgram) GetUpdatableMessage() *message.UpdatableMessage {
|
|
||||||
return message.NewUpdatableMessage(miniProgram.ctx)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user