package controller

import (
	"github.com/gin-gonic/gin"
	"github.com/mhaya/game/game_cluster/internal/code"
	"github.com/mhaya/game/game_cluster/nodes/webadmin/common"
	"github.com/mhaya/game/game_cluster/nodes/webadmin/entity"
	"github.com/mhaya/game/game_cluster/nodes/webadmin/service"
)

type RiskControl struct {
	sev *service.RiskControl
}

func NewRiskControl() *RiskControl {
	return &RiskControl{
		sev: service.NewRiskControl(),
	}
}

// 同IP下，有多个指纹数据
func (w *RiskControl) MultipleFingerprintInIp(ctx *gin.Context) {
	// TODO MultipleFingerprintInIp
	var req entity.WhitelistListReq
	if err := ctx.ShouldBindJSON(&req); err != nil {
		common.PackOkResult(ctx, code.ParamError)
		return
	}

	resp, err := w.sev.MultipleFingerprintInIp(req)
	if err != nil {
		common.PackOkResult(ctx, err.Code)
		return
	}

	common.PackOkResult(ctx, code.OK, resp)
}

// 同tg号码下，有多个提现地址
func (w *RiskControl) MultipleAddressInTg(ctx *gin.Context) {
	// TODO MultipleAddress
	var req entity.WhitelistListReq
	if err := ctx.ShouldBindJSON(&req); err != nil {
		common.PackOkResult(ctx, code.ParamError)
		return
	}

	resp, err := w.sev.MultipleAddressInTg(req)
	if err != nil {
		common.PackOkResult(ctx, err.Code)
		return
	}

	common.PackOkResult(ctx, code.OK, resp)
}

// 同提现地址下，有多个tg号码
func (w *RiskControl) MultipleTgInAddress(ctx *gin.Context) {
	// TODO MultipleTgInAddress
	var req entity.WhitelistListReq
	if err := ctx.ShouldBindJSON(&req); err != nil {
		common.PackOkResult(ctx, code.ParamError)
		return
	}

	resp, err := w.sev.MultipleTgInAddress(req)
	if err != nil {
		common.PackOkResult(ctx, err.Code)
		return
	}

	common.PackOkResult(ctx, code.OK, resp)
}

// 同IP下，有多个tg号码
func (w *RiskControl) MultipleTgInIp(ctx *gin.Context) {
	// TODO MultipleTgInIp
	var req entity.WhitelistListReq
	if err := ctx.ShouldBindJSON(&req); err != nil {
		common.PackOkResult(ctx, code.ParamError)
		return
	}

	resp, err := w.sev.MultipleTgInIp(req)
	if err != nil {
		common.PackOkResult(ctx, err.Code)
		return
	}

	common.PackOkResult(ctx, code.OK, resp)
}
