Browse Source

预览测试

albertshaw 8 years ago
parent
commit
708b0abb9b

+ 92 - 56
src/main/java/com/goafanti/admin/controller/AdminPatentApiController.java

@@ -22,6 +22,7 @@ import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -53,6 +54,7 @@ import com.goafanti.common.model.PatentRegistration;
 import com.goafanti.common.model.User;
 import com.goafanti.common.utils.FileUtils;
 import com.goafanti.common.utils.LoggerUtils;
+import com.goafanti.common.utils.SHA256Util;
 import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
@@ -92,7 +94,10 @@ public class AdminPatentApiController extends CertifyApiController {
 	private AftFileService					aftFileService;
 	@Resource
 	private OrgRatepayService				orgRatepayService;
-	
+
+	@Value(value = "${aesSecretKey}")
+	private String							secretKey	= null;
+
 	/**
 	 * 专利列表
 	 * 
@@ -118,7 +123,7 @@ public class AdminPatentApiController extends CertifyApiController {
 				pSize));
 		return res;
 	}
-	
+
 	/**
 	 * 新增专利申请
 	 */
@@ -147,7 +152,7 @@ public class AdminPatentApiController extends CertifyApiController {
 		res.setData(patentInfoService.savePatentInfo(pi, aid));
 		return res;
 	}
-	
+
 	/**
 	 * 专利详情
 	 * 
@@ -164,7 +169,7 @@ public class AdminPatentApiController extends CertifyApiController {
 		}
 		return res;
 	}
-	
+
 	/**
 	 * 管理端logs
 	 */
@@ -179,7 +184,6 @@ public class AdminPatentApiController extends CertifyApiController {
 		return res;
 	}
 
-	
 	/**
 	 * 专利详情修改保存
 	 * 
@@ -195,7 +199,6 @@ public class AdminPatentApiController extends CertifyApiController {
 			return res;
 		}
 
-
 		if (StringUtils.isBlank(patentInfo.getId())) {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到专利申请", "专利记录ID"));
 			return res;
@@ -224,52 +227,51 @@ public class AdminPatentApiController extends CertifyApiController {
 		return res;
 	}
 
-
 	/**
 	 * 专利状态流转下拉
+	 * 
 	 * @return
 	 */
 	@RequestMapping(value = "/patentStatus", method = RequestMethod.GET)
-	public Result patentStatus(){
+	public Result patentStatus() {
 		Result res = new Result();
 		res.setData(disposePatentStatus());
 		return res;
 	}
-	
-	
+
 	/**
 	 * 上年度纳税申报报表是否存在
+	 * 
 	 * @param uid
 	 * @param sign
 	 * @return
 	 */
 	@RequestMapping(value = "/lastYearTax", method = RequestMethod.GET)
-	public Result lastYearTax(String uid, String sign){
+	public Result lastYearTax(String uid, String sign) {
 		Result res = new Result();
-		
-		if (StringUtils.isBlank(uid)){
+
+		if (StringUtils.isBlank(uid)) {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
 			return res;
 		}
-		
+
 		AttachmentType attachmentType = AttachmentType.getField(sign);
 		if (attachmentType == AttachmentType.LAST_YEAR_RATEPAY) {
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
 			return res;
 		}
-		
+
 		Calendar cal = Calendar.getInstance();
-		OrgRatepay ratepay = orgRatepayService.selectRatepayByUidAndYear(uid, cal.get(Calendar.YEAR)-1);
-		
-		if (null == ratepay){
+		OrgRatepay ratepay = orgRatepayService.selectRatepayByUidAndYear(uid, cal.get(Calendar.YEAR) - 1);
+
+		if (null == ratepay) {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到上年度纳税申报表", "上年度纳税申报表"));
 			return res;
 		}
-		
+
 		return res;
 	}
-	
-	
+
 	/**
 	 * 专利相关材料上传
 	 * 
@@ -339,6 +341,39 @@ public class AdminPatentApiController extends CertifyApiController {
 	}
 
 	/**
+	 * 预览专利相关材料
+	 * 
+	 * @param id
+	 * @param sign
+	 * @param response
+	 * @return
+	 */
+	@RequestMapping(value = "/preview", method = RequestMethod.GET)
+	public Result preview(String id, String sign) {
+		Result res = new Result();
+		if (StringUtils.isEmpty(id)) {
+			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "专利id"));
+			return res;
+		}
+		PatentInfo pi = patentInfoService.selectByPrimaryKey(id);
+		if (pi == null) {
+			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "专利id"));
+			return res;
+		}
+		AttachmentType attachmentType = AttachmentType.getField(sign);
+		if (attachmentType == AttachmentType.PATENT_PRORY_STATEMENT || attachmentType == AttachmentType.PATENT_WRITING
+				|| attachmentType == AttachmentType.AUTHORIZATION_NOTICE
+				|| attachmentType == AttachmentType.PATENT_CERTIFICATE) {
+			String time = String.valueOf(Calendar.getInstance().getTime().getTime());
+			String auth = SHA256Util.toHash(sign + "|" + id + "|" + secretKey, time);
+			res.setData("sign=" + sign + "&token=" + id + "&auth=" + auth + "&temp=" + time);
+		} else {
+			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "附件标示"));
+		}
+		return res;
+	}
+
+	/**
 	 * 下载模版文件(专利代理委托书)
 	 * 
 	 * @param response
@@ -367,6 +402,7 @@ public class AdminPatentApiController extends CertifyApiController {
 
 	/**
 	 * 下载上年度纳税申报表
+	 * 
 	 * @param response
 	 * @param uid
 	 * @param year
@@ -376,19 +412,19 @@ public class AdminPatentApiController extends CertifyApiController {
 	@RequestMapping(value = "/downloadRatepay", method = RequestMethod.GET)
 	public Result downloadRatepay(HttpServletResponse response, String uid, String sign) {
 		Result res = new Result();
-		if (StringUtils.isBlank(uid)){
+		if (StringUtils.isBlank(uid)) {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
 			return res;
 		}
-		
+
 		Calendar cal = Calendar.getInstance();
-		OrgRatepay ratepay = orgRatepayService.selectRatepayByUidAndYear(uid, cal.get(Calendar.YEAR)-1);
-		
-		if (null == ratepay){
+		OrgRatepay ratepay = orgRatepayService.selectRatepayByUidAndYear(uid, cal.get(Calendar.YEAR) - 1);
+
+		if (null == ratepay) {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到上年度纳税申报表", "上年度纳税申报表"));
 			return res;
 		}
-		
+
 		AttachmentType attachmentType = AttachmentType.getField(sign);
 		if (attachmentType == AttachmentType.LAST_YEAR_RATEPAY) {
 			downloadFile(response, ratepay.getTaxReturnDownloadFileName(), ratepay.getTaxReturnUrl());
@@ -456,7 +492,6 @@ public class AdminPatentApiController extends CertifyApiController {
 		return res;
 	}
 
-
 	/**
 	 * 待缴费专利管理列表
 	 */
@@ -710,13 +745,14 @@ public class AdminPatentApiController extends CertifyApiController {
 
 		return res;
 	}
-	
+
 	/**
 	 * 获取资料撰写人下拉
+	 * 
 	 * @return
 	 */
 	@RequestMapping(value = "/getAuthor", method = RequestMethod.GET)
-	public Result getAuthor(){
+	public Result getAuthor() {
 		Result res = new Result();
 		List<Admin> list = adminService.selectPatentAuthor();
 		Map<String, String> map = new TreeMap<String, String>();
@@ -726,13 +762,14 @@ public class AdminPatentApiController extends CertifyApiController {
 		res.setData(map);
 		return res;
 	}
-	
+
 	/**
 	 * 专利负责人下拉
+	 * 
 	 * @return
 	 */
 	@RequestMapping(value = "/getPrincipal", method = RequestMethod.GET)
-	public Result getPrincipal(){
+	public Result getPrincipal() {
 		Result res = new Result();
 		List<Admin> list = adminService.selectPatentPrincipal();
 		Map<String, String> map = new TreeMap<String, String>();
@@ -742,8 +779,6 @@ public class AdminPatentApiController extends CertifyApiController {
 		res.setData(map);
 		return res;
 	}
-	
-	
 
 	// 专利申请费用管理报表
 	private void exportFees(HttpServletResponse response, List<PatentApplicationFeeBo> fees) {
@@ -1065,63 +1100,64 @@ public class AdminPatentApiController extends CertifyApiController {
 		}
 		return fileName;
 	}
-	
-	private Map<String, String> disposePatentStatus(){
-		Map<String, String> status = new  TreeMap<String, String>();
+
+	private Map<String, String> disposePatentStatus() {
+		Map<String, String> status = new TreeMap<String, String>();
 		if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
-			for (PatentInfoStatus p :  PatentInfoStatus.values()){
+			for (PatentInfoStatus p : PatentInfoStatus.values()) {
 				status.put(p.getCode().toString(), p.getDesc());
 				status.remove(PatentInfoStatus.OTHER.getCode().toString());
 			}
 		} else {
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CREATE.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CREATE.getCode())) {
 				status.put(PatentInfoStatus.CREATE.getCode().toString(), PatentInfoStatus.CREATE.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.SIGN.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.SIGN.getCode())) {
 				status.put(PatentInfoStatus.SIGN.getCode().toString(), PatentInfoStatus.SIGN.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.DELIVERD.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.DELIVERD.getCode())) {
 				status.put(PatentInfoStatus.DELIVERD.getCode().toString(), PatentInfoStatus.DELIVERD.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CIRCULATION.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CIRCULATION.getCode())) {
 				status.put(PatentInfoStatus.CIRCULATION.getCode().toString(), PatentInfoStatus.CIRCULATION.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.COMPOSE.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.COMPOSE.getCode())) {
 				status.put(PatentInfoStatus.COMPOSE.getCode().toString(), PatentInfoStatus.COMPOSE.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.ACCEPT.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.ACCEPT.getCode())) {
 				status.put(PatentInfoStatus.ACCEPT.getCode().toString(), PatentInfoStatus.ACCEPT.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.REVIEWNOTICE.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.REVIEWNOTICE.getCode())) {
 				status.put(PatentInfoStatus.REVIEWNOTICE.getCode().toString(), PatentInfoStatus.REVIEWNOTICE.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.REVIEWREPLY.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.REVIEWREPLY.getCode())) {
 				status.put(PatentInfoStatus.REVIEWREPLY.getCode().toString(), PatentInfoStatus.REVIEWREPLY.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CORRECTIONNOTICE.getCode())){
-				status.put(PatentInfoStatus.CORRECTIONNOTICE.getCode().toString(), PatentInfoStatus.CORRECTIONNOTICE.getDesc());
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CORRECTIONNOTICE.getCode())) {
+				status.put(PatentInfoStatus.CORRECTIONNOTICE.getCode().toString(),
+						PatentInfoStatus.CORRECTIONNOTICE.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CORRECTIONREPLY.getCode())){
-				status.put(PatentInfoStatus.CORRECTIONREPLY.getCode().toString(), PatentInfoStatus.CORRECTIONREPLY.getDesc());
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CORRECTIONREPLY.getCode())) {
+				status.put(PatentInfoStatus.CORRECTIONREPLY.getCode().toString(),
+						PatentInfoStatus.CORRECTIONREPLY.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.AUTHORIZE.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.AUTHORIZE.getCode())) {
 				status.put(PatentInfoStatus.AUTHORIZE.getCode().toString(), PatentInfoStatus.AUTHORIZE.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.REJECT.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.REJECT.getCode())) {
 				status.put(PatentInfoStatus.REJECT.getCode().toString(), PatentInfoStatus.REJECT.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.LICENSE.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.LICENSE.getCode())) {
 				status.put(PatentInfoStatus.LICENSE.getCode().toString(), PatentInfoStatus.LICENSE.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.SETTLEMENT.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.SETTLEMENT.getCode())) {
 				status.put(PatentInfoStatus.SETTLEMENT.getCode().toString(), PatentInfoStatus.SETTLEMENT.getDesc());
 			}
-			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CALLBACK.getCode())){
+			if (TokenManager.hasPermission("PatentInfoStatus" + PatentInfoStatus.CALLBACK.getCode())) {
 				status.put(PatentInfoStatus.CALLBACK.getCode().toString(), PatentInfoStatus.CALLBACK.getDesc());
 			}
 		}
 		return status;
 	}
-	
 
 }

+ 2 - 0
src/main/java/com/goafanti/common/constant/ErrorConstants.java

@@ -6,6 +6,8 @@ public class ErrorConstants {
 
 	public static final String	VCODE_ERROR						= "VCODE_ERROR";
 
+	public static final String	NO_AUTH_ERROR					= "NO_AUTH_ERROR";
+
 	public static final String	PARAM_ERROR						= "PARAM_ERROR";
 
 	public static final String	PARAM_INTEGER_ERROR				= "PARAM_INTEGER_ERROR";

+ 80 - 0
src/main/java/com/goafanti/common/controller/PreviewController.java

@@ -0,0 +1,80 @@
+package com.goafanti.common.controller;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.goafanti.common.bo.Result;
+import com.goafanti.common.constant.ErrorConstants;
+import com.goafanti.common.enums.AttachmentType;
+import com.goafanti.common.model.PatentInfo;
+import com.goafanti.common.utils.DateUtils;
+import com.goafanti.common.utils.SHA256Util;
+import com.goafanti.common.utils.StringUtils;
+import com.goafanti.patent.service.PatentInfoService;
+import com.goafanti.user.service.UserService;
+
+@Controller
+@RequestMapping("/open/preview")
+public class PreviewController extends BaseApiController {
+
+	@Resource
+	private PatentInfoService	patentInfoService;
+	@Resource
+	private UserService			userService;
+
+	@Value(value = "${aesSecretKey}")
+	private String				secretKey	= null;
+
+	@RequestMapping(value = "/template", method = RequestMethod.GET)
+	public Result preview(HttpServletResponse response, String sign, String temp, String token, String auth) {
+		Result res = new Result();
+		if (!StringUtils.isNumeric(temp)) {
+			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "预览"));
+		} else if (DateUtils.truncatedMinuteDiffTo(Calendar.getInstance().getTime(),
+				new Date(Long.parseLong(temp))) > 19) {
+			res.getError().add(buildError(ErrorConstants.NO_AUTH_ERROR));
+		} else if (!SHA256Util.toHash(sign + "|" + token + "|" + secretKey, temp).equals(auth)) {
+			res.getError().add(buildError(ErrorConstants.NO_AUTH_ERROR));
+		} else {
+			AttachmentType attachmentType = AttachmentType.getField(sign);
+			switch (attachmentType) {
+			case PATENT_PRORY_STATEMENT:
+			case PATENT_WRITING:
+			case AUTHORIZATION_NOTICE:
+			case PATENT_CERTIFICATE:
+				PatentInfo pi = patentInfoService.selectByPrimaryKey(token);
+				if (pi == null) {
+					res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "预览"));
+					return res;
+				} else {
+					handlePatentPreview(response, pi, attachmentType);
+				}
+				break;
+			default:
+				res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "预览"));
+			}
+		}
+		return res;
+	}
+
+	private void handlePatentPreview(HttpServletResponse response, PatentInfo pi, AttachmentType attachmentType) {
+		if (attachmentType == AttachmentType.PATENT_PRORY_STATEMENT) {
+			downloadFile(response, pi.getPatentProryStatementDownloadFileName(), pi.getPatentProryStatementUrl());
+		} else if (attachmentType == AttachmentType.PATENT_WRITING) {
+			downloadFile(response, pi.getPatentWritingDownloadFileName(), pi.getPatentWritingUrl());
+		} else if (attachmentType == AttachmentType.AUTHORIZATION_NOTICE) {
+			downloadFile(response, pi.getAuthorizationNoticeDownloadFileName(), pi.getAuthorizationNoticeUrl());
+		} else if (attachmentType == AttachmentType.PATENT_CERTIFICATE) {
+			downloadFile(response, pi.getPatentCertificateDownloadFileName(), pi.getPatentCertificateUrl());
+		}
+	}
+
+}

+ 22 - 1
src/main/java/com/goafanti/common/utils/DateUtils.java

@@ -50,5 +50,26 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 	public static long truncatedHourDiffTo(final Date date1, final Date date2) {
 		return truncatedDiffTo(date1, date2, Calendar.HOUR) / 3600000;
 	}
-	
+
+	/**
+	 * Determines how two dates compare up to no more than the specified most
+	 * significant field.
+	 * 
+	 * @param date1
+	 *            the first date, not <code>null</code>
+	 * @param date2
+	 *            the second date, not <code>null</code>
+	 * @param field
+	 *            the field from <code>Calendar</code>
+	 * @return diff millis
+	 * @throws IllegalArgumentException
+	 *             if any argument is <code>null</code>
+	 * @see #truncate(Calendar, int)
+	 * @see #truncatedCompareTo(Date, Date, int)
+	 * @since 3.0
+	 */
+	public static long truncatedMinuteDiffTo(final Date date1, final Date date2) {
+		return truncatedDiffTo(date1, date2, Calendar.MINUTE) / 60000;
+	}
+
 }

+ 9 - 6
src/main/java/com/goafanti/common/utils/FileUtils.java

@@ -97,10 +97,9 @@ public class FileUtils {
 		if (sign.indexOf("protocol") != -1 || sign.indexOf("achievement") != -1 || sign.indexOf("honor") != -1
 				|| sign.indexOf("proof") != -1 || sign.indexOf("activity_cost_account") != -1
 				|| sign.indexOf("tech_product") != -1 || sign.indexOf("property_ritht") != -1
-				|| sign.indexOf("tech_project") != -1 || sign.indexOf("patent_prory_statement") != -1 
-				|| sign.indexOf("patent_writing") != -1 || sign.indexOf("authorization_notice") != -1 
-				|| sign.indexOf("patent_certificate") != -1 
-				) {
+				|| sign.indexOf("tech_project") != -1 || sign.indexOf("patent_prory_statement") != -1
+				|| sign.indexOf("patent_writing") != -1 || sign.indexOf("authorization_notice") != -1
+				|| sign.indexOf("patent_certificate") != -1) {
 			uniq = true;
 		}
 		String fileName = "";
@@ -270,13 +269,17 @@ public class FileUtils {
 			LoggerUtils.fmtError(FileUtils.class, e, "IO错误:%s", e.getMessage());
 		} finally {
 			try {
-				in.close();
+				if (in != null) {
+					in.close();
+				}
 			} catch (IOException e) {
 				in = null;
 				LoggerUtils.fmtError(FileUtils.class, e, "IO错误:%s", e.getMessage());
 			}
 			try {
-				out.close();
+				if (out != null) {
+					out.close();
+				}
 			} catch (IOException e) {
 				out = null;
 				LoggerUtils.fmtError(FileUtils.class, e, "IO错误:%s", e.getMessage());

+ 9 - 0
src/main/java/com/goafanti/common/utils/SHA256Util.java

@@ -0,0 +1,9 @@
+package com.goafanti.common.utils;
+
+import org.apache.shiro.crypto.hash.SimpleHash;
+
+public class SHA256Util {
+	public static String toHash(String source, String salt) {
+		return new SimpleHash("sha-256", source, salt, 1).toHex();
+	}
+}

+ 26 - 24
src/main/resources/props/error.properties

@@ -1,39 +1,41 @@
-org.apache.shiro.authc.UnknownAccountException=\u8d26\u53f7\u6216\u5bc6\u7801\u4e0d\u5339\u914d\u3002
-org.apache.shiro.authc.IncorrectCredentialsException=\u8d26\u53f7\u6216\u5bc6\u7801\u4e0d\u5339\u914d\u3002
-org.apache.shiro.authc.LockedAccountException=\u8be5\u8d26\u53f7\u5df2\u51bb\u7ed3\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u3002
-org.apache.shiro.authc.DisabledAccountException=\u8be5\u8d26\u53f7\u5df2\u51bb\u7ed3\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u3002
-org.apache.shiro.authc.ExcessiveAttemptsException=\u5c1d\u8bd5\u6b21\u6570\u8fc7\u591a\uff0c\u8d26\u53f7\u6682\u65f6\u88ab\u9501\u5b9a\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002
-org.apache.shiro.session.ExpiredSessionException=\u767b\u5f55\u4fe1\u606f\u5df2\u8fc7\u671f\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\u3002
-org.springframework.dao.DataIntegrityViolationException=\u670d\u52a1\u5668\u6253\u4e86\u4e2a\u76f9\u513f\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6216\u7a0d\u540e\u518d\u8bd5\u3002
-org.springframework.jdbc.BadSqlGrammarException=\u6570\u636e\u5f02\u5e38\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6216\u7a0d\u540e\u518d\u8bd5\u3002
-java.text.ParseException=\u53c2\u6570\u683c\u5f0f\u9519\u8bef\uff0c\u8bf7\u6838\u5bf9\u8f93\u5165\u6570\u636e\u540e\u518d\u8bd5\u3002
+org.apache.shiro.authc.UnknownAccountException=\u8D26\u53F7\u6216\u5BC6\u7801\u4E0D\u5339\u914D\u3002
+org.apache.shiro.authc.IncorrectCredentialsException=\u8D26\u53F7\u6216\u5BC6\u7801\u4E0D\u5339\u914D\u3002
+org.apache.shiro.authc.LockedAccountException=\u8BE5\u8D26\u53F7\u5DF2\u51BB\u7ED3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002
+org.apache.shiro.authc.DisabledAccountException=\u8BE5\u8D26\u53F7\u5DF2\u51BB\u7ED3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002
+org.apache.shiro.authc.ExcessiveAttemptsException=\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8D26\u53F7\u6682\u65F6\u88AB\u9501\u5B9A\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002
+org.apache.shiro.session.ExpiredSessionException=\u767B\u5F55\u4FE1\u606F\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\u3002
+org.springframework.dao.DataIntegrityViolationException=\u670D\u52A1\u5668\u6253\u4E86\u4E2A\u76F9\u513F\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6216\u7A0D\u540E\u518D\u8BD5\u3002
+org.springframework.jdbc.BadSqlGrammarException=\u6570\u636E\u5F02\u5E38\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6216\u7A0D\u540E\u518D\u8BD5\u3002
+java.text.ParseException=\u53C2\u6570\u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u6838\u5BF9\u8F93\u5165\u6570\u636E\u540E\u518D\u8BD5\u3002
 
-NON_LOGIN=\u7528\u6237\u672a\u767b\u5f55\u3002
+NON_LOGIN=\u7528\u6237\u672A\u767B\u5F55\u3002
 
-VCODE_ERROR=\u9a8c\u8bc1\u7801\u8f93\u5165\u9519\u8bef\uff01
+VCODE_ERROR=\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF\uFF01
 
-PARAM_ERROR={0}\u53c2\u6570\u9519\u8bef
+NO_AUTH_ERROR=\u672A\u6388\u6743\u6216\u6388\u6743\u8FC7\u671F\u3002
 
-PARAM_INTEGER_ERROR={0}\u53c2\u6570\u5fc5\u987b\u4e3a\u6570\u5b57\u3002
+PARAM_ERROR={0}\u53C2\u6570\u9519\u8BEF
 
-PARAM_EMPTY_ERROR={0}\u5fc5\u987b\u6307\u5b9a\u3002
+PARAM_INTEGER_ERROR={0}\u53C2\u6570\u5FC5\u987B\u4E3A\u6570\u5B57\u3002
 
-PARAM_SIZE_ERROR={0}\u53c2\u6570\u957f\u5ea6\u4e0d\u6b63\u786e\uff0c\u5fc5\u987b\u5728{min}\u548c{max}\u4e4b\u95f4\u3002
+PARAM_EMPTY_ERROR={0}\u5FC5\u987B\u6307\u5B9A\u3002
 
-PARAM_PATTERN_ERROR={0}\u53c2\u6570\u683c\u5f0f\u987b\u6b63\u786e\u6307\u5b9a{1}\u3002
+PARAM_SIZE_ERROR={0}\u53C2\u6570\u957F\u5EA6\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4\u3002
 
-EMAIL_SIZE_ERROR=\u90ae\u7bb1\u5730\u5740\u957f\u5ea6\u9519\u8bef\uff01
+PARAM_PATTERN_ERROR={0}\u53C2\u6570\u683C\u5F0F\u987B\u6B63\u786E\u6307\u5B9A{1}\u3002
 
-EMAIL_PATTERN_ERROR=\u90ae\u7bb1\u5730\u5740\u683c\u5f0f\u9519\u8bef\uff01
+EMAIL_SIZE_ERROR=\u90AE\u7BB1\u5730\u5740\u957F\u5EA6\u9519\u8BEF\uFF01
 
-MOBILE_SIZE_ERROR=\u624b\u673a\u53f7\u957f\u5ea6\u9519\u8bef\uff01
+EMAIL_PATTERN_ERROR=\u90AE\u7BB1\u5730\u5740\u683C\u5F0F\u9519\u8BEF\uFF01
 
-MOBILE_PATTERN_ERROR=\u624b\u673a\u53f7\u683c\u5f0f\u9519\u8bef\uff01
+MOBILE_SIZE_ERROR=\u624B\u673A\u53F7\u957F\u5EA6\u9519\u8BEF\uFF01
 
-DUNPLICATE_KAY_ERROR={0}\u5df2\u88ab\u4ed6\u4eba\u6ce8\u518c\uff01
+MOBILE_PATTERN_ERROR=\u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF\uFF01
 
-DATA_EMPTY_ERROR=\u5f53\u524d{0}\u6ca1\u6709\u6570\u636e\u3002
+DUNPLICATE_KAY_ERROR={0}\u5DF2\u88AB\u4ED6\u4EBA\u6CE8\u518C\uFF01
 
-PWD_NOT_MATCH_ERROR=\u539f\u5bc6\u7801\u8f93\u5165\u4e0d\u5339\u914d\u3002
+DATA_EMPTY_ERROR=\u5F53\u524D{0}\u6CA1\u6709\u6570\u636E\u3002
 
-NON_CERTIFIED=\u672a\u901a\u8fc7\u5b9e\u540d\u8ba4\u8bc1\uff0c\u65e0\u6cd5\u64cd\u4f5c\uff01
+PWD_NOT_MATCH_ERROR=\u539F\u5BC6\u7801\u8F93\u5165\u4E0D\u5339\u914D\u3002
+
+NON_CERTIFIED=\u672A\u901A\u8FC7\u5B9E\u540D\u8BA4\u8BC1\uFF0C\u65E0\u6CD5\u64CD\u4F5C\uFF01