aa
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user