docDownload.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. //获取附件后上传oss
  41. if res.OssDocId = FileUpload(&filesystem.SaveFileReq{
  42. Domain: IC.C.OssInfo.BucketName,
  43. FileId: fmt.Sprintf("%s.%s", util.GetHashKey(b), docInfo.DocFileSuffix),
  44. Meta: map[string]string{
  45. "docName": docInfo.DocName,
  46. "docSuffix": docInfo.DocFileSuffix,
  47. "docSize": fmt.Sprintf("%d", docInfo.DocFileSize),
  48. },
  49. RawFileContent: b,
  50. }).OssDocId; res.OssDocId != "" {
  51. //更新doc
  52. if errUpdate := partner.DocsUpdate(model.Doc{OssDocId: res.OssDocId}); errUpdate != nil {
  53. warn.SendMsgByWXURL(fmt.Sprintf("文档id:%s,文档名称:%s 上传tidb doc 异常:%s", docInfo.Id, docInfo.DocName, err.Error()))
  54. }
  55. return
  56. } else {
  57. err = fmt.Errorf("文档上传失败")
  58. warn.SendMsgByWXURL(fmt.Sprintf("文档id:%s,文档名称:%s,上传到oss异常:%s", docInfo.Id, docInfo.DocName, res.Msg))
  59. }
  60. }
  61. return
  62. }
  63. }
  64. }
  65. res.Msg = err.Error()
  66. res.Code = -1
  67. return
  68. }