admin_controller.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package controller
  2. import (
  3. "net/http"
  4. "github.com/2930134478/AI-CS/backend/service"
  5. "github.com/gin-gonic/gin"
  6. )
  7. // AdminController 负责处理管理员相关的 HTTP 请求。
  8. type AdminController struct {
  9. authService *service.AuthService
  10. }
  11. // NewAdminController 创建 AdminController 实例。
  12. func NewAdminController(authService *service.AuthService) *AdminController {
  13. return &AdminController{authService: authService}
  14. }
  15. type createAgentRequest struct {
  16. Username string `json:"username"`
  17. Password string `json:"password"`
  18. Role string `json:"role"`
  19. }
  20. // CreateAgent 处理创建客服或管理员账号的请求。
  21. func (a *AdminController) CreateAgent(c *gin.Context) {
  22. var req createAgentRequest
  23. if err := c.ShouldBindJSON(&req); err != nil {
  24. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  25. return
  26. }
  27. user, err := a.authService.CreateAgent(service.CreateAgentInput{
  28. Username: req.Username,
  29. Password: req.Password,
  30. Role: req.Role,
  31. })
  32. if err != nil {
  33. switch err {
  34. case service.ErrUsernameExists:
  35. c.JSON(http.StatusBadRequest, gin.H{"error": "用户名已存在"})
  36. default:
  37. c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
  38. }
  39. return
  40. }
  41. c.JSON(http.StatusOK, gin.H{
  42. "message": "创建成功",
  43. "user_id": user.ID,
  44. "username": user.Username,
  45. "role": user.Role,
  46. })
  47. }