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