refdicts.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package mint
  2. import (
  3. "net/http"
  4. "strconv"
  5. "fmt"
  6. "github.com/gin-gonic/gin"
  7. "github.com/go-pg/pg/v10"
  8. "github.com/go-redis/redis/v8"
  9. "time"
  10. )
  11. type RefDict struct {
  12. Id int `form:"id" json:"id" `
  13. Word string `form:"word" json:"word" `
  14. WordEn string `form:"type" json:"type"`
  15. Meaning string `form:"meaning" json:"meaning"`
  16. Lang string `form:"lang" json:"lang"`
  17. RefDictNameId int
  18. CreatedAt time.Time
  19. }
  20. //display a list of all dictionaries
  21. func RefDictsIndex(db *pg.DB) gin.HandlerFunc {
  22. return func(c *gin.Context) {
  23. word:= c.DefaultQuery("word","")
  24. // TODO 补充业务逻辑
  25. var dictionaries []RefDict
  26. err := db.Model(&dictionaries).Column("id","word","type","grammar","meaning").Where("word = ? ",word).Select()
  27. if err != nil {
  28. panic(err)
  29. }
  30. c.JSON(http.StatusOK, gin.H{
  31. "message":"success",
  32. "data": dictionaries,
  33. })
  34. }
  35. }
  36. //display a specific RefDict
  37. func RefDictsShow(db *pg.DB, rdb *redis.Client) gin.HandlerFunc {
  38. return func(c *gin.Context) {
  39. id,err := strconv.Atoi(c.Param("id"))
  40. if err != nil {
  41. panic(err)
  42. }
  43. fmt.Println("get refdict id=" + c.Param("id"))
  44. rkey := "refdict://id/"+c.Param("id")
  45. n, err := rdb.Exists(ctx,rkey).Result()
  46. if err != nil {
  47. fmt.Println(err)
  48. }else if n == 0 {
  49. fmt.Println("redis key not exist")
  50. }else{
  51. fmt.Println("redis key exist")
  52. val, err := rdb.HGetAll(ctx, rkey).Result()
  53. if err != nil || val == nil {
  54. //有错误或者没查到
  55. fmt.Println("redis error")
  56. }else{
  57. fmt.Println("redis no error")
  58. c.JSON(http.StatusOK, gin.H{
  59. "data": val,
  60. })
  61. return
  62. }
  63. }
  64. refdict := &RefDict{Id: id}
  65. err = db.Model(refdict).Column("id","uid","name","description","description_type","owner_id","setting","status","version","updated_at").WherePK().Select()
  66. if err != nil {
  67. panic(err)
  68. }
  69. //写入redis
  70. rdb.HSet(ctx,rkey,"id",refdict.Id)
  71. rdb.HSet(ctx,rkey,"word",refdict.Word)
  72. rdb.HSet(ctx,rkey,"word_en",refdict.WordEn)
  73. rdb.HSet(ctx,rkey,"meaning",refdict.Meaning)
  74. rdb.HSet(ctx,rkey,"lang",refdict.Lang)
  75. rdb.HSet(ctx,rkey,"ref_dict_name_id",refdict.RefDictNameId)
  76. c.JSON(http.StatusOK, gin.H{
  77. "message":"success",
  78. "data": refdict,
  79. })
  80. }
  81. }