49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package common
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"management/internal/erpserver/handler"
|
|
v1 "management/internal/erpserver/service/v1"
|
|
"management/internal/pkg/render"
|
|
)
|
|
|
|
type CaptchaHandler struct {
|
|
*handler.Handler
|
|
captchaService v1.CaptchaService
|
|
}
|
|
|
|
func NewCaptchaHandler(handler *handler.Handler, captchaService v1.CaptchaService) *CaptchaHandler {
|
|
return &CaptchaHandler{
|
|
Handler: handler,
|
|
captchaService: captchaService,
|
|
}
|
|
}
|
|
|
|
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, _ *http.Request) {
|
|
id, b64s, _, err := h.captchaService.Generate(
|
|
h.Config.Captcha.ImgHeight,
|
|
h.Config.Captcha.ImgWidth,
|
|
h.Config.Captcha.KeyLong,
|
|
0.7, 80)
|
|
if err != nil {
|
|
h.JSONErr(w, "获取验证码失败")
|
|
return
|
|
}
|
|
|
|
rsp := CaptchaResponse{
|
|
CaptchaID: id,
|
|
PicPath: b64s,
|
|
CaptchaLength: h.Config.Captcha.KeyLong,
|
|
OpenCaptcha: h.Config.Captcha.OpenCaptcha,
|
|
}
|
|
h.JSON(w, render.Response{Success: true, Message: "ok", Data: rsp})
|
|
}
|