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
}