stdDocRpc.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package rpc
  2. import (
  3. "app.yhyue.com/moapp/jy_docs/rpc/stdlib/stdlib"
  4. "app.yhyue.com/moapp/jy_docs/rpc/stdlib/stdlibclient"
  5. "context"
  6. "fmt"
  7. "github.com/tal-tech/go-zero/core/discov"
  8. "github.com/tal-tech/go-zero/zrpc"
  9. "jy-docs/config"
  10. "log"
  11. )
  12. // 标准库RPC接口
  13. var jyStdDocStdlib stdlibclient.Stdlib
  14. func init() {
  15. jyStdDocStdlib = stdlibclient.NewStdlib(zrpc.MustNewClient(zrpc.RpcClientConf{
  16. Etcd: discov.EtcdConf{
  17. Key: config.JyDocsAppConfig.RpcServers.StdDoc.Key,
  18. Hosts: config.JyDocsAppConfig.RpcServers.StdDoc.Address,
  19. },
  20. }))
  21. }
  22. /*
  23. 检索文库
  24. param
  25. userId 用户id
  26. keyWord 关键词
  27. tag 分类
  28. pageNum 页码
  29. pageSize 每页数量
  30. tSort 时间排序
  31. dSort 下载排序
  32. vSort 浏览量排序
  33. */
  34. func GetDocQuery(userId, keyWord, tag string, pageNum, pageSize int64, sort string) ([]*stdlib.Doc, int64, error) {
  35. param := &stdlib.DocQueryRequest{
  36. AppId: config.JyDocsAppConfig.AppId,
  37. KeyWord: keyWord,
  38. PageSize: pageSize,
  39. PageNum: pageNum,
  40. }
  41. if tag != "" {
  42. param.DocTag = []string{tag}
  43. }
  44. sortArr := []string{}
  45. switch sort { //倒序字段前加-,uploadDate:上架时间 viewTimes:浏览量 downTimes:下载量
  46. case "dSort": //下载量倒叙
  47. sortArr = append(sortArr, "-downTimes")
  48. case "vSort": //浏览量倒叙
  49. sortArr = append(sortArr, "-viewTimes")
  50. default: // "tSort"上传时间倒叙
  51. sortArr = append(sortArr, "-uploadDate")
  52. }
  53. param.Sort = sortArr
  54. resp, err := jyStdDocStdlib.DocQuery(context.Background(), param)
  55. if err != nil {
  56. log.Printf("%s SetUserCollect call error %v\n", userId, err)
  57. return nil, -1, err
  58. }
  59. if resp.Code != 1 {
  60. log.Printf("%s SetUserCollect fail Message %v\n", userId, resp.Msg)
  61. return nil, -1, fmt.Errorf("查询失败")
  62. }
  63. for _, v := range resp.Docs {
  64. if v.PreviewImgId != "" {
  65. v.PreviewImgId = fmt.Sprintf("https://%s.%s/%s", config.JyDocsAppConfig.OssBucket.Priv, config.JyDocsAppConfig.OssAdmin, v.PreviewImgId)
  66. }
  67. }
  68. return resp.Docs, resp.Total, nil
  69. }
  70. /*
  71. 获取活动列表
  72. param
  73. userId 用户id
  74. code 活动编号
  75. pageNum 页码
  76. pageSize 每页数量
  77. return
  78. 文库列表、异常
  79. */
  80. func GeActivityList(userId string, code, pageNum, pageSize int64) ([]*stdlib.DocActivity, error) {
  81. resp, err := jyStdDocStdlib.DocActivity(context.Background(), &stdlib.DocActivityReq{
  82. AppId: config.JyDocsAppConfig.AppId,
  83. ActivityId: code,
  84. PageNum: pageNum,
  85. PageSize: pageSize,
  86. UserId: userId,
  87. })
  88. if err != nil {
  89. log.Printf("%s GeActivityList call error %v\n", userId, err)
  90. return nil, err
  91. }
  92. if resp.Code != 1 {
  93. log.Printf("%s GeActivityList fail Message %v\n", userId, resp.Msg)
  94. return nil, fmt.Errorf("获取列表失败")
  95. }
  96. return resp.Docs, nil
  97. }
  98. /*
  99. 获取文库详情
  100. param
  101. userId 用户id
  102. docId 文库id
  103. return
  104. DocInfo 文库详情
  105. error 异常
  106. */
  107. func GetDocDetail(userId, docId string) (*stdlib.DocInfo, bool, bool, error) {
  108. resp, err := jyStdDocStdlib.DocGetCheck(context.Background(), &stdlib.DocGetCheckReq{
  109. AppId: config.JyDocsAppConfig.AppId,
  110. UserId: userId,
  111. DocId: docId,
  112. })
  113. if err != nil {
  114. log.Printf("%s GetDocDetail call error %v\n", userId, err)
  115. return nil, false, false, err
  116. }
  117. if resp.Code != 1 {
  118. log.Printf("%s GetDocDetail fail Message %v\n", userId, resp.Msg)
  119. return nil, false, false, fmt.Errorf("获取内容失败")
  120. }
  121. if resp.DocDeail == nil {
  122. return nil, false, false, fmt.Errorf("查询文档异常")
  123. }
  124. return resp.DocDeail, resp.IsBuy, resp.IsCollect, nil
  125. }
  126. /*
  127. 文库浏览次数、下载次数统计
  128. param
  129. userId 用户id
  130. docId 文库id
  131. sign 1增加下载次数 2增加浏览次数 3评分
  132. */
  133. const Down int32 = 1
  134. const View int32 = 2
  135. func DocStatistics(userId, docId string, sign int32) {
  136. resp, err := jyStdDocStdlib.DocStatistics(context.Background(), &stdlib.DocStatisticsReq{
  137. AppId: config.JyDocsAppConfig.AppId,
  138. DocId: docId,
  139. DocStatisticsType: sign,
  140. })
  141. if err != nil {
  142. log.Printf("%s DocStatistics call error %v\n", userId, err)
  143. }
  144. if !resp.State {
  145. log.Printf("%s DocStatistics fail Message %v\n", userId, resp)
  146. }
  147. }