func_offline.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package admin
  2. import (
  3. "net/http"
  4. "github.com/xinliangnote/go-gin-api/configs"
  5. "github.com/xinliangnote/go-gin-api/internal/code"
  6. "github.com/xinliangnote/go-gin-api/internal/pkg/core"
  7. "github.com/xinliangnote/go-gin-api/internal/pkg/password"
  8. "github.com/xinliangnote/go-gin-api/internal/repository/redis"
  9. )
  10. type offlineRequest struct {
  11. Id string `form:"id"` // 主键ID
  12. }
  13. type offlineResponse struct {
  14. Id int32 `json:"id"` // 主键ID
  15. }
  16. // Offline 下线管理员
  17. // @Summary 下线管理员
  18. // @Description 下线管理员
  19. // @Tags API.admin
  20. // @Accept application/x-www-form-urlencoded
  21. // @Produce json
  22. // @Param id formData string true "Hashid"
  23. // @Success 200 {object} offlineResponse
  24. // @Failure 400 {object} code.Failure
  25. // @Router /api/admin/offline [patch]
  26. // @Security LoginToken
  27. func (h *handler) Offline() core.HandlerFunc {
  28. return func(c core.Context) {
  29. req := new(offlineRequest)
  30. res := new(offlineResponse)
  31. if err := c.ShouldBindForm(req); err != nil {
  32. c.AbortWithError(core.Error(
  33. http.StatusBadRequest,
  34. code.ParamBindError,
  35. code.Text(code.ParamBindError)).WithError(err),
  36. )
  37. return
  38. }
  39. ids, err := h.hashids.HashidsDecode(req.Id)
  40. if err != nil {
  41. c.AbortWithError(core.Error(
  42. http.StatusBadRequest,
  43. code.HashIdsDecodeError,
  44. code.Text(code.HashIdsDecodeError)).WithError(err),
  45. )
  46. return
  47. }
  48. id := int32(ids[0])
  49. b := h.cache.Del(configs.RedisKeyPrefixLoginUser+password.GenerateLoginToken(id), redis.WithTrace(c.Trace()))
  50. if !b {
  51. c.AbortWithError(core.Error(
  52. http.StatusBadRequest,
  53. code.AdminOfflineError,
  54. code.Text(code.AdminOfflineError)),
  55. )
  56. return
  57. }
  58. res.Id = id
  59. c.Payload(res)
  60. }
  61. }