docDownload.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package service
  2. import (
  3. IC "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/init"
  4. "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/type/partnerlib"
  5. "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/util"
  6. "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/warn"
  7. "app.yhyue.com/moapp/jy_docs/services/model"
  8. "app.yhyue.com/moapp/jy_docs/services/partner"
  9. "app.yhyue.com/moapp/jyfs/rpc/filesystem"
  10. "encoding/json"
  11. "fmt"
  12. )
  13. type DRes struct {
  14. Msg string
  15. Code int64
  16. }
  17. func DocDownload(in *partnerlib.UserDownloadRequest) (res *partnerlib.UDRes, err error) {
  18. res = new(partnerlib.UDRes)
  19. var (
  20. b []byte
  21. isJson bool
  22. )
  23. 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{}{
  24. "productId": in.DocId,
  25. "userId": in.PositionId,
  26. })
  27. b, err, isJson = h.HttpFunc()
  28. go h.SaveDocinLogger(b, err, "req")
  29. if err == nil {
  30. //豆丁同步数据到mongo
  31. go h.SaveDocinLogger(b, err, "res")
  32. if isJson {
  33. err = json.Unmarshal(b, &res)
  34. } else {
  35. //获取文件信息
  36. docInfo := partner.DocsFindOne(in.DocId)
  37. if docInfo.DocName != "" {
  38. //查看oss服务器是否已存在此文档
  39. if res.OssDocId = docInfo.OssDocId; res.OssDocId != "" {
  40. return
  41. }
  42. //获取附件后上传oss
  43. if res.OssDocId = FileUpload(&filesystem.SaveFileReq{
  44. Domain: IC.C.OssInfo.BucketName,
  45. FileId: fmt.Sprintf("%s.%s", util.GetHashKey(b), docInfo.DocFileSuffix),
  46. Meta: map[string]string{
  47. "docName": docInfo.DocName,
  48. "docSuffix": docInfo.DocFileSuffix,
  49. "docSize": fmt.Sprintf("%d", docInfo.DocFileSize),
  50. },
  51. RawFileContent: b,
  52. }).OssDocId; res.OssDocId != "" {
  53. //更新doc
  54. if errUpdate := partner.DocsUpdate(model.Doc{OssDocId: res.OssDocId}); errUpdate != nil {
  55. warn.SendMsgByWXURL(fmt.Sprintf("文档id:%s,文档名称:%s 上传tidb doc 异常:%s", docInfo.Id, docInfo.DocName, err.Error()))
  56. }
  57. return
  58. } else {
  59. err = fmt.Errorf("文档上传失败")
  60. warn.SendMsgByWXURL(fmt.Sprintf("文档id:%s,文档名称:%s,上传到oss异常:%s", docInfo.Id, docInfo.DocName, err.Error()))
  61. }
  62. } else {
  63. err = fmt.Errorf("获取文档信息异常")
  64. }
  65. }
  66. }
  67. res.Msg = err.Error()
  68. res.Code = -1
  69. return
  70. }