// Path: src/com/lling/qiqu/commons/Constants.java
// public class Constants {
// 	//session中当前用户的key
// 	public static final String KEY_CURR_USER = "curr_user";
// 	//session中验证码的key
// 	public static final String KEY_SAFE_CODE = "safe_code";
// }
// 
// Path: src/com/lling/qiqu/commons/ResponseInfo.java
// public class ResponseInfo implements Serializable{
// 	
// 	private static final long serialVersionUID = 1L;
// 	private String code;
// 	private String desc;
// 	private Object data;
// 	
// 	public String getCode() {
// 		return code;
// 	}
// 	public void setCode(String code) {
// 		this.code = code;
// 		this.setDesc(CodeRespEnum.getDescByCode(code));
// 	}
// 	public String getDesc() {
// 		return desc;
// 	}
// 	public void setDesc(String desc) {
// 		this.desc = desc;
// 	}
// 	public Object getData() {
// 		return data;
// 	}
// 	public void setData(Object data) {
// 		this.data = data;
// 	}
// 	
// 	
// }
// 
// Path: src/com/lling/qiqu/enums/CodeRespEnum.java
// public enum CodeRespEnum {
// 	
// 	CODE_SUCCESS("200", "success"),
// 	CODE_SERVER_EXCEPTION("500", "server exception"),
// 	CODE_PARAM_INVALUD("501", "request parameters is invalud"),
// 	CODE_SOURCE_EXISTS("502", "such source exists"),
// 	CODE_NO_SOURCE_EXISTS("503", "no such source exists"),
// 	CODE_OTHER_ERROR("504", "other error happened");
// 	
// 	private String code;
// 	private String desc;
// 	
// 	public String getCode() {
// 		return code;
// 	}
// 	public void setCode(String code) {
// 		this.code = code;
// 	}
// 	public String getDesc() {
// 		return desc;
// 	}
// 	public void setDesc(String desc) {
// 		this.desc = desc;
// 	}
// 	private CodeRespEnum(String code, String desc) {
// 		this.code = code;
// 		this.desc = desc;
// 	}
// 	
// 	public static String getDescByCode(String code){
// 		for(CodeRespEnum codeRespEnum : CodeRespEnum.values()){
// 			if(codeRespEnum.getCode().equals(code)){
// 				return codeRespEnum.getDesc();
// 			}
// 		}
// 		return "";
// 	}
// 	
// 	
// 
// }


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lling.qiqu.commons.Constants;
import com.lling.qiqu.commons.ResponseInfo;
import com.lling.qiqu.enums.CodeRespEnum;
	 		g.drawLine(x,y,x+x1,y+y1);
	 	}
	 	//随机产生4位认证码
	 	String sRand = "";
	 	for(int i=0;i<4;i++){
	 		String rand = String.valueOf(str.charAt(random.nextInt(62))) ;
	 		sRand = sRand + rand;
	 		//将认证码显示到图像中
	 		g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
	 		g.drawString(rand,13*i+6,16);
	 	}
	 	//将认证码存入session中
	 	session.setAttribute(Constants.KEY_SAFE_CODE, sRand);
	 	//图像生效
	 	g.dispose();
	 	response.reset();
	 	OutputStream out = response.getOutputStream();
	 	//输出图像到页面
	 	ImageIO.write(image, "JPEG", out);
	 	out.close();
	}
	
	@ResponseBody
	@RequestMapping(value="/checkcode")
	public ResponseInfo checkCode(@RequestParam(value = "code", required = true) String code, HttpSession session) {
		ResponseInfo responseInfo = new ResponseInfo();
		String safeCode = (String) session.getAttribute(Constants.KEY_SAFE_CODE);
		if(safeCode != null && safeCode.equalsIgnoreCase(code)) {
			responseInfo.setCode(CodeRespEnum.CODE_SUCCESS.getCode());
		} else {
// Path: src/com/lling/qiqu/commons/Constants.java
// public class Constants {
// 	//session中当前用户的key
// 	public static final String KEY_CURR_USER = "curr_user";
// 	//session中验证码的key
// 	public static final String KEY_SAFE_CODE = "safe_code";
// }
// 
// Path: src/com/lling/qiqu/commons/ResponseInfo.java
// public class ResponseInfo implements Serializable{
// 	
// 	private static final long serialVersionUID = 1L;
// 	private String code;
// 	private String desc;
// 	private Object data;
// 	
// 	public String getCode() {
// 		return code;
// 	}
// 	public void setCode(String code) {
// 		this.code = code;
// 		this.setDesc(CodeRespEnum.getDescByCode(code));
// 	}
// 	public String getDesc() {
// 		return desc;
// 	}
// 	public void setDesc(String desc) {
// 		this.desc = desc;
// 	}
// 	public Object getData() {
// 		return data;
// 	}
// 	public void setData(Object data) {
// 		this.data = data;
// 	}
// 	
// 	
// }
// 
// Path: src/com/lling/qiqu/enums/CodeRespEnum.java
// public enum CodeRespEnum {
// 	
// 	CODE_SUCCESS("200", "success"),
// 	CODE_SERVER_EXCEPTION("500", "server exception"),
// 	CODE_PARAM_INVALUD("501", "request parameters is invalud"),
// 	CODE_SOURCE_EXISTS("502", "such source exists"),
// 	CODE_NO_SOURCE_EXISTS("503", "no such source exists"),
// 	CODE_OTHER_ERROR("504", "other error happened");
// 	
// 	private String code;
// 	private String desc;
// 	
// 	public String getCode() {
// 		return code;
// 	}
// 	public void setCode(String code) {
// 		this.code = code;
// 	}
// 	public String getDesc() {
// 		return desc;
// 	}
// 	public void setDesc(String desc) {
// 		this.desc = desc;
// 	}
// 	private CodeRespEnum(String code, String desc) {
// 		this.code = code;
// 		this.desc = desc;
// 	}
// 	
// 	public static String getDescByCode(String code){
// 		for(CodeRespEnum codeRespEnum : CodeRespEnum.values()){
// 			if(codeRespEnum.getCode().equals(code)){
// 				return codeRespEnum.getDesc();
// 			}
// 		}
// 		return "";
// 	}
// 	
// 	
// 
// }


// Path: src/com/lling/qiqu/controllers/admin/SafeCodeController.java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.lling.qiqu.commons.Constants;
import com.lling.qiqu.commons.ResponseInfo;
import com.lling.qiqu.enums.CodeRespEnum;

	 		g.drawLine(x,y,x+x1,y+y1);
	 	}
	 	//随机产生4位认证码
	 	String sRand = "";
	 	for(int i=0;i<4;i++){
	 		String rand = String.valueOf(str.charAt(random.nextInt(62))) ;
	 		sRand = sRand + rand;
	 		//将认证码显示到图像中
	 		g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
	 		g.drawString(rand,13*i+6,16);
	 	}
	 	//将认证码存入session中
	 	session.setAttribute(Constants.KEY_SAFE_CODE, sRand);
	 	//图像生效
	 	g.dispose();
	 	response.reset();
	 	OutputStream out = response.getOutputStream();
	 	//输出图像到页面
	 	ImageIO.write(image, "JPEG", out);
	 	out.close();
	}
	
	@ResponseBody
	@RequestMapping(value="/checkcode")
	public ResponseInfo checkCode(@RequestParam(value = "code", required = true) String code, HttpSession session) {
		ResponseInfo responseInfo = new ResponseInfo();
		String safeCode = (String) session.getAttribute(Constants.KEY_SAFE_CODE);
		if(safeCode != null && safeCode.equalsIgnoreCase(code)) {
			responseInfo.setCode(CodeRespEnum.CODE_SUCCESS.getCode());
		} else {
			responseInfo.setCode(CodeRespEnum.CODE_PARAM_INVALUD.getCode());