fix: update admin flows and review report
This commit is contained in:
@@ -243,11 +243,47 @@ func (h *UserHandler) UpdateUserStatus(c *gin.Context) {
|
||||
}
|
||||
|
||||
func (h *UserHandler) GetUserRoles(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"roles": []interface{}{}})
|
||||
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid user id"})
|
||||
return
|
||||
}
|
||||
|
||||
roles, err := h.userService.GetUserRoles(c.Request.Context(), id)
|
||||
if err != nil {
|
||||
handleError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"code": 0,
|
||||
"message": "success",
|
||||
"data": roles,
|
||||
})
|
||||
}
|
||||
|
||||
func (h *UserHandler) AssignRoles(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"message": "role assignment not implemented"})
|
||||
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid user id"})
|
||||
return
|
||||
}
|
||||
|
||||
var req struct {
|
||||
RoleIDs []int64 `json:"role_ids" binding:"required"`
|
||||
}
|
||||
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.userService.AssignRoles(c.Request.Context(), id, req.RoleIDs); err != nil {
|
||||
handleError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "角色分配成功"})
|
||||
}
|
||||
|
||||
func (h *UserHandler) BatchUpdateStatus(c *gin.Context) {
|
||||
@@ -287,15 +323,62 @@ func (h *UserHandler) UploadAvatar(c *gin.Context) {
|
||||
}
|
||||
|
||||
func (h *UserHandler) ListAdmins(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"admins": []interface{}{}})
|
||||
admins, err := h.userService.ListAdmins(c.Request.Context())
|
||||
if err != nil {
|
||||
handleError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
adminResponses := make([]*UserResponse, len(admins))
|
||||
for i, u := range admins {
|
||||
adminResponses[i] = toUserResponse(u)
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "success", "data": adminResponses})
|
||||
}
|
||||
|
||||
func (h *UserHandler) CreateAdmin(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"message": "admin creation not implemented"})
|
||||
var req struct {
|
||||
Username string `json:"username" binding:"required"`
|
||||
Password string `json:"password" binding:"required"`
|
||||
Email string `json:"email"`
|
||||
Nickname string `json:"nickname"`
|
||||
}
|
||||
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
adminReq := &service.CreateAdminRequest{
|
||||
Username: req.Username,
|
||||
Password: req.Password,
|
||||
Email: req.Email,
|
||||
Nickname: req.Nickname,
|
||||
}
|
||||
|
||||
admin, err := h.userService.CreateAdmin(c.Request.Context(), adminReq)
|
||||
if err != nil {
|
||||
handleError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusCreated, gin.H{"code": 0, "message": "管理员创建成功", "data": toUserResponse(admin)})
|
||||
}
|
||||
|
||||
func (h *UserHandler) DeleteAdmin(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"message": "admin deletion not implemented"})
|
||||
id, err := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"code": 400, "message": "invalid user id"})
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.userService.DeleteAdmin(c.Request.Context(), id); err != nil {
|
||||
handleError(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"code": 0, "message": "管理员已移除"})
|
||||
}
|
||||
|
||||
type UserResponse struct {
|
||||
|
||||
Reference in New Issue
Block a user