1
0
mirror of https://github.com/silenceper/wechat.git synced 2026-02-15 18:22:26 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
ccfish
1138a7db0e feat:追加动态消息接口 (#775)
* 小程序发货信息管理

* fix golang lint

* fix miss

* fix lint

* fix lint

* fix lint

* 修复查询参数last_index=“”时异常

* 小程序消息推送

* fix lint errors

* fix lint

* fix lint

* fix lint,

* 简化写法

* fix 简化写法

* fix name in comments

* Update miniprogram.go

* add events

* change GoodsInfo type

* change statements to 50

* 追加xml支持

* fix cl lint

* 追加动态消息

* 删除多余空格

* 修复命名

* 修复createActivityId返回值类型
2024-04-23 10:03:08 +08:00
houseme
1842f08f4c fix:modify mediaID type (#771)
* fix:modify mediaID type

* upgrade action version

* upgrade

* upgrade
2024-04-16 10:52:47 +08:00
markwang
d28ca4f334 feat: optimized-error-handling&remove unused constant (#772)
* feat: optimized-error-handling&remove unused constant

* feat: optimized-error-handling

---------

Co-authored-by: markwang <www.wang61@qq.com>
2024-04-16 10:51:51 +08:00
26 changed files with 160 additions and 178 deletions

View File

@@ -1,6 +1,6 @@
--- ---
name: 报告Bug name: 报告 Bug
about: 反馈BUG信息 about: 反馈 BUG 信息
title: "[BUG]" title: "[BUG]"
labels: bug labels: bug
assignees: '' assignees: ''
@@ -18,4 +18,4 @@ assignees: ''
**使用的版本** **使用的版本**
- SDK版本: [比如 v0.0.0] - SDK 版本[比如 v0.0.0]

View File

@@ -1,6 +1,6 @@
--- ---
name: API需求 name: API 需求
about: 待实现的API接口SDK的强大离不开社区的帮助欢迎为项目贡献PR about: 待实现的 API 接口SDK 的强大离不开社区的帮助,欢迎为项目贡献 PR
title: "[Feature]" title: "[Feature]"
labels: enhancement labels: enhancement
assignees: '' assignees: ''
@@ -8,8 +8,8 @@ assignees: ''
--- ---
<!-- <!--
!!!SDK的强大离不开社区的帮助欢迎为本项目贡献PR!!! !!!SDK 的强大离不开社区的帮助,欢迎为本项目贡献 PR!!!
--> -->
**你想要实现的模块或API** **你想要实现的模块或 API**

View File

@@ -1,6 +1,6 @@
--- ---
name: 使用咨询 name: 使用咨询
about: 关于SDK使用相关的咨询在使用前请先阅读官方微信文档 about: 关于 SDK 使用相关的咨询,在使用前请先阅读官方微信文档
title: "[咨询]" title: "[咨询]"
labels: question labels: question
assignees: '' assignees: ''
@@ -9,7 +9,7 @@ assignees: ''
<!-- <!--
重要: 重要:
1、在使用本SDK前请先阅读对应的官方微信API文档https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html 1、在使用本 SDK 前请先阅读对应的官方微信 API 文档https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html
2、本SDK部分接口文档 https://silenceper.com/wechat/ 2、本 SDK 部分接口文档https://silenceper.com/wechat/
--> -->
**请描述您的问题** **请描述您的问题**

View File

@@ -2,9 +2,9 @@ name: Go
on: on:
push: push:
branches: [ master,release-*,v2,feature/** ] branches: [ master,release-*,v2,feature/**,fix/** ]
pull_request: pull_request:
branches: [ master,release-*,v2,feature/** ] branches: [ master,release-*,v2,feature/**,fix/** ]
jobs: jobs:
golangci: golangci:
@@ -15,13 +15,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Setup Golang ${{ matrix.go-version }} - name: Setup Golang ${{ matrix.go-version }}
uses: actions/setup-go@v4 uses: actions/setup-go@v5
with: with:
go-version: ${{ matrix.go-version }} go-version: ${{ matrix.go-version }}
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: golangci-lint - name: golangci-lint
uses: golangci/golangci-lint-action@v3 uses: golangci/golangci-lint-action@v4
with: with:
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
version: v1.52.2 version: v1.52.2
@@ -42,12 +42,12 @@ jobs:
# strategy set # strategy set
strategy: strategy:
matrix: matrix:
go: [ '1.16','1.17','1.18','1.19','1.20','1.21' ] go: [ '1.16','1.17','1.18','1.19','1.20','1.21','1.22' ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Set up Go 1.x - name: Set up Go 1.x
uses: actions/setup-go@v4 uses: actions/setup-go@v5
with: with:
go-version: ${{ matrix.go }} go-version: ${{ matrix.go }}
id: go id: go

View File

@@ -138,10 +138,8 @@ func (auth *Auth) GetPhoneNumberContext(ctx context2.Context, code string) (*Get
} }
var result GetPhoneNumberResponse var result GetPhoneNumberResponse
if err = util.DecodeWithError(response, &result, "phonenumber.getPhoneNumber"); err != nil { err = util.DecodeWithError(response, &result, "phonenumber.getPhoneNumber")
return nil, err return &result, err
}
return &result, nil
} }
// GetPhoneNumber 小程序通过code获取用户手机号 // GetPhoneNumber 小程序通过code获取用户手机号

View File

@@ -45,10 +45,5 @@ func (business *Business) GetPhoneNumber(in *GetPhoneNumberRequest) (info PhoneI
PhoneInfo PhoneInfo `json:"phone_info"` PhoneInfo PhoneInfo `json:"phone_info"`
} }
err = util.DecodeWithError(response, &resp, "business.GetPhoneNumber") err = util.DecodeWithError(response, &resp, "business.GetPhoneNumber")
if nil != err { return resp.PhoneInfo, err
return
}
info = resp.PhoneInfo
return
} }

View File

@@ -398,7 +398,7 @@ type PushDataSecVodUpload struct {
// SecVodUploadEvent 短剧媒资上传完成事件 // SecVodUploadEvent 短剧媒资上传完成事件
type SecVodUploadEvent struct { type SecVodUploadEvent struct {
MediaID string `json:"media_id" xml:"media_id"` // 媒资 id MediaID int64 `json:"media_id" xml:"media_id"` // 媒资 id
SourceContext string `json:"source_context" xml:"source_context"` // 透传上传接口中开发者设置的值。 SourceContext string `json:"source_context" xml:"source_context"` // 透传上传接口中开发者设置的值。
ErrCode int `json:"errcode" xml:"errcode"` // 错误码,上传失败时该值非 ErrCode int `json:"errcode" xml:"errcode"` // 错误码,上传失败时该值非
ErrMsg string `json:"errmsg" xml:"errmsg"` // 错误提示 ErrMsg string `json:"errmsg" xml:"errmsg"` // 错误提示
@@ -412,7 +412,7 @@ type PushDataSecVodAudit struct {
// SecVodAuditEvent 短剧媒资审核状态事件 // SecVodAuditEvent 短剧媒资审核状态事件
type SecVodAuditEvent struct { type SecVodAuditEvent struct {
DramaID string `json:"drama_id" xml:"drama_id"` // 剧目 id DramaID int64 `json:"drama_id" xml:"drama_id"` // 剧目 id
SourceContext string `json:"source_context" xml:"source_context"` // 透传上传接口中开发者设置的值 SourceContext string `json:"source_context" xml:"source_context"` // 透传上传接口中开发者设置的值
AuditDetail DramaAuditDetail `json:"audit_detail" xml:"audit_detail"` // 剧目审核结果,单独每一集的审核结果可以根据 drama_id 查询剧集详情得到 AuditDetail DramaAuditDetail `json:"audit_detail" xml:"audit_detail"` // 剧目审核结果,单独每一集的审核结果可以根据 drama_id 查询剧集详情得到
} }

View File

@@ -0,0 +1,102 @@
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"`
}

View File

@@ -161,3 +161,8 @@ 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)
}

View File

@@ -103,11 +103,8 @@ func (s *Privacy) GetPrivacySetting(privacyVer int) (GetPrivacySettingResponse,
} }
// 返回错误信息 // 返回错误信息
var result GetPrivacySettingResponse var result GetPrivacySettingResponse
if err = util.DecodeWithError(response, &result, "getprivacysetting"); err != nil { err = util.DecodeWithError(response, &result, "getprivacysetting")
return GetPrivacySettingResponse{}, err return result, err
}
return result, nil
} }
// SetPrivacySetting 更新小程序权限配置 // SetPrivacySetting 更新小程序权限配置
@@ -130,11 +127,7 @@ func (s *Privacy) SetPrivacySetting(privacyVer int, ownerSetting OwnerSetting, s
} }
// 返回错误信息 // 返回错误信息
if err = util.DecodeWithCommonError(response, "setprivacysetting"); err != nil { return util.DecodeWithCommonError(response, "setprivacysetting")
return err
}
return err
} }
// UploadPrivacyExtFileResponse 上传权限定义模板响应参数 // UploadPrivacyExtFileResponse 上传权限定义模板响应参数
@@ -159,9 +152,6 @@ func (s *Privacy) UploadPrivacyExtFile(fileData []byte) (UploadPrivacyExtFileRes
// 返回错误信息 // 返回错误信息
var result UploadPrivacyExtFileResponse var result UploadPrivacyExtFileResponse
if err = util.DecodeWithError(response, &result, "setprivacysetting"); err != nil { err = util.DecodeWithError(response, &result, "setprivacysetting")
return UploadPrivacyExtFileResponse{}, err
}
return result, err return result, err
} }

View File

@@ -51,12 +51,7 @@ func (security *Security) MediaCheckAsyncV1(in *MediaCheckAsyncV1Request) (trace
TraceID string `json:"trace_id"` TraceID string `json:"trace_id"`
} }
err = util.DecodeWithError(response, &res, "MediaCheckAsyncV1") err = util.DecodeWithError(response, &res, "MediaCheckAsyncV1")
if err != nil { return res.TraceID, err
return
}
traceID = res.TraceID
return
} }
// MediaCheckAsyncRequest 图片/音频异步校验请求参数 // MediaCheckAsyncRequest 图片/音频异步校验请求参数
@@ -93,12 +88,7 @@ func (security *Security) MediaCheckAsync(in *MediaCheckAsyncRequest) (traceID s
TraceID string `json:"trace_id"` TraceID string `json:"trace_id"`
} }
err = util.DecodeWithError(response, &res, "MediaCheckAsync") err = util.DecodeWithError(response, &res, "MediaCheckAsync")
if err != nil { return res.TraceID, err
return
}
traceID = res.TraceID
return
} }
// ImageCheckV1 校验一张图片是否含有违法违规内容(同步) // ImageCheckV1 校验一张图片是否含有违法违规内容(同步)

View File

@@ -60,11 +60,7 @@ func (shortLink *ShortLink) generate(shortLinkParams ShortLinker) (string, error
// 使用通用方法返回错误 // 使用通用方法返回错误
var res resShortLinker var res resShortLinker
err = util.DecodeWithError(response, &res, "GenerateShortLink") err = util.DecodeWithError(response, &res, "GenerateShortLink")
if err != nil { return res.Link, err
return "", err
}
return res.Link, nil
} }
// GenerateShortLinkPermanent 生成永久 shortLink // GenerateShortLinkPermanent 生成永久 shortLink

View File

@@ -168,11 +168,7 @@ func (s *Subscribe) Add(ShortID string, kidList []int, sceneDesc string) (templa
} }
var result resSubscribeAdd var result resSubscribeAdd
err = util.DecodeWithError(response, &result, "AddSubscribe") err = util.DecodeWithError(response, &result, "AddSubscribe")
if err != nil { return result.TemplateID, err
return
}
templateID = result.TemplateID
return
} }
// Delete 删除私有模板 // Delete 删除私有模板

View File

@@ -65,8 +65,5 @@ func (u *URLLink) Generate(params *ULParams) (string, error) {
} }
var resp ULResult var resp ULResult
err = util.DecodeWithError(response, &resp, "URLLink.Generate") err = util.DecodeWithError(response, &resp, "URLLink.Generate")
if err != nil { return resp.URLLink, err
return "", err
}
return resp.URLLink, nil
} }

View File

@@ -62,9 +62,5 @@ func (u *URLScheme) QueryScheme(querySchemeParams QueryScheme) (schemeInfo Schem
// 使用通用方法返回错误 // 使用通用方法返回错误
var res resQueryScheme var res resQueryScheme
err = util.DecodeWithError(response, &res, "QueryScheme") err = util.DecodeWithError(response, &res, "QueryScheme")
if err != nil { return res.SchemeInfo, res.VisitOpenid, err
return
}
return res.SchemeInfo, res.VisitOpenid, nil
} }

View File

@@ -78,8 +78,5 @@ func (u *URLScheme) Generate(params *USParams) (string, error) {
} }
var resp USResult var resp USResult
err = util.DecodeWithError(response, &resp, "URLScheme.Generate") err = util.DecodeWithError(response, &resp, "URLScheme.Generate")
if err != nil { return resp.OpenLink, err
return "", err
}
return resp.OpenLink, nil
} }

View File

@@ -44,9 +44,6 @@ func (basic *Basic) Long2ShortURL(longURL string) (shortURL string, err error) {
if err != nil { if err != nil {
return return
} }
if err = util.DecodeWithError(responseBytes, resp, long2shortAction); err != nil { err = util.DecodeWithError(responseBytes, resp, long2shortAction)
return return resp.ShortURL, err
}
shortURL = resp.ShortURL
return
} }

View File

@@ -72,11 +72,7 @@ func (csm *Manager) List() (customerServiceList []*KeFuInfo, err error) {
} }
var res resKeFuList var res resKeFuList
err = util.DecodeWithError(response, &res, "ListCustomerService") err = util.DecodeWithError(response, &res, "ListCustomerService")
if err != nil { return res.KfList, err
return
}
customerServiceList = res.KfList
return
} }
// KeFuOnlineInfo 客服在线信息 // KeFuOnlineInfo 客服在线信息
@@ -107,11 +103,7 @@ func (csm *Manager) OnlineList() (customerServiceOnlineList []*KeFuOnlineInfo, e
} }
var res resKeFuOnlineList var res resKeFuOnlineList
err = util.DecodeWithError(response, &res, "ListOnlineCustomerService") err = util.DecodeWithError(response, &res, "ListOnlineCustomerService")
if err != nil { return res.KfOnlineList, err
return
}
customerServiceOnlineList = res.KfOnlineList
return
} }
// Add 添加客服账号 // Add 添加客服账号

View File

@@ -183,9 +183,6 @@ func (cube *DataCube) fetchData(params ParamsPublisher) (response []byte, err er
uri := fmt.Sprintf("%s?%s", publisherURL, v.Encode()) uri := fmt.Sprintf("%s?%s", publisherURL, v.Encode())
response, err = util.HTTPGet(uri) response, err = util.HTTPGet(uri)
if err != nil {
return
}
return return
} }

View File

@@ -64,11 +64,7 @@ func (draft *Draft) AddDraft(articles []*Article) (mediaID string, err error) {
MediaID string `json:"media_id"` MediaID string `json:"media_id"`
} }
err = util.DecodeWithError(response, &res, "AddDraft") err = util.DecodeWithError(response, &res, "AddDraft")
if err != nil { return res.MediaID, err
return
}
mediaID = res.MediaID
return
} }
// GetDraft 获取草稿 // GetDraft 获取草稿
@@ -94,12 +90,7 @@ func (draft *Draft) GetDraft(mediaID string) (articles []*Article, err error) {
NewsItem []*Article `json:"news_item"` NewsItem []*Article `json:"news_item"`
} }
err = util.DecodeWithError(response, &res, "GetDraft") err = util.DecodeWithError(response, &res, "GetDraft")
if err != nil { return res.NewsItem, err
return
}
articles = res.NewsItem
return
} }
// DeleteDraft 删除草稿 // DeleteDraft 删除草稿
@@ -172,12 +163,7 @@ func (draft *Draft) CountDraft() (total uint, err error) {
Total uint `json:"total_count"` Total uint `json:"total_count"`
} }
err = util.DecodeWithError(response, &res, "CountDraft") err = util.DecodeWithError(response, &res, "CountDraft")
if nil != err { return res.Total, err
return
}
total = res.Total
return
} }
// ArticleList 草稿列表 // ArticleList 草稿列表

View File

@@ -73,12 +73,7 @@ func (freePublish *FreePublish) Publish(mediaID string) (publishID int64, err er
PublishID int64 `json:"publish_id"` PublishID int64 `json:"publish_id"`
} }
err = util.DecodeWithError(response, &res, "SubmitFreePublish") err = util.DecodeWithError(response, &res, "SubmitFreePublish")
if err != nil { return res.PublishID, err
return
}
publishID = res.PublishID
return
} }
// PublishStatusList 发布任务状态列表 // PublishStatusList 发布任务状态列表
@@ -191,12 +186,7 @@ func (freePublish *FreePublish) First(articleID string) (list []Article, err err
NewsItem []Article `json:"news_item"` NewsItem []Article `json:"news_item"`
} }
err = util.DecodeWithError(response, &res, "FirstFreePublish") err = util.DecodeWithError(response, &res, "FirstFreePublish")
if err != nil { return res.NewsItem, err
return
}
list = res.NewsItem
return
} }
// ArticleList 发布列表 // ArticleList 发布列表

View File

@@ -90,11 +90,7 @@ func (tpl *Subscribe) List() (templateList []*PrivateSubscribeItem, err error) {
} }
var res resPrivateSubscribeList var res resPrivateSubscribeList
err = util.DecodeWithError(response, &res, "ListSubscribe") err = util.DecodeWithError(response, &res, "ListSubscribe")
if err != nil { return res.SubscriptionList, err
return
}
templateList = res.SubscriptionList
return
} }
type resSubscribeAdd struct { type resSubscribeAdd struct {
@@ -123,11 +119,7 @@ func (tpl *Subscribe) Add(ShortID string, kidList []int, sceneDesc string) (temp
} }
var result resSubscribeAdd var result resSubscribeAdd
err = util.DecodeWithError(response, &result, "AddSubscribe") err = util.DecodeWithError(response, &result, "AddSubscribe")
if err != nil { return result.TemplateID, err
return
}
templateID = result.TemplateID
return
} }
// Delete 删除私有模板 // Delete 删除私有模板
@@ -175,11 +167,7 @@ func (tpl *Subscribe) GetCategory() (categoryList []*PublicTemplateCategory, err
} }
var result resSubscribeCategoryList var result resSubscribeCategoryList
err = util.DecodeWithError(response, &result, "GetCategory") err = util.DecodeWithError(response, &result, "GetCategory")
if err != nil { return result.CategoryList, err
return
}
categoryList = result.CategoryList
return
} }
// PublicTemplateKeyWords 模板中的关键词 // PublicTemplateKeyWords 模板中的关键词
@@ -210,11 +198,7 @@ func (tpl *Subscribe) GetPubTplKeyWordsByID(titleID string) (keyWordsList []*Pub
} }
var result resPublicTemplateKeyWordsList var result resPublicTemplateKeyWordsList
err = util.DecodeWithError(response, &result, "GetPublicTemplateKeyWords") err = util.DecodeWithError(response, &result, "GetPublicTemplateKeyWords")
if err != nil { return result.KeyWordsList, err
return
}
keyWordsList = result.KeyWordsList
return
} }
// PublicTemplateTitle 类目下的公共模板 // PublicTemplateTitle 类目下的公共模板
@@ -246,10 +230,5 @@ func (tpl *Subscribe) GetPublicTemplateTitleList(ids string, start int, limit in
} }
var result resPublicTemplateTitleList var result resPublicTemplateTitleList
err = util.DecodeWithError(response, &result, "GetPublicTemplateTitle") err = util.DecodeWithError(response, &result, "GetPublicTemplateTitle")
if err != nil { return result.Count, result.TemplateTitleList, err
return
}
count = result.Count
templateTitleList = result.TemplateTitleList
return
} }

View File

@@ -111,11 +111,7 @@ func (tpl *Template) List() (templateList []*TemplateItem, err error) {
} }
var res resTemplateList var res resTemplateList
err = util.DecodeWithError(response, &res, "ListTemplate") err = util.DecodeWithError(response, &res, "ListTemplate")
if err != nil { return res.TemplateList, err
return
}
templateList = res.TemplateList
return
} }
type resTemplateAdd struct { type resTemplateAdd struct {
@@ -143,11 +139,7 @@ func (tpl *Template) Add(shortID string) (templateID string, err error) {
var result resTemplateAdd var result resTemplateAdd
err = util.DecodeWithError(response, &result, "AddTemplate") err = util.DecodeWithError(response, &result, "AddTemplate")
if err != nil { return result.TemplateID, err
return
}
templateID = result.TemplateID
return
} }
// Delete 删除私有模板. // Delete 删除私有模板.

View File

@@ -62,10 +62,6 @@ func (user *User) ListChangeOpenIDs(fromAppID string, openIDs ...string) (list *
} }
err = util.DecodeWithError(resp, list, "ListChangeOpenIDs") err = util.DecodeWithError(resp, list, "ListChangeOpenIDs")
if err != nil {
return
}
return return
} }

View File

@@ -126,10 +126,7 @@ func (user *User) GetTag() (tags []*TagInfo, err error) {
Tags []*TagInfo `json:"tags"` Tags []*TagInfo `json:"tags"`
} }
err = json.Unmarshal(response, &result) err = json.Unmarshal(response, &result)
if err != nil { return result.Tags, err
return
}
return result.Tags, nil
} }
// OpenIDListByTag 获取标签下粉丝列表 // OpenIDListByTag 获取标签下粉丝列表
@@ -154,9 +151,6 @@ func (user *User) OpenIDListByTag(tagID int32, nextOpenID ...string) (userList *
} }
userList = new(TagOpenIDList) userList = new(TagOpenIDList)
err = json.Unmarshal(response, &userList) err = json.Unmarshal(response, &userList)
if err != nil {
return
}
return return
} }

View File

@@ -100,11 +100,8 @@ func (ctx *Context) GetPreCodeContext(stdCtx context.Context) (string, error) {
var ret struct { var ret struct {
PreCode string `json:"pre_auth_code"` PreCode string `json:"pre_auth_code"`
} }
if err := json.Unmarshal(body, &ret); err != nil { err = json.Unmarshal(body, &ret)
return "", err return ret.PreCode, err
}
return ret.PreCode, nil
} }
// GetPreCode 获取预授权码 // GetPreCode 获取预授权码