userDocService.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package userlib
  2. import (
  3. "app.yhyue.com/moapp/jyPoints/rpc/integral"
  4. "app.yhyue.com/moapp/jyPoints/rpc/integralclient"
  5. "app.yhyue.com/moapp/jy_docs/services/model"
  6. docRpcUtil "app.yhyue.com/moapp/jy_docs/services/util"
  7. "context"
  8. "github.com/tal-tech/go-zero/core/discov"
  9. "github.com/tal-tech/go-zero/zrpc"
  10. "gorm.io/gorm"
  11. "log"
  12. "time"
  13. )
  14. func UserDocCollect(userDoc *model.UserDoc, cost int) bool {
  15. log.Println("UserDocCollect exec ......")
  16. err := docRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
  17. //用户文库表添加记录(需要检查是否重复)
  18. err := docRpcUtil.GetJyDocsDB().Create(userDoc).Error
  19. if err != nil {
  20. log.Println("userDocCollect error:", err)
  21. tx.Rollback()
  22. return err
  23. }
  24. //用户收藏、转存记录表添加记录
  25. err = docRpcUtil.GetJyDocsDB().Exec("insert into download_collection_record (docId,userId,sourceUserId,category,cost) values (?,?,?,?,?)", userDoc.DocId, userDoc.UserId, userDoc.DocSourceUserId, userDoc.DocCategory, cost).Error
  26. if err != nil {
  27. log.Println("userDocCollect record insert error:", err)
  28. tx.Rollback()
  29. return err
  30. }
  31. return nil
  32. })
  33. if err != nil {
  34. return false
  35. }
  36. return true
  37. }
  38. //转存操作
  39. func UserDocDownload(userDoc *model.UserDoc, cost int,hosts []string,key string) bool {
  40. log.Println("UserDocCollect exec ......")
  41. err := docRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
  42. //用户文库表添加记录
  43. //获取文档有关信息
  44. //查询之前有无下载记录 0和1只要有一条不能下载,如果有未删除可以下载
  45. userDocDownloadList := []model.UserDoc{}
  46. err := docRpcUtil.GetJyDocsDB().Table("user_doc").Where(" userId=? and docId=? and docCategory=? and (isDelete=? or isDelete=?)", userDoc.UserId, userDoc.DocId, model.UserDocCategory_Download, model.UserDocStatus_Normal, model.UserDocStatus_LogicDelete).Find(&userDocDownloadList)
  47. if err.Error != nil {
  48. return err.Error
  49. }
  50. if len(userDocDownloadList) > 0 {
  51. return nil
  52. }
  53. //先扣除积分
  54. //rpc
  55. client := zrpc.MustNewClient(zrpc.RpcClientConf{
  56. Etcd: discov.EtcdConf{
  57. Hosts: hosts,
  58. Key: key,
  59. },
  60. })
  61. integralLib := integralclient.NewIntegral(client)
  62. req := &integral.Req{UserId: userDoc.UserId,
  63. PointType: 2003,
  64. BusinessTypeId: 1,
  65. BusinessType: "1",
  66. Point: int64(cost),
  67. AppId: 10000}
  68. res, pointsErr := integralLib.IntegralConsume(context.Background(), req)
  69. log.Println("err ", pointsErr)
  70. log.Println("req ", res)
  71. if (pointsErr != nil || res.Code == 0) {
  72. return pointsErr
  73. }
  74. //查询之前有无收藏记录 有收藏记录类型改为下载,状态改为未删除、有收藏记录插入一条新纪录
  75. userDocCollectionList := []model.UserDoc{}
  76. err = docRpcUtil.GetJyDocsDB().Table("user_doc").Where(" userId=? and docId=? and docCategory=? and (isDelete=? or isDelete=?)", userDoc.UserId, userDoc.DocId, model.UserDocCategory_Collect, model.UserDocStatus_Normal, model.UserDocStatus_LogicDelete).Find(&userDocCollectionList)
  77. if err.Error != nil {
  78. return err.Error
  79. }
  80. if len(userDocCollectionList) > 0 {
  81. //修改收藏为下载
  82. if err := tx.Exec("update user_doc set docCategory=? , isDelete=? ,update_at=? where id =?", model.UserDocCategory_Download, model.UserDocStatus_Normal, time.Now(), userDocCollectionList[0].ID).Error; err != nil {
  83. return err
  84. }
  85. if err.Error != nil {
  86. log.Println("userDocCollect error:", err)
  87. tx.Rollback()
  88. return err.Error
  89. }
  90. //用户收藏、转存记录表添加记录
  91. err := docRpcUtil.GetJyDocsDB().Exec("insert into download_collection_record (docId,userId,sourceUserId,category,cost,date) values (?,?,?,?,?,?)", userDoc.DocId, userDoc.UserId, userDoc.DocSourceUserId, model.UserDocCategory_Download, cost, time.Now())
  92. if err.Error != nil {
  93. log.Println("userDocCollect record insert error:", err)
  94. tx.Rollback()
  95. return err.Error
  96. }
  97. } else {
  98. //用户文库表添加记录
  99. userDoc.CreateAt = time.Now()
  100. userDoc.UpdateAt = time.Now()
  101. userDoc.DeletedAt = time.Now()
  102. err = docRpcUtil.GetJyDocsDB().Create(userDoc)
  103. if err.Error != nil {
  104. log.Println("userDocCollect error:", err)
  105. tx.Rollback()
  106. return err.Error
  107. }
  108. //用户收藏、转存记录表添加记录
  109. err := docRpcUtil.GetJyDocsDB().Exec("insert into download_collection_record (docId,userId,sourceUserId,category,cost,date) values (?,?,?,?,?,?)", userDoc.DocId, userDoc.UserId, userDoc.DocSourceUserId, model.UserDocCategory_Download, cost, time.Now())
  110. if err.Error != nil {
  111. log.Println("userDocCollect record insert error:", err)
  112. tx.Rollback()
  113. return err.Error
  114. }
  115. }
  116. return nil
  117. })
  118. if err != nil {
  119. return false
  120. }
  121. return true
  122. }
  123. func UserDocDelete(docId string) bool {
  124. err := docRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
  125. orm := docRpcUtil.GetJyDocsDB()
  126. docData := model.UserDoc{}
  127. //查询用户文档详情
  128. orm.Select("userId,docId").First(&docData, docId)
  129. log.Println(docData.UserId)
  130. log.Println(docData.DocId)
  131. //逻辑删除
  132. err := docRpcUtil.GetJyDocsDB().Exec("UPDATE user_doc SET isDelete = 1 WHERE id = ?", docId).Error
  133. if err != nil {
  134. tx.Rollback()
  135. return err
  136. }
  137. //删除记录
  138. err = docRpcUtil.GetJyDocsDB().Exec("insert into del_record (docId, userId, date, operate, viewType, source, shareUserId) values (?,?,?,?,?,?,?)", docId, docData.UserId, time.Now(), 1, 1, 1, 1).Error
  139. if err != nil {
  140. tx.Rollback()
  141. return err
  142. }
  143. return nil
  144. })
  145. if err != nil {
  146. return false
  147. }
  148. return true
  149. }