chore: import clean Agent Desk snapshot (2/7)

This commit is contained in:
2026-10-16 11:57:21 +00:00
parent 79176541c7
commit 89c5231c4c
461 changed files with 60092 additions and 0 deletions

View File

@@ -0,0 +1,375 @@
package dashboard
import (
"agent-desk/internal/builders"
"agent-desk/internal/models"
"agent-desk/internal/pkg/constants"
"agent-desk/internal/pkg/dto/request"
"agent-desk/internal/pkg/dto/response"
"agent-desk/internal/pkg/httpx"
"agent-desk/internal/pkg/httpx/params"
"agent-desk/internal/repositories"
"agent-desk/internal/services"
"github.com/gin-gonic/gin"
"github.com/mlogclub/simple/sqls"
"github.com/mlogclub/simple/web"
)
func DocPageAnyList(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageView); err != nil {
httpx.WriteJSON(ctx, err)
return
}
list, paging := services.SupportService.FindDocPagePage(params.NewPagedSqlCnd(ctx,
params.QueryFilter{ParamName: "parentId"},
params.QueryFilter{ParamName: "status"},
params.QueryFilter{ParamName: "title", Op: params.Like},
).Asc("sort_no").Desc("id"))
httpx.WriteJSON(ctx, &web.PageResult{Results: buildDashboardDocPages(list, false), Page: paging})
}
func DocPageGetList_all(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageView); err != nil {
httpx.WriteJSON(ctx, err)
return
}
list := services.SupportService.FindDocPages(sqls.NewCnd().Asc("sort_no").Asc("id"))
httpx.WriteJSON(ctx, buildDashboardDocPages(list, false))
}
func DocPageGetBy(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageView); err != nil {
httpx.WriteJSON(ctx, err)
return
}
id, ok := httpx.GetPathInt64(ctx, "id")
if !ok {
return
}
item := services.SupportService.FindDocPageByID(id)
if item == nil {
httpx.WriteJSON(ctx, httpx.JsonErrorMsg(ctx, "error.notFound"))
return
}
httpx.WriteJSON(ctx, builders.BuildDocPage(item, true))
}
func DocPagePostCreate(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageCreate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.SaveDocPageRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
item, err := services.SupportService.SaveDocPage(req, operator)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, builders.BuildDocPage(item, true))
}
func DocPagePostUpdate(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageUpdate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.SaveDocPageRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
item, err := services.SupportService.SaveDocPage(req, operator)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, builders.BuildDocPage(item, true))
}
func DocPagePostUpdate_settings(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageUpdate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.UpdateDocPageSettingsRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
item, err := services.SupportService.UpdateDocPageSettings(req, operator)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, builders.BuildDocPage(item, true))
}
func DocPagePostDelete(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageDelete); err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.DeleteByIDRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, services.SupportService.DeleteDocPage(req.ID))
}
func DocPagePostUpdate_sort(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageUpdate); err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.SortDocPagesRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, services.SupportService.SortDocPages(req))
}
func DocPagePostChange_status(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionDocPageUpdate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.ChangeDocPageStatusRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
item, err := services.SupportService.ChangeDocPageStatus(req, operator)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, builders.BuildDocPage(item, true))
}
func CategoryAnyList(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityView); err != nil {
httpx.WriteJSON(ctx, err)
return
}
list, paging := repositories.CategoryRepository.FindPageByCnd(sqls.DB(), params.NewPagedSqlCnd(ctx,
params.QueryFilter{ParamName: "status"},
params.QueryFilter{ParamName: "name", Op: params.Like},
).Asc("sort_no").Desc("id"))
httpx.WriteJSON(ctx, &web.PageResult{Results: builders.BuildPostCategories(list), Page: paging})
}
func CategoryGetList_all(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityView); err != nil {
httpx.WriteJSON(ctx, err)
return
}
list := repositories.CategoryRepository.Find(sqls.DB(), sqls.NewCnd().Asc("sort_no").Desc("id"))
httpx.WriteJSON(ctx, builders.BuildPostCategories(list))
}
func CategoryPostCreate(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityUpdate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.SaveCategoryRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
item, err := services.SupportService.SaveCategory(req, operator)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, builders.BuildCategory(item))
}
func CategoryPostUpdate(ctx *gin.Context) {
CategoryPostCreate(ctx)
}
func CategoryPostUpdateSort(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityUpdate); err != nil {
httpx.WriteJSON(ctx, err)
return
}
var ids []int64
if err := params.ReadJSON(ctx, &ids); err != nil {
httpx.WriteJSON(ctx, err)
return
}
if err := services.SupportService.UpdateCategorySort(ids); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, nil)
}
func CategoryPostDelete(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityUpdate); err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.DeleteByIDRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, services.SupportService.DeleteCategory(req.ID))
}
func PostAnyList(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityView); err != nil {
httpx.WriteJSON(ctx, err)
return
}
list, paging := repositories.PostRepository.FindPageByCnd(sqls.DB(), params.NewPagedSqlCnd(ctx,
params.QueryFilter{ParamName: "categoryId"},
params.QueryFilter{ParamName: "status"},
params.QueryFilter{ParamName: "title", Op: params.Like},
).Desc("id"))
httpx.WriteJSON(ctx, &web.PageResult{Results: buildDashboardPosts(list), Page: paging})
}
func PostGetBy(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityView); err != nil {
httpx.WriteJSON(ctx, err)
return
}
id, ok := httpx.GetPathInt64(ctx, "id")
if !ok {
return
}
post := repositories.PostRepository.Get(sqls.DB(), id)
if post == nil {
httpx.WriteJSON(ctx, httpx.JsonErrorMsg(ctx, "error.notFound"))
return
}
comments := repositories.CommentRepository.Find(sqls.DB(), sqls.NewCnd().Eq("post_id", id).Desc("is_accepted").Asc("id"))
httpx.WriteJSON(ctx, response.PostDetailResponse{Post: *builders.BuildPost(post, dashboardCategoryName(post.CategoryID), dashboardSupportUser(post.UserID)), Comments: buildDashboardComments(comments)})
}
func PostPostModerate(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityUpdate); err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.ModeratePostRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, services.SupportService.ModeratePost(req))
}
func PostPostAcceptComment(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityUpdate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.AcceptCommentRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, services.SupportService.AcceptComment(req, nil, operator))
}
func CommentPostCreate(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityUpdate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.CreateCommentRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
item, err := services.SupportService.CreateUserComment(req, operator)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, builders.BuildComment(item, operator.Nickname))
}
func CommentPostModerate(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionCommunityUpdate); err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.ModerateCommentRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, services.SupportService.ModerateComment(req))
}
func buildDashboardDocPages(list []models.DocPage, includeContent bool) []response.DocPageResponse {
results := make([]response.DocPageResponse, 0, len(list))
for _, item := range list {
if resp := builders.BuildDocPage(&item, includeContent); resp != nil {
results = append(results, *resp)
}
}
return results
}
func buildDashboardPosts(list []models.Post) []response.PostResponse {
results := make([]response.PostResponse, 0, len(list))
for _, item := range list {
if resp := builders.BuildPost(&item, dashboardCategoryName(item.CategoryID), dashboardSupportUser(item.UserID)); resp != nil {
results = append(results, *resp)
}
}
return results
}
func buildDashboardComments(list []models.Comment) []response.CommentResponse {
results := make([]response.CommentResponse, 0, len(list))
for _, item := range list {
if resp := builders.BuildComment(&item, dashboardCommentAuthorName(item)); resp != nil {
results = append(results, *resp)
}
}
return results
}
func dashboardCategoryName(id int64) string {
item := repositories.CategoryRepository.Get(sqls.DB(), id)
if item == nil {
return ""
}
return item.Name
}
func dashboardSupportUser(id int64) *models.User {
return repositories.UserRepository.Get(sqls.DB(), id)
}
func dashboardCommentAuthorName(item models.Comment) string {
user := repositories.UserRepository.Get(sqls.DB(), item.AuthorID)
if user == nil {
return ""
}
if user.Nickname != "" {
return user.Nickname
}
return user.Username
}