update_admin_user.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package admin_user
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "net/http"
  5. "sghgogs.com/sghblog/authorization-client/response"
  6. "sghgogs.com/sghblog/authorization-client/utils"
  7. pb "sghgogs.com/sghblog/authorization-service/proto"
  8. "sghgogs.com/sghblog/common"
  9. "strconv"
  10. )
  11. type UpdateRequest struct {
  12. PhoneNumber string `json:"phone_number" binding:"required"` // 手机号
  13. Email string `json:"email" binding:"required,email"` // 邮箱
  14. Avatar string `json:"avatar"` // 头像
  15. Roles []int64 `json:"roles"` // 角色ID
  16. Teams []int64 `json:"teams"` // 团队ID
  17. }
  18. // UpdateAdminUser
  19. // @summary 修改个人信息
  20. // @Description 更新用户内容
  21. // @Tags User 用户管理
  22. // @Accept json
  23. // @Produce json
  24. // @Param Authorization header string true "Bearer 用户令牌"
  25. // @Param id path int true "角色ID"
  26. // @Param body body UpdateRequest true "请求body"
  27. // @Success 200 {object} response.ApiResponse "成功"
  28. // @Failure 400 {object} response.ApiResponse "请求错误"
  29. // @Failure 500 {object} response.ApiResponse "内部错误"
  30. // @Router /v1/api/admin/user/{userID} [put]
  31. func (svc *ApiAdminUser) UpdateAdminUser(c *gin.Context) {
  32. var req UpdateRequest
  33. if err := c.ShouldBindJSON(&req); err != nil {
  34. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, err.Error()))
  35. return
  36. }
  37. if common.IsValidPhoneNumber(req.PhoneNumber) {
  38. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, "手机号格式有误"))
  39. return
  40. }
  41. if !common.IsValidEmail(req.Email) {
  42. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, "邮箱格式不对"))
  43. return
  44. }
  45. if len(req.Roles) > 0 {
  46. if isBool, err := common.ValidateNumericInt64(req.Roles); !isBool {
  47. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, err.Error()))
  48. return
  49. }
  50. }
  51. userID, err := strconv.ParseInt(c.Param("userID"), 10, 64)
  52. if err != nil || userID <= 0 {
  53. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, common.ErrorMessage[common.InvalidUserID]))
  54. return
  55. }
  56. ctx, _ := utils.CreateContextWithToken(c, "authorizationservice", "AdminUserService.UpdateAdminUser")
  57. var teams []int64
  58. userRequest := &pb.UpdateAdminUserRequest{
  59. Id: userID,
  60. PhoneNumber: req.PhoneNumber,
  61. Email: req.Email,
  62. Avatar: req.Avatar,
  63. Roles: req.Roles,
  64. Teams: teams,
  65. }
  66. _, err = svc.Service.UpdateAdminUser(ctx, userRequest)
  67. if err != nil {
  68. code, mgs := response.MicroErrorRequest(err)
  69. c.JSON(code, response.ErrorResponse(code, mgs))
  70. return
  71. }
  72. c.JSON(http.StatusOK, response.SuccessResponse(nil))
  73. }