Files
2026-02-17 13:06:23 +08:00

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