Explorar el Código

简化返回结果的处理

yaobo hace 7 años
padre
commit
6f7fd04379

+ 7 - 0
pom.xml

@@ -90,6 +90,13 @@
 			<version>1.16.10</version>
 		</dependency>
 
+		<!--fastjson 引入  -->
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.6</version>
+		</dependency>
+
 	</dependencies>
 
 	<dependencyManagement>

+ 4 - 5
src/main/java/cn/efunbox/audio/aop/AuthInterceptor.java

@@ -4,6 +4,7 @@ import cn.efunbox.audio.entity.Device;
 import cn.efunbox.audio.impl.DeviceServiceImpl;
 import cn.efunbox.audio.service.DeviceService;
 import cn.efunbox.audio.util.ApiCode;
+import cn.efunbox.audio.util.HttpUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
@@ -29,17 +30,15 @@ public class AuthInterceptor implements HandlerInterceptor {
         Map map = new HashMap<>();
         String id = request.getParameter("id");
         String token = request.getParameter("token");
-        System.out.println("handle");
-        if(id==null && token==null){
-//            map.put("code", ApiCode.PARAMETER_ERROR.getCode());
-//            map.put("msg", ApiCode.PARAMETER_ERROR.getMessage());
-//            return map;
+        if(id==null || token==null){
+            HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
             return false;
         }
         Device device = deviceService.GetOne(Long.valueOf(id));
         if(device==null ||
                 ((device.getTokenNew()==null || false == device.getTokenNew().equalsIgnoreCase(token))
                 && (device.getTokenOld()==null || false == device.getTokenOld().equalsIgnoreCase(token)))){
+            HttpUtil.responseApiCode(request,response, ApiCode.INVALID_TOKEN);
             return false;
         }
         if(device.getTokenOld()!=null && device.getTokenOld().equalsIgnoreCase(token)){

+ 15 - 20
src/main/java/cn/efunbox/audio/controller/AudioController.java

@@ -5,6 +5,8 @@ import cn.efunbox.audio.entity.Device;
 import cn.efunbox.audio.service.AudioService;
 import cn.efunbox.audio.service.DeviceService;
 import cn.efunbox.audio.util.ApiCode;
+import cn.efunbox.audio.util.HttpUtil;
+import com.netflix.ribbon.proxy.annotation.Http;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.*;
 
 /**
@@ -27,14 +30,12 @@ public class AudioController {
     AudioService audioService;
 
     @RequestMapping(value = "/search" ,method = RequestMethod.POST)
-    public Map Search(HttpServletRequest request){
-        Map map = new HashMap<>();
+    public void Search(HttpServletRequest request, HttpServletResponse response){
         String name = request.getParameter("name");
         String album = request.getParameter("album");
         if(name==null && album==null){
-            map.put("code", ApiCode.PARAMETER_ERROR.getCode());
-            map.put("msg", ApiCode.PARAMETER_ERROR.getMessage());
-            return map;
+            HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
+            return;
         }
         List<Audio> list = null;
         if(name!=null && name.length()>0  && album!=null && album.length()>0)
@@ -45,30 +46,25 @@ public class AudioController {
             list = audioService.SearchByAlbum(album);
 
         if(list==null || list.size()<1){
-            map.put("code", ApiCode.NOT_FOUND.getCode());
-            map.put("msg", ApiCode.NOT_FOUND.getMessage());
-            return map;
+            HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND);
+            return;
         }
 
         Random random = new Random();
         int r = Math.abs(random.nextInt())%list.size();
-        map.put("code", ApiCode.OK.getCode());
-        map.put("data", list.get(r));
-
-        return map;
+        HttpUtil.responseOkData(request, response, list.get(r));
+        return;
     }
 
     @RequestMapping(value = "/insert", method = RequestMethod.POST)
-    public Map Insert(HttpServletRequest request){
-        Map map = new HashMap<>();
+    public void Insert(HttpServletRequest request, HttpServletResponse response){
         String album = request.getParameter("album");
         String lesson = request.getParameter("lesson");
         String name = request.getParameter("name");
         String url = request.getParameter("url");
         if(album==null || name==null && url==null){
-            map.put("code", ApiCode.PARAMETER_ERROR.getCode());
-            map.put("msg", ApiCode.PARAMETER_ERROR.getMessage());
-            return map;
+            HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR);
+            return;
         }
 
         Audio audio = new Audio();
@@ -80,9 +76,8 @@ public class AudioController {
         audio.setCreated(new Date());
         audio = audioService.Insert(audio);
 
-        map.put("code", ApiCode.OK.getCode());
-        map.put("data", audio);
-        return map;
+        HttpUtil.responseOutWithJson(request, response, audio);
+        return;
     }
 
 }

+ 106 - 0
src/main/java/cn/efunbox/audio/util/ApiResult.java

@@ -0,0 +1,106 @@
+package cn.efunbox.audio.util;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * Created by yao on 17-9-29.
+ */
+public class ApiResult<T> implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private boolean success;
+    private int code;
+    private String message;
+    private T data;
+
+    public ApiResult() {
+        this.success = true;
+    }
+
+    public ApiResult(ApiCode apiCode) {
+        this(apiCode.getCode(), apiCode.getMessage());
+    }
+
+    private ApiResult(int code, String message) {
+        this.success = true;
+        this.code = code;
+        if(code != 200) {
+            this.success = false;
+        }
+
+        this.message = message;
+    }
+
+    private ApiResult(ApiCode apiCode, T data) {
+        this(apiCode.getCode(), apiCode.getMessage());
+        this.data = data;
+    }
+
+    public static ApiResult ok() {
+        return new ApiResult(ApiCode.OK);
+    }
+
+    public static ApiResult ok(Object value) {
+        return new ApiResult(ApiCode.OK, value);
+    }
+
+//    public static ApiResult ok(String name, Object value) {
+//        return new ApiResult(ApiCode.OK, Maper.of(name, value));
+//    }
+
+    public static ApiResult ok(Map<String, Object> data) {
+        return new ApiResult(ApiCode.OK, data);
+    }
+
+//    public static ApiResult error(ApiException exception) {
+//        return new ApiResult(Integer.parseInt(exception.getCode()), exception.getMessage());
+//    }
+
+    public static ApiResult error(ApiCode code) {
+        return new ApiResult(code);
+    }
+
+    public static ApiResult error(ApiCode code, Object value) {
+        return new ApiResult(code, value);
+    }
+
+//    public static ApiResult error(ApiCode code, String name, Object value) {
+//        return new ApiResult(code, Maper.of(name, value));
+//    }
+
+    public static ApiResult error(ApiCode code, Map<String, Object> data) {
+        return new ApiResult(code, data);
+    }
+
+    public boolean getSuccess() {
+        return this.success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public int getCode() {
+        return this.code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMessage() {
+        return this.message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public T getData() {
+        return this.data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+}

+ 88 - 0
src/main/java/cn/efunbox/audio/util/HttpUtil.java

@@ -0,0 +1,88 @@
+package cn.efunbox.audio.util;
+
+import com.alibaba.fastjson.JSON;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.util.StringUtils;
+
+import javax.servlet.http.Cookie;
+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.Map;
+
+/**
+ * Created by tomas on 2017/6/4.
+ */
+
+public class HttpUtil {
+
+    private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class);
+
+    public static void responseOk(HttpServletRequest request,HttpServletResponse response) {
+        responseOutWithJson(request,response, ApiResult.ok());
+    }
+    public static void responseOkData(HttpServletRequest request,HttpServletResponse response, Object data) {
+        Map map = new HashMap<>();
+        map.put("code", ApiCode.OK.getCode());
+        map.put("message", ApiCode.OK.getMessage());
+        map.put("data", data);
+        responseOutWithJson(request, response, map);
+    }
+
+    public static void responseApiCode(HttpServletRequest request,HttpServletResponse response, ApiCode code) {
+        if(code.getCode()==ApiCode._C_OK){
+            responseOutWithJson(request,response, ApiResult.ok());
+        }else {
+            responseOutWithJson(request,response, ApiResult.error(code));
+        }
+    }
+    public static void responseOutWithJson(HttpServletRequest request,HttpServletResponse response, Object data) {
+        //将实体对象转换为JSON Object转换
+        response.setCharacterEncoding("UTF-8");
+        String origin = request.getHeader("Origin");
+        // TODO  orign 和 refer 的判断 .....
+        if (null!=origin){
+            response.setHeader("Access-Control-Allow-Origin", origin);
+        }else {
+            response.setHeader("Access-Control-Allow-Origin", "http://cms.efunbox.cn");
+        }
+        response.setContentType("application/json; charset=utf-8");
+        response.setHeader("Access-Control-Allow-Credentials", "true");
+        response.setHeader("Access-Control-Allow-Methods", "GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, PATCH");
+        //response.setHeader("Access-Control-Max-Age", "3600");
+        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Token,Authentication, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization, Cache-control");
+        response.setHeader("X-Frame-Options","SAMEORIGIN");
+        PrintWriter out = null;
+        try {
+            out = response.getWriter();
+            out.append(JSON.toJSONString(data));
+            logger.info("url= {} 返回JSON ={} ",request.getRequestURI(), JSON.toJSONString(data));
+        } catch (IOException e) {
+            logger.error("request ={} 返回 失败 e={}" ,request.getRequestURI(),e);
+        } finally {
+            if (out != null) {
+                out.close();
+            }
+        }
+    }
+
+    public static void delCookies(HttpServletRequest request,HttpServletResponse response, String...  cookies) {
+        for (String cookieName : cookies) {
+            Cookie cookie = new Cookie(cookieName, null);
+            String cookiePath = request.getContextPath();
+            if (!StringUtils.hasLength(cookiePath)) {
+                cookiePath = "/";
+            }
+            cookie.setPath(cookiePath);
+            cookie.setMaxAge(0);
+            response.addCookie(cookie);
+        }
+    }
+
+
+
+
+}