wbws_list.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package mint
  2. import (
  3. "fmt"
  4. "net/http"
  5. "strconv"
  6. "time"
  7. "github.com/gin-gonic/gin"
  8. "github.com/go-pg/pg/v10"
  9. "github.com/go-redis/redis/v8"
  10. )
  11. type WbwsList struct {
  12. Id int `form:"id" json:"id" `
  13. ParentId int `form:"parent_id" json:"parent_id" `
  14. ChannelId int `form:"channel_id" json:"channel_id" `
  15. BookId int `form:"book_id" json:"book_id" `
  16. Paragraph int `form:"paragraph" json:"paragraph" `
  17. Title string `form:"title" json:"title"`
  18. Content string `form:"content" json:"content"`
  19. Lang string `form:"lang" json:"lang"`
  20. Setting string `form:"setting" json:"setting"`
  21. Status string `form:"status" json:"status"`
  22. OwnerId int
  23. Version int
  24. DeletedAt time.Time
  25. CreatedAt time.Time
  26. UpdatedAt time.Time
  27. }
  28. //display a list of all wbwsLists
  29. func WbwsListsIndex(db *pg.DB) gin.HandlerFunc {
  30. return func(c *gin.Context) {
  31. name := c.DefaultQuery("name", "")
  32. // TODO 补充业务逻辑
  33. var wbwsLists []WbwsList
  34. err := db.Model(&wbwsLists).Column("id", "name").Where("name like ?", name+"%").Select()
  35. if err != nil {
  36. panic(err)
  37. }
  38. c.JSON(http.StatusOK, gin.H{
  39. "data": wbwsLists,
  40. })
  41. }
  42. }
  43. //return an HTML form for creating a new wbwsList
  44. func WbwsListsNew(db *pg.DB) gin.HandlerFunc {
  45. return func(c *gin.Context) {
  46. //TODO 业务逻辑
  47. c.HTML(http.StatusOK, "wbwsLists/new.html", gin.H{
  48. "message": "ok",
  49. })
  50. }
  51. }
  52. //create a new wbwsList
  53. func WbwsListsCreate(db *pg.DB) gin.HandlerFunc {
  54. return func(c *gin.Context) {
  55. name := c.Query("title")
  56. status := c.DefaultQuery("status", "private")
  57. newWbwsList := &WbwsList{
  58. Title: name,
  59. Status: status,
  60. OwnerId: 1, //TODO user_id
  61. }
  62. _, err := db.Model(newWbwsList).Insert()
  63. if err != nil {
  64. panic(err)
  65. }
  66. //建立成功
  67. c.JSON(http.StatusOK, gin.H{
  68. "message": "ok",
  69. })
  70. }
  71. }
  72. //display a specific WbwsList
  73. func WbwsListsShow(db *pg.DB, rdb *redis.Client) gin.HandlerFunc {
  74. return func(c *gin.Context) {
  75. id, err := strconv.Atoi(c.Param("id"))
  76. if err != nil {
  77. panic(err)
  78. }
  79. fmt.Println("get wbwsList id=" + c.Param("id"))
  80. rkey := "wbwslist://id"
  81. n, err := rdb.HExists(ctx, rkey, c.Param("id")).Result()
  82. if err == nil && n {
  83. val, err := rdb.HGet(ctx, rkey, c.Param("id")).Result()
  84. if err == nil {
  85. c.JSON(http.StatusOK, gin.H{
  86. "data": val,
  87. })
  88. return
  89. } else {
  90. //有错误或者没查到
  91. fmt.Println("redis error")
  92. }
  93. } else {
  94. fmt.Println("redis error or key not exist")
  95. }
  96. wbwsList := &WbwsList{Id: id}
  97. err = db.Model(wbwsList).Column("id", "parent_id", "channel_id", "book_id", "paragraph", "title", "status", "setting", "content", "version", "updated_at").WherePK().Select()
  98. if err != nil {
  99. panic(err)
  100. }
  101. c.JSON(http.StatusOK, gin.H{
  102. "data": wbwsList,
  103. })
  104. //写入redis
  105. rdb.HSet(ctx, rkey, id, wbwsList)
  106. }
  107. }
  108. //return an HTML form for edit a wbwsList
  109. func WbwsListsEdit(db *pg.DB) gin.HandlerFunc {
  110. return func(c *gin.Context) {
  111. //TODO 业务逻辑
  112. c.HTML(http.StatusOK, "wbwsLists/edit.html", gin.H{
  113. "name": "ok",
  114. })
  115. }
  116. }
  117. //update a specific wbwsList
  118. func WbwsListsUpdate(db *pg.DB, rdb *redis.Client) gin.HandlerFunc {
  119. return func(c *gin.Context) {
  120. var form WbwsList
  121. if err := c.ShouldBindJSON(&form); err != nil {
  122. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  123. return
  124. }
  125. //补充业务逻辑
  126. _, err := db.Model(&form).Column("name", "description", "description_type", "status", "setting").WherePK().Update()
  127. if err != nil {
  128. panic(err)
  129. }
  130. c.JSON(http.StatusOK, gin.H{
  131. "message": form,
  132. })
  133. //delete redis
  134. rkey := "wbwslist://id"
  135. rdb.HDel(ctx, rkey, strconv.Itoa(form.Id))
  136. }
  137. }
  138. //delete a specific wbwsList
  139. func WbwsListsDestroy(db *pg.DB, rdb *redis.Client) gin.HandlerFunc {
  140. return func(c *gin.Context) {
  141. id, err := strconv.Atoi(c.Param("id"))
  142. if err != nil {
  143. panic(err)
  144. }
  145. wbwsList := &WbwsList{
  146. Id: int(id),
  147. }
  148. _, err = db.Model(wbwsList).WherePK().Delete()
  149. if err != nil {
  150. panic(err)
  151. }
  152. rkey := "wbwslist://id"
  153. rdb.HDel(ctx, rkey, c.Param("id"))
  154. c.JSON(http.StatusOK, gin.H{
  155. "message": c.Param("id"),
  156. })
  157. }
  158. }