func_detail.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package admin
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "github.com/xinliangnote/go-gin-api/configs"
  6. "github.com/xinliangnote/go-gin-api/internal/code"
  7. "github.com/xinliangnote/go-gin-api/internal/pkg/core"
  8. "github.com/xinliangnote/go-gin-api/internal/pkg/password"
  9. "github.com/xinliangnote/go-gin-api/internal/repository/redis"
  10. "github.com/xinliangnote/go-gin-api/internal/services/admin"
  11. )
  12. type detailResponse struct {
  13. Username string `json:"username"` // 用户名
  14. Nickname string `json:"nickname"` // 昵称
  15. Mobile string `json:"mobile"` // 手机号
  16. Menu []admin.ListMyMenuData `json:"menu"` // 菜单栏
  17. }
  18. // Detail 管理员详情
  19. // @Summary 管理员详情
  20. // @Description 管理员详情
  21. // @Tags API.admin
  22. // @Accept application/x-www-form-urlencoded
  23. // @Produce json
  24. // @Success 200 {object} detailResponse
  25. // @Failure 400 {object} code.Failure
  26. // @Router /api/admin/info [get]
  27. // @Security LoginToken
  28. func (h *handler) Detail() core.HandlerFunc {
  29. return func(ctx core.Context) {
  30. res := new(detailResponse)
  31. searchOneData := new(admin.SearchOneData)
  32. searchOneData.Id = ctx.SessionUserInfo().UserID
  33. searchOneData.IsUsed = 1
  34. info, err := h.adminService.Detail(ctx, searchOneData)
  35. if err != nil {
  36. ctx.AbortWithError(core.Error(
  37. http.StatusBadRequest,
  38. code.AdminDetailError,
  39. code.Text(code.AdminDetailError)).WithError(err),
  40. )
  41. return
  42. }
  43. menuCacheData, err := h.cache.Get(configs.RedisKeyPrefixLoginUser+password.GenerateLoginToken(searchOneData.Id)+":menu", redis.WithTrace(ctx.Trace()))
  44. if err != nil {
  45. ctx.AbortWithError(core.Error(
  46. http.StatusBadRequest,
  47. code.AdminDetailError,
  48. code.Text(code.AdminDetailError)).WithError(err),
  49. )
  50. return
  51. }
  52. var menuData []admin.ListMyMenuData
  53. err = json.Unmarshal([]byte(menuCacheData), &menuData)
  54. if err != nil {
  55. ctx.AbortWithError(core.Error(
  56. http.StatusBadRequest,
  57. code.AdminDetailError,
  58. code.Text(code.AdminDetailError)).WithError(err),
  59. )
  60. return
  61. }
  62. res.Username = info.Username
  63. res.Nickname = info.Nickname
  64. res.Mobile = info.Mobile
  65. res.Menu = menuData
  66. ctx.Payload(res)
  67. }
  68. }