- 录单列表新增「平台」「操作人」两列,录单表单与编辑弹窗新增同名字段下拉 - 新增 cs_manual_entry_options 表与 4 个接口(读取/新增/重命名/删除),页面右上角弹窗维护平台与操作人 - 迁移 000087:cs_manual_entries 增加 platform/operator 列与索引,注册 cs_manual_entry:option_manage 权限并授予 ops/super_admin - 记录保存名称快照,删除选项不影响历史记录;同类型重名返回 409,跨类型同名允许 - 顶部关键词查询支持命中平台/操作人 - 新增单测:选项 CRUD 边界与录单平台/操作人读写
97 lines
2.6 KiB
Go
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"`
|
|
}
|