dicts.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package controller
  2. import (
  3. "errors"
  4. "net/http"
  5. "woord-core-service/model"
  6. "github.com/gin-gonic/gin"
  7. )
  8. type ListDictsResponse struct {
  9. Total uint `json:"total"`
  10. List []model.DictResult `json:"list"`
  11. }
  12. // 列出所有词库
  13. func ListDicts(c *gin.Context) {
  14. dicts, err := model.ListDicts(c.MustGet(AuthUserKey).(uint))
  15. if err != nil {
  16. respondUnknownError(c, err)
  17. return
  18. }
  19. respondOK(c, &ListDictsResponse{
  20. Total: uint(len(dicts)),
  21. List: dicts,
  22. })
  23. }
  24. type GetDictRequest struct {
  25. DictID uint `form:"id" binding:"required"`
  26. }
  27. type ListWordsResponse struct {
  28. Total uint `json:"total"`
  29. List []model.WordResult `json:"list"`
  30. }
  31. type GetDictResponse struct {
  32. *model.DictResult `json:"dict"`
  33. Words ListWordsResponse `json:"words"`
  34. }
  35. // 获取词库
  36. func GetDict(c *gin.Context) {
  37. var request GetDictRequest
  38. if err := c.ShouldBind(&request); err != nil {
  39. respondError(c, http.StatusBadRequest, err)
  40. return
  41. }
  42. dict, err := model.GetDict(request.DictID, c.MustGet(AuthUserKey).(uint))
  43. if err != nil {
  44. if errors.Is(err, model.ErrDictNotFound) {
  45. respondError(c, http.StatusNotFound, err)
  46. } else {
  47. respondUnknownError(c, err)
  48. }
  49. return
  50. }
  51. words, err := model.ListWords(request.DictID)
  52. if err != nil {
  53. respondUnknownError(c, err)
  54. return
  55. }
  56. respondOK(c, &GetDictResponse{
  57. DictResult: dict,
  58. Words: ListWordsResponse{
  59. Total: uint(len(words)),
  60. List: words,
  61. },
  62. })
  63. }
  64. type CreateDictRequest struct {
  65. DictName string `form:"name" binding:"required"`
  66. ValueTitle string `form:"valueTitle" binding:"required"`
  67. MeaningTitle string `form:"meaningTitle" binding:"required"`
  68. ExtraTitle string `form:"extraTitle"`
  69. }
  70. // 创建词库
  71. func CreateDict(c *gin.Context) {
  72. var request CreateDictRequest
  73. if err := c.ShouldBind(&request); err != nil {
  74. respondError(c, http.StatusBadRequest, err)
  75. return
  76. }
  77. dict, err := model.CreateDict(request.DictName, request.ValueTitle, request.MeaningTitle, request.ExtraTitle, c.MustGet(AuthUserKey).(uint))
  78. if err != nil {
  79. respondUnknownError(c, err)
  80. return
  81. }
  82. respondOK(c, dict)
  83. }
  84. type UpdateDictRequest struct {
  85. DictID uint `form:"id" binding:"required"`
  86. DictName string `form:"name" binding:"required"`
  87. ValueTitle string `form:"valueTitle" binding:"required"`
  88. MeaningTitle string `form:"meaningTitle" binding:"required"`
  89. ExtraTitle string `form:"extraTitle"`
  90. }
  91. // 更新词库
  92. func UpdateDict(c *gin.Context) {
  93. var request UpdateDictRequest
  94. if err := c.ShouldBind(&request); err != nil {
  95. respondError(c, http.StatusBadRequest, err)
  96. return
  97. }
  98. _, err := model.GetDict(request.DictID, c.MustGet(AuthUserKey).(uint))
  99. if err != nil {
  100. if errors.Is(err, model.ErrDictNotFound) {
  101. respondError(c, http.StatusNotFound, err)
  102. } else {
  103. respondUnknownError(c, err)
  104. }
  105. return
  106. }
  107. dict, err := model.UpdateDict(request.DictID, request.DictName, request.ValueTitle, request.MeaningTitle, request.ExtraTitle)
  108. if err != nil {
  109. respondUnknownError(c, err)
  110. return
  111. }
  112. respondOK(c, dict)
  113. }
  114. type DeleteDictRequest struct {
  115. DictID uint `form:"id" binding:"required"`
  116. }
  117. // 删除词库
  118. func DeleteDict(c *gin.Context) {
  119. var request DeleteDictRequest
  120. if err := c.ShouldBind(&request); err != nil {
  121. respondError(c, http.StatusBadRequest, err)
  122. return
  123. }
  124. _, err := model.GetDict(request.DictID, c.MustGet(AuthUserKey).(uint))
  125. if err != nil {
  126. if errors.Is(err, model.ErrDictNotFound) {
  127. respondError(c, http.StatusNotFound, err)
  128. } else {
  129. respondUnknownError(c, err)
  130. }
  131. return
  132. }
  133. err = model.DeleteDict(request.DictID)
  134. if err != nil {
  135. respondUnknownError(c, err)
  136. return
  137. }
  138. respondOK(c, nil)
  139. }