123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package admin_user
- import (
- "github.com/gin-gonic/gin"
- "net/http"
- "sghgogs.com/sghblog/authorization-client/model/base"
- "sghgogs.com/sghblog/authorization-client/model/response/admin"
- "sghgogs.com/sghblog/authorization-client/response"
- "sghgogs.com/sghblog/authorization-client/utils"
- pb "sghgogs.com/sghblog/authorization-service/proto"
- "sghgogs.com/sghblog/common"
- "strconv"
- "time"
- )
- type ListAdminUserResponse struct {
- Items []admin.UserItem `json:"items"`
- TotalCount int64 `json:"total_count"`
- }
- func ConvertInt64ToTime(seconds int64) time.Time {
- return time.Unix(seconds, 0)
- }
- // ListAdminUsers
- // @summary 用户列表
- // @Description 获取用户列表
- // @Tags User 用户管理
- // @Accept json
- // @Produce json
- // @Param Authorization header string true "Bearer 用户令牌"
- // @Param page query int true "页码"
- // @Param page_size query int true "每页数量"
- // @Param keyword query string false "关键字"
- // @Param status query string false "状态" Enums(enabled, disabled)
- // @Success 200 {object} response.ApiResponse{data=ListAdminUserResponse} "成功"
- // @Failure 400 {object} response.ApiResponse "请求错误"
- // @Failure 500 {object} response.ApiResponse "内部错误"
- // @Router /v1/api/admin/users [get]
- func (svc *ApiAdminUser) ListAdminUsers(c *gin.Context) {
- validationConfig := response.ValidationConfig{
- Validators: map[string]func(interface{}) error{
- "page": response.ValidateInt, // 验证是否为整数
- "page_size": response.ValidateInt, // 验证是否为整数
- },
- Required: []string{"page", "page_size"},
- }
- params, err := response.ParseQueryParameters(c, validationConfig)
- if err != nil {
- c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, err.Error()))
- return
- }
- page, _ := strconv.Atoi(params["page"].(string))
- pageSize, _ := strconv.Atoi(params["page_size"].(string))
- keyword, status := "", ""
- if value, ok := params["keyword"]; ok {
- keyword = value.(string)
- }
- if value, ok := params["status"]; ok {
- status = value.(string)
- if status != "" && !base.IsValidStatus(status) {
- c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, common.ErrorMessage[common.StatusIsNotValid]))
- return
- }
- }
- ctx, _ := utils.CreateContextWithToken(c, "authorizationservice", "AdminUserService.ListAdminUsers")
- usersRequest := pb.ListAdminUsersRequest{
- Page: int32(page),
- PageSize: int32(pageSize),
- Keyword: keyword,
- }
- if len(status) > 0 {
- enum, _ := base.MapStatusToEnum(base.Status(status))
- usersRequest.Status = enum
- }
- listAdminRoles, err := svc.Service.ListAdminUsers(ctx, &usersRequest)
- if err != nil {
- code, mgs := response.MicroErrorRequest(err)
- c.JSON(code, response.ErrorResponse(code, mgs))
- return
- }
- items := make([]admin.UserItem, 0)
- for _, user := range listAdminRoles.Items {
- toStatus, _ := base.MapEnumToStatus(user.Status)
- items = append(items, admin.UserItem{
- Id: user.Id,
- Name: user.Username,
- PhoneNumber: user.PhoneNumber,
- Email: user.Email,
- Avatar: user.Avatar,
- Status: toStatus,
- CreatedAt: ConvertInt64ToTime(user.CreatedAt),
- UpdatedAt: ConvertInt64ToTime(user.UpdatedAt),
- Roles: base.RolesToResponse(user.Roles),
- Teams: base.TeamsToResponse(user.Teams),
- })
- }
- c.JSON(http.StatusOK, response.SuccessResponse(ListAdminUserResponse{
- TotalCount: listAdminRoles.TotalCount,
- Items: items,
- }))
- }
|