Files
hfb_sys/backend/internal/modules/csmanualentry/dto.go
T
yml2213 f33dc97f6f feat(admin): 客服手动录单支持平台与操作人,并可后台配置可选项
- 录单列表新增「平台」「操作人」两列,录单表单与编辑弹窗新增同名字段下拉
- 新增 cs_manual_entry_options 表与 4 个接口(读取/新增/重命名/删除),页面右上角弹窗维护平台与操作人
- 迁移 000087:cs_manual_entries 增加 platform/operator 列与索引,注册 cs_manual_entry:option_manage 权限并授予 ops/super_admin
- 记录保存名称快照,删除选项不影响历史记录;同类型重名返回 409,跨类型同名允许
- 顶部关键词查询支持命中平台/操作人
- 新增单测:选项 CRUD 边界与录单平台/操作人读写
2026-10-13 16:22:57 +08:00

97 lines
2.6 KiB
Go

package csmanualentry
import "time"
// 录单选项类型。
const (
OptionTypePlatform = "platform" // 平台
OptionTypeOperator = "operator" // 操作人
)
// CreateRequest 客服手动录单请求。
type CreateRequest struct {
EntryNo string `json:"entry_no" binding:"required"`
Platform string `json:"platform"`
Operator string `json:"operator"`
Remark string `json:"remark"`
}
// UpdateRequest 管理员修正录单请求。
type UpdateRequest struct {
EntryNo string `json:"entry_no" binding:"required"`
Platform string `json:"platform"`
Operator string `json:"operator"`
Remark string `json:"remark"`
}
// EntryDTO 录单记录。
type EntryDTO struct {
ID uint64 `json:"id"`
EntryNo string `json:"entry_no"`
Platform string `json:"platform"`
Operator string `json:"operator"`
AdminID uint64 `json:"admin_id"`
AdminName string `json:"admin_name"`
AdminUsername string `json:"admin_username"`
Remark string `json:"remark"`
CreatedAt time.Time `json:"created_at"`
}
// ListQuery 录单查询条件。
type ListQuery struct {
EntryNo string
Keyword string
AdminID uint64
StartDate string // YYYY-MM-DD(北京时间,闭区间)
EndDate string // YYYY-MM-DD(北京时间,闭区间)
Page int
PageSize int
}
// PaginatedResult 分页结果。
type PaginatedResult struct {
Items []EntryDTO `json:"items"`
Total int64 `json:"total"`
Page int `json:"page"`
PageSize int `json:"page_size"`
}
// AgentDayStatsDTO 某客服某日录单统计。
type AgentDayStatsDTO struct {
Date string `json:"date"` // YYYY-MM-DD(北京时间)
AdminID uint64 `json:"admin_id"`
AdminName string `json:"admin_name"`
Count int64 `json:"count"`
}
// CreateResult 录单结果。
type CreateResult struct {
Entry EntryDTO `json:"entry"`
}
// OptionDTO 录单可选项(平台 / 操作人)。
type OptionDTO struct {
ID uint64 `json:"id"`
Type string `json:"type"`
Name string `json:"name"`
SortOrder int `json:"sort_order"`
CreatedAt time.Time `json:"created_at"`
}
// OptionListDTO 平台与操作人选项集合,供录单表单下拉直接使用。
type OptionListDTO struct {
Platforms []OptionDTO `json:"platforms"`
Operators []OptionDTO `json:"operators"`
}
// CreateOptionRequest 新增平台 / 操作人选项。
type CreateOptionRequest struct {
Type string `json:"type" binding:"required"`
Name string `json:"name" binding:"required"`
}
// UpdateOptionRequest 重命名平台 / 操作人选项。
type UpdateOptionRequest struct {
Name string `json:"name" binding:"required"`
}