fonchain-fiee/pkg/service/qr/qr.go

182 lines
3.6 KiB
Go
Raw Normal View History

2025-02-20 08:24:49 +00:00
package qr
import (
"errors"
"fmt"
"net/url"
)
2025-02-20 08:38:16 +00:00
// CreateQr 直接生成二维码
2025-02-20 08:24:49 +00:00
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
}
2025-02-20 08:38:16 +00:00
// CreateQr 直接生成二维码
2025-02-20 08:24:49 +00:00
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
}
2025-02-20 08:38:16 +00:00
// CreateRedirectQr 生成重定向二维码
2025-02-20 08:24:49 +00:00
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
}
2025-02-20 08:38:16 +00:00
// CreateQrBase64 直接生成二维码
2025-02-20 08:24:49 +00:00
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
}
2025-02-20 08:38:16 +00:00
// CreateRedirectQrBase64 生成重定向二维码
2025-02-20 08:24:49 +00:00
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
}