docDownload.go 2.1 KB

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