feat: add QuickReplyGetBy route and builder functions for quick replies

This commit is contained in:
mlogclub
2026-05-28 09:11:48 +08:00
parent b944c3221f
commit b3f5824fd6
3 changed files with 55 additions and 31 deletions
+1
View File
@@ -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)
+32
View File
@@ -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
}
@@ -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) {