package payment

import (
	"kra/pkg/database/migration"
	platformmodule "kra/pkg/module"

	"gorm.io/gorm"
)

func Migrations() []migration.Step {
	return []migration.Step{
		{ID: "202608200003_payment_schema", Migrate: func(db *gorm.DB) error {
			return migration.CreateMissingTables(db, &paymentOrderPO{})
		}},
		{ID: "202608200004_payment_defaults", Migrate: ensurePaymentIntegrationConfigs},
	}
}

// AdminSurface describes the payment-owned entries shown in the system
// administration UI. The system module persists these records because it owns
// the menu/API/policy tables.
func AdminSurface() platformmodule.Surface {
	return platformmodule.Surface{
		Menus: []platformmodule.Menu{
			{Name: "paymentOrders", Path: "paymentOrders", ParentName: "extensions", Component: "view/systemTools/payment/orders.vue", Title: "支付订单", Icon: "wallet", Sort: 6},
			{Name: "paymentConfig", Path: "paymentConfig", ParentName: "extensions", Component: "view/systemTools/payment/config.vue", Title: "支付配置", Icon: "credit-card", Sort: 7},
		},
		APIs: []platformmodule.API{
			{Path: "/payment/orders", Method: "GET", Group: "支付", Description: "分页查询支付订单"},
			{Path: "/payment/order", Method: "POST", Group: "支付", Description: "查询支付订单"},
			{Path: "/payment/orders/:provider/:tradeNo", Method: "GET", Group: "支付", Description: "按路径查询支付订单"},
			{Path: "/payment/create", Method: "POST", Group: "支付", Description: "创建支付订单"},
			{Path: "/payment/query", Method: "POST", Group: "支付", Description: "同步支付订单状态"},
			{Path: "/payment/refund", Method: "POST", Group: "支付", Description: "申请支付订单退款"},
			{Path: "/payment/orders/:provider/:tradeNo/refund", Method: "POST", Group: "支付", Description: "按路径申请支付订单退款"},
			{Path: "/payment/fulfill", Method: "POST", Group: "支付", Description: "重试支付订单发货"},
			{Path: "/payment/orders/:provider/:tradeNo/fulfill", Method: "POST", Group: "支付", Description: "按路径重试支付订单发货"},
			{Path: "/payment/providers/:provider/test", Method: "POST", Group: "支付", Description: "测试支付渠道"},
		},
	}
}
