article_list.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package mint
  2. import (
  3. "net/http"
  4. "strconv"
  5. "github.com/gin-gonic/gin"
  6. "github.com/go-pg/pg/v10"
  7. "time"
  8. "encoding/json"
  9. "github.com/go-redis/redis/v8"
  10. )
  11. type ArticleList struct {
  12. Id int `form:"id" json:"id"`
  13. CollectionId int `form:"collection_id" json:"collection_id" binding:"required"`
  14. ArticleId int `form:"article_id" json:"article_id" binding:"required"`
  15. CreatedAt time.Time
  16. }
  17. type ArticleListHolder struct{
  18. Items []ArticleList
  19. }
  20. func (i *ArticleListHolder) UnmarshalJSON(b []byte) error{
  21. return json.Unmarshal(b, &i.Items)
  22. }
  23. //查询
  24. func ArticleListIndex(db *pg.DB) gin.HandlerFunc {
  25. return func(c *gin.Context) {
  26. id := c.Query("id")
  27. object := c.Query("object")
  28. // TODO 在这里进行db操作
  29. // Select user by primary key.
  30. var articles []ArticleList
  31. var err error
  32. if object == "article" {
  33. err = db.Model(&articles).Column("collection_id","article_id").Where("article_id = ?",id).Select()
  34. }else{
  35. err = db.Model(&articles).Column("collection_id","article_id").Where("collection_id = ?",id).Select()
  36. }
  37. if err != nil {
  38. panic(err)
  39. }
  40. c.JSON(http.StatusOK, gin.H{
  41. "message": articles,
  42. })
  43. }
  44. }
  45. //修改
  46. func ArticleListUpdate(db *pg.DB) gin.HandlerFunc{
  47. return func(c *gin.Context){
  48. id := c.Query("id")
  49. object := c.Query("object")
  50. //先删除
  51. var err error
  52. if object == "article" {
  53. _, err = db.Model((*ArticleList)(nil)).Where("article_id = ?",id).Delete()
  54. }else{
  55. _, err = db.Model((*ArticleList)(nil)).Where("collection_id = ?",id).Delete()
  56. }
  57. if err != nil {
  58. panic(err)
  59. }
  60. var form ArticleListHolder
  61. if err := c.ShouldBindJSON(&form); err != nil {
  62. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  63. return
  64. }
  65. tx, err := db.Begin()
  66. if err != nil {
  67. panic(err)
  68. }
  69. defer tx.Rollback()
  70. stmt, err := tx.Prepare("INSERT INTO article_lists( collection_id, article_id ) VALUES( $1, $2 )")
  71. if err != nil {
  72. panic(err)
  73. }
  74. defer stmt.Close()
  75. for _, value := range form.Items{
  76. _, err = stmt.Exec(value.CollectionId,id)
  77. if err != nil {
  78. panic(err)
  79. }
  80. }
  81. err = tx.Commit()
  82. if err != nil {
  83. panic(err)
  84. }
  85. c.JSON(http.StatusOK,gin.H{
  86. "message":"update ok",
  87. })
  88. }
  89. }
  90. //删
  91. func DeleteArticleInList(db *pg.DB ,rdb *redis.Client) gin.HandlerFunc{
  92. return func(c *gin.Context){
  93. id,err := strconv.Atoi(c.Param("aid"))
  94. if err != nil {
  95. panic(err)
  96. }
  97. //删之前获取 course_id
  98. _, err = db.Model((*ArticleList)(nil)).Where("article_id = ?",id).Delete()
  99. if err != nil {
  100. panic(err)
  101. }
  102. //TODO 删除article_list表相关项目
  103. c.JSON(http.StatusOK,gin.H{
  104. "message":"delete "+c.Param("aid"),
  105. })
  106. rkey := "article_list://"+c.Param("aid")
  107. rdb.Del(ctx,rkey)
  108. }
  109. }
  110. //删
  111. func DeleteCollectionInList(db *pg.DB ,rdb *redis.Client) gin.HandlerFunc{
  112. return func(c *gin.Context){
  113. id,err := strconv.Atoi(c.Param("cid"))
  114. if err != nil {
  115. panic(err)
  116. }
  117. //删之前获取 course_id
  118. _, err = db.Model((*ArticleList)(nil)).Where("collection_id = ?",id).Delete()
  119. if err != nil {
  120. panic(err)
  121. }
  122. //TODO 删除article_list表相关项目
  123. c.JSON(http.StatusOK,gin.H{
  124. "message":"delete "+c.Param("cid"),
  125. })
  126. rkey := "article_list://collection_"+c.Param("cid")
  127. rdb.Del(ctx,rkey)
  128. }
  129. }