3.3K Star 9.9K Fork 4.5K

iBase4J / iBase4J

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
BaseController.java 4.72 KB
一键复制 编辑 原始数据 按行查看 历史
A圣翔 提交于 2017-10-12 15:07 . 优化配置
/**
*
*/
package org.ibase4j.core.base;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.shiro.authz.UnauthorizedException;
import org.ibase4j.core.Constants;
import org.ibase4j.core.exception.BaseException;
import org.ibase4j.core.exception.IllegalParameterException;
import org.ibase4j.core.support.DateFormat;
import org.ibase4j.core.support.HttpCode;
import org.ibase4j.core.util.InstanceUtil;
import org.ibase4j.core.util.WebUtil;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.http.ResponseEntity;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.InitBinder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.plugins.Page;
/**
* 控制器基类
*
* @author ShenHuaJie
* @version 2016年5月20日 下午3:47:58
*/
public abstract class BaseController {
protected final Logger logger = LogManager.getLogger(this.getClass());
/** 获取当前用户Id */
protected Long getCurrUser() {
return WebUtil.getCurrentUser();
}
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new CustomDateEditor(new DateFormat(), true));
}
/** 设置成功响应代码 */
protected ResponseEntity<ModelMap> setSuccessModelMap(ModelMap modelMap) {
return setSuccessModelMap(modelMap, null);
}
/** 设置成功响应代码 */
protected ResponseEntity<ModelMap> setSuccessModelMap(ModelMap modelMap, Object data) {
return setModelMap(modelMap, HttpCode.OK, data);
}
/** 设置响应代码 */
protected ResponseEntity<ModelMap> setModelMap(ModelMap modelMap, HttpCode code) {
return setModelMap(modelMap, code, null);
}
/** 设置响应代码 */
protected ResponseEntity<ModelMap> setModelMap(ModelMap modelMap, HttpCode code, Object data) {
Map<String, Object> map = InstanceUtil.newLinkedHashMap();
map.putAll(modelMap);
modelMap.clear();
for (Iterator<String> iterator = map.keySet().iterator(); iterator.hasNext();) {
String key = iterator.next();
if (!key.startsWith("org.springframework.validation.BindingResult") && !key.equals("void")) {
modelMap.put(key, map.get(key));
}
}
if (data != null) {
if (data instanceof Page) {
Page<?> page = (Page<?>) data;
modelMap.put("data", page.getRecords());
modelMap.put("current", page.getCurrent());
modelMap.put("size", page.getSize());
modelMap.put("pages", page.getPages());
modelMap.put("total", page.getTotal());
modelMap.put("iTotalRecords", page.getTotal());
modelMap.put("iTotalDisplayRecords", page.getTotal());
} else if (data instanceof List<?>) {
modelMap.put("data", data);
modelMap.put("iTotalRecords", ((List<?>) data).size());
modelMap.put("iTotalDisplayRecords", ((List<?>) data).size());
} else {
modelMap.put("data", data);
}
}
modelMap.put("httpCode", code.value());
modelMap.put("msg", code.msg());
modelMap.put("timestamp", System.currentTimeMillis());
logger.info("RESPONSE : " + JSON.toJSONString(modelMap));
return ResponseEntity.ok(modelMap);
}
/** 异常处理 */
@ExceptionHandler(Exception.class)
public void exceptionHandler(HttpServletRequest request, HttpServletResponse response, Exception ex)
throws Exception {
logger.error(Constants.Exception_Head, ex);
ModelMap modelMap = new ModelMap();
if (ex instanceof BaseException) {
((BaseException) ex).handler(modelMap);
} else if (ex instanceof IllegalArgumentException) {
new IllegalParameterException(ex.getMessage()).handler(modelMap);
} else if (ex instanceof UnauthorizedException) {
modelMap.put("httpCode", HttpCode.FORBIDDEN.value().toString());
modelMap.put("msg", StringUtils.defaultIfBlank(ex.getMessage(), HttpCode.FORBIDDEN.msg()));
} else {
modelMap.put("httpCode", HttpCode.INTERNAL_SERVER_ERROR.value().toString());
String msg = StringUtils.defaultIfBlank(ex.getMessage(), HttpCode.INTERNAL_SERVER_ERROR.msg());
modelMap.put("msg", msg.length() > 100 ? "系统走神了,请稍候再试." : msg);
}
response.setContentType("application/json;charset=UTF-8");
modelMap.put("timestamp", System.currentTimeMillis());
logger.info("RESPONSE : " + JSON.toJSON(modelMap));
byte[] bytes = JSON.toJSONBytes(modelMap, SerializerFeature.DisableCircularReferenceDetect);
response.getOutputStream().write(bytes);
}
}
Java
1
https://gitee.com/iBase4J/iBase4J.git
git@gitee.com:iBase4J/iBase4J.git
iBase4J
iBase4J
iBase4J
953c8cda8ed0acd246839bef5fcd6ac80e3e08c2

搜索帮助