| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package controller
- import (
- "errors"
- "net/http"
- "woord-core-service/model"
- "github.com/gin-gonic/gin"
- )
- type ListDictsResponse struct {
- Total uint `json:"total"`
- List []model.DictResult `json:"list"`
- }
- // 列出所有词库
- func ListDicts(c *gin.Context) {
- dicts, err := model.ListDicts(c.MustGet(AuthUserKey).(uint))
- if err != nil {
- respondUnknownError(c, err)
- return
- }
- respondOK(c, &ListDictsResponse{
- Total: uint(len(dicts)),
- List: dicts,
- })
- }
- type GetDictRequest struct {
- DictID uint `form:"id" binding:"required"`
- }
- type ListWordsResponse struct {
- Total uint `json:"total"`
- List []model.WordResult `json:"list"`
- }
- type GetDictResponse struct {
- *model.DictResult `json:"dict"`
- Words ListWordsResponse `json:"words"`
- }
- // 获取词库
- func GetDict(c *gin.Context) {
- var request GetDictRequest
- if err := c.ShouldBind(&request); err != nil {
- respondError(c, http.StatusBadRequest, err)
- return
- }
- dict, err := model.GetDict(request.DictID, c.MustGet(AuthUserKey).(uint))
- if err != nil {
- if errors.Is(err, model.ErrDictNotFound) {
- respondError(c, http.StatusNotFound, err)
- } else {
- respondUnknownError(c, err)
- }
- return
- }
- words, err := model.ListWords(request.DictID)
- if err != nil {
- respondUnknownError(c, err)
- return
- }
- respondOK(c, &GetDictResponse{
- DictResult: dict,
- Words: ListWordsResponse{
- Total: uint(len(words)),
- List: words,
- },
- })
- }
- type CreateDictRequest struct {
- DictName string `form:"name" binding:"required"`
- ValueTitle string `form:"valueTitle" binding:"required"`
- MeaningTitle string `form:"meaningTitle" binding:"required"`
- ExtraTitle string `form:"extraTitle"`
- }
- // 创建词库
- func CreateDict(c *gin.Context) {
- var request CreateDictRequest
- if err := c.ShouldBind(&request); err != nil {
- respondError(c, http.StatusBadRequest, err)
- return
- }
- dict, err := model.CreateDict(request.DictName, request.ValueTitle, request.MeaningTitle, request.ExtraTitle, c.MustGet(AuthUserKey).(uint))
- if err != nil {
- respondUnknownError(c, err)
- return
- }
- respondOK(c, dict)
- }
- type UpdateDictRequest struct {
- DictID uint `form:"id" binding:"required"`
- DictName string `form:"name" binding:"required"`
- ValueTitle string `form:"valueTitle" binding:"required"`
- MeaningTitle string `form:"meaningTitle" binding:"required"`
- ExtraTitle string `form:"extraTitle"`
- }
- // 更新词库
- func UpdateDict(c *gin.Context) {
- var request UpdateDictRequest
- if err := c.ShouldBind(&request); err != nil {
- respondError(c, http.StatusBadRequest, err)
- return
- }
- _, err := model.GetDict(request.DictID, c.MustGet(AuthUserKey).(uint))
- if err != nil {
- if errors.Is(err, model.ErrDictNotFound) {
- respondError(c, http.StatusNotFound, err)
- } else {
- respondUnknownError(c, err)
- }
- return
- }
- dict, err := model.UpdateDict(request.DictID, request.DictName, request.ValueTitle, request.MeaningTitle, request.ExtraTitle)
- if err != nil {
- respondUnknownError(c, err)
- return
- }
- respondOK(c, dict)
- }
- type DeleteDictRequest struct {
- DictID uint `form:"id" binding:"required"`
- }
- // 删除词库
- func DeleteDict(c *gin.Context) {
- var request DeleteDictRequest
- if err := c.ShouldBind(&request); err != nil {
- respondError(c, http.StatusBadRequest, err)
- return
- }
- _, err := model.GetDict(request.DictID, c.MustGet(AuthUserKey).(uint))
- if err != nil {
- if errors.Is(err, model.ErrDictNotFound) {
- respondError(c, http.StatusNotFound, err)
- } else {
- respondUnknownError(c, err)
- }
- return
- }
- err = model.DeleteDict(request.DictID)
- if err != nil {
- respondUnknownError(c, err)
- return
- }
- respondOK(c, nil)
- }
|