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
|
|
}
|