50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
package service
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"strconv"
|
|
"strings"
|
|
"xiawan/wx/api/req"
|
|
"xiawan/wx/api/vo"
|
|
"xiawan/wx/clientsdk/baseinfo"
|
|
"xiawan/wx/srv/wxface"
|
|
)
|
|
|
|
// UploadAppAttachService 上传文件服务
|
|
func UploadAppAttachService(queryKey string, m req.UploadAppAttachModel) vo.DTO {
|
|
return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO {
|
|
// 获取基本信息
|
|
wxAccount := connect.GetWXAccount()
|
|
loginState := wxAccount.GetLoginState()
|
|
|
|
// 判断在线情况
|
|
if loginState == baseinfo.MMLoginStateNoLogin {
|
|
return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ")
|
|
} else if !connect.CheckOnLineStatus() {
|
|
return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState())))
|
|
}
|
|
|
|
// 获取请求管理器
|
|
reqInvoker := connect.GetWXReqInvoker()
|
|
|
|
// 处理文件数据
|
|
fileData := m.FileData
|
|
sFileBase := strings.Split(fileData, ",")
|
|
if len(sFileBase) > 1 {
|
|
fileData = sFileBase[1]
|
|
}
|
|
fileBytes, err := base64.StdEncoding.DecodeString(fileData)
|
|
if err != nil {
|
|
return vo.NewFail("文件解码失败:" + err.Error())
|
|
}
|
|
|
|
// 上传文件
|
|
resp, err := reqInvoker.UploadAppAttach(fileBytes)
|
|
if err != nil {
|
|
return vo.NewFail("上传文件失败:" + err.Error())
|
|
}
|
|
|
|
return vo.NewSuccessObj(resp, "上传文件成功")
|
|
})
|
|
}
|