article_list.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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 GetCollectionArticleList(db *pg.DB) gin.HandlerFunc {
  25. return func(c *gin.Context) {
  26. cid,err:= strconv.Atoi(c.Param("cid"))
  27. if err != nil {
  28. panic(err)
  29. }
  30. // TODO 在这里进行db操作
  31. // Select user by primary key.
  32. var articles []ArticleList
  33. err = db.Model(&articles).Column("collection_id","article_id").Where("collection_id = ?",cid).Select()
  34. if err != nil {
  35. panic(err)
  36. }
  37. c.JSON(http.StatusOK, gin.H{
  38. "message": articles,
  39. })
  40. }
  41. }
  42. //修改
  43. func PostArticleListByArticle(db *pg.DB) gin.HandlerFunc{
  44. return func(c *gin.Context){
  45. aid,err:= strconv.Atoi(c.Param("aid"))
  46. if err != nil {
  47. panic(err)
  48. }
  49. //先删除
  50. _, err = db.Model((*ArticleList)(nil)).Where("article_id = ?",aid).Delete()
  51. if err != nil {
  52. panic(err)
  53. }
  54. var form ArticleListHolder
  55. if err := c.ShouldBindJSON(&form); err != nil {
  56. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  57. return
  58. }
  59. tx, err := db.Begin()
  60. if err != nil {
  61. panic(err)
  62. }
  63. defer tx.Rollback()
  64. stmt, err := tx.Prepare("INSERT INTO article_lists( collection_id, article_id ) VALUES( $1, $2 )")
  65. if err != nil {
  66. panic(err)
  67. }
  68. defer stmt.Close()
  69. for _, value := range form.Items{
  70. _, err = stmt.Exec(value.CollectionId,aid)
  71. if err != nil {
  72. panic(err)
  73. }
  74. }
  75. err = tx.Commit()
  76. if err != nil {
  77. panic(err)
  78. }
  79. c.JSON(http.StatusOK,gin.H{
  80. "message":"update ok",
  81. })
  82. }
  83. }
  84. //删
  85. func DeleteArticleInList(db *pg.DB ,rdb *redis.Client) gin.HandlerFunc{
  86. return func(c *gin.Context){
  87. id,err := strconv.Atoi(c.Param("aid"))
  88. if err != nil {
  89. panic(err)
  90. }
  91. //删之前获取 course_id
  92. _, err = db.Model((*ArticleList)(nil)).Where("article_id = ?",id).Delete()
  93. if err != nil {
  94. panic(err)
  95. }
  96. //TODO 删除article_list表相关项目
  97. c.JSON(http.StatusOK,gin.H{
  98. "message":"delete "+c.Param("aid"),
  99. })
  100. rkey := "article_list://"+c.Param("aid")
  101. rdb.Del(ctx,rkey)
  102. }
  103. }
  104. //删
  105. func DeleteCollectionInList(db *pg.DB ,rdb *redis.Client) gin.HandlerFunc{
  106. return func(c *gin.Context){
  107. id,err := strconv.Atoi(c.Param("cid"))
  108. if err != nil {
  109. panic(err)
  110. }
  111. //删之前获取 course_id
  112. _, err = db.Model((*ArticleList)(nil)).Where("collection_id = ?",id).Delete()
  113. if err != nil {
  114. panic(err)
  115. }
  116. //TODO 删除article_list表相关项目
  117. c.JSON(http.StatusOK,gin.H{
  118. "message":"delete "+c.Param("cid"),
  119. })
  120. rkey := "article_list://collection_"+c.Param("cid")
  121. rdb.Del(ctx,rkey)
  122. }
  123. }