2025-04-14 15:28:51 +08:00

49 lines
1.1 KiB
Go

package common
import (
"net/http"
v1 "management/internal/erpserver/service/v1"
"management/internal/pkg/config"
"management/internal/pkg/tpl"
)
type captchaHandler struct {
conf *config.Captcha
render tpl.Renderer
svc v1.CaptchaService
}
func NewCaptchaHandler(conf *config.Captcha, render tpl.Renderer, svc v1.CaptchaService) *captchaHandler {
return &captchaHandler{
conf: conf,
render: render,
svc: svc,
}
}
type CaptchaResponse struct {
CaptchaID string `json:"captcha_id"`
PicPath string `json:"pic_path"`
CaptchaLength int `json:"captcha_length"`
OpenCaptcha int `json:"open_captcha"`
}
func (h *captchaHandler) Captcha(w http.ResponseWriter, r *http.Request) {
keyLong := h.conf.KeyLong
oc := h.conf.OpenCaptcha
id, b64s, _, err := h.svc.Generate(h.conf.ImgHeight, h.conf.ImgWidth, keyLong, 0.7, 80)
if err != nil {
h.render.JSON(w, tpl.Response{Success: false, Message: "获取验证码失败"})
return
}
rsp := CaptchaResponse{
CaptchaID: id,
PicPath: b64s,
CaptchaLength: keyLong,
OpenCaptcha: oc,
}
h.render.JSON(w, tpl.Response{Success: true, Message: "ok", Data: rsp})
}