188 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package qr
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| 	"fonchain-fiee/cmd/config"
 | |
| 	"fonchain-fiee/pkg/common/utils"
 | |
| 	"fonchain-fiee/pkg/service"
 | |
| 	"github.com/gin-gonic/gin"
 | |
| 	"github.com/gin-gonic/gin/binding"
 | |
| 	"github.com/skip2/go-qrcode"
 | |
| 	"net/url"
 | |
| )
 | |
| 
 | |
| // CreateQr 直接生成二维码
 | |
| func Upload(c *gin.Context) {
 | |
| 
 | |
| 	realUrl := c.Query("url")
 | |
| 	logo := c.Query("logo")
 | |
| 	if realUrl == "" {
 | |
| 		service.Error(c, errors.New("not real url"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	realUrl, err := url.QueryUnescape(realUrl)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, errors.New("url解码错误"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	logo, err = url.QueryUnescape(logo)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, errors.New("logo解码错误"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	fmt.Println("url真实连接是-------", realUrl)
 | |
| 	s, err := utils.CreateQr(realUrl, logo, qrcode.Medium, 120)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	c.Writer.Header().Set("content-type", "image/apng")
 | |
| 	if _, err = c.Writer.WriteString(s); err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	return
 | |
| }
 | |
| 
 | |
| // CreateQr 直接生成二维码
 | |
| func CreateQr(c *gin.Context) {
 | |
| 
 | |
| 	type AuctionBuyListTemp struct {
 | |
| 		Url   string `form:"url"`
 | |
| 		Logo  string `form:"logo"`
 | |
| 		Size  int    `form:"size" default:"120"`
 | |
| 		Level int    `form:"level" default:"1"`
 | |
| 	}
 | |
| 
 | |
| 	var tempReq AuctionBuyListTemp
 | |
| 
 | |
| 	if err := c.ShouldBindWith(&tempReq, binding.Query); err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	fmt.Println(tempReq)
 | |
| 	realUrl := tempReq.Url
 | |
| 	logo := tempReq.Logo
 | |
| 	if realUrl == "" {
 | |
| 		service.Error(c, errors.New("not real url"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	if tempReq.Level > int(qrcode.Highest) {
 | |
| 		tempReq.Level = int(qrcode.Highest)
 | |
| 	}
 | |
| 
 | |
| 	if tempReq.Level > int(qrcode.Low) {
 | |
| 		tempReq.Level = int(qrcode.Low)
 | |
| 	}
 | |
| 
 | |
| 	realUrl, err := url.QueryUnescape(realUrl)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, errors.New("url解码错误"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	logo, err = url.QueryUnescape(logo)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, errors.New("logo解码错误"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	fmt.Println("url真实连接是-------", realUrl)
 | |
| 	s, err := utils.CreateQr(realUrl, logo, qrcode.RecoveryLevel(tempReq.Level), tempReq.Size)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	c.Writer.Header().Set("content-type", "image/apng")
 | |
| 	if _, err = c.Writer.WriteString(s); err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	return
 | |
| }
 | |
| 
 | |
| // CreateRedirectQr 生成重定向二维码
 | |
| func CreateRedirectQr(c *gin.Context) {
 | |
| 
 | |
| 	realUrl := c.Query("url")
 | |
| 	logo := c.Query("logo")
 | |
| 	if realUrl == "" {
 | |
| 		service.Error(c, errors.New("not real url"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	s, err := utils.CreateQr(config.AppConfig.System.Host+config.AppConfig.System.RedirectUri+"?base_redirect_url="+url.QueryEscape(realUrl), logo, qrcode.Low, 120)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	c.Writer.Header().Set("content-type", "image/apng")
 | |
| 	if _, err = c.Writer.WriteString(s); err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	return
 | |
| }
 | |
| 
 | |
| // CreateQrBase64 直接生成二维码
 | |
| func CreateQrBase64(c *gin.Context) {
 | |
| 
 | |
| 	realUrl := c.Query("url")
 | |
| 	logo := c.Query("logo")
 | |
| 	if realUrl == "" {
 | |
| 		service.Error(c, errors.New("not real url"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	s, err := utils.CreateQrBase64(realUrl, logo)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	c.Writer.Header().Set("content-type", "image/apng")
 | |
| 	if _, err = c.Writer.WriteString(s); err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	return
 | |
| }
 | |
| 
 | |
| // CreateRedirectQrBase64 生成重定向二维码
 | |
| func CreateRedirectQrBase64(c *gin.Context) {
 | |
| 
 | |
| 	realUrl := c.Query("url")
 | |
| 	logo := c.Query("logo")
 | |
| 	if realUrl == "" {
 | |
| 		service.Error(c, errors.New("not real url"))
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	s, err := utils.CreateQrBase64(config.AppConfig.System.Host+config.AppConfig.System.RedirectUri+"?base_redirect_url="+url.QueryEscape(realUrl), logo)
 | |
| 	if err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	c.Writer.Header().Set("content-type", "image/apng")
 | |
| 	if _, err = c.Writer.WriteString(s); err != nil {
 | |
| 		service.Error(c, err)
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	return
 | |
| }
 |