init push

This commit is contained in:
2026-05-21 19:52:45 +08:00
commit e3f75311ab
1280 changed files with 179173 additions and 0 deletions

View File

@@ -0,0 +1,130 @@
package v1
import (
"github.com/labstack/echo/v4"
v1 "github.com/chaitin/panda-wiki/api/kb/v1"
"github.com/chaitin/panda-wiki/consts"
"github.com/chaitin/panda-wiki/domain"
)
// KBUserList
//
// @Summary KBUserList
// @Description KBUserList
// @Tags knowledge_base
// @Accept json
// @Produce json
// @Security bearerAuth
// @Param kb_id query string true "Knowledge Base ID"
// @Success 200 {object} domain.PWResponse{data=[]v1.KBUserListItemResp}
// @Router /api/v1/knowledge_base/user/list [get]
func (h *KnowledgeBaseHandler) KBUserList(c echo.Context) error {
var req v1.KBUserListReq
if err := c.Bind(&req); err != nil {
return h.NewResponseWithError(c, "request params is invalid", err)
}
if err := c.Validate(req); err != nil {
return h.NewResponseWithError(c, "validate request params failed", err)
}
resp, err := h.usecase.GetKBUserList(c.Request().Context(), req)
if err != nil {
return h.NewResponseWithError(c, "get kb user list failed", err)
}
return h.NewResponseWithData(c, resp)
}
// KBUserInvite
//
// @Summary KBUserInvite
// @Description Invite user to knowledge base
// @Tags knowledge_base
// @Accept json
// @Produce json
// @Security bearerAuth
// @Param param body v1.KBUserInviteReq true "Invite User Request"
// @Success 200 {object} domain.Response
// @Router /api/v1/knowledge_base/user/invite [post]
func (h *KnowledgeBaseHandler) KBUserInvite(c echo.Context) error {
var req v1.KBUserInviteReq
if err := c.Bind(&req); err != nil {
return h.NewResponseWithError(c, "invalid request", err)
}
if err := c.Validate(&req); err != nil {
return h.NewResponseWithError(c, "validate request failed", err)
}
if !domain.GetBaseEditionLimitation(c.Request().Context()).AllowAdminPerm && req.Perm != consts.UserKBPermissionFullControl {
return h.NewResponseWithError(c, "当前版本不支持管理员分权控制", nil)
}
err := h.usecase.KBUserInvite(c.Request().Context(), req)
if err != nil {
return h.NewResponseWithError(c, "invite user to kb failed", err)
}
return h.NewResponseWithData(c, nil)
}
// KBUserUpdate
//
// @Summary KBUserUpdate
// @Description Update user permission in knowledge base
// @Tags knowledge_base
// @Accept json
// @Produce json
// @Security bearerAuth
// @Param param body v1.KBUserUpdateReq true "Update User Permission Request"
// @Success 200 {object} domain.Response
// @Router /api/v1/knowledge_base/user/update [patch]
func (h *KnowledgeBaseHandler) KBUserUpdate(c echo.Context) error {
var req v1.KBUserUpdateReq
if err := c.Bind(&req); err != nil {
return h.NewResponseWithError(c, "invalid request", err)
}
if err := c.Validate(&req); err != nil {
return h.NewResponseWithError(c, "validate request failed", err)
}
if !domain.GetBaseEditionLimitation(c.Request().Context()).AllowAdminPerm && req.Perm != consts.UserKBPermissionFullControl {
return h.NewResponseWithError(c, "当前版本不支持管理员分权控制", nil)
}
err := h.usecase.UpdateUserKB(c.Request().Context(), req)
if err != nil {
return h.NewResponseWithError(c, "update user kb permission failed", err)
}
return h.NewResponseWithData(c, nil)
}
// KBUserDelete
//
// @Summary KBUserDelete
// @Description Remove user from knowledge base
// @Tags knowledge_base
// @Accept json
// @Produce json
// @Security bearerAuth
// @Param param query v1.KBUserDeleteReq true "Remove User Request"
// @Success 200 {object} domain.Response
// @Router /api/v1/knowledge_base/user/delete [delete]
func (h *KnowledgeBaseHandler) KBUserDelete(c echo.Context) error {
var req v1.KBUserDeleteReq
if err := c.Bind(&req); err != nil {
return h.NewResponseWithError(c, "invalid request", err)
}
if err := c.Validate(&req); err != nil {
return h.NewResponseWithError(c, "validate request failed", err)
}
err := h.usecase.KBUserDelete(c.Request().Context(), req)
if err != nil {
return h.NewResponseWithError(c, "remove user from kb failed", err)
}
return h.NewResponseWithData(c, nil)
}