stdDoc.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package servers
  2. import (
  3. . "app.yhyue.com/moapp/jybase/api"
  4. "app.yhyue.com/moapp/jybase/common"
  5. "app.yhyue.com/moapp/jybase/go-xweb/xweb"
  6. "fmt"
  7. "jy-docs/config"
  8. "jy-docs/public"
  9. "jy-docs/rpc"
  10. "log"
  11. "strings"
  12. )
  13. type StdDoc struct {
  14. *xweb.Action
  15. search xweb.Mapper `xweb:"/search"` //检索文库
  16. detail xweb.Mapper `xweb:"/detail"` //文库详情
  17. content xweb.Mapper `xweb:"/content"` //文库内容
  18. topList xweb.Mapper `xweb:"/topList"` //最新文档&热门下载
  19. activityList xweb.Mapper `xweb:"/activityList"` //活动文库(精品推荐、兑换榜)
  20. }
  21. func (stdDoc *StdDoc) Search() {
  22. userId := common.ObjToString(stdDoc.GetSession("userId"))
  23. rData, errMsg := func() (interface{}, error) {
  24. keyWord := strings.TrimSpace(stdDoc.GetString("keyWord")) //关键词
  25. tag := stdDoc.GetString("tag") //标签
  26. sort := stdDoc.GetString("sort") //排序 tSort dSort vSort
  27. pageNumReq, _ := stdDoc.GetInt("num") //页码 从1开始
  28. pageSizeReq, _ := stdDoc.GetInt("size") //每页数量
  29. pageNum, pageSize, err := public.PageNumParse(pageNumReq, pageSizeReq, 20*10)
  30. if err != nil {
  31. return nil, err
  32. }
  33. if keyWord == "" {
  34. return nil, fmt.Errorf("检索内容不能为空")
  35. }
  36. list, total, err := rpc.GetDocQuery(userId, keyWord, tag, pageNum, pageSize, sort)
  37. if err != nil {
  38. return nil, err
  39. }
  40. return map[string]interface{}{
  41. "total": total,
  42. "list": list,
  43. }, nil
  44. }()
  45. if errMsg != nil {
  46. log.Printf("%s StdDoc search err:%s\n", userId, errMsg.Error())
  47. }
  48. stdDoc.ServeJson(NewResult(rData, errMsg))
  49. }
  50. func (stdDoc *StdDoc) Detail() {
  51. userId := common.ObjToString(stdDoc.GetSession("userId"))
  52. rData, errMsg := func() (interface{}, error) {
  53. docId := stdDoc.GetString("docId")
  54. if docId == "" {
  55. return nil, fmt.Errorf("参数异常")
  56. }
  57. detail, isBuy, err := rpc.GetDocDetail(userId, docId)
  58. if err != nil {
  59. return nil, err
  60. }
  61. //ossId清除
  62. detail.OssPdfId = ""
  63. return map[string]interface{}{
  64. "status": common.If(isBuy, 1, 0),
  65. "detail": detail,
  66. }, nil
  67. }()
  68. if errMsg != nil {
  69. log.Printf("%s StdDoc detail err:%s\n", userId, errMsg.Error())
  70. }
  71. stdDoc.ServeJson(NewResult(rData, errMsg))
  72. }
  73. func (stdDoc *StdDoc) Content() {
  74. userId := common.ObjToString(stdDoc.GetSession("userId"))
  75. rData, errMsg := func() (interface{}, error) {
  76. docId := stdDoc.GetString("docId")
  77. if docId == "" {
  78. return nil, fmt.Errorf("参数异常")
  79. }
  80. detail, isBuy, err := rpc.GetDocDetail(userId, docId)
  81. if err != nil {
  82. return nil, err
  83. }
  84. if !isBuy {
  85. return nil, fmt.Errorf("请先兑换文档")
  86. }
  87. url, err := rpc.GetFileContext(userId, detail.OssPdfId)
  88. if err != nil {
  89. return nil, err
  90. }
  91. return url, nil
  92. }()
  93. if errMsg != nil {
  94. log.Printf("%s StdDoc content err:%s\n", userId, errMsg.Error())
  95. }
  96. stdDoc.ServeJson(NewResult(rData, errMsg))
  97. }
  98. func (stdDoc *StdDoc) TopList() {
  99. userId := common.ObjToString(stdDoc.GetSession("userId"))
  100. rData, errMsg := func() (interface{}, error) {
  101. num, _ := stdDoc.GetInt("num") //返回数量
  102. sign := stdDoc.GetString("sign") //类别
  103. reqSort := ""
  104. if num > 50 {
  105. num = 50
  106. }
  107. if sign == "hot" {
  108. reqSort = "dSort"
  109. } else if sign == "new" {
  110. reqSort = "tSort"
  111. } else {
  112. return nil, fmt.Errorf("未知请求")
  113. }
  114. //存入redis缓存
  115. list, _, err := rpc.GetDocQuery(userId, "", "", 1, num, reqSort)
  116. if err != nil {
  117. return nil, err
  118. }
  119. return list, nil
  120. }()
  121. if errMsg != nil {
  122. log.Printf("%s StdDoc topList err:%s\n", userId, errMsg.Error())
  123. }
  124. stdDoc.ServeJson(NewResult(rData, errMsg))
  125. }
  126. func (stdDoc *StdDoc) ActivityList() {
  127. userId := common.ObjToString(stdDoc.GetSession("userId"))
  128. rData, errMsg := func() (interface{}, error) {
  129. code, _ := stdDoc.GetInt("code")
  130. pageNumReq, _ := stdDoc.GetInt("num") //页码 从1开始
  131. pageSizeReq, _ := stdDoc.GetInt("size") //每页数量
  132. pageNum, pageSize, err := public.PageNumParse(pageNumReq, pageSizeReq, 20*10)
  133. if err != nil {
  134. return nil, err
  135. }
  136. //存入redis缓存
  137. list, err := rpc.GeActivityList(userId, code, pageNum, pageSize)
  138. if err != nil {
  139. return nil, err
  140. }
  141. for i := 0; i < len(list); i++ {
  142. list[i].DocImg = fmt.Sprintf("https://%s.%s/%s", config.JyDocsAppConfig.OssBucket.Priv, config.JyDocsAppConfig.OssAdmin, list[i].DocImg)
  143. }
  144. return list, nil
  145. }()
  146. if errMsg != nil {
  147. log.Printf("%s StdDoc activityList err:%s\n", userId, errMsg.Error())
  148. }
  149. stdDoc.ServeJson(NewResult(rData, errMsg))
  150. }