diff --git a/internal/bootstrap/routes.go b/internal/bootstrap/routes.go index 162ff73..ae037c0 100644 --- a/internal/bootstrap/routes.go +++ b/internal/bootstrap/routes.go @@ -165,6 +165,7 @@ func registerDashboardNotificationRoutes(group *gin.RouterGroup) { } func registerDashboardQuickReplyRoutes(group *gin.RouterGroup) { + group.GET("/:id", dashboard.QuickReplyGetBy) group.POST("/create", dashboard.QuickReplyPostCreate) group.POST("/delete", dashboard.QuickReplyPostDelete) group.Any("/list", dashboard.QuickReplyAnyList) diff --git a/internal/builders/quick_reply_builder.go b/internal/builders/quick_reply_builder.go new file mode 100644 index 0000000..dbdec7a --- /dev/null +++ b/internal/builders/quick_reply_builder.go @@ -0,0 +1,32 @@ +package builders + +import ( + "cs-agent/internal/models" + "cs-agent/internal/pkg/dto/response" +) + +func BuildQuickReplyResponse(item *models.QuickReply) *response.QuickReplyResponse { + if item == nil { + return nil + } + return &response.QuickReplyResponse{ + ID: item.ID, + GroupName: item.GroupName, + Title: item.Title, + Content: item.Content, + Status: item.Status, + SortNo: item.SortNo, + CreatedBy: item.CreateUserID, + } +} + +func BuildQuickReplyResponses(list []models.QuickReply) []response.QuickReplyResponse { + results := make([]response.QuickReplyResponse, 0, len(list)) + for _, item := range list { + result := BuildQuickReplyResponse(&item) + if result != nil { + results = append(results, *result) + } + } + return results +} diff --git a/internal/handlers/dashboard/quick_reply_handler.go b/internal/handlers/dashboard/quick_reply_handler.go index ee194c0..c0f8b40 100644 --- a/internal/handlers/dashboard/quick_reply_handler.go +++ b/internal/handlers/dashboard/quick_reply_handler.go @@ -1,9 +1,9 @@ package dashboard import ( + "cs-agent/internal/builders" "cs-agent/internal/pkg/constants" "cs-agent/internal/pkg/dto/request" - "cs-agent/internal/pkg/dto/response" "cs-agent/internal/pkg/enums" "cs-agent/internal/pkg/httpx" "cs-agent/internal/services" @@ -28,37 +28,35 @@ func QuickReplyAnyList(ctx *gin.Context) { ).Asc("sort_no").Desc("id") list, paging := services.QuickReplyService.FindPageByCnd(cnd) - results := make([]response.QuickReplyResponse, 0, len(list)) - for _, item := range list { - results = append(results, response.QuickReplyResponse{ - ID: item.ID, - GroupName: item.GroupName, - Title: item.Title, - Content: item.Content, - Status: item.Status, - SortNo: item.SortNo, - }) - } + results := builders.BuildQuickReplyResponses(list) httpx.WriteJSON(ctx, &web.PageResult{Results: results, Page: paging}) } +func QuickReplyGetBy(ctx *gin.Context) { + id, ok := httpx.GetPathInt64(ctx, "id") + if !ok { + return + } + if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionQuickReplyView); err != nil { + httpx.WriteJSON(ctx, err) + return + } + + item := services.QuickReplyService.Get(id) + if item == nil { + httpx.WriteJSON(ctx, web.JsonErrorMsg("快捷回复不存在")) + return + } + httpx.WriteJSON(ctx, builders.BuildQuickReplyResponse(item)) +} + func QuickReplyGetList_all(ctx *gin.Context) { if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionQuickReplyView); err != nil { httpx.WriteJSON(ctx, err) return } list := services.QuickReplyService.Find(sqls.NewCnd().Eq("status", enums.StatusOk).Asc("sort_no").Desc("id")) - results := make([]response.QuickReplyResponse, 0, len(list)) - for _, item := range list { - results = append(results, response.QuickReplyResponse{ - ID: item.ID, - GroupName: item.GroupName, - Title: item.Title, - Content: item.Content, - Status: item.Status, - SortNo: item.SortNo, - }) - } + results := builders.BuildQuickReplyResponses(list) httpx.WriteJSON(ctx, results) } @@ -79,14 +77,7 @@ func QuickReplyPostCreate(ctx *gin.Context) { httpx.WriteJSON(ctx, err) return } - httpx.WriteJSON(ctx, &response.QuickReplyResponse{ - ID: item.ID, - GroupName: item.GroupName, - Title: item.Title, - Content: item.Content, - Status: item.Status, - SortNo: item.SortNo, - }) + httpx.WriteJSON(ctx, builders.BuildQuickReplyResponse(item)) } func QuickReplyPostUpdate(ctx *gin.Context) {