You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							101 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
	
	
							101 lines
						
					
					
						
							3.1 KiB
						
					
					
				package com.ruoyi.web.controller.common; | 
						|
 | 
						|
import java.awt.image.BufferedImage; | 
						|
import java.io.IOException; | 
						|
import java.util.concurrent.TimeUnit; | 
						|
import javax.annotation.Resource; | 
						|
import javax.imageio.ImageIO; | 
						|
import javax.servlet.http.HttpServletResponse; | 
						|
 | 
						|
import com.alibaba.fastjson.JSONObject; | 
						|
import com.ruoyi.common.config.RuoYiConfig; | 
						|
import com.ruoyi.web.controller.mapper.VideoDao; | 
						|
import org.springframework.beans.factory.annotation.Autowired; | 
						|
import org.springframework.util.FastByteArrayOutputStream; | 
						|
import org.springframework.web.bind.annotation.GetMapping; | 
						|
import org.springframework.web.bind.annotation.RestController; | 
						|
import com.google.code.kaptcha.Producer; | 
						|
import com.ruoyi.common.constant.Constants; | 
						|
import com.ruoyi.common.core.domain.AjaxResult; | 
						|
import com.ruoyi.common.core.redis.RedisCache; | 
						|
import com.ruoyi.common.utils.sign.Base64; | 
						|
import com.ruoyi.common.utils.uuid.IdUtils; | 
						|
import com.ruoyi.system.service.ISysConfigService; | 
						|
 | 
						|
/** | 
						|
 * 验证码操作处理 | 
						|
 *  | 
						|
 * @author ruoyi | 
						|
 */ | 
						|
@RestController | 
						|
public class CaptchaController | 
						|
{ | 
						|
    @Resource(name = "captchaProducer") | 
						|
    private Producer captchaProducer; | 
						|
 | 
						|
    @Resource(name = "captchaProducerMath") | 
						|
    private Producer captchaProducerMath; | 
						|
 | 
						|
    @Autowired | 
						|
    private RedisCache redisCache; | 
						|
     | 
						|
    @Autowired | 
						|
    private ISysConfigService configService; | 
						|
 | 
						|
 | 
						|
    @Autowired | 
						|
    private VideoDao videoDao; | 
						|
 | 
						|
    /** | 
						|
     * 生成验证码 | 
						|
     */ | 
						|
    @GetMapping("/captchaImage") | 
						|
    public AjaxResult getCode(HttpServletResponse response) throws IOException | 
						|
    { | 
						|
        AjaxResult ajax = AjaxResult.success(); | 
						|
        boolean captchaOnOff = configService.selectCaptchaOnOff(); | 
						|
        ajax.put("captchaOnOff", captchaOnOff); | 
						|
        if (!captchaOnOff) | 
						|
        { | 
						|
            return ajax; | 
						|
        } | 
						|
 | 
						|
        // 保存验证码信息 | 
						|
        String uuid = IdUtils.simpleUUID(); | 
						|
        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; | 
						|
 | 
						|
        String capStr = null, code = null; | 
						|
        BufferedImage image = null; | 
						|
 | 
						|
        // 生成验证码 | 
						|
        String captchaType = RuoYiConfig.getCaptchaType(); | 
						|
        if ("math".equals(captchaType)) | 
						|
        { | 
						|
            String capText = captchaProducerMath.createText(); | 
						|
            capStr = capText.substring(0, capText.lastIndexOf("@")); | 
						|
            code = capText.substring(capText.lastIndexOf("@") + 1); | 
						|
            image = captchaProducerMath.createImage(capStr); | 
						|
        } | 
						|
        else if ("char".equals(captchaType)) | 
						|
        { | 
						|
            capStr = code = captchaProducer.createText(); | 
						|
            image = captchaProducer.createImage(capStr); | 
						|
        } | 
						|
 | 
						|
        redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); | 
						|
        // 转换流信息写出 | 
						|
        FastByteArrayOutputStream os = new FastByteArrayOutputStream(); | 
						|
        try | 
						|
        { | 
						|
            ImageIO.write(image, "jpg", os); | 
						|
        } | 
						|
        catch (IOException e) | 
						|
        { | 
						|
            return AjaxResult.error(e.getMessage()); | 
						|
        } | 
						|
 | 
						|
        ajax.put("uuid", uuid); | 
						|
        ajax.put("img", Base64.encode(os.toByteArray())); | 
						|
        return ajax; | 
						|
    } | 
						|
}
 | 
						|
 |