package v1 type BaseApi struct{} // //// Captcha //// @Tags Base //// @Summary 获取验证码 //// @Produce application/json //// @Success 200 {object} contextx.Response{data=response.LoginResponse} "成功" //// @Router /api/base/captcha [post] //func (slf *BaseApi) Captcha(c *gin.Context) { // ctx, ok := contextx.NewContext(c, nil) // if !ok { // return // } // // // 判断验证码是否开启 // openCaptcha := conf.Conf.Captcha.OpenCaptcha // 是否开启防爆次数 // openCaptchaTimeOut := conf.Conf.Captcha.OpenCaptchaTimeOut // 缓存超时时间 // key := c.ClientIP() // v, ok := constvar.BlackCache.Get(key) // if !ok { // constvar.BlackCache.Set(key, 1, time.Second*time.Duration(openCaptchaTimeOut)) // } // // var oc bool // if openCaptcha == 0 || convertx.InterfaceToInt(v) > openCaptcha { // 0 表示每次登录都需要验证码 或者当前次数已超过防爆次数 // oc = true // } // // 字符,公式,验证码配置 // // 生成默认数字的driver // driver := base64Captcha.NewDriverDigit(conf.Conf.Captcha.ImgHeight, conf.Conf.Captcha.ImgWidth, conf.Conf.Captcha.KeyLong, 0.7, 80) // cp := base64Captcha.NewCaptcha(driver, store) // id, b64s, err := cp.Generate() // captcha := store.Get(id, false) // logx.Infof("Captcha Generate captchaId:%v captcha:%v", id, captcha) // if err != nil { // logx.Errorf("Captcha Generate err:%v", err) // ctx.Fail(ecode.CaptchaGenerateFailed) // return // } // // ctx.OkWithDetailed(response.CaptchaResponse{ // CaptchaId: id, // PicPath: b64s, // CaptchaLength: conf.Conf.Captcha.KeyLong, // OpenCaptcha: oc, // }) //}