110 lines
2.9 KiB
Go
110 lines
2.9 KiB
Go
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) {
|
||
return dao.GetKnowledgeDepot(dao.GetDB(), keyword, offset, pageSize)
|
||
}
|
||
|
||
func UpdateKnowledgeDepot(ctx *jxcontext.Context, id int, content string, isDel bool) (err error) {
|
||
var (
|
||
db = dao.GetDB()
|
||
know = &model.KnowledgeDepot{}
|
||
)
|
||
know.ID = id
|
||
err = dao.GetEntity(db, know)
|
||
if isDel {
|
||
dao.DeleteEntity(db, know)
|
||
} else {
|
||
if content != know.Content {
|
||
know.Content = content
|
||
dao.UpdateEntity(db, know, "Content")
|
||
}
|
||
}
|
||
return err
|
||
}
|
||
|
||
type SNSUploadImgResult struct {
|
||
URL string `json:"url"`
|
||
MediaID string `json:"mediaID"`
|
||
}
|
||
|
||
func SNSUploadImg(ctx *jxcontext.Context, files []*multipart.FileHeader, isThumb bool) (snsUploadImgResult *SNSUploadImgResult, err error) {
|
||
var (
|
||
fileHeader = files[0]
|
||
fileName = fileHeader.Filename
|
||
data = make([]byte, fileHeader.Size)
|
||
)
|
||
snsUploadImgResult = &SNSUploadImgResult{}
|
||
file, err := fileHeader.Open()
|
||
file.Read(data)
|
||
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
|
||
}
|
||
}
|
||
file.Close()
|
||
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
|
||
}
|