package com.inet.ailink.receiver.controller; import com.inet.ailink.receiver.common.enums.StatusCode; import com.inet.ailink.receiver.common.exception.BizException; import com.inet.ailink.receiver.common.utils.Base64TeaUitls; import com.inet.ailink.receiver.common.utils.JsonUtils; import com.inet.ailink.receiver.common.vo.Response; import com.inet.ailink.receiver.service.impl.SysAccoountServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.Map; //import com.google.common.primitives.Bytes; public abstract class BaseController extends java.beans.PropertyEditorSupport { /** * 子类可以用这个Logger Log4J Logger for this class */ protected final Logger log = LoggerFactory.getLogger(getClass()); //系统统一的提示没有权限访问的界面 protected static final String noRight_page="noRight"; public final static String KEY_USER = "user"; @Autowired private SysAccoountServiceImpl sysAccoountServiceImpl; /** * 写回加密数据 * @param response * @param result * @throws IOException */ public void writeOutResponse(HttpServletResponse response, Response result) throws IOException{ response.setHeader("Access-Control-Allow-Origin",""); response.setHeader("Access-Control-Allow-Credentials",""); response.setHeader("Access-Control-Allow-Methods",""); response.setHeader("Access-Control-Max-Age",""); response.setHeader("Access-Control-Allow-Headers",""); response.setHeader("X-Application-Context",""); response.setHeader("Transfer-Encoding", ""); PrintWriter out = response.getWriter(); if(result.getData() != null){ String dataValue = result.getData().toString(); result.setData(Base64TeaUitls.encrypt(dataValue)); } String resultJson = JsonUtils.toJson(result); response.setHeader("ResponseBodySize", resultJson.length()+""); out.write(resultJson); out.flush(); out.close(); } /** * 写回正常数据 * @param response * @param result * @throws IOException */ public void writeOutResponseNoEncrypt(HttpServletResponse response, Response result) throws IOException{ response.setHeader("Access-Control-Allow-Origin",""); response.setHeader("Access-Control-Allow-Credentials",""); response.setHeader("Access-Control-Allow-Methods",""); response.setHeader("Access-Control-Max-Age",""); response.setHeader("Access-Control-Allow-Headers",""); response.setHeader("X-Application-Context",""); // response.setHeader("Transfer-Encoding", "chunked"); //response.setBufferSize(result.toString().length()); String resultJson = JsonUtils.toJson(result); response.setHeader("ResponseBodySize", resultJson.length()+""); PrintWriter out = response.getWriter(); out.write(resultJson); out.flush(); out.close(); } /** * 写回任意原始数据 * @param response * @param result * @throws IOException */ public void writeOutResponseOld(HttpServletResponse response, String result) throws IOException{ response.setHeader("Access-Control-Allow-Origin",""); response.setHeader("Access-Control-Allow-Credentials",""); response.setHeader("Access-Control-Allow-Methods",""); response.setHeader("Access-Control-Max-Age",""); response.setHeader("Access-Control-Allow-Headers",""); response.setHeader("X-Application-Context",""); response.setHeader("Transfer-Encoding", ""); response.setHeader("ResponseBodySize", result.length()+""); PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); } /** * 写回数据解析失败数据 * @param response * @param result * @throws IOException */ public void writeOutResponse(HttpServletResponse response, byte[] paramsByte) throws IOException { Response result = new Response(); result.setStatus(paramsByte[0]+""); response.setHeader("Access-Control-Allow-Origin",""); response.setHeader("Access-Control-Allow-Credentials",""); response.setHeader("Access-Control-Allow-Methods",""); response.setHeader("Access-Control-Max-Age",""); response.setHeader("Access-Control-Allow-Headers",""); response.setHeader("X-Application-Context",""); response.setHeader("Transfer-Encoding", ""); String resultJson = JsonUtils.toJson(result); response.setHeader("ResponseBodySize", resultJson.length()+""); PrintWriter out = response.getWriter(); out.write(resultJson); out.flush(); out.close(); } /** * 校验参数是否为空 * @param response * @param params * @throws IOException */ public void checkParams(HttpServletResponse response, String params) throws IOException{ Response result = new Response(); if(params == null || params.isEmpty() || params.equals("")){ result.setStatus(StatusCode.PARAM_EMPTY.getCode()); writeOutResponse(response, result); } } /** * 解密数据 * @param params * @return * @throws IOException */ public byte[] decryptParams(HttpServletResponse response, String params) throws IOException{ //解密数据失败 byte[] paramsByte = new byte[]{}; //数据格式不正确 Map paramsMap = new HashMap(); try { paramsMap = JsonUtils.fromJson(params, Map.class); // System.out.println("decryptParams() paramsMap: " + paramsMap); } catch (Exception e) { paramsByte = new byte[]{(byte) Integer.parseInt(StatusCode.PARAMS_JSON_ERROR.getCode())}; // System.out.println("decryptParams() Exception: " + e); return paramsByte; } //关键参数字段获取失败 String paramsValue = paramsMap.get("params"); // System.out.println("decryptParams() paramsValue: " + paramsValue); if(paramsValue == null || paramsValue.equals("")){ paramsByte = new byte[]{(byte) Integer.parseInt(StatusCode.PARAMS_JSON_KEY_ERROR.getCode())}; return paramsByte; } try { paramsByte = Base64TeaUitls.decrypt(paramsValue); // System.out.println("decryptParams() paramsByte: " + paramsByte); } catch (Exception e) { paramsByte = new byte[]{(byte) Integer.parseInt(StatusCode.PARAMS_dECRYPT_ERROR.getCode())}; // System.out.println("decryptParams() paramsByte2: " + paramsByte); return paramsByte; } return paramsByte; } }