package handler import ( "github.com/gin-gonic/gin" "github.com/muyuqingfeng/iloom/auth-service/internal/service" "github.com/muyuqingfeng/iloom/shared/pkg/response" ) type MemberHandler struct { svc *service.MemberService } func NewMemberHandler(svc *service.MemberService) *MemberHandler { return &MemberHandler{svc: svc} } type CreateMemberRequest struct { Username string `json:"username" binding:"required"` Password string `json:"password" binding:"required,min=6"` RealName string `json:"real_name"` Phone string `json:"phone"` } func (h *MemberHandler) List(c *gin.Context) { companyID := c.GetHeader("X-Company-ID") if companyID == "" { response.BadRequest(c, "company id not found") return } members, err := h.svc.List(c.Request.Context(), companyID) if err != nil { response.InternalError(c, err.Error()) return } response.OK(c, members) } func (h *MemberHandler) Create(c *gin.Context) { var req CreateMemberRequest if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, err.Error()) return } companyID := c.GetHeader("X-Company-ID") roleKey := c.GetHeader("X-User-Role") if companyID == "" { response.BadRequest(c, "missing company id") return } svcReq := service.CreateMemberRequest{ Username: req.Username, Password: req.Password, RealName: req.RealName, Phone: req.Phone, } member, err := h.svc.Create(c.Request.Context(), companyID, roleKey, svcReq) if err != nil { response.InternalError(c, err.Error()) return } response.OK(c, member) } func (h *MemberHandler) Delete(c *gin.Context) { memberID := c.Param("id") companyID := c.GetHeader("X-Company-ID") if companyID == "" { response.BadRequest(c, "company id not found") return } if err := h.svc.Delete(c.Request.Context(), memberID, companyID); err != nil { response.InternalError(c, err.Error()) return } response.OK(c, gin.H{"message": "member deleted"}) }