// ================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// You can delete these comments if you wish manually maintain this interface file.
// ================================================================================

package service

import (
	"context"
	"kami/internal/model"
	"kami/internal/model/do"
	"kami/internal/model/entity"
)

type (
	IMerchantDeployInfo interface {
		GetListByUid(ctx context.Context, uid string) (dataList []*model.MerchantDeployRecord, err error)
		Delete(ctx context.Context, uid string, roadUid string) (err error)
		Add(ctx context.Context, info *do.V1MerchantDeployInfo) (err error)
		Update(ctx context.Context, info *do.V1MerchantDeployInfo) (err error)
		// AddOrUpdate 如果当前配置存在，就更新，否则就添加一个信配置
		AddOrUpdate(ctx context.Context, info *do.V1MerchantDeployInfo) (err error)
		GetDetailByUidAndPayType(ctx context.Context, uid string, payType string, roadUid string) (info *entity.V1MerchantDeployInfo, err error)
		// Exist 判断当前数据是否存在
		Exist(ctx context.Context, uid string, payType string, roadUid string) (exist bool, err error)
		GetDetailByID(ctx context.Context, id int) (data *model.MerchantDeployRecord, err error)
		// GetRestrictStrategyById 获取当前限制的限制策略
		GetRestrictStrategyById(ctx context.Context, id uint) (output model.MerchantDeployInfoStrategyOutput, err error)
	}
)

var (
	localMerchantDeployInfo IMerchantDeployInfo
)

func MerchantDeployInfo() IMerchantDeployInfo {
	if localMerchantDeployInfo == nil {
		panic("implement not found for interface IMerchantDeployInfo, forgot register?")
	}
	return localMerchantDeployInfo
}

func RegisterMerchantDeployInfo(i IMerchantDeployInfo) {
	localMerchantDeployInfo = i
}
