syntax = "v1"

info (
	title:   "后台代理管理服务"
	desc:    "新代理系统后台管理接口"
	author:  "team"
	version: "v1"
)

// ============================================
// 代理管理接口
// ============================================
@server (
	prefix:     /api/v1/admin/agent
	group:      admin_agent
	middleware: AdminAuthInterceptor
)
service main {
	// 代理分页查询
	@handler AdminGetAgentList
	get /list (AdminGetAgentListReq) returns (AdminGetAgentListResp)

	// 代理审核
	@handler AdminAuditAgent
	post /audit (AdminAuditAgentReq) returns (AdminAuditAgentResp)

	// 代理推广链接分页查询
	@handler AdminGetAgentLinkList
	get /link/list (AdminGetAgentLinkListReq) returns (AdminGetAgentLinkListResp)

	// 代理订单分页查询
	@handler AdminGetAgentOrderList
	get /order/list (AdminGetAgentOrderListReq) returns (AdminGetAgentOrderListResp)

	// 代理佣金分页查询
	@handler AdminGetAgentCommissionList
	get /commission/list (AdminGetAgentCommissionListReq) returns (AdminGetAgentCommissionListResp)

	// 代理返佣分页查询
	@handler AdminGetAgentRebateList
	get /rebate/list (AdminGetAgentRebateListReq) returns (AdminGetAgentRebateListResp)

	// 代理升级记录分页查询
	@handler AdminGetAgentUpgradeList
	get /upgrade/list (AdminGetAgentUpgradeListReq) returns (AdminGetAgentUpgradeListResp)

	// 代理提现分页查询
	@handler AdminGetAgentWithdrawalList
	get /withdrawal/list (AdminGetAgentWithdrawalListReq) returns (AdminGetAgentWithdrawalListResp)

	// 代理提现审核
	@handler AdminAuditWithdrawal
	post /withdrawal/audit (AdminAuditWithdrawalReq) returns (AdminAuditWithdrawalResp)

	// 代理实名认证分页查询
	@handler AdminGetAgentRealNameList
	get /real_name/list (AdminGetAgentRealNameListReq) returns (AdminGetAgentRealNameListResp)

	// 代理实名认证审核（已废弃：实名认证改为三要素核验，无需审核）
	// @handler AdminAuditRealName
	// post /real_name/audit (AdminAuditRealNameReq) returns (AdminAuditRealNameResp)
	// 系统配置查询
	@handler AdminGetAgentConfig
	get /config returns (AdminGetAgentConfigResp)

	// 系统配置更新
	@handler AdminUpdateAgentConfig
	post /config/update (AdminUpdateAgentConfigReq) returns (AdminUpdateAgentConfigResp)

	// 产品配置分页查询
	@handler AdminGetAgentProductConfigList
	get /product_config/list (AdminGetAgentProductConfigListReq) returns (AdminGetAgentProductConfigListResp)

	// 产品配置更新
	@handler AdminUpdateAgentProductConfig
	post /product_config/update (AdminUpdateAgentProductConfigReq) returns (AdminUpdateAgentProductConfigResp)

	// 生成钻石邀请码
	@handler AdminGenerateDiamondInviteCode
	post /invite_code/diamond/generate (AdminGenerateDiamondInviteCodeReq) returns (AdminGenerateDiamondInviteCodeResp)

	// 邀请码列表查询
	@handler AdminGetInviteCodeList
	get /invite_code/list (AdminGetInviteCodeListReq) returns (AdminGetInviteCodeListResp)
}

type (
	// 代理分页查询
	AdminGetAgentListReq {
		Page         int64   `form:"page"` // 页码
		PageSize     int64   `form:"pageSize"` // 每页数量
		Mobile       *string `form:"mobile,optional"` // 手机号（可选）
		Region       *string `form:"region,optional"` // 区域（可选）
		Level        *int64  `form:"level,optional"` // 等级（可选）
		TeamLeaderId *string `form:"team_leader_id,optional"` // 团队首领ID（可选）
	}
	AgentListItem {
		Id              string  `json:"id"` // 主键
		UserId          string  `json:"user_id"` // 用户ID
		Level           int64   `json:"level"` // 等级：1=普通，2=黄金，3=钻石
		LevelName       string  `json:"level_name"` // 等级名称
		Region          string  `json:"region"` // 区域
		Mobile          string  `json:"mobile"` // 手机号
		WechatId        string  `json:"wechat_id"` // 微信号
		TeamLeaderId    string  `json:"team_leader_id"` // 团队首领ID
		AgentCode       int64   `json:"agent_code"`
		Balance         float64 `json:"balance"` // 钱包余额
		TotalEarnings   float64 `json:"total_earnings"` // 累计收益
		FrozenBalance   float64 `json:"frozen_balance"` // 冻结余额
		WithdrawnAmount float64 `json:"withdrawn_amount"` // 提现总额
		IsRealName      bool    `json:"is_real_name"` // 是否已实名
		CreateTime      string  `json:"create_time"` // 创建时间
	}
	AdminGetAgentListResp {
		Total int64           `json:"total"` // 总数
		Items []AgentListItem `json:"items"` // 列表数据
	}
	// 代理审核
	AdminAuditAgentReq {
		AuditId     int64  `json:"audit_id"` // 审核记录ID
		Status      int64  `json:"status"` // 审核状态：1=通过，2=拒绝
		AuditReason string `json:"audit_reason"` // 审核原因（拒绝时必填）
	}
	AdminAuditAgentResp {
		Success bool `json:"success"`
	}
	// 推广链接分页查询
	AdminGetAgentLinkListReq {
		Page           int64   `form:"page"` // 页码
		PageSize       int64   `form:"pageSize"` // 每页数量
		AgentId        *string `form:"agent_id,optional"` // 代理ID（可选）
		ProductId      *string `form:"product_id,optional"` // 产品ID（可选）
		LinkIdentifier *string `form:"link_identifier,optional"` // 推广码（可选）
	}
	AgentLinkListItem {
		Id              string  `json:"id"` // 主键
		AgentId         string  `json:"agent_id"` // 代理ID
		ProductId       string  `json:"product_id"` // 产品ID
		ProductName     string  `json:"product_name"` // 产品名称
		SetPrice        float64 `json:"set_price"` // 设定价格
		ActualBasePrice float64 `json:"actual_base_price"` // 实际底价
		LinkIdentifier  string  `json:"link_identifier"` // 推广码
		CreateTime      string  `json:"create_time"` // 创建时间
	}
	AdminGetAgentLinkListResp {
		Total int64               `json:"total"` // 总数
		Items []AgentLinkListItem `json:"items"` // 列表数据
	}
	// 代理订单分页查询
	AdminGetAgentOrderListReq {
		Page          int64   `form:"page"` // 页码
		PageSize      int64   `form:"pageSize"` // 每页数量
		AgentId       *string `form:"agent_id,optional"` // 代理ID（可选）
		OrderId       *string `form:"order_id,optional"` // 订单ID（可选）
		ProcessStatus *int64  `form:"process_status,optional"` // 处理状态（可选）
	}
	AgentOrderListItem {
		Id              string  `json:"id"` // 主键
		AgentId         string  `json:"agent_id"` // 代理ID
		OrderId         string  `json:"order_id"` // 订单ID
		ProductId       string  `json:"product_id"` // 产品ID
		ProductName     string  `json:"product_name"` // 产品名称
		OrderAmount     float64 `json:"order_amount"` // 订单金额
		SetPrice        float64 `json:"set_price"` // 设定价格
		ActualBasePrice float64 `json:"actual_base_price"` // 实际底价
		PriceCost       float64 `json:"price_cost"` // 提价成本
		AgentProfit     float64 `json:"agent_profit"` // 代理收益
		ProcessStatus   int64   `json:"process_status"` // 处理状态
		CreateTime      string  `json:"create_time"` // 创建时间
	}
	AdminGetAgentOrderListResp {
		Total int64                `json:"total"` // 总数
		Items []AgentOrderListItem `json:"items"` // 列表数据
	}
	// 代理佣金分页查询
	AdminGetAgentCommissionListReq {
		Page     int64   `form:"page"` // 页码
		PageSize int64   `form:"pageSize"` // 每页数量
		AgentId  *string `form:"agent_id,optional"` // 代理ID（可选）
		OrderId  *string `form:"order_id,optional"` // 订单ID（可选）
		Status   *int64  `form:"status,optional"` // 状态（可选）
	}
	AgentCommissionListItem {
		Id          string  `json:"id"` // 主键
		AgentId     string  `json:"agent_id"` // 代理ID
		OrderId     string  `json:"order_id"` // 订单ID
		ProductName string  `json:"product_name"` // 产品名称
		Amount      float64 `json:"amount"` // 金额
		Status      int64   `json:"status"` // 状态
		CreateTime  string  `json:"create_time"` // 创建时间
	}
	AdminGetAgentCommissionListResp {
		Total int64                     `json:"total"` // 总数
		Items []AgentCommissionListItem `json:"items"` // 列表数据
	}
	// 代理返佣分页查询
	AdminGetAgentRebateListReq {
		Page          int64   `form:"page"` // 页码
		PageSize      int64   `form:"pageSize"` // 每页数量
		AgentId       *string `form:"agent_id,optional"` // 代理ID（可选）
		SourceAgentId *string `form:"source_agent_id,optional"` // 来源代理ID（可选）
		RebateType    *int64  `form:"rebate_type,optional"` // 返佣类型（可选）
	}
	AgentRebateListItem {
		Id            string  `json:"id"` // 主键
		AgentId       string  `json:"agent_id"` // 获得返佣的代理ID
		SourceAgentId string  `json:"source_agent_id"` // 来源代理ID
		OrderId       string  `json:"order_id"` // 订单ID
		RebateType    int64   `json:"rebate_type"` // 返佣类型
		Amount        float64 `json:"amount"` // 金额
		CreateTime    string  `json:"create_time"` // 创建时间
	}
	AdminGetAgentRebateListResp {
		Total int64                 `json:"total"` // 总数
		Items []AgentRebateListItem `json:"items"` // 列表数据
	}
	// 代理升级记录分页查询
	AdminGetAgentUpgradeListReq {
		Page        int64   `form:"page"` // 页码
		PageSize    int64   `form:"pageSize"` // 每页数量
		AgentId     *string `form:"agent_id,optional"` // 代理ID（可选）
		UpgradeType *int64  `form:"upgrade_type,optional"` // 升级类型（可选）
		Status      *int64  `form:"status,optional"` // 状态（可选）
	}
	AgentUpgradeListItem {
		Id           string  `json:"id"` // 主键
		AgentId      string  `json:"agent_id"` // 代理ID
		FromLevel    int64   `json:"from_level"` // 原等级
		ToLevel      int64   `json:"to_level"` // 目标等级
		UpgradeType  int64   `json:"upgrade_type"` // 升级类型
		UpgradeFee   float64 `json:"upgrade_fee"` // 升级费用
		RebateAmount float64 `json:"rebate_amount"` // 返佣金额
		Status       int64   `json:"status"` // 状态
		CreateTime   string  `json:"create_time"` // 创建时间
	}
	AdminGetAgentUpgradeListResp {
		Total int64                  `json:"total"` // 总数
		Items []AgentUpgradeListItem `json:"items"` // 列表数据
	}
	// 代理提现分页查询
	AdminGetAgentWithdrawalListReq {
		Page       int64   `form:"page"` // 页码
		PageSize   int64   `form:"pageSize"` // 每页数量
		AgentId    *string `form:"agent_id,optional"` // 代理ID（可选）
		Status     *int64  `form:"status,optional"` // 状态（可选）
		WithdrawNo *string `form:"withdraw_no,optional"` // 提现单号（可选）
	}
	AgentWithdrawalListItem {
		Id           string  `json:"id"` // 主键
		AgentId      string  `json:"agent_id"` // 代理ID
		WithdrawNo   string  `json:"withdraw_no"` // 提现单号
		Amount       float64 `json:"amount"` // 金额
		TaxAmount    float64 `json:"tax_amount"` // 税费金额
		ActualAmount float64 `json:"actual_amount"` // 实际到账金额
		Status       int64   `json:"status"` // 状态
		PayeeAccount string  `json:"payee_account"` // 收款账户
		PayeeName    string  `json:"payee_name"` // 收款人姓名
		Remark       string  `json:"remark"` // 备注
		CreateTime   string  `json:"create_time"` // 创建时间
	}
	AdminGetAgentWithdrawalListResp {
		Total int64                     `json:"total"` // 总数
		Items []AgentWithdrawalListItem `json:"items"` // 列表数据
	}
	// 代理提现审核
	AdminAuditWithdrawalReq {
		WithdrawalId string `json:"withdrawal_id"` // 提现记录ID
		Status       int64  `json:"status"` // 审核状态：2=通过，3=拒绝
		Remark       string `json:"remark"` // 备注
	}
	AdminAuditWithdrawalResp {
		Success bool `json:"success"`
	}
	// 代理实名认证分页查询
	AdminGetAgentRealNameListReq {
		Page     int64   `form:"page"` // 页码
		PageSize int64   `form:"pageSize"` // 每页数量
		AgentId  *string `form:"agent_id,optional"` // 代理ID（可选）
		Status   *int64  `form:"status,optional"` // 状态（可选）：1=未验证，2=已通过
	}
	AgentRealNameListItem {
		Id         string `json:"id"` // 主键
		AgentId    string `json:"agent_id"` // 代理ID
		Name       string `json:"name"` // 姓名
		IdCard     string `json:"id_card"` // 身份证号
		Mobile     string `json:"mobile"` // 手机号
		Status     int64  `json:"status"` // 状态：1=未验证，2=已通过（verify_time不为空表示已通过）
		VerifyTime string `json:"verify_time"` // 验证时间（三要素核验通过时间）
		CreateTime string `json:"create_time"` // 创建时间
	}
	AdminGetAgentRealNameListResp {
		Total int64                   `json:"total"` // 总数
		Items []AgentRealNameListItem `json:"items"` // 列表数据
	}
	// 代理实名认证审核
	AdminAuditRealNameReq {
		RealNameId  int64  `json:"real_name_id"` // 实名认证记录ID
		Status      int64  `json:"status"` // 审核状态：2=通过，3=拒绝
		AuditReason string `json:"audit_reason"` // 审核原因（拒绝时必填）
	}
	AdminAuditRealNameResp {
		Success bool `json:"success"`
	}
	// 系统配置查询（价格配置已移除，改为产品配置表管理）
	AdminGetAgentConfigResp {
		LevelBonus             LevelBonusConfig         `json:"level_bonus"` // 等级加成配置
		UpgradeFee             UpgradeFeeConfig         `json:"upgrade_fee"` // 升级费用配置
		UpgradeRebate          UpgradeRebateConfig      `json:"upgrade_rebate"` // 升级返佣配置
		DirectParentRebate     DirectParentRebateConfig `json:"direct_parent_rebate"` // 直接上级返佣配置
		MaxGoldRebateAmount    float64                  `json:"max_gold_rebate_amount"` // 黄金代理最大返佣金额
		CommissionFreeze       CommissionFreezeConfig   `json:"commission_freeze"` // 佣金冻结配置
		TaxRate                float64                  `json:"tax_rate"` // 税率
		TaxExemptionAmount     float64                  `json:"tax_exemption_amount"` // 免税额度
		GoldMaxUpliftAmount    float64                  `json:"gold_max_uplift_amount"`
		DiamondMaxUpliftAmount float64                  `json:"diamond_max_uplift_amount"`
	}
	LevelBonusConfig {
		Diamond int64 `json:"diamond"` // 钻石加成：0
		Gold    int64 `json:"gold"` // 黄金加成：3
		Normal  int64 `json:"normal"` // 普通加成：6
	}
	UpgradeFeeConfig {
		NormalToGold    float64 `json:"normal_to_gold"` // 普通→黄金：199
		NormalToDiamond float64 `json:"normal_to_diamond"` // 普通→钻石：980
	}
	UpgradeRebateConfig {
		NormalToGoldRebate float64 `json:"normal_to_gold_rebate"` // 普通→黄金返佣：139
		ToDiamondRebate    float64 `json:"to_diamond_rebate"` // 升级为钻石返佣：680
	}
	DirectParentRebateConfig {
		Diamond float64 `json:"diamond"` // 直接上级是钻石的返佣金额（6元）
		Gold    float64 `json:"gold"` // 直接上级是黄金的返佣金额（3元）
		Normal  float64 `json:"normal"` // 直接上级是普通的返佣金额（2元）
	}
	CommissionFreezeConfig {
		Ratio     float64 `json:"ratio"` // 佣金冻结比例（例如：0.1表示10%）
		Threshold float64 `json:"threshold"` // 佣金冻结阈值（订单单价达到此金额才触发冻结，单位：元）
		Days      int64   `json:"days"` // 佣金冻结解冻天数（单位：天，例如：30表示30天后解冻）
	}
	// 系统配置更新（价格配置已移除，改为产品配置表管理）
	AdminUpdateAgentConfigReq {
		LevelBonus             *LevelBonusConfig         `json:"level_bonus,optional"` // 等级加成配置
		UpgradeFee             *UpgradeFeeConfig         `json:"upgrade_fee,optional"` // 升级费用配置
		UpgradeRebate          *UpgradeRebateConfig      `json:"upgrade_rebate,optional"` // 升级返佣配置
		DirectParentRebate     *DirectParentRebateConfig `json:"direct_parent_rebate,optional"` // 直接上级返佣配置
		MaxGoldRebateAmount    *float64                  `json:"max_gold_rebate_amount,optional"` // 黄金代理最大返佣金额
		CommissionFreeze       *CommissionFreezeConfig   `json:"commission_freeze,optional"` // 佣金冻结配置
		TaxRate                *float64                  `json:"tax_rate,optional"` // 税率
		TaxExemptionAmount     *float64                  `json:"tax_exemption_amount,optional"` // 免税额度
		GoldMaxUpliftAmount    *float64                  `json:"gold_max_uplift_amount,optional"`
		DiamondMaxUpliftAmount *float64                  `json:"diamond_max_uplift_amount,optional"`
	}
	AdminUpdateAgentConfigResp {
		Success bool `json:"success"`
	}
	// 产品配置分页查询
	AdminGetAgentProductConfigListReq {
		Page        int64   `form:"page"` // 页码
		PageSize    int64   `form:"pageSize"` // 每页数量
		ProductId   *string `form:"product_id,optional"` // 产品ID（可选）
		ProductName *string `form:"product_name,optional"` // 产品名称（可选，用于搜索）
	}
	AgentProductConfigItem {
		Id             string  `json:"id"` // 主键
		ProductId      string  `json:"product_id"` // 产品ID
		ProductName    string  `json:"product_name"` // 产品名称
		BasePrice      float64 `json:"base_price"` // 基础底价
		PriceRangeMin  float64 `json:"price_range_min"` // 最低定价
		PriceRangeMax  float64 `json:"price_range_max"` // 最高定价
		PriceThreshold float64 `json:"price_threshold"` // 提价标准阈值
		PriceFeeRate   float64 `json:"price_fee_rate"` // 提价手续费比例
		CreateTime     string  `json:"create_time"` // 创建时间
	}
	AdminGetAgentProductConfigListResp {
		Total int64                    `json:"total"` // 总数
		Items []AgentProductConfigItem `json:"items"` // 列表数据
	}
	// 产品配置更新
	AdminUpdateAgentProductConfigReq {
		Id             string   `json:"id"` // 主键
		BasePrice      float64  `json:"base_price"` // 基础底价
		PriceRangeMax  float64  `json:"price_range_max"` // 最高定价（对应数据库 system_max_price）
		PriceThreshold *float64 `json:"price_threshold,optional"` // 提价标准阈值（可选）
		PriceFeeRate   *float64 `json:"price_fee_rate,optional"` // 提价手续费比例（可选）
	}
	AdminUpdateAgentProductConfigResp {
		Success bool `json:"success"`
	}
	// 生成钻石邀请码
	AdminGenerateDiamondInviteCodeReq {
		Count      int64  `json:"count"` // 生成数量
		ExpireDays int64  `json:"expire_days,optional"` // 过期天数（可选，0表示不过期）
		Remark     string `json:"remark,optional"` // 备注（可选）
	}
	AdminGenerateDiamondInviteCodeResp {
		Codes []string `json:"codes"` // 生成的邀请码列表
	}
	// 邀请码列表查询
	AdminGetInviteCodeListReq {
		Page        int64   `form:"page"` // 页码
		PageSize    int64   `form:"pageSize"` // 每页数量
		Code        *string `form:"code,optional"` // 邀请码（可选）
		AgentId     *string `form:"agent_id,optional"` // 发放代理ID（可选，NULL表示平台发放）
		TargetLevel *int64  `form:"target_level,optional"` // 目标等级（可选）
		Status      *int64  `form:"status,optional"` // 状态（可选）
	}
	InviteCodeListItem {
		Id          string `json:"id"` // 主键
		Code        string `json:"code"` // 邀请码
		AgentId     string `json:"agent_id"` // 发放代理ID（0表示平台发放）
		AgentMobile string `json:"agent_mobile"` // 发放代理手机号
		TargetLevel int64  `json:"target_level"` // 目标等级
		Status      int64  `json:"status"` // 状态：0=未使用，1=已使用，2=已失效
		UsedUserId  string `json:"used_user_id"` // 使用用户ID
		UsedAgentId string `json:"used_agent_id"` // 使用代理ID
		UsedTime    string `json:"used_time"` // 使用时间
		ExpireTime  string `json:"expire_time"` // 过期时间
		Remark      string `json:"remark"` // 备注
		CreateTime  string `json:"create_time"` // 创建时间
	}
	AdminGetInviteCodeListResp {
		Total int64                `json:"total"` // 总数
		Items []InviteCodeListItem `json:"items"` // 列表数据
	}
)

