syntax = "v1"

info (
	title:   "订单服务"
	desc:    "订单服务"
	version: "v1"
)

@server (
	prefix:     api/v1/admin/order
	group:      admin_order
	middleware: AdminAuthInterceptor
)
service main {
	@doc "获取订单列表"
	@handler AdminGetOrderList
	get /list (AdminGetOrderListReq) returns (AdminGetOrderListResp)

	@doc "获取订单详情"
	@handler AdminGetOrderDetail
	get /detail/:id (AdminGetOrderDetailReq) returns (AdminGetOrderDetailResp)

	@doc "创建订单"
	@handler AdminCreateOrder
	post /create (AdminCreateOrderReq) returns (AdminCreateOrderResp)

	@doc "更新订单"
	@handler AdminUpdateOrder
	put /update/:id (AdminUpdateOrderReq) returns (AdminUpdateOrderResp)

	@doc "删除订单"
	@handler AdminDeleteOrder
	delete /delete/:id (AdminDeleteOrderReq) returns (AdminDeleteOrderResp)

	@doc "订单退款"
	@handler AdminRefundOrder
	post /refund/:id (AdminRefundOrderReq) returns (AdminRefundOrderResp)

	@doc "重新执行代理处理"
	@handler AdminRetryAgentProcess
	post /retry-agent-process/:id (AdminRetryAgentProcessReq) returns (AdminRetryAgentProcessResp)

	@doc "获取退款统计数据"
	@handler AdminGetRefundStatistics
	get /refund-statistics (AdminGetRefundStatisticsReq) returns (AdminGetRefundStatisticsResp)

	@doc "获取收入和利润统计数据"
	@handler AdminGetRevenueStatistics
	get /revenue-statistics (AdminGetRevenueStatisticsReq) returns (AdminGetRevenueStatisticsResp)

	@doc "获取订单来源统计数据"
	@handler AdminGetOrderSourceStatistics
	get /source-statistics (AdminGetOrderSourceStatisticsReq) returns (AdminGetOrderSourceStatisticsResp)

	@doc "获取订单统计数据"
	@handler AdminGetOrderStatistics
	get /statistics (AdminGetOrderStatisticsReq) returns (AdminGetOrderStatisticsResp)
}

type (
	// 列表请求
	AdminGetOrderListReq {
		Page            int64   `form:"page,default=1"` // 页码
		PageSize        int64   `form:"pageSize,default=20"` // 每页数量
		OrderNo         string  `form:"order_no,optional"` // 商户订单号
		PlatformOrderId string  `form:"platform_order_id,optional"` // 支付订单号
		ProductName     string  `form:"product_name,optional"` // 产品名称
		PaymentPlatform string  `form:"payment_platform,optional"` // 支付方式
		PaymentScene    string  `form:"payment_scene,optional"` // 支付平台
		Amount          float64 `form:"amount,optional"` // 金额
		Status          string  `form:"status,optional"` // 支付状态：pending-待支付，paid-已支付，refunded-已退款，closed-已关闭，failed-支付失败
		IsPromotion     int64   `form:"is_promotion,optional,default=-1"` // 是否推广订单：0-否，1-是
		CreateTimeStart string  `form:"create_time_start,optional"` // 创建时间开始
		CreateTimeEnd   string  `form:"create_time_end,optional"` // 创建时间结束
		PayTimeStart    string  `form:"pay_time_start,optional"` // 支付时间开始
		PayTimeEnd      string  `form:"pay_time_end,optional"` // 支付时间结束
		RefundTimeStart string  `form:"refund_time_start,optional"` // 退款时间开始
		RefundTimeEnd   string  `form:"refund_time_end,optional"` // 退款时间结束
		SalesCost       float64 `form:"sales_cost,optional"` // 成本价
		QueriedName     string  `form:"queried_name,optional"` // 被查询人姓名（明文，后端加密后匹配 query_user_record）
		QueriedIdCard   string  `form:"queried_id_card,optional"` // 被查询人身份证（明文）
		QueriedMobile   string  `form:"queried_mobile,optional"` // 被查询人手机号（明文）
	}
	// 列表响应
	AdminGetOrderListResp {
		Total int64           `json:"total"` // 总数
		Items []OrderListItem `json:"items"` // 列表
	}
	// 列表项
	OrderListItem {
		Id                 int64   `json:"id"` // 订单ID
		OrderNo            string  `json:"order_no"` // 商户订单号
		PlatformOrderId    string  `json:"platform_order_id"` // 支付订单号
		ProductName        string  `json:"product_name"` // 产品名称
		PaymentPlatform    string  `json:"payment_platform"` // 支付方式
		PaymentScene       string  `json:"payment_scene"` // 支付平台
		Amount             float64 `json:"amount"` // 金额
		SalesCost          float64 `json:"sales_cost"` // 成本价
		Status             string  `json:"status"` // 支付状态：pending-待支付，paid-已支付，refunded-已退款，closed-已关闭，failed-支付失败
		QueryState         string  `json:"query_state"` // 查询状态：pending-待查询，success-查询成功，failed-查询失败 processing-查询中
		CreateTime         string  `json:"create_time"` // 创建时间
		PayTime            string  `json:"pay_time"` // 支付时间
		RefundTime         string  `json:"refund_time"` // 退款时间
		IsPromotion        int64   `json:"is_promotion"` // 是否推广订单：0-否，1-是
		IsAgentOrder       bool    `json:"is_agent_order"` // 是否是代理订单
		AgentProcessStatus string  `json:"agent_process_status"` // 代理事务处理状态：not_agent-非代理订单，success-处理成功，failed-处理失败，pending-待处理
	
	}
	// 详情请求
	AdminGetOrderDetailReq {
		Id int64 `path:"id"` // 订单ID
	}
	// 详情响应
	AdminGetOrderDetailResp {
		Id                 int64   `json:"id"` // 订单ID
		OrderNo            string  `json:"order_no"` // 商户订单号
		PlatformOrderId    string  `json:"platform_order_id"` // 支付订单号
		ProductName        string  `json:"product_name"` // 产品名称
		PaymentPlatform    string  `json:"payment_platform"` // 支付方式
		PaymentScene       string  `json:"payment_scene"` // 支付平台
		Amount             float64 `json:"amount"` // 金额
		SalesCost          float64 `json:"sales_cost"` // 成本价
		Status             string  `json:"status"` // 支付状态：pending-待支付，paid-已支付，refunded-已退款，closed-已关闭，failed-支付失败
		QueryState         string  `json:"query_state"` // 查询状态：pending-待查询，success-查询成功，failed-查询失败 processing-查询中
		CreateTime         string  `json:"create_time"` // 创建时间
		PayTime            string  `json:"pay_time"` // 支付时间
		RefundTime         string  `json:"refund_time"` // 退款时间
		IsPromotion        int64   `json:"is_promotion"` // 是否推广订单：0-否，1-是
		UpdateTime         string  `json:"update_time"` // 更新时间
		IsAgentOrder       bool    `json:"is_agent_order"` // 是否是代理订单
		AgentProcessStatus string  `json:"agent_process_status"` // 代理事务处理状态：not_agent-非代理订单，success-处理成功，failed-处理失败，pending-待处理
	}
	// 创建请求
	AdminCreateOrderReq {
		OrderNo         string  `json:"order_no"` // 商户订单号
		PlatformOrderId string  `json:"platform_order_id"` // 支付订单号
		ProductName     string  `json:"product_name"` // 产品名称
		PaymentPlatform string  `json:"payment_platform"` // 支付方式
		PaymentScene    string  `json:"payment_scene"` // 支付平台
		Amount          float64 `json:"amount"` // 金额
		Status          string  `json:"status,default=pending"` // 支付状态：pending-待支付，paid-已支付，refunded-已退款，closed-已关闭，failed-支付失败
		IsPromotion     int64   `json:"is_promotion,default=0"` // 是否推广订单：0-否，1-是
	}
	// 创建响应
	AdminCreateOrderResp {
		Id int64 `json:"id"` // 订单ID
	}
	// 更新请求
	AdminUpdateOrderReq {
		Id              int64    `path:"id"` // 订单ID
		OrderNo         *string  `json:"order_no,optional"` // 商户订单号
		PlatformOrderId *string  `json:"platform_order_id,optional"` // 支付订单号
		ProductName     *string  `json:"product_name,optional"` // 产品名称
		PaymentPlatform *string  `json:"payment_platform,optional"` // 支付方式
		PaymentScene    *string  `json:"payment_scene,optional"` // 支付平台
		Amount          *float64 `json:"amount,optional"` // 金额
		Status          *string  `json:"status,optional"` // 支付状态：pending-待支付，paid-已支付，refunded-已退款，closed-已关闭，failed-支付失败
		PayTime         *string  `json:"pay_time,optional"` // 支付时间
		RefundTime      *string  `json:"refund_time,optional"` // 退款时间
		IsPromotion     *int64   `json:"is_promotion,optional"` // 是否推广订单：0-否，1-是
	}
	// 更新响应
	AdminUpdateOrderResp {
		Success bool `json:"success"` // 是否成功
	}
	// 删除请求
	AdminDeleteOrderReq {
		Id int64 `path:"id"` // 订单ID
	}
	// 删除响应
	AdminDeleteOrderResp {
		Success bool `json:"success"` // 是否成功
	}
	// 退款请求
	AdminRefundOrderReq {
		Id           int64   `path:"id"` // 订单ID
		RefundAmount float64 `json:"refund_amount"` // 退款金额
		RefundReason string  `json:"refund_reason"` // 退款原因
	}
	// 退款响应
	AdminRefundOrderResp {
		Status   string  `json:"status"` // 退款状态
		RefundNo string  `json:"refund_no"` // 退款单号
		Amount   float64 `json:"amount"` // 退款金额
	}
	// 重新执行代理处理请求
	AdminRetryAgentProcessReq {
		Id int64 `path:"id"` // 订单ID
	}
	// 重新执行代理处理响应
	AdminRetryAgentProcessResp {
		Status      string `json:"status"` // 执行状态：success-成功，already_processed-已处理，failed-失败
		Message     string `json:"message"` // 执行结果消息
		ProcessedAt string `json:"processed_at"` // 处理时间
	}

	// 获取退款统计数据请求
	AdminGetRefundStatisticsReq {
	}

	// 获取退款统计数据响应
	AdminGetRefundStatisticsResp {
		TotalRefundAmount    float64 `json:"total_refund_amount"`    // 总退款金额
		TodayRefundAmount    float64 `json:"today_refund_amount"`    // 今日退款金额
	}

	// 获取收入和利润统计数据请求
	AdminGetRevenueStatisticsReq {
	}

	// 获取收入和利润统计数据响应
	AdminGetRevenueStatisticsResp {
		TotalRevenueAmount    float64 `json:"total_revenue_amount"`    // 总收入金额
		TodayRevenueAmount    float64 `json:"today_revenue_amount"`    // 今日收入金额
		TotalProfitAmount     float64 `json:"total_profit_amount"`     // 总利润金额
		TodayProfitAmount     float64 `json:"today_profit_amount"`     // 今日利润金额
	}

	// 获取订单来源统计数据请求
	AdminGetOrderSourceStatisticsReq {
	}

	// 订单来源统计项
	OrderSourceStatisticsItem {
		ProductName string  `json:"product_name"` // 产品名称
		OrderCount  int64   `json:"order_count"`  // 订单数量
	}

	// 获取订单来源统计数据响应
	AdminGetOrderSourceStatisticsResp {
		Items []OrderSourceStatisticsItem `json:"items"` // 订单来源统计列表
	}

	// 获取订单统计数据请求
	AdminGetOrderStatisticsReq {
		Dimension string `form:"dimension"` // 时间维度：day-日(当月1号到今天)，month-月(今年1月到当月)，year-年(过去5年)，all-全部(按日统计)
	}

	// 订单统计项
	OrderStatisticsItem {
		Date  string  `json:"date"`  // 日期
		Count int64   `json:"count"` // 订单数量
		Amount float64 `json:"amount"` // 订单金额
	}

	// 获取订单统计数据响应
	AdminGetOrderStatisticsResp {
		Items []OrderStatisticsItem `json:"items"` // 订单统计列表
	}
)