package service import ( IC "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/init" "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/type/partnerlib" "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/util" "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/warn" "app.yhyue.com/moapp/jy_docs/services/model" "app.yhyue.com/moapp/jy_docs/services/partner" "app.yhyue.com/moapp/jyfs/rpc/filesystem" "encoding/json" "fmt" ) type DRes struct { Msg string Code int64 } func DocDownload(in *partnerlib.UserDownloadRequest) (res *partnerlib.UDRes, err error) { res = new(partnerlib.UDRes) var ( b []byte isJson bool ) h := NewHH(IC.I.Docin.Name, IC.I.Docin.Host, IC.I.Docin.DocDownload.Name, IC.I.Docin.DocDownload.Pathname, IC.I.Docin.DocDownload.Method, map[string]interface{}{ "productId": in.DocId, "userId": in.PositionId, }) b, err, isJson = h.HttpFunc() go h.SaveDocinLogger(b, err, "req") if err == nil { //豆丁同步数据到mongo go h.SaveDocinLogger(b, err, "res") if isJson { err = json.Unmarshal(b, &res) } else { //获取文件信息 docInfo := partner.DocsFindOne(in.DocId) if docInfo.DocName != "" { //查看oss服务器是否已存在此文档 if res.OssDocId = docInfo.OssDocId; res.OssDocId == "" { //获取附件后上传oss if res.OssDocId = FileUpload(&filesystem.SaveFileReq{ Domain: IC.C.OssInfo.BucketName, FileId: fmt.Sprintf("%s.%s", util.GetHashKey(b), docInfo.DocFileSuffix), Meta: map[string]string{ "docName": docInfo.DocName, "docSuffix": docInfo.DocFileSuffix, "docSize": fmt.Sprintf("%d", docInfo.DocFileSize), }, RawFileContent: b, }).OssDocId; res.OssDocId != "" { //更新doc if errUpdate := partner.DocsUpdate(model.Doc{OssDocId: res.OssDocId}); errUpdate != nil { warn.SendMsgByWXURL(fmt.Sprintf("文档id:%s,文档名称:%s 上传tidb doc 异常:%s", docInfo.Id, docInfo.DocName, err.Error())) } return } else { err = fmt.Errorf("文档上传失败") warn.SendMsgByWXURL(fmt.Sprintf("文档id:%s,文档名称:%s,上传到oss异常:%s", docInfo.Id, docInfo.DocName, res.Msg)) } } return } } } res.Msg = err.Error() res.Code = -1 return }