Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- 修复B-2:27个分页DTO字段名统一(list→items, page_size→size,删除total_pages) - 修复B-1:角色接口统一返回DTO(id小写,消除GORM大写字段名) - 修复C-1:套餐详情接口(GET /packages/:id)补充代理佣金字段 - 修复C-2:批量分配已存在记录由500改为静默跳过 - 修复C-3:创建系列授权响应在事务提交后构建,packages数组不再为空 - 新增C端开发测试登录接口(POST /api/c/v1/auth/dev-login,仅logging.development=true时生效) - 新增Hurl测试:card-price-verification-flow.hurl(导入卡→分配→C端价格验证) - 新增测试Excel数据文件和dev.env测试变量
84 lines
5.1 KiB
Go
84 lines
5.1 KiB
Go
package dto
|
|
|
|
// MyPackageListRequest 我的可售套餐列表请求
|
|
type MyPackageListRequest struct {
|
|
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
|
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
|
SeriesID *uint `json:"series_id" query:"series_id" validate:"omitempty" description:"套餐系列ID"`
|
|
PackageType *string `json:"package_type" query:"package_type" validate:"omitempty" description:"套餐类型"`
|
|
}
|
|
|
|
// MyPackageResponse 我的可售套餐响应
|
|
type MyPackageResponse struct {
|
|
ID uint `json:"id" description:"套餐ID"`
|
|
PackageCode string `json:"package_code" description:"套餐编码"`
|
|
PackageName string `json:"package_name" description:"套餐名称"`
|
|
PackageType string `json:"package_type" description:"套餐类型"`
|
|
SeriesID uint `json:"series_id" description:"套餐系列ID"`
|
|
SeriesName string `json:"series_name" description:"套餐系列名称"`
|
|
CostPrice int64 `json:"cost_price" description:"我的成本价(分)"`
|
|
SuggestedRetailPrice int64 `json:"suggested_retail_price" description:"建议售价(分)"`
|
|
ProfitMargin int64 `json:"profit_margin" description:"利润空间(分)= 建议售价 - 成本价"`
|
|
PriceSource string `json:"price_source" description:"价格来源 (series_pricing:系列加价, package_override:单套餐覆盖)"`
|
|
Status int `json:"status" description:"套餐状态 (1:启用, 2:禁用)"`
|
|
ShelfStatus int `json:"shelf_status" description:"上架状态 (1:上架, 2:下架)"`
|
|
}
|
|
|
|
// MyPackagePageResult 我的可售套餐分页结果
|
|
type MyPackagePageResult struct {
|
|
List []*MyPackageResponse `json:"items" description:"套餐列表"`
|
|
Total int64 `json:"total" description:"总数"`
|
|
Page int `json:"page" description:"当前页"`
|
|
PageSize int `json:"size" description:"每页数量"`
|
|
}
|
|
|
|
// MyPackageDetailResponse 我的可售套餐详情响应
|
|
type MyPackageDetailResponse struct {
|
|
ID uint `json:"id" description:"套餐ID"`
|
|
PackageCode string `json:"package_code" description:"套餐编码"`
|
|
PackageName string `json:"package_name" description:"套餐名称"`
|
|
PackageType string `json:"package_type" description:"套餐类型"`
|
|
Description string `json:"description" description:"套餐描述"`
|
|
SeriesID uint `json:"series_id" description:"套餐系列ID"`
|
|
SeriesName string `json:"series_name" description:"套餐系列名称"`
|
|
CostPrice int64 `json:"cost_price" description:"我的成本价(分)"`
|
|
SuggestedRetailPrice int64 `json:"suggested_retail_price" description:"建议售价(分)"`
|
|
ProfitMargin int64 `json:"profit_margin" description:"利润空间(分)"`
|
|
PriceSource string `json:"price_source" description:"价格来源 (series_pricing:系列加价, package_override:单套餐覆盖)"`
|
|
Status int `json:"status" description:"套餐状态 (1:启用, 2:禁用)"`
|
|
ShelfStatus int `json:"shelf_status" description:"上架状态 (1:上架, 2:下架)"`
|
|
}
|
|
|
|
// MySeriesAllocationListRequest 我的套餐系列分配列表请求
|
|
type MySeriesAllocationListRequest struct {
|
|
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
|
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
|
}
|
|
|
|
// MySeriesAllocationResponse 我的套餐系列分配响应
|
|
type MySeriesAllocationResponse struct {
|
|
ID uint `json:"id" description:"分配ID"`
|
|
SeriesID uint `json:"series_id" description:"套餐系列ID"`
|
|
SeriesCode string `json:"series_code" description:"系列编码"`
|
|
SeriesName string `json:"series_name" description:"系列名称"`
|
|
BaseCommissionMode string `json:"base_commission_mode" description:"基础佣金模式 (fixed:固定金额, percent:百分比)"`
|
|
BaseCommissionValue int64 `json:"base_commission_value" description:"基础佣金值"`
|
|
AvailablePackageCount int `json:"available_package_count" description:"可售套餐数量"`
|
|
AllocatorShopName string `json:"allocator_shop_name" description:"分配者店铺名称"`
|
|
Status int `json:"status" description:"状态 (1:启用, 2:禁用)"`
|
|
}
|
|
|
|
// MySeriesAllocationPageResult 我的套餐系列分配分页结果
|
|
type MySeriesAllocationPageResult struct {
|
|
List []*MySeriesAllocationResponse `json:"items" description:"分配列表"`
|
|
Total int64 `json:"total" description:"总数"`
|
|
Page int `json:"page" description:"当前页"`
|
|
PageSize int `json:"size" description:"每页数量"`
|
|
}
|
|
|
|
// PriceSource 价格来源常量
|
|
const (
|
|
PriceSourceSeriesPricing = "series_pricing"
|
|
PriceSourcePackageOverride = "package_override"
|
|
)
|