55 lines
1.4 KiB
Go

/*
* @desc:验证码获取
* @company:云南奇讯科技有限公司
* @Author: yixiaohu
* @Date: 2022/3/2 17:45
*/
package controller
import (
"context"
"errors"
"github.com/gogf/gf/v2/frame/g"
"github.com/tiger1103/gfast/v3/api/v1/common"
"github.com/tiger1103/gfast/v3/internal/app/common/service"
"time"
)
var Captcha = captchaController{}
type captchaController struct {
}
// Get 获取验证码
func (c *captchaController) Get(ctx context.Context, req *common.CaptchaReq) (res *common.CaptchaRes, err error) {
idKeyC, base64stringC, err := service.Captcha().GetVerifyImgString(ctx)
res = &common.CaptchaRes{
Key: idKeyC,
Img: base64stringC,
VerifyStatus: g.Cfg().MustGet(ctx, "system.verifyStatus").Int(),
}
return
}
// V2 验证码
func (c *captchaController) V2(ctx context.Context, req *common.CaptchaV2Req) (res *common.CaptchaV2Res, err error) {
dots, img, thumb, key, err := service.Captcha().GetCaptchaV2(ctx)
// 写入缓存
service.Cache().Set(ctx, "captchaV2_"+key, dots, 10*60*time.Second)
res = &common.CaptchaV2Res{
Key: key,
Img: img,
Thumb: thumb,
}
return
}
func (c *captchaController) V2Check(ctx context.Context, req *common.CheckCaptchaV2Req) (res *common.CheckCaptchaV2Res, err error) {
if req.Key == "" || req.Dots == "" {
return nil, errors.New("验证码无效")
}
err = service.Captcha().CheckCaptchaV2(ctx, req.Key, req.Dots)
return
}