|  | @@ -1,97 +1,90 @@
 | 
	
		
			
				|  |  | -//package com.ozs.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 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.ozs.common.config.PurchaseConfig;
 | 
	
		
			
				|  |  | -//import com.ozs.common.constant.CacheConstants;
 | 
	
		
			
				|  |  | -//import com.ozs.common.constant.Constants;
 | 
	
		
			
				|  |  | -//import com.ozs.common.core.domain.AjaxResult;
 | 
	
		
			
				|  |  | -//import com.ozs.common.core.redis.RedisCache;
 | 
	
		
			
				|  |  | -//import com.ozs.common.utils.sign.Base64;
 | 
	
		
			
				|  |  | -//import com.ozs.common.utils.uuid.IdUtils;
 | 
	
		
			
				|  |  | -//import com.ozs.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 PurchaseConfig purchaseConfig;
 | 
	
		
			
				|  |  | -//
 | 
	
		
			
				|  |  | -//    @Autowired
 | 
	
		
			
				|  |  | -//    private ISysConfigService configService;
 | 
	
		
			
				|  |  | -//    /**
 | 
	
		
			
				|  |  | -//     * 生成验证码
 | 
	
		
			
				|  |  | -//     */
 | 
	
		
			
				|  |  | -//    @GetMapping("/captchaImage")
 | 
	
		
			
				|  |  | -//    public AjaxResult getCode(HttpServletResponse response) throws IOException
 | 
	
		
			
				|  |  | -//    {
 | 
	
		
			
				|  |  | -//        AjaxResult ajax = AjaxResult.success();
 | 
	
		
			
				|  |  | -//        boolean captchaEnabled = configService.selectCaptchaEnabled();
 | 
	
		
			
				|  |  | -//        ajax.put("captchaEnabled", captchaEnabled);
 | 
	
		
			
				|  |  | -//        if (!captchaEnabled)
 | 
	
		
			
				|  |  | -//        {
 | 
	
		
			
				|  |  | -//            return ajax;
 | 
	
		
			
				|  |  | -//        }
 | 
	
		
			
				|  |  | -//
 | 
	
		
			
				|  |  | -//        // 保存验证码信息
 | 
	
		
			
				|  |  | -//        String uuid = IdUtils.simpleUUID();
 | 
	
		
			
				|  |  | -//        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
 | 
	
		
			
				|  |  | -//
 | 
	
		
			
				|  |  | -//        String capStr = null, code = null;
 | 
	
		
			
				|  |  | -//        BufferedImage image = null;
 | 
	
		
			
				|  |  | -//
 | 
	
		
			
				|  |  | -//        // 生成验证码
 | 
	
		
			
				|  |  | -//        String captchaType = purchaseConfig.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;
 | 
	
		
			
				|  |  | -//    }
 | 
	
		
			
				|  |  | -//}
 | 
	
		
			
				|  |  | +package com.ozs.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 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.ozs.common.config.PurchaseConfig;
 | 
	
		
			
				|  |  | +import com.ozs.common.constant.CacheConstants;
 | 
	
		
			
				|  |  | +import com.ozs.common.constant.Constants;
 | 
	
		
			
				|  |  | +import com.ozs.common.core.domain.AjaxResult;
 | 
	
		
			
				|  |  | +import com.ozs.common.core.redis.RedisCache;
 | 
	
		
			
				|  |  | +import com.ozs.common.utils.sign.Base64;
 | 
	
		
			
				|  |  | +import com.ozs.common.utils.uuid.IdUtils;
 | 
	
		
			
				|  |  | +import com.ozs.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 PurchaseConfig purchaseConfig;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ISysConfigService configService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 生成验证码
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @GetMapping("/captchaImage")
 | 
	
		
			
				|  |  | +    public AjaxResult getCode(HttpServletResponse response) throws IOException {
 | 
	
		
			
				|  |  | +        AjaxResult ajax = AjaxResult.success();
 | 
	
		
			
				|  |  | +        boolean captchaEnabled = configService.selectCaptchaEnabled();
 | 
	
		
			
				|  |  | +        ajax.put("captchaEnabled", captchaEnabled);
 | 
	
		
			
				|  |  | +        if (!captchaEnabled) {
 | 
	
		
			
				|  |  | +            return ajax;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 保存验证码信息
 | 
	
		
			
				|  |  | +        String uuid = IdUtils.simpleUUID();
 | 
	
		
			
				|  |  | +        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String capStr = null, code = null;
 | 
	
		
			
				|  |  | +        BufferedImage image = null;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 生成验证码
 | 
	
		
			
				|  |  | +        String captchaType = purchaseConfig.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;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |