docChangeService.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package stdlib
  2. import (
  3. "app.yhyue.com/moapp/jy_docs/services/model"
  4. jyDocsRpcUtil "app.yhyue.com/moapp/jy_docs/services/util"
  5. elastic "app.yhyue.com/moapp/jybase/esv7"
  6. "errors"
  7. "gorm.io/gorm"
  8. "log"
  9. "time"
  10. )
  11. const DocOn = 1
  12. const DocOff = 0
  13. // 上架文档
  14. func ChangeDocumentOn(doc *model.Doc, reason int32) bool {
  15. // 查文档
  16. docData := map[string]interface{}{}
  17. rs := jyDocsRpcUtil.GetJyDocsDB().Table("doc").Where("id=? and isDelete=0 and downOrUp=0 and appId=?", doc.Id, doc.AppId).Find(&docData)
  18. if rs.Error != nil {
  19. log.Printf("上架文档 appId:%s,Id:%s, error: %s\n", doc.AppId, doc.Id, rs.Error)
  20. return false
  21. } else {
  22. if docData["id"] == nil {
  23. log.Printf("上架文档 appId:%s,Id:%s, error: %s\n", doc.AppId, doc.Id, "文档不存在或已经被上架")
  24. return false
  25. }
  26. }
  27. statisticsData := map[string]interface{}{}
  28. var downTimes int64
  29. var viewTimes int64
  30. result := jyDocsRpcUtil.GetJyDocsDB().Table("doc_statistics").Where("docId=? and appId=?", doc.Id, doc.AppId).Find(&statisticsData)
  31. if result.Error != nil {
  32. log.Printf("上架文档 查询浏览次数下载量出错 appId:%s,Id:%s, error:%s\n", doc.AppId, doc.Id, result.Error)
  33. return false
  34. } else {
  35. if statisticsData["id"] != nil {
  36. if statisticsData["downTimes"] != nil {
  37. downTimes = statisticsData["downTimes"].(int64)
  38. }
  39. if statisticsData["viewTimes"] != nil {
  40. viewTimes = statisticsData["viewTimes"].(int64)
  41. }
  42. }
  43. }
  44. // 上架
  45. err := jyDocsRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
  46. // 更新大库状态为上架 1-上架
  47. if err := tx.Exec("update doc set downOrUp=? where id=? and appId=?", DocOn, doc.Id, doc.AppId).Error; err != nil {
  48. return err
  49. }
  50. // 存上架记录
  51. date := time.Now().Local().Format("2006-01-02 15:04:05")
  52. if err := tx.Exec("insert into doc_change_record (docId,date,downOrUp,reason,appId) values (?,?,?,?,?)", doc.Id, date, DocOn, reason, doc.AppId).Error; err != nil {
  53. return err
  54. }
  55. saveData := map[string]interface{}{
  56. "_id": docData["id"],
  57. "docName": docData["docName"],
  58. "docTags": docData["docTags"],
  59. "docClass": docData["docClass"],
  60. "price": docData["price"],
  61. "downTimes": downTimes,
  62. "viewTimes": viewTimes,
  63. "docSummary": docData["docSummary"],
  64. "uploadDate": docData["uploadDate"].(time.Time).Format("2006-01-02 15:04:05"),
  65. "docFileSize": docData["docFileSize"],
  66. "docPageSize": docData["docPageSize"],
  67. "docFileType": docData["docFileType"],
  68. }
  69. if rs := elastic.Save(jyDocsRpcUtil.Es_JyDoc, "_doc", saveData); rs != true {
  70. return errors.New("发布到检索库失败")
  71. }
  72. return nil
  73. })
  74. if err != nil {
  75. log.Printf("上架文档 appId:%s,Id:%s, error:%s\n", doc.AppId, doc.Id, err)
  76. return false
  77. }
  78. log.Println("上架文档成功:" + doc.Id)
  79. return true
  80. }
  81. // 下架文档
  82. func ChangeDocumentOff(doc *model.Doc, reason int32) bool {
  83. // 查文档
  84. docData := map[string]interface{}{}
  85. rs := jyDocsRpcUtil.GetJyDocsDB().Table("doc").Where("id=? and isDelete=0 and downOrUp=1 and appId=?", doc.Id, doc.AppId).Find(&docData)
  86. if rs.Error != nil {
  87. log.Printf("下架文档 appId:%s,Id:%s, error:%s\n", doc.AppId, doc.Id, rs.Error)
  88. return false
  89. } else {
  90. if docData["id"] == nil {
  91. log.Printf("下架文档 appId:%s,Id:%s, error:%s\n", doc.AppId, doc.Id, "文档不存在或已经被下架")
  92. return false
  93. }
  94. }
  95. // 下架
  96. err := jyDocsRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
  97. // 更新大库状态为下架 0-下架
  98. if err := tx.Exec("update doc set downOrUp=? where id=? and appId=?", DocOff, doc.Id, doc.AppId).Error; err != nil {
  99. return err
  100. }
  101. // 存下架记录
  102. date := time.Now().Local().Format("2006-01-02 15:04:05")
  103. if err := tx.Exec("insert into doc_change_record (docId,date,downOrUp,reason,appId) values (?,?,?,?,?)", doc.Id, date, DocOff, reason, doc.AppId).Error; err != nil {
  104. return err
  105. }
  106. if rs := elastic.DelById(jyDocsRpcUtil.Es_JyDoc, "doc", doc.Id); rs != true {
  107. return errors.New("从检索库删除失败")
  108. }
  109. return nil
  110. })
  111. if err != nil {
  112. log.Printf("下架文档 appId:%s,Id:%s, error:%s:\n", doc.AppId, doc.Id, err)
  113. return false
  114. }
  115. log.Println("下架文档成功:" + doc.Id)
  116. return true
  117. }