userDoc.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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. "encoding/json"
  7. "fmt"
  8. "jy-docs/public"
  9. "jy-docs/rpc"
  10. "log"
  11. "time"
  12. )
  13. type UserDoc struct {
  14. *xweb.Action
  15. userList xweb.Mapper `xweb:"/user/list"` //用户列表
  16. collectAdd xweb.Mapper `xweb:"/user/collect/add"` //收藏文库
  17. collectRemove xweb.Mapper `xweb:"/user/collect/remove"` //取消收藏
  18. docBuy xweb.Mapper `xweb:"/user/buy"` //文库购买
  19. }
  20. //用户文库列表
  21. func (userDoc *UserDoc) UserList() {
  22. userId := common.ObjToString(userDoc.GetSession("userId"))
  23. rData, errMsg := func() (interface{}, error) {
  24. pageNumReq, _ := userDoc.GetInt("num")
  25. pageSizeReq, _ := userDoc.GetInt("size")
  26. sign, _ := userDoc.GetInt("sign") // 0兑换的 1收藏的 2回收站的
  27. pageNum, pageSize, _ := public.PageNumParse(pageNumReq, pageSizeReq, -1)
  28. if sign < 0 || sign > 2 {
  29. return nil, fmt.Errorf("请求参数异常")
  30. }
  31. collectList, total, err := rpc.GetUserDocs(userId, pageNum, pageSize, sign)
  32. if err != nil {
  33. return nil, err
  34. }
  35. return map[string]interface{}{
  36. "total": total,
  37. "list": collectList,
  38. }, nil
  39. }()
  40. if errMsg != nil {
  41. log.Printf("%s UserDoc collectList err:%s\n", userId, errMsg.Error())
  42. }
  43. userDoc.ServeJson(NewResult(rData, errMsg))
  44. }
  45. func (userDoc *UserDoc) CollectAdd() {
  46. userId := common.ObjToString(userDoc.GetSession("userId"))
  47. rData, errMsg := func() (interface{}, error) {
  48. docId := userDoc.GetString("docId")
  49. if docId == "" {
  50. return nil, fmt.Errorf("参数异常")
  51. }
  52. err := rpc.SetUserCollect(userId, docId)
  53. if err != nil {
  54. return nil, err
  55. }
  56. return "success", nil
  57. }()
  58. if errMsg != nil {
  59. log.Printf("%s UserDoc collectAdd err:%s\n", userId, errMsg.Error())
  60. }
  61. userDoc.ServeJson(NewResult(rData, errMsg))
  62. }
  63. func (userDoc *UserDoc) CollectRemove() {
  64. userId := common.ObjToString(userDoc.GetSession("userId"))
  65. rData, errMsg := func() (interface{}, error) {
  66. docId := userDoc.GetString("docId")
  67. if docId == "" {
  68. return nil, fmt.Errorf("参数异常")
  69. }
  70. err := rpc.DelUserCollect(userId, docId)
  71. if err != nil {
  72. return nil, err
  73. }
  74. return "success", nil
  75. }()
  76. if errMsg != nil {
  77. log.Printf("%s UserDoc collectRemove err:%s\n", userId, errMsg.Error())
  78. }
  79. userDoc.ServeJson(NewResult(rData, errMsg))
  80. }
  81. func (userDoc *UserDoc) DocBuy() {
  82. userId := common.ObjToString(userDoc.GetSession("userId"))
  83. rData, errMsg := func() (interface{}, error) {
  84. docId := userDoc.GetString("docId")
  85. phone := userDoc.GetString("phone")
  86. if docId == "" {
  87. return nil, fmt.Errorf("参数异常")
  88. }
  89. var userPoint, docPoint int64 = 0, 0
  90. var err error
  91. //查询用户剩余积分
  92. userPoint, err = rpc.GetUserPointValue(userId)
  93. if err != nil {
  94. return nil, err
  95. }
  96. //查询文档所需积分
  97. docInfo, isBuy, _, err := rpc.GetDocDetail(userId, docId)
  98. if err != nil {
  99. return nil, err
  100. }
  101. if isBuy {
  102. return nil, fmt.Errorf("已兑换,请勿重复操作")
  103. }
  104. docPoint = docInfo.Price
  105. //积分够调扣积分
  106. if userPoint < docPoint {
  107. return nil, fmt.Errorf("剩余积分不足")
  108. }
  109. bytes, err := json.Marshal(map[string]interface{}{
  110. "name": docInfo.DocName,
  111. "summary": docInfo.DocSummary,
  112. "img": docInfo.PreviewImgId,
  113. "fType": docInfo.DocFileType,
  114. })
  115. if err != nil {
  116. return nil, fmt.Errorf("文库异常")
  117. }
  118. if err := rpc.SpendUserPoint(userId, docInfo.DocId, string(bytes), docPoint); err != nil {
  119. return nil, err
  120. }
  121. //转存文库
  122. err = rpc.PayDoc(userId, docId)
  123. if err != nil {
  124. return nil, err
  125. }
  126. //手机号采集
  127. go func() {
  128. if phone != "" {
  129. public.MQFW.Save("user_msg", map[string]interface{}{
  130. "s_userId": userId,
  131. "s_phone": phone,
  132. "i_phoneCheck": -1, //未验证
  133. "i_time": time.Now().Unix(),
  134. "s_source": "jydoc",
  135. })
  136. }
  137. }()
  138. return map[string]interface{}{
  139. "code": docId,
  140. "balance": userPoint - docPoint,
  141. "payTime": time.Now().Unix(),
  142. "payWay": "剑鱼币",
  143. }, nil
  144. }()
  145. if errMsg != nil {
  146. log.Printf("%s UserDoc docBuy err:%s\n", userId, errMsg.Error())
  147. }
  148. userDoc.ServeJson(NewResult(rData, errMsg))
  149. }