package handler import ( "strconv" "affiliate_dash/internal/middleware" "affiliate_dash/internal/pkg/response" "affiliate_dash/internal/service" "github.com/gin-gonic/gin" ) func (h *MerchantHandler) ListMembers(c *gin.Context) { members, err := h.merchantSvc.ListMembers(middleware.GetMerchantID(c)) if err != nil { response.ServerError(c, err.Error()) return } response.OK(c, members) } type addMemberReq struct { UserID uint `json:"user_id"` Username string `json:"username"` Password string `json:"password"` Nickname string `json:"nickname"` Role string `json:"role" binding:"required"` IsDefault bool `json:"is_default"` } func (h *MerchantHandler) AddCurrentMerchantMember(c *gin.Context) { var req addMemberReq if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, "参数错误:角色必填") return } member, err := h.merchantSvc.AddMember(middleware.GetMerchantID(c), service.AddMemberInput{ UserID: req.UserID, Username: req.Username, Password: req.Password, Nickname: req.Nickname, Role: req.Role, IsDefault: req.IsDefault, }, middleware.GetUserID(c)) if err != nil { response.BadRequest(c, err.Error()) return } response.OK(c, member) } type updateMemberReq struct { Role string `json:"role" binding:"required"` Status int `json:"status"` IsDefault bool `json:"is_default"` } func (h *MerchantHandler) UpdateCurrentMerchantMember(c *gin.Context) { memberID, _ := strconv.ParseUint(c.Param("id"), 10, 64) var req updateMemberReq if memberID == 0 || c.ShouldBindJSON(&req) != nil { response.BadRequest(c, "参数错误:角色必填") return } member, err := h.merchantSvc.UpdateMember(middleware.GetMerchantID(c), uint(memberID), service.UpdateMemberInput{ Role: req.Role, Status: req.Status, IsDefault: req.IsDefault, }, middleware.GetUserID(c)) if err != nil { response.BadRequest(c, err.Error()) return } response.OK(c, member) } func (h *MerchantHandler) RemoveCurrentMerchantMember(c *gin.Context) { memberID, _ := strconv.ParseUint(c.Param("id"), 10, 64) if memberID == 0 { response.BadRequest(c, "参数错误") return } if err := h.merchantSvc.RemoveMember(middleware.GetMerchantID(c), uint(memberID), middleware.GetUserID(c)); err != nil { response.BadRequest(c, err.Error()) return } response.OK(c, nil) } func (h *MerchantHandler) ListRoles(c *gin.Context) { roles, err := h.merchantSvc.ListRoles(middleware.GetMerchantID(c)) if err != nil { response.ServerError(c, err.Error()) return } response.OK(c, roles) } type createMerchantRoleReq struct { Code string `json:"code" binding:"required"` Name string `json:"name" binding:"required"` Permissions []string `json:"permissions"` } func (h *MerchantHandler) CreateRole(c *gin.Context) { var req createMerchantRoleReq if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, "参数错误:角色编码和名称必填") return } role, err := h.merchantSvc.CreateRole(middleware.GetMerchantID(c), service.MerchantRoleInput{ Code: req.Code, Name: req.Name, Permissions: req.Permissions, }, middleware.GetUserID(c)) if err != nil { response.BadRequest(c, err.Error()) return } response.OK(c, role) } func (h *MerchantHandler) UpdateRole(c *gin.Context) { roleID, _ := strconv.ParseUint(c.Param("id"), 10, 64) var req createMerchantRoleReq if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, "参数错误:角色名称必填") return } role, err := h.merchantSvc.UpdateRole(middleware.GetMerchantID(c), uint(roleID), service.MerchantRoleInput{ Name: req.Name, Permissions: req.Permissions, }, middleware.GetUserID(c)) if err != nil { response.BadRequest(c, err.Error()) return } response.OK(c, role) }