Files
customer-server/model/dto/product_dto.go
2026-03-14 10:02:49 +08:00

103 lines
4.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package dto - 产品DTO
// 功能:产品的增删改查、导入/导出、绑定/解绑客服账号的请求响应结构体
package dto
import (
"customer-server/model/entity"
"gitea.com/red-future/common/beans"
"github.com/gogf/gf/v2/frame/g"
)
// AddProductReq 添加产品
type AddProductReq struct {
g.Meta `path:"/add" method:"post" tags:"产品管理" summary:"添加产品" dc:"创建新的产品信息"` // 路由: POST /product/add
Name string `json:"name" v:"required"` // 产品名称
Description string `json:"description"` // 产品详情
}
type AddProductRes struct {
Id string `json:"id"`
}
// UpdateProductReq 更新产品
type UpdateProductReq struct {
g.Meta `path:"/update" method:"post" tags:"产品管理" summary:"更新产品" dc:"更新产品信息"` // 路由: POST /product/update
Id string `json:"id" v:"required"` // ID
Name string `json:"name"` // 产品名称
Description string `json:"description"` // 产品详情
}
// DeleteProductReq 删除产品
type DeleteProductReq struct {
g.Meta `path:"/delete" method:"post" tags:"产品管理" summary:"删除产品" dc:"删除指定产品"` // 路由: POST /product/delete
Id string `json:"id" v:"required"` // ID
}
// GetProductReq 获取单个产品
type GetProductReq struct {
g.Meta `path:"/one" method:"get" tags:"产品管理" summary:"获取产品详情" dc:"根据ID获取单个产品信息"` // 路由: GET /product/one
Id string `p:"id" v:"required"` // ID
}
// ListProductReq 获取产品列表
type ListProductReq struct {
g.Meta `path:"/list" method:"get" tags:"产品管理" summary:"获取产品列表" dc:"分页查询产品列表,支持按名称筛选"` // 路由: GET /product/list
beans.Page
Name string `p:"name"` // 筛选:产品名称
}
type ListProductRes struct {
List []*entity.Product `json:"list"`
Total int `json:"total"`
}
// ExportProductReq 导出产品
type ExportProductReq struct {
g.Meta `path:"/export" method:"get" tags:"产品管理" summary:"导出产品" dc:"导出产品为TXT格式的ZIP压缩包支持按名称筛选" produces:"application/zip"` // 路由: GET /product/export
Name string `p:"name" dc:"筛选:产品名称(支持模糊查询,为空则导出所有)"` // 筛选:产品名称
}
type ExportProductRes struct {
// 实际返回的是文件流,这个结构体只是为了 Swagger 文档
}
// ImportProductReq 导入产品
type ImportProductReq struct {
g.Meta `path:"/import" method:"post" tags:"产品管理" summary:"导入产品" dc:"上传ZIP文件批量导入产品TXT格式" consumes:"multipart/form-data"` // 路由: POST /product/import
File string `json:"file" type:"file" dc:"上传的ZIP文件" v:"required"` // ZIP文件
}
type ImportProductRes struct {
SuccessCount int `json:"successCount"` // 成功导入数量
FailCount int `json:"failCount"` // 失败数量
FailReasons []string `json:"failReasons"` // 失败原因列表
}
// BindProductReq 绑定产品到客服账号请求
type BindProductReq struct {
g.Meta `path:"/bind" method:"post" tags:"产品管理" summary:"绑定产品" dc:"将产品绑定到客服账号"`
ProductId string `json:"productId" v:"required#产品ID不能为空"`
AccountNames []string `json:"accountNames" v:"required" dc:"客服账号名称列表"`
}
// BindProductRes 绑定产品响应
type BindProductRes struct {
SuccessCount int `json:"successCount"` // 成功绑定数量
FailedIds []string `json:"failedIds"` // 失败的客服账号ID列表
Message string `json:"message"` // 提示信息
}
// UnbindProductReq 解绑产品请求
type UnbindProductReq struct {
g.Meta `path:"/unbind" method:"post" tags:"产品管理" summary:"解绑产品" dc:"将产品从客服账号解绑"`
ProductId string `json:"productId" v:"required#产品ID不能为空"`
AccountName string `json:"accountName" v:"required" dc:"客服账号名称"`
}
// UnbindProductRes 解绑产品响应
type UnbindProductRes struct {
Success bool `json:"success"`
Message string `json:"message"`
}