228 lines
8.8 KiB
Go
228 lines
8.8 KiB
Go
|
|
package v1
|
|||
|
|
|
|||
|
|
// VIP等级管理相关请求和响应结构
|
|||
|
|
|
|||
|
|
// VipLevelCreateReq 创建VIP等级请求
|
|||
|
|
type VipLevelCreateReq struct {
|
|||
|
|
Name string `json:"name" v:"required|length:1,50#VIP等级名称不能为空|VIP等级名称长度为1-50个字符"`
|
|||
|
|
Level int `json:"level" v:"required|min:1#VIP等级不能为空|VIP等级必须大于0"`
|
|||
|
|
Duration int `json:"duration" v:"required|min:1#有效期不能为空|有效期必须大于0天"`
|
|||
|
|
Price string `json:"price" v:"required|regex:^\\d+(\\.\\d{1,2})?$#价格不能为空|价格格式不正确"`
|
|||
|
|
Description string `json:"description" v:"max:500#描述长度不能超过500个字符"`
|
|||
|
|
Features string `json:"features" v:"max:1000#特权描述长度不能超过1000个字符"`
|
|||
|
|
Sort int `json:"sort" v:"min:0#排序值不能小于0"`
|
|||
|
|
Status int `json:"status" v:"in:0,1#状态值只能为0或1"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelCreateRes 创建VIP等级响应
|
|||
|
|
type VipLevelCreateRes struct {
|
|||
|
|
Id uint `json:"id"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelUpdateReq 更新VIP等级请求
|
|||
|
|
type VipLevelUpdateReq struct {
|
|||
|
|
Id uint `json:"id" v:"required|min:1#VIP等级ID不能为空"`
|
|||
|
|
Name string `json:"name" v:"required|length:1,50#VIP等级名称不能为空|VIP等级名称长度为1-50个字符"`
|
|||
|
|
Level int `json:"level" v:"required|min:1#VIP等级不能为空|VIP等级必须大于0"`
|
|||
|
|
Duration int `json:"duration" v:"required|min:1#有效期不能为空|有效期必须大于0天"`
|
|||
|
|
Price string `json:"price" v:"required|regex:^\\d+(\\.\\d{1,2})?$#价格不能为空|价格格式不正确"`
|
|||
|
|
Description string `json:"description" v:"max:500#描述长度不能超过500个字符"`
|
|||
|
|
Features string `json:"features" v:"max:1000#特权描述长度不能超过1000个字符"`
|
|||
|
|
Sort int `json:"sort" v:"min:0#排序值不能小于0"`
|
|||
|
|
Status int `json:"status" v:"in:0,1#状态值只能为0或1"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelListReq 获取VIP等级列表请求
|
|||
|
|
type VipLevelListReq struct {
|
|||
|
|
Page int `json:"page" v:"min:1#页码必须大于0"`
|
|||
|
|
Size int `json:"size" v:"min:1|max:100#每页数量必须大于0|每页数量不能超过100"`
|
|||
|
|
Status int `json:"status" v:"in:-1,0,1#状态值只能为-1,0,1"`
|
|||
|
|
Keyword string `json:"keyword" v:"max:50#关键词长度不能超过50个字符"`
|
|||
|
|
MinPrice string `json:"min_price" v:"regex:^\\d*(\\.\\d{1,2})?$#最低价格格式不正确"`
|
|||
|
|
MaxPrice string `json:"max_price" v:"regex:^\\d*(\\.\\d{1,2})?$#最高价格格式不正确"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelListRes 获取VIP等级列表响应
|
|||
|
|
type VipLevelListRes struct {
|
|||
|
|
List []VipLevelItem `json:"list"`
|
|||
|
|
Total int `json:"total"`
|
|||
|
|
Page int `json:"page"`
|
|||
|
|
Size int `json:"size"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelItem VIP等级列表项
|
|||
|
|
type VipLevelItem struct {
|
|||
|
|
Id uint `json:"id"`
|
|||
|
|
Name string `json:"name"`
|
|||
|
|
Level int `json:"level"`
|
|||
|
|
Duration int `json:"duration"`
|
|||
|
|
Price string `json:"price"`
|
|||
|
|
Description string `json:"description"`
|
|||
|
|
Features string `json:"features"`
|
|||
|
|
Sort int `json:"sort"`
|
|||
|
|
Status int `json:"status"`
|
|||
|
|
CreatedAt string `json:"created_at"`
|
|||
|
|
UpdatedAt string `json:"updated_at"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelDetailReq 获取VIP等级详情请求
|
|||
|
|
type VipLevelDetailReq struct {
|
|||
|
|
Id uint `json:"id" v:"required|min:1#VIP等级ID不能为空"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelDetailRes 获取VIP等级详情响应
|
|||
|
|
type VipLevelDetailRes struct {
|
|||
|
|
VipLevel VipLevelDetail `json:"vip_level"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelDetail VIP等级详情
|
|||
|
|
type VipLevelDetail struct {
|
|||
|
|
Id uint `json:"id"`
|
|||
|
|
Name string `json:"name"`
|
|||
|
|
Level int `json:"level"`
|
|||
|
|
Duration int `json:"duration"`
|
|||
|
|
Price string `json:"price"`
|
|||
|
|
Description string `json:"description"`
|
|||
|
|
Features string `json:"features"`
|
|||
|
|
Sort int `json:"sort"`
|
|||
|
|
Status int `json:"status"`
|
|||
|
|
CreatedAt string `json:"created_at"`
|
|||
|
|
UpdatedAt string `json:"updated_at"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelDeleteReq 删除VIP等级请求
|
|||
|
|
type VipLevelDeleteReq struct {
|
|||
|
|
Id uint `json:"id" v:"required|min:1#VIP等级ID不能为空"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelStatusReq 更新VIP等级状态请求
|
|||
|
|
type VipLevelStatusReq struct {
|
|||
|
|
Id uint `json:"id" v:"required|min:1#VIP等级ID不能为空"`
|
|||
|
|
Status int `json:"status" v:"in:0,1#状态值只能为0或1"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelBatchStatusReq 批量更新VIP等级状态请求
|
|||
|
|
type VipLevelBatchStatusReq struct {
|
|||
|
|
Ids []uint `json:"ids" v:"required|min:1#VIP等级ID列表不能为空"`
|
|||
|
|
Status int `json:"status" v:"in:0,1#状态值只能为0或1"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelSortReq 更新VIP等级排序请求
|
|||
|
|
type VipLevelSortReq struct {
|
|||
|
|
Id uint `json:"id" v:"required|min:1#VIP等级ID不能为空"`
|
|||
|
|
Sort int `json:"sort" v:"min:0#排序值不能小于0"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelBatchSortReq 批量更新VIP等级排序请求
|
|||
|
|
type VipLevelBatchSortReq struct {
|
|||
|
|
Items []VipLevelSortItem `json:"items" v:"required|min:1#排序项目不能为空"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelSortItem 排序项目
|
|||
|
|
type VipLevelSortItem struct {
|
|||
|
|
Id uint `json:"id" v:"required|min:1#VIP等级ID不能为空"`
|
|||
|
|
Sort int `json:"sort" v:"min:0#排序值不能小于0"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelActiveListReq 获取有效VIP等级列表请求(用户端)
|
|||
|
|
type VipLevelActiveListReq struct {
|
|||
|
|
// 无需参数,直接获取所有有效的VIP等级
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelActiveListRes 获取有效VIP等级列表响应(用户端)
|
|||
|
|
type VipLevelActiveListRes struct {
|
|||
|
|
List []VipLevelActiveItem `json:"list"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelActiveItem 有效VIP等级项(用户端)
|
|||
|
|
type VipLevelActiveItem struct {
|
|||
|
|
Id uint `json:"id"`
|
|||
|
|
Name string `json:"name"`
|
|||
|
|
Level int `json:"level"`
|
|||
|
|
Duration int `json:"duration"`
|
|||
|
|
Price string `json:"price"`
|
|||
|
|
Description string `json:"description"`
|
|||
|
|
Features string `json:"features"`
|
|||
|
|
IsRecommend bool `json:"is_recommend"` // 是否推荐
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelStatisticsReq 获取VIP等级统计请求
|
|||
|
|
type VipLevelStatisticsReq struct {
|
|||
|
|
StartDate string `json:"start_date" v:"date#开始日期格式不正确"`
|
|||
|
|
EndDate string `json:"end_date" v:"date#结束日期格式不正确"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelStatisticsRes 获取VIP等级统计响应
|
|||
|
|
type VipLevelStatisticsRes struct {
|
|||
|
|
TotalLevels int `json:"total_levels"` // 总等级数
|
|||
|
|
ActiveLevels int `json:"active_levels"` // 有效等级数
|
|||
|
|
TotalSales string `json:"total_sales"` // 总销售额
|
|||
|
|
TotalOrders int `json:"total_orders"` // 总订单数
|
|||
|
|
LevelStats []VipLevelStatItem `json:"level_stats"` // 各等级统计
|
|||
|
|
SalesChart []VipLevelSalesChartItem `json:"sales_chart"` // 销售图表数据
|
|||
|
|
PopularLevels []VipLevelPopularItem `json:"popular_levels"` // 热门等级
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelStatItem VIP等级统计项
|
|||
|
|
type VipLevelStatItem struct {
|
|||
|
|
Id uint `json:"id"`
|
|||
|
|
Name string `json:"name"`
|
|||
|
|
Level int `json:"level"`
|
|||
|
|
OrderCount int `json:"order_count"` // 订单数量
|
|||
|
|
SalesAmount string `json:"sales_amount"` // 销售金额
|
|||
|
|
UserCount int `json:"user_count"` // 用户数量
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelSalesChartItem VIP等级销售图表项
|
|||
|
|
type VipLevelSalesChartItem struct {
|
|||
|
|
Date string `json:"date"` // 日期
|
|||
|
|
Amount string `json:"amount"` // 销售金额
|
|||
|
|
Count int `json:"count"` // 订单数量
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelPopularItem 热门VIP等级项
|
|||
|
|
type VipLevelPopularItem struct {
|
|||
|
|
Id uint `json:"id"`
|
|||
|
|
Name string `json:"name"`
|
|||
|
|
Level int `json:"level"`
|
|||
|
|
Price string `json:"price"`
|
|||
|
|
OrderCount int `json:"order_count"`
|
|||
|
|
Percentage string `json:"percentage"` // 占比
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelCopyReq 复制VIP等级请求
|
|||
|
|
type VipLevelCopyReq struct {
|
|||
|
|
SourceId uint `json:"source_id" v:"required|min:1#源VIP等级ID不能为空"`
|
|||
|
|
Name string `json:"name" v:"required|length:1,50#VIP等级名称不能为空|VIP等级名称长度为1-50个字符"`
|
|||
|
|
Level int `json:"level" v:"required|min:1#VIP等级不能为空|VIP等级必须大于0"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelCopyRes 复制VIP等级响应
|
|||
|
|
type VipLevelCopyRes struct {
|
|||
|
|
Id uint `json:"id"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelExportReq 导出VIP等级请求
|
|||
|
|
type VipLevelExportReq struct {
|
|||
|
|
Status int `json:"status" v:"in:-1,0,1#状态值只能为-1,0,1"`
|
|||
|
|
StartDate string `json:"start_date" v:"date#开始日期格式不正确"`
|
|||
|
|
EndDate string `json:"end_date" v:"date#结束日期格式不正确"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelExportRes 导出VIP等级响应
|
|||
|
|
type VipLevelExportRes struct {
|
|||
|
|
FileUrl string `json:"file_url"` // 导出文件URL
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelImportReq 导入VIP等级请求
|
|||
|
|
type VipLevelImportReq struct {
|
|||
|
|
FileUrl string `json:"file_url" v:"required|url#文件URL不能为空|文件URL格式不正确"`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// VipLevelImportRes 导入VIP等级响应
|
|||
|
|
type VipLevelImportRes struct {
|
|||
|
|
SuccessCount int `json:"success_count"` // 成功导入数量
|
|||
|
|
FailCount int `json:"fail_count"` // 失败数量
|
|||
|
|
FailReasons []string `json:"fail_reasons"` // 失败原因
|
|||
|
|
}
|