rpc.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package oss
  2. import (
  3. "bytes"
  4. "errors"
  5. "io/ioutil"
  6. "log"
  7. "app.yhyue.com/moapp/jybase/api"
  8. "jygit.jydev.jianyu360.cn/BaseService/ossClient/constant"
  9. "jygit.jydev.jianyu360.cn/BaseService/ossClient/entity"
  10. )
  11. // OSSService 定义了RPC服务方法
  12. type OSSService struct {
  13. }
  14. /* rpc方式上传
  15. * @param args 参数
  16. * @param args.BucketID 文件名
  17. * @param args.ObjectName 对象名称
  18. * @param args.Stream 文件流
  19. * @param args.Gzip 是否压缩
  20. * @param reply 返回结果
  21. * @param reply.Error_code 错误代码 0:成功
  22. * @param reply.Error_msg 错误信息
  23. * @return error 错误信息
  24. */
  25. func (s *OSSService) Upload(args *entity.UploadArgs, reply *api.Result) error {
  26. if err := s.checkArgs(&entity.Args{BucketID: args.BucketID, ObjectName: args.ObjectName}); err != nil {
  27. log.Println(err.Error())
  28. return err
  29. } else if args.Stream == nil || len(args.Stream) == 0 {
  30. err := errors.New(api.Error_msg_1002 + "Data")
  31. log.Println(err.Error())
  32. return err
  33. }
  34. log.Println("rpc方式上传文件", args.BucketID, args.ObjectName, args.Gzip, len(args.Stream))
  35. err := UploadAttachment(args.BucketID, args.ObjectName, ioutil.NopCloser(bytes.NewReader(args.Stream)), args.Gzip)
  36. if err != nil {
  37. log.Printf(constant.UploadFail, err)
  38. return err
  39. }
  40. reply.Error_msg = constant.UploadSuccess
  41. return nil
  42. }
  43. /* rpc方式下载
  44. * @param args 参数
  45. * @param args.BucketID 文件名
  46. * @param args.ObjectName 对象名称
  47. * @param reply 返回结果
  48. * @param reply.Error_code 错误代码 0:成功
  49. * @param reply.Error_msg 错误信息
  50. * @return error 错误信息
  51. */
  52. func (s *OSSService) Download(args *entity.Args, reply *api.Result) error {
  53. if err := s.checkArgs(args); err != nil {
  54. log.Println(constant.UploadFail, err)
  55. return err
  56. }
  57. log.Println("rpc方式下载文件", args.BucketID, args.ObjectName)
  58. data, err := DownloadAttachment(args.BucketID, args.ObjectName)
  59. if err != nil {
  60. log.Println(constant.DownloadFail, err)
  61. return err
  62. }
  63. reply.Error_msg = constant.DownloadSuccess
  64. reply.Data = data
  65. return nil
  66. }
  67. /* rpc方式下载
  68. * @param args 参数
  69. * @param args.BucketID 文件名
  70. * @param args.ObjectName 对象名称
  71. * @param reply 返回结果
  72. * @param reply.Error_code 错误代码 0:成功
  73. * @param reply.Error_msg 错误信息
  74. * @return error 错误信息
  75. */
  76. func (s *OSSService) Delete(args *entity.Args, reply *api.Result) error {
  77. if err := s.checkArgs(args); err != nil {
  78. log.Println(constant.UploadFail, err)
  79. return err
  80. }
  81. log.Println("rpc方式删除文件", args.BucketID, args.ObjectName)
  82. err := DeleteAttachment(args.BucketID, args.ObjectName)
  83. if err != nil {
  84. log.Println(constant.DeleteFail, err)
  85. return err
  86. }
  87. reply.Error_msg = constant.DeleteSuccess
  88. return nil
  89. }
  90. func (s *OSSService) checkArgs(args *entity.Args) error {
  91. if args.BucketID == "" {
  92. return errors.New(api.Error_msg_1002 + "BucketID")
  93. } else if args.ObjectName == "" {
  94. return errors.New(api.Error_msg_1002 + "ObjectName")
  95. }
  96. return nil
  97. }
  98. /* rpc方式获取标讯正文
  99. * @param args 参数
  100. * @param args.BucketID 文件名
  101. * @param args.ObjectName 对象名称
  102. * @param reply 返回结果
  103. * @param reply.Error_code 错误代码 0:成功
  104. * @param reply.Error_msg 错误信息
  105. * @param reply.Data 标讯正文
  106. * @return error 错误信息
  107. */
  108. func (s *OSSService) GetBidDetail(args *entity.Args, reply *api.Result) error {
  109. if err := s.checkArgs(args); err != nil {
  110. log.Println(constant.BidDetailFail, err)
  111. return err
  112. }
  113. log.Println("rpc方式获取正文", args.BucketID, args.ObjectName)
  114. args.ObjectName += ".txt"
  115. reply.Data = string(GetBidDetail(args.BucketID, args.ObjectName))
  116. reply.Error_msg = constant.GetBidDetailSuccess
  117. return nil
  118. }