spring返回值



package com.clic.common.action;

import com.clic.auth.pojo.UserAuthentication;
import com.clic.auth.pojo.UserAuthority;
import com.clic.common.action.pojo.RestResult;
import com.clic.common.action.pojo.ClientInfo;
import com.clic.common.action.pojo.ClientInfo.ClientType;
import com.clic.common.action.service.IRequestHelper;
import com.clic.common.exception.BizException;
import com.clic.common.exception.FrameworkException;

import com.clic.system.service.ISystemHandleService;
import com.clic.system.service.SystemConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

public class BaseController {
 private Logger log = LoggerFactory.getLogger(BaseController.class);
    @Autowired
    private IRequestHelper requestHelper;
    @Autowired
 private ISystemHandleService handleService;
   
    private final String SORT_NAME = "sort";
    private final String PAGE_NAME = "p";
    private final String SIZE_NAME = "len";
    private final int DEFAULT_PAGE = 0;
    private final char DESC='-';
    private final int DEFAULT_SIZE = 10;

    protected Pageable getPage() {
        HttpServletRequest reqeust = getReqeust();
        int page = DEFAULT_PAGE;
        if (reqeust.getParameter(PAGE_NAME) != null) {
            page = Integer.parseInt(reqeust.getParameter(PAGE_NAME));
        }

        int size = DEFAULT_SIZE;
        if (reqeust.getParameter(SIZE_NAME) != null) {
            size = Integer.parseInt(reqeust.getParameter(SIZE_NAME));
        }

        Sort sort = null;
        if (reqeust.getParameter(SORT_NAME) != null) {
            List<String> sortValue = Arrays.asList(reqeust.getParameter(SORT_NAME).split("\\|"));
            List<Sort.Order> orders = new ArrayList<>();
            sortValue.forEach(new Consumer<String>() {
                @Override
                public void accept(String s) {
                    Sort.Direction direction = Sort.Direction.ASC;
                    if (DESC == s.charAt(0)){
                        direction=  Sort.Direction.DESC;
                        s=s.substring(1);
                    }
                    orders.add(new Sort.Order(direction, s));
                }
            });
            sort = new Sort(orders);
        }
        return new PageRequest(page, size, sort);
    }

 protected ClientInfo getClientInfo() {
  return requestHelper.getClientInfo(getReqeust());
 }
 
 protected ClientInfo getLoginClientInfo() {
  return requestHelper.getLoginClientInfo(getReqeust());
 }
 
 
 protected HttpServletRequest getReqeust() {
  return ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
 }
 
 protected HttpServletResponse getResponse() {
  return ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getResponse();
 }
 
 @ExceptionHandler(BizException.class)
 public <T> ResponseEntity<RestResult<T>> runtimeExceptionHandler(BizException ex) {
  ex.printStackTrace();
  return error(ex);
 }

 @ExceptionHandler(FrameworkException.class)
 public <T> ResponseEntity<RestResult<T>> runtimeExceptionHandler(FrameworkException ex) {
  if(SystemConfig.isDebug()) {
   ex.printStackTrace();
  }else {
   //发送EMAIL、短信给开发人员
   handleService.sendAlarmMessage(ex);
  }  
  return error(ex);
 }

 @ExceptionHandler(Exception.class)
 public void runtimeExceptionHandler(Exception ex) {
  StringBuffer errorMsg = new StringBuffer(ex.toString());
  StackTraceElement[] stacks = ex.getStackTrace();
  int len = stacks.length;
  for(int i=0;i<len;i++) {
   errorMsg.append("\r\n").append(stacks[i]);
  }
  //发送EMAIL、短信给开发人员
  handleService.sendAlarmMessage(ex.getMessage(), errorMsg.toString());
  log.error(errorMsg.toString());
 }

 private MultiValueMap<String, String> jsonHeader(){
  MultiValueMap<String, String> header = new LinkedMultiValueMap<>();
  header.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
  return header;
 }
 
 protected UserAuthentication getCurrentUser() {
  Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  if(auth instanceof UserAuthentication) {
   return (UserAuthentication)auth;
  }
  return null;
//   auth = (CustomerAuthentication)
//  return (AuthorityUserInfo)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
 }
 
 protected UserAuthority getCurrentAuthority() {
  return getCurrentUser().getAuth();
 }
 
 public ClientType getUserClientType() {
  return getCurrentUser().getClientType();
 }
 
 protected ResponseEntity<RestResult<String>> success() {
  return new ResponseEntity<RestResult<String>>(RestResult.succuss(""), HttpStatus.OK);
 }
 
 protected <T> ResponseEntity<RestResult<T>> success(T data) {
  return new ResponseEntity<RestResult<T>>(RestResult.succuss(data), HttpStatus.OK);
 }

 private <T> ResponseEntity<RestResult<T>> error(BizException ex) {
  log.warn(ex.getMessage());
  return new ResponseEntity<RestResult<T>>(RestResult.failure(ex), HttpStatus.OK);
 }

 private <T> ResponseEntity<RestResult<T>> error(FrameworkException ex) {
  log.error(ex.getMessage());
  return new ResponseEntity<RestResult<T>>(RestResult.failure(ex), HttpStatus.OK);
 }
}


ResponseEntity<RestResult<Map<String,String>>> return success(map);也可以是对象

猜你喜欢

转载自blog.csdn.net/qq_27988103/article/details/80372253
今日推荐