docChangeService.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package stdlib
  2. import (
  3. jyDocsRpcUtil "app.yhyue.com/moapp/jy_docs/services/util"
  4. elastic "app.yhyue.com/moapp/jybase/esv7"
  5. "errors"
  6. "gorm.io/gorm"
  7. "log"
  8. "time"
  9. )
  10. const DocOn = 1
  11. const DocOff = 0
  12. // 上架文档
  13. func ChangeDocumentOn(id string, reason int32) bool {
  14. // 查文档
  15. docData := map[string]interface{}{}
  16. rs := jyDocsRpcUtil.GetJyDocsDB().Table("doc").Where("id=? and isDelete=0 and downOrUp=0", id).Find(&docData)
  17. if rs.Error != nil {
  18. log.Println("上架文档 error:"+id, rs.Error)
  19. return false
  20. } else {
  21. if docData["id"] == nil {
  22. log.Println("上架文档 error:"+id, "文档不存在或已经被上架")
  23. return false
  24. }
  25. }
  26. // 上架
  27. err := jyDocsRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
  28. // 更新大库状态为上架 1-上架
  29. if err := tx.Exec("update doc set downOrUp=? where id=? ", DocOn, id).Error; err != nil {
  30. return err
  31. }
  32. // 存上架记录
  33. date := time.Now().Local().Format("2006-01-02 15:04:05")
  34. if err := tx.Exec("insert into doc_change_record (docId,date,downOrUp,reason) values (?,?,?,?)", id, date, DocOn, reason).Error; err != nil {
  35. return err
  36. }
  37. docData["_id"] = docData["id"]
  38. // todo es加数据 索引待替换 测试
  39. if rs := elastic.Save("jydoc", "doc", docData); rs != true {
  40. return errors.New("发布到检索库失败")
  41. }
  42. return nil
  43. })
  44. if err != nil {
  45. log.Println("上架文档 error:"+id, err)
  46. return false
  47. }
  48. log.Println("上架文档成功:" + id)
  49. return true
  50. }
  51. // 下架文档
  52. func ChangeDocumentOff(id string, reason int32) bool {
  53. // 查文档
  54. docData := map[string]interface{}{}
  55. rs := jyDocsRpcUtil.GetJyDocsDB().Table("doc").Where("id=? and isDelete=0 and downOrUp=1", id).Find(&docData)
  56. if rs.Error != nil {
  57. log.Println("下架文档 error:"+id, rs.Error)
  58. return false
  59. } else {
  60. if docData["id"] == nil {
  61. log.Println("下架文档 error:"+id, "文档不存在或已经被下架")
  62. return false
  63. }
  64. }
  65. // 下架
  66. err := jyDocsRpcUtil.GetJyDocsDB().Transaction(func(tx *gorm.DB) error {
  67. // 更新大库状态为下架 0-下架
  68. if err := tx.Exec("update doc set downOrUp=? where id=? ", DocOff, id).Error; err != nil {
  69. return err
  70. }
  71. // 存下架记录
  72. date := time.Now().Local().Format("2006-01-02 15:04:05")
  73. if err := tx.Exec("insert into doc_change_record (docId,date,downOrUp,reason) values (?,?,?,?)", id, date, DocOff, reason).Error; err != nil {
  74. return err
  75. }
  76. //todo 从es删除数据 索引待替换 及测试
  77. if rs := elastic.DelById("jydoc", "doc", id); rs != true {
  78. return errors.New("从检索库删除失败")
  79. }
  80. return nil
  81. })
  82. if err != nil {
  83. log.Println("下架文档 error:"+id, err)
  84. return false
  85. }
  86. log.Println("下架文档成功:" + id)
  87. return true
  88. }