package admin_handler import ( "encoding/json" "net/http" "github.com/xinliangnote/go-gin-api/configs" "github.com/xinliangnote/go-gin-api/internal/api/service/admin_service" "github.com/xinliangnote/go-gin-api/internal/pkg/cache" "github.com/xinliangnote/go-gin-api/internal/pkg/code" "github.com/xinliangnote/go-gin-api/internal/pkg/core" "github.com/xinliangnote/go-gin-api/internal/pkg/password" "github.com/xinliangnote/go-gin-api/pkg/errno" "github.com/spf13/cast" ) type detailResponse struct { Username string `json:"username"` // 用户名 Nickname string `json:"nickname"` // 昵称 Mobile string `json:"mobile"` // 手机号 Menu []admin_service.ListMyMenuData `json:"menu"` // 菜单栏 } // Detail 管理员详情 // @Summary 管理员详情 // @Description 管理员详情 // @Tags API.admin // @Accept json // @Produce json // @Success 200 {object} detailResponse // @Failure 400 {object} code.Failure // @Router /api/admin/info [get] func (h *handler) Detail() core.HandlerFunc { return func(c core.Context) { res := new(detailResponse) searchOneData := new(admin_service.SearchOneData) searchOneData.Id = cast.ToInt32(c.UserID()) searchOneData.IsUsed = 1 info, err := h.adminService.Detail(c, searchOneData) if err != nil { c.AbortWithError(errno.NewError( http.StatusBadRequest, code.AdminDetailError, code.Text(code.AdminDetailError)).WithErr(err), ) return } menuCacheData, err := h.cache.Get(configs.RedisKeyPrefixLoginUser+password.GenerateLoginToken(searchOneData.Id)+":menu", cache.WithTrace(c.Trace())) if err != nil { c.AbortWithError(errno.NewError( http.StatusBadRequest, code.AdminDetailError, code.Text(code.AdminDetailError)).WithErr(err), ) return } var menuData []admin_service.ListMyMenuData err = json.Unmarshal([]byte(menuCacheData), &menuData) if err != nil { c.AbortWithError(errno.NewError( http.StatusBadRequest, code.AdminDetailError, code.Text(code.AdminDetailError)).WithErr(err), ) return } res.Username = info.Username res.Nickname = info.Nickname res.Mobile = info.Mobile res.Menu = menuData c.Payload(res) } }