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, "上传文件成功")
|
||
})
|
||
}
|