package model

import (
	"errors"

	"github.com/zeromicro/go-zero/core/stores/sqlx"
)

var ErrNotFound = sqlx.ErrNotFound
var ErrNoRowsUpdate = errors.New("update db no rows change")

// 平台
var PlatformWxMini string = "wxmini"
var PlatformWxH5 string = "wxh5"
var PlatformApp string = "app"
var PlatformH5 string = "h5"
var PlatformAdmin string = "admin"

// 用户授权类型
var UserAuthTypeMobile string = "mobile"
var UserAuthTypeWxMiniOpenID string = "wxmini_openid"
var UserAuthTypeWxh5OpenID string = "wxh5_openid"
var UserAuthTypeUUID string = "uuid"

// 代理扣除类型
var AgentDeductionTypeCost string = "cost"
var AgentDeductionTypePricing string = "pricing"

var AgentRewardsTypeDescendantPromotion string = "descendant_promotion"
var AgentRewardsTypeDescendantUpgradeVip string = "descendant_upgrade_vip"
var AgentRewardsTypeDescendantUpgradeSvip string = "descendant_upgrade_svip"
var AgentRewardsTypeDescendantStayActive string = "descendant_stay_active"
var AgentRewardsTypeDescendantNewActive string = "descendant_new_active"
var AgentRewardsTypeDescendantWithdraw string = "descendant_withdraw"

var AgentLeveNameNormal string = "normal"
var AgentLeveNameVIP string = "VIP"
var AgentLeveNameSVIP string = "SVIP"

const (
	OrderStatusPending   = "pending"
	OrderStatusPaid      = "paid"
	OrderStatusFailed    = "failed"
	OrderStatusRefunding = "refunding"
	OrderStatusRefunded  = "refunded"
	OrderStatusClosed    = "closed"
)
const (
	OrderRefundStatusPending = "pending"
	OrderRefundStatusSuccess = "success"
	OrderRefundStatusFailed  = "failed"
	OrderRefundStatusClosed  = "closed"
)
const (
	QueryStatePending    = "pending"
	QueryStateFailed     = "failed"
	QueryStateSuccess    = "success"
	QueryStateProcessing = "processing"
	QueryStateCleaned    = "cleaned"
	QueryStateRefunded   = "refunded"
)

const (
	GrantTypeFace             string = "face"
	AuthorizationGrantTypeSms        = "sms"
)
const (
	AuthorizationStatusPending  = "pending"
	AuthorizationStatusSuccess  = "success"
	AuthorizationStatusFailed   = "failed"
	AuthorizationStatusExpired  = "expired"
	AuthorizationStatusRevoked  = "revoked"
	AuthorizationStatusRejected = "rejected"
)

const (
	AuthorizationFaceStatusPending = "pending"
	AuthorizationFaceStatusSuccess = "success"
	AuthorizationFaceStatusFailed  = "failed"
)

const (
	AgentRealNameStatusPending  = "pending"
	AgentRealNameStatusApproved = "approved"
	AgentRealNameStatusRejected = "rejected"
)

// 用户身份类型
const (
	UserTypeTemp   = 0 // 临时用户
	UserTypeNormal = 1 // 正式用户
	UserTypeAdmin  = 2 // 管理员
)

// 管理员角色编码
const (
	AdminRoleCodeSuper = "SUPER" // 超级管理员
)

// 代理状态
const (
	AgentStatusNo  = 0 // 非代理
	AgentStatusYes = 1 // 是代理
)
const (
	TaxStatusPending = 0 // 待扣税
	TaxStatusSuccess = 1 // 已扣税
	TaxStatusExempt  = 2 // 免税
	TaxStatusFailed  = 3 // 扣税失败
)

// 钱包交易类型
const (
	WalletTransactionTypeCommission = "commission" // 佣金收入
	WalletTransactionTypeWithdraw   = "withdraw"   // 提现
	WalletTransactionTypeFreeze     = "freeze"     // 冻结
	WalletTransactionTypeUnfreeze   = "unfreeze"   // 解冻
	WalletTransactionTypeReward     = "reward"     // 奖励
	WalletTransactionTypeRefund     = "refund"     // 退款
	WalletTransactionTypeAdjust     = "adjust"     // 调整
)
