package shanghu

import (
	"duoduo/apis/common"
	"duoduo/apis/pdd"
	"duoduo/apis/shanghu/models"
	"duoduo/models/shanghu"
	"duoduo/tools"
	"duoduo/tools/app"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"github.com/gin-gonic/gin"
	"strconv"
)

func ClientCardList(c *gin.Context) {
	var inData models.ClientCardListRequest
	var sqlData shanghu.MerchantClientCard

	err := c.ShouldBindJSON(&inData)
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}

	var pageSize = 10
	var pageIndex = 1

	if inData.PageSize != 0 {
		pageSize = inData.PageSize
	}
	if inData.PageIndex != 0 {
		pageIndex = inData.PageIndex
	}
	fmt.Println(inData.OpenId)
	sqlData.OpenID = inData.OpenId

	merchantCard, count, err := sqlData.GetOpenIdList(pageSize, pageIndex, inData.TypeList)
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}
	app.PageOK(c, merchantCard, count, pageIndex, pageSize, app.Success)

}

func GetClientCard(c *gin.Context) {
	var inData models.ClientCardRequest
	var sqlData shanghu.MerchantClientCard

	err := c.ShouldBindJSON(&inData)
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}
	sqlData.ID = inData.ClientCardId

	clientCard, err := sqlData.GetMerchantCard()
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}

	app.OK(c, clientCard, app.Success)

}

func GetClientCardQR(c *gin.Context) {
	var inData models.ClientCardQRRequest
	var sqlData shanghu.MerchantClientCard
	var outData models.ClientCardQRReply
	var qr models.QRRequest
	var getQR models.GetQRRequest

	err := c.ShouldBindJSON(&inData)
	if err != nil {
		app.Error(c, 400, err, err.Error())
		return
	}
	sqlData.ID = inData.MerchantCardId

	val, err := pdd.DuoDuoGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx25357518f710b8ce&secret=83c7dca801a6c93fbfac3c91f57a4eb2")
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}

	err = tools.JsonUnmarshal(val, &outData)
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}
	if outData.AccessToken == "" {
		app.Error(c, 500, err, "token error")
		return
	}
	url := "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + outData.AccessToken

	qr.CheckPath = true
	qr.Page = "pages/home/home"
	qr.EnvVersion = "release"
	qr.Scene = strconv.FormatInt(inData.MerchantCardId, 10)

	data, err := json.Marshal(&qr)
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}
	reply, err := common.Post(data, url)
	if err != nil {
		app.Error(c, 500, err, err.Error())
		return
	}
	//err = json.Unmarshal(reply, &getQR)
	//if err != nil {
	//	app.Error(c, 500, err, err.Error())
	//	return
	//}

	if getQR.Errcode != 0 {
		app.Error(c, 500, err, getQR.Errmsg)
		return
	}

	//fmt.Println(string(reply))

	encoded := base64.StdEncoding.EncodeToString(reply)

	app.OK(c, encoded, app.Success)

}