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 package knowledge
import ( 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/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"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
"mime/multipart" "mime/multipart"
"net/http"
"strings"
) )
func GetKnowledgeDepot(ctx *jxcontext.Context, keyword string, offset, pageSize int) (page *model.PagedInfo, err error) { 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) { func SNSUploadImg(ctx *jxcontext.Context, files []*multipart.FileHeader, isThumb bool) (snsUploadImgResult *SNSUploadImgResult, err error) {
//var ( var (
// data = []byte{} data = []byte{}
// fileHeader = files[0] fileHeader = files[0]
// fileName = fileHeader.Filename fileName = fileHeader.Filename
//) )
//snsUploadImgResult = &SNSUploadImgResult{} snsUploadImgResult = &SNSUploadImgResult{}
//file, err := fileHeader.Open() file, err := fileHeader.Open()
//file.Read(data) file.Read(data)
//file.Close() file.Close()
////如果不是缩略图只会返url if len(data) == 0 {
////如果是封面缩略图则还会返mediaID return snsUploadImgResult, fmt.Errorf("未读取到文件!")
//if !isThumb { }
// //如果不是缩略图只会返url
//} else { //如果是封面缩略图则还会返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 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 return err
} }
func MediaMessageSendGroup(openIDs []string, mediaID string) (err error) {
return api.WeixinAPI.CBMassSend(openIDs, mediaID)
}
func getOrderDetailBrief(order *model.GoodsOrder) (brief string) { func getOrderDetailBrief(order *model.GoodsOrder) (brief string) {
sb := new(strings.Builder) sb := new(strings.Builder)
sb.WriteString(order.Skus[0].SkuName) 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 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 ( import (
"git.rosy.net.cn/baseapi/platformapi/weixinapi" "git.rosy.net.cn/baseapi/platformapi/weixinapi"
"git.rosy.net.cn/jx-callback/business/jxstore/knowledge" "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" "git.rosy.net.cn/jx-callback/globals/api"
"github.com/astaxie/beego/server/web" "github.com/astaxie/beego/server/web"
) )
@@ -69,12 +70,23 @@ func (c *KnowController) GetMaterialList() {
// @Param showCoverPic formData int false "内容中是否显示封面0不显示1显示" // @Param showCoverPic formData int false "内容中是否显示封面0不显示1显示"
// @Param needOpenComment formData int false "是否打开评论0不打开1打开" // @Param needOpenComment formData int false "是否打开评论0不打开1打开"
// @Param onlyFansCanComment formData int false "是否只允许粉丝才能评论" // @Param onlyFansCanComment formData int false "是否只允许粉丝才能评论"
// @Param content formData string true "内容"
// @Success 200 {object} controllers.CallResult // @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult
// @router /AddMaterial [post] // @router /AddMaterial [post]
func (c *KnowController) AddMaterial() { func (c *KnowController) AddMaterial() {
c.callAddMaterial(func(params *tKnowAddMaterialParams) (retVal interface{}, errCode string, err error) { 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 return retVal, "", err
}) })
} }
@@ -93,3 +105,20 @@ func (c *KnowController) SNSUploadImg() {
return retVal, "", err 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(), MethodParams: param.Make(),
Filters: nil, Filters: nil,
Params: 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})
} }