tianboguang 3 年 前
コミット
58c3ca2935

+ 3 - 3
platform-api/src/main/java/com/platform/api/ApiBrandController.java

@@ -184,7 +184,6 @@ public class ApiBrandController extends ApiBaseAction {
      * 品牌详情
      */
     @ApiOperation(value = "品牌详情")
-    @IgnoreAuth
     @PostMapping("detail")
     public Object detail(@RequestParam Integer id,@RequestParam(required = false) Integer type) {
         Map<String, Object> resultObj = new HashMap();
@@ -200,6 +199,7 @@ public class ApiBrandController extends ApiBaseAction {
             // 获取场景数据
             RequestScene requestScene = new RequestScene();
             requestScene.setNums(entity.getSceneNum());
+            requestScene.setToken(request.getHeader(AuthorizationInterceptor.LOGIN_TOKEN_KEY));
             JSONObject mySceneJsonData = zhiHouseService.getSceneFromZhiHouse(requestScene);
             List<Object> mySceneList = mySceneJsonData.getJSONArray("list");
             JSONObject sceneRes = JSONObject.parseObject(JSONObject.toJSONString(mySceneList.get(0)));
@@ -224,6 +224,7 @@ public class ApiBrandController extends ApiBaseAction {
         } else {
             RequestScene requestScene = new RequestScene();
             requestScene.setSceneId(Long.valueOf(id));
+            requestScene.setToken(request.getHeader(AuthorizationInterceptor.LOGIN_TOKEN_KEY));
             JSONObject mySceneJsonData = zhiHouseService.getSceneFromZhiHouse(requestScene);
             List<Object> mySceneList = mySceneJsonData.getJSONArray("list");
             JSONObject sceneRes = JSONObject.parseObject(JSONObject.toJSONString(mySceneList.get(0)));
@@ -248,8 +249,7 @@ public class ApiBrandController extends ApiBaseAction {
         if(!(ObjectUtils.isEmpty(type) || type == 21 || type == 31)) {
             return toResponsSuccess(brandService.increaseViewCount(brandId+""));
         }
-        BrandVo brandVo = brandService.queryObject(brandId);
-        return toResponsSuccess(zhiHouseService.increaseViewCount(brandVo.getSceneNum()));
+        return toResponsSuccess(zhiHouseService.increaseViewCount(brandId));
     }
 
     /**

+ 49 - 1
platform-api/src/main/java/com/platform/interceptor/AuthorizationInterceptor.java

@@ -1,6 +1,18 @@
 package com.platform.interceptor;
 
+import com.platform.annotation.IgnoreAuth;
+import com.platform.entity.TokenEntity;
+import com.platform.exception.CommonBaseException;
+import com.platform.service.TokenService;
+import com.platform.utils.ApiRRException;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * 权限(Token)验证
@@ -11,8 +23,44 @@ import org.springframework.stereotype.Component;
  * @date 2017-03-23 15:38
  */
 @Component
-public class AuthorizationInterceptor{
+public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
     public static final String LOGIN_USER_KEY = "LOGIN_USER_KEY";
     public static final String LOGIN_TOKEN_KEY = "X-Nideshop-Token";
 
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
+        //支持跨域请求
+        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
+        response.setHeader("Access-Control-Max-Age", "3600");
+        response.setHeader("Access-Control-Allow-Credentials", "true");
+        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,X-Nideshop-Token,X-URL-PATH");
+        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
+
+        IgnoreAuth annotation;
+        if (handler instanceof HandlerMethod) {
+            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
+        } else {
+            return true;
+        }
+
+        //如果有@IgnoreAuth注解,则不验证token
+        if (annotation != null) {
+            return true;
+        }
+
+        //从header中获取token
+        String token = request.getHeader(LOGIN_TOKEN_KEY);
+        //如果header中不存在token,则从参数中获取token
+        if (StringUtils.isBlank(token)) {
+            token = request.getParameter(LOGIN_TOKEN_KEY);
+        }
+
+        //token为空
+        if (StringUtils.isBlank(token)) {
+            throw new CommonBaseException(401,"请先登录");
+        }
+        return true;
+    }
 }

+ 10 - 1
platform-api/src/main/resources/platform-api.xml

@@ -9,5 +9,14 @@
 
     <mvc:annotation-driven>
     </mvc:annotation-driven>
-    <bean id="apiUserService" class="com.platform.service.ApiUserService"/>
+
+    <mvc:interceptors>
+        <mvc:interceptor>
+            <mvc:mapping path="/api/**"/>
+            <mvc:exclude-mapping path="/api/goods/detail" />
+            <mvc:exclude-mapping path="/api/search/index" />
+            <ref bean="authorizationInterceptor"/>
+        </mvc:interceptor>
+    </mvc:interceptors>
+    <bean id="authorizationInterceptor" class="com.platform.interceptor.AuthorizationInterceptor"/>
 </beans>

+ 4 - 4
platform-common/src/main/java/com/platform/service/impl/ZhiHouseService.java

@@ -148,10 +148,10 @@ public class ZhiHouseService {
         return responseEntity.getBody();
     }
 
-    public Object increaseViewCount(String sceneNum) {
-        String url = zhiHouseHost + "/api/scene/updateViewCount?num=" + sceneNum;
-        if(org.apache.commons.lang3.StringUtils.isBlank(sceneNum)){
-            throw new CommonBaseException(ResultCodeEnum.D101 , "入参不全");
+    public Object increaseViewCount(Integer sceneId) {
+        String url = zhiHouseHost + "/api/scene/updateViewCount?sceneId=" + sceneId;
+        if(ObjectUtils.isEmpty(sceneId)){
+            return 0;
         }
         ResponseEntity<ReturnDTO> responseEntity = restTemplate.getForEntity(url,ReturnDTO.class);
         if(responseEntity.getStatusCode()!= HttpStatus.OK){