This commit is contained in:
suyl
2021-06-18 17:41:44 +08:00
parent cff1aed9e9
commit 02f0e297e2
5 changed files with 128 additions and 17 deletions

View File

@@ -1,10 +1,16 @@
package knowledge
import (
"fmt"
"git.rosy.net.cn/baseapi/platformapi/weixinapi"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
"mime/multipart"
"net/http"
"strings"
)
func GetKnowledgeDepot(ctx *jxcontext.Context, keyword string, offset, pageSize int) (page *model.PagedInfo, err error) {
@@ -35,21 +41,69 @@ type SNSUploadImgResult struct {
}
func SNSUploadImg(ctx *jxcontext.Context, files []*multipart.FileHeader, isThumb bool) (snsUploadImgResult *SNSUploadImgResult, err error) {
//var (
// data = []byte{}
// fileHeader = files[0]
// fileName = fileHeader.Filename
//)
//snsUploadImgResult = &SNSUploadImgResult{}
//file, err := fileHeader.Open()
//file.Read(data)
//file.Close()
////如果不是缩略图只会返url
////如果是封面缩略图则还会返mediaID
//if !isThumb {
//
//} else {
//
//}
var (
data = []byte{}
fileHeader = files[0]
fileName = fileHeader.Filename
)
snsUploadImgResult = &SNSUploadImgResult{}
file, err := fileHeader.Open()
file.Read(data)
file.Close()
if len(data) == 0 {
return snsUploadImgResult, fmt.Errorf("未读取到文件!")
}
//如果不是缩略图只会返url
//如果是封面缩略图则还会返mediaID
if !isThumb {
if url, err := api.WeixinAPI.CBUploadImg(data, fileName, http.DetectContentType(data)); err == nil && url != "" {
snsUploadImgResult.URL = url
}
} else {
if mediaID, url, err := api.WeixinAPI.CBUploadThumb(data, fileName, http.DetectContentType(data)); err == nil && url != "" && mediaID != "" {
snsUploadImgResult.URL = url
snsUploadImgResult.MediaID = mediaID
}
}
return snsUploadImgResult, err
}
func AddMaterial(ctx *jxcontext.Context, knowIDs []int, param *weixinapi.CBAddNewsParam) (err error) {
var (
db = dao.GetDB()
s = new(strings.Builder)
)
if len(knowIDs) == 0 {
return fmt.Errorf("请至少勾选一条!")
}
knows, err := dao.GetKnowledgeDepotNoPage(db, knowIDs)
for k, v := range knows {
if k != 0 {
s.WriteString(weixinapi.SNSCutLine)
}
s.WriteString(v.Content)
}
content := s.String()
if content != "" {
param.Content = content
api.WeixinAPI.CBAddNews(param)
} else {
return fmt.Errorf("读取内容错误!")
}
return err
}
func SendSNSMediaMsg(ctx *jxcontext.Context, storeIDs []int, mediaID string) (err error) {
var (
openIDs []string
)
for _, v := range storeIDs {
if results := weixinmsg.GetWeixinOpenIDsFromStoreID(v); len(results) > 0 {
openIDs = append(openIDs, results...)
}
}
if len(openIDs) > 0 {
return weixinmsg.MediaMessageSendGroup(openIDs, mediaID)
}
return err
}

View File

@@ -174,6 +174,10 @@ func SmartMessageTemplateSend(userOpenID, templateID, downloadURL, miniPageURL s
return err
}
func MediaMessageSendGroup(openIDs []string, mediaID string) (err error) {
return api.WeixinAPI.CBMassSend(openIDs, mediaID)
}
func getOrderDetailBrief(order *model.GoodsOrder) (brief string) {
sb := new(strings.Builder)
sb.WriteString(order.Skus[0].SkuName)

View File

@@ -33,3 +33,18 @@ func GetKnowledgeDepot(db *DaoDB, keyword string, offset, pageSize int) (page *m
}
return page, err
}
func GetKnowledgeDepotNoPage(db *DaoDB, ids []int) (knows []*model.KnowledgeDepot, err error) {
sql := `
SELECT *
FROM knowledge_depot
WHERE 1 = 1
`
sqlParams := []interface{}{}
if len(ids) > 0 {
sql += " AND t1.id IN (" + GenQuestionMarks(len(ids)) + ")"
sqlParams = append(sqlParams, ids)
}
GetRows(db, &knows, sql, sqlParams...)
return knows, err
}

View File

@@ -3,6 +3,7 @@ package controllers
import (
"git.rosy.net.cn/baseapi/platformapi/weixinapi"
"git.rosy.net.cn/jx-callback/business/jxstore/knowledge"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/globals/api"
"github.com/astaxie/beego/server/web"
)
@@ -69,12 +70,23 @@ func (c *KnowController) GetMaterialList() {
// @Param showCoverPic formData int false "内容中是否显示封面0不显示1显示"
// @Param needOpenComment formData int false "是否打开评论0不打开1打开"
// @Param onlyFansCanComment formData int false "是否只允许粉丝才能评论"
// @Param content formData string true "内容"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /AddMaterial [post]
func (c *KnowController) AddMaterial() {
c.callAddMaterial(func(params *tKnowAddMaterialParams) (retVal interface{}, errCode string, err error) {
new := &weixinapi.CBAddNewsParam{
Title: params.Title,
Digest: params.Digest,
Author: params.Author,
ThumbMediaID: params.ThumbMediaID,
ShowCoverPic: params.ShowCoverPic,
NeedOpenComment: params.NeedOpenComment,
OnlyFansCanComment: params.OnlyFansCanComment,
}
var knowIDs []int
jxutils.Strings2Objs(params.KnowIDs, &knowIDs)
err = knowledge.AddMaterial(params.Ctx, knowIDs, new)
return retVal, "", err
})
}
@@ -93,3 +105,20 @@ func (c *KnowController) SNSUploadImg() {
return retVal, "", err
})
}
// @Title 发送消息
// @Description 发送消息
// @Param token header string true "认证token"
// @Param storeIDs formData string false "门店IDs"
// @Param mediaID formData string false "素材ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /SendSNSMediaMsg [post]
func (c *KnowController) SendSNSMediaMsg() {
c.callSendSNSMediaMsg(func(params *tKnowSendSNSMediaMsgParams) (retVal interface{}, errCode string, err error) {
var storeIDs []int
jxutils.Strings2Objs(params.StoreIDs, &storeIDs)
err = knowledge.SendSNSMediaMsg(params.Ctx, storeIDs, params.MediaID)
return retVal, "", err
})
}

View File

@@ -3734,4 +3734,13 @@ func init() {
MethodParams: param.Make(),
Filters: nil,
Params: nil})
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:KnowController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:KnowController"],
web.ControllerComments{
Method: "SendSNSMediaMsg",
Router: `/SendSNSMediaMsg`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
}