package com.ibeetl.admin.console.api;
|
|
import com.ibeetl.admin.console.service.RedisService;
|
import io.swagger.annotations.Api;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.imageio.ImageIO;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
import java.awt.*;
|
import java.awt.image.BufferedImage;
|
import java.io.IOException;
|
import java.util.Random;
|
|
@RestController
|
@Api(value = "登陆和用户管理的接口(验证码)")
|
public class VerifyApi {
|
@Autowired
|
RedisService redisService;
|
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
|
|
@RequestMapping("/wxImgApi")
|
void wxImgApi(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
String content = req.getParameter("content");
|
WeixinPay.encodeQrcode(content, resp);
|
}
|
|
@RequestMapping("/verifyApi")
|
void verifyApi(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
|
redisService.remove("xzx:user:verify:code");
|
|
// 创建图片
|
int width = 80;
|
int height = 40;
|
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
|
// 创建图层获得画板
|
Graphics g = image.getGraphics();
|
// 确认画笔颜色
|
g.setColor(Color.BLACK);
|
//填充矩形
|
g.fillRect(0, 0, width - 2, height - 2);
|
// String dataString="ABCDEFGHIJHLMNOPQRSTUVWXYZabcdefghijklmnopqlstuvwxyz1234567890";
|
String dataString = "1234567890";
|
//设置字体
|
g.setFont(new Font("宋体", Font.BOLD, 30));
|
//缓存随机生成的字符
|
StringBuffer buf = new StringBuffer();
|
Random random = new Random();
|
|
//截取字符
|
for (int i = 0; i < 4; i++) {
|
//设置字体颜色 随机
|
g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));
|
//获得一个随机字符
|
int index = random.nextInt(10);
|
String str = dataString.substring(index, index + 1);
|
//加入画板
|
g.drawString(str, 20 * i, 30);
|
buf.append(str);
|
}
|
//干扰线
|
for (int i = 0; i < 10; i++) {
|
g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));
|
g.setColor(new Color(16, 16, 16));
|
g.drawLine(random.nextInt(width), random.nextInt(height), random.nextInt(width), random.nextInt(height));
|
}
|
HttpSession session = req.getSession();
|
log.info("获取的验证码是: {}", buf.toString());
|
session.setAttribute("cap", buf.toString());
|
redisService.set("xzx:user:verify:code", buf.toString());
|
//设置响应类型
|
resp.setContentType("image/jpeg");
|
//将图片发送给浏览器
|
ImageIO.write(image, "jpg", resp.getOutputStream());
|
}
|
}
|