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 }