From bd199ec0fa775f8ec6fbbad0c8ad082394d595db Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 05 八月 2021 14:09:22 +0800
Subject: [PATCH] 优化代码
---
java110-core/src/main/java/com/java110/core/base/controller/BaseController.java | 192 +++++++++++++++++++++++++++++++++++-------------
1 files changed, 140 insertions(+), 52 deletions(-)
diff --git a/java110-core/src/main/java/com/java110/core/base/controller/BaseController.java b/java110-core/src/main/java/com/java110/core/base/controller/BaseController.java
old mode 100644
new mode 100755
index 4ead590..255598d
--- a/java110-core/src/main/java/com/java110/core/base/controller/BaseController.java
+++ b/java110-core/src/main/java/com/java110/core/base/controller/BaseController.java
@@ -1,16 +1,25 @@
package com.java110.core.base.controller;
-import com.java110.common.constant.CommonConstant;
-import com.java110.common.constant.ResponseConstant;
-import com.java110.common.exception.NoAuthorityException;
-
-import com.java110.common.util.StringUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.java110.core.base.AppBase;
import com.java110.core.context.BusinessServiceDataFlow;
-import com.java110.core.factory.DataFlowFactory;
+import com.java110.core.context.IPageData;
import com.java110.core.context.PageData;
+import com.java110.core.factory.DataFlowFactory;
+import com.java110.core.smo.IGetCommunityStoreInfoSMO;
+import com.java110.dto.basePrivilege.BasePrivilegeDto;
+import com.java110.utils.cache.PrivilegeCache;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.NoAuthorityException;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
import org.springframework.ui.Model;
+import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@@ -22,39 +31,44 @@
*/
public class BaseController extends AppBase {
+ @Autowired
+ private IGetCommunityStoreInfoSMO getCommunityStoreInfoSMOImpl;
+
/**
* 妫�鏌ョ敤鎴风櫥褰�
+ *
* @throws NoAuthorityException
*/
- protected void checkLogin(PageData pd) throws NoAuthorityException{
- if(StringUtil.isNullOrNone(pd.getUserId())){
- throw new NoAuthorityException(ResponseConstant.RESULT_CODE_NO_AUTHORITY_ERROR,"鐢ㄦ埛鏈櫥褰曪紝璇风櫥褰曪紒");
+ protected void checkLogin(PageData pd) throws NoAuthorityException {
+ if (StringUtil.isNullOrNone(pd.getUserId())) {
+ throw new NoAuthorityException(ResponseConstant.RESULT_CODE_NO_AUTHORITY_ERROR, "鐢ㄦ埛鏈櫥褰曪紝璇风櫥褰曪紒");
}
}
/**
* 灏唘rl鍙傛暟鍐欏埌header map涓�
+ *
* @param request
*/
- protected void initUrlParam(HttpServletRequest request,Map headers) {
- /*put real ip address*/
+ protected void initUrlParam(HttpServletRequest request, Map headers) {
+ /*put real ip address*/
Map readOnlyMap = request.getParameterMap();
- StringBuffer queryString = new StringBuffer(request.getRequestURL()!=null?request.getRequestURL():"");
+ StringBuffer queryString = new StringBuffer(request.getRequestURL() != null ? request.getRequestURL() : "");
if (readOnlyMap != null && !readOnlyMap.isEmpty()) {
queryString.append("?");
Set<String> keys = readOnlyMap.keySet();
- for (Iterator it = keys.iterator(); it.hasNext();) {
+ for (Iterator it = keys.iterator(); it.hasNext(); ) {
String key = (String) it.next();
String[] value = (String[]) readOnlyMap.get(key);
// String[] value = (String[]) readOnlyMap.get(key);
- if(value.length>1) {
+ if (value.length > 1) {
headers.put(key, value[0]);
- for(int j =0 ;j<value.length;j++){
+ for (int j = 0; j < value.length; j++) {
queryString.append(key);
queryString.append("=");
queryString.append(value[j]);
@@ -71,11 +85,11 @@
}
}
- /*put requst url*/
- if (readOnlyMap != null && !readOnlyMap.isEmpty()){
- headers.put("REQUEST_URL",queryString.toString().substring(0, queryString.toString().length() - 1));
- }else{
- headers.put("REQUEST_URL",queryString.toString());
+ /*put requst url*/
+ if (readOnlyMap != null && !readOnlyMap.isEmpty()) {
+ headers.put("REQUEST_URL", queryString.toString().substring(0, queryString.toString().length() - 1));
+ } else {
+ headers.put("REQUEST_URL", queryString.toString());
}
}
@@ -90,7 +104,7 @@
String[] values = entry.getValue();
if (null == values) {
value = "";
- } else if (values.length>1) {
+ } else if (values.length > 1) {
for (int i = 0; i < values.length; i++) { //鐢ㄤ簬璇锋眰鍙傛暟涓湁澶氫釜鐩稿悓鍚嶇О
value = values[i] + ",";
}
@@ -104,24 +118,46 @@
return returnMap;
}
- protected void initHeadParam(HttpServletRequest request,Map headers) {
+ protected void initHeadParam(HttpServletRequest request, Map headers) {
Enumeration reqHeaderEnum = request.getHeaderNames();
- while( reqHeaderEnum.hasMoreElements() ) {
- String headerName = (String)reqHeaderEnum.nextElement();
+ while (reqHeaderEnum.hasMoreElements()) {
+ String headerName = (String) reqHeaderEnum.nextElement();
headers.put(headerName.toLowerCase(), request.getHeader(headerName));
}
- headers.put("IP",getIpAddr(request));
+ headers.put("IP", getIpAddr(request));
- headers.put("hostName",request.getLocalName());
- headers.put("port",request.getLocalPort()+"");
+ //headers.put("hostName", request.getLocalName()); 杩欓噷瀵艰嚧閮ㄥ垎涓绘満 閫熷害姣旇緝鎱�
+ headers.put("hostName", "localhost");
+ headers.put("port", request.getLocalPort() + "");
+
+ //澶勭悊app-id
+ if (headers.containsKey("app-id")) {
+ headers.put("app_id", headers.get("app-id"));
+ }
+
+ //澶勭悊transaction-id
+ if (headers.containsKey("transaction-id")) {
+ headers.put("transaction_id", headers.get("transaction-id"));
+ }
+
+ //澶勭悊req-time
+ if (headers.containsKey("req-time")) {
+ headers.put("req_time", headers.get("req-time"));
+ }
+
+ //澶勭悊req-time
+ if (headers.containsKey("user-id")) {
+ headers.put("user_id", headers.get("user-id"));
+ }
}
/**
* 鑾峰彇IP鍦板潃
+ *
* @param request
* @return
*/
@@ -148,12 +184,13 @@
/**
* 鍒涘缓 PageData 瀵硅薄
+ *
* @param request
* @return
* @throws IllegalArgumentException
*/
- protected PageData getPageData(HttpServletRequest request){
- if(request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA) == null){
+ protected PageData getPageData(HttpServletRequest request) {
+ if (request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA) == null) {
throw new IllegalArgumentException("璇锋眰鍙傛暟閿欒");
}
return (PageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
@@ -161,24 +198,25 @@
/**
* 鏌ヨ鑿滃崟
+ *
* @param model
* @param pd
*/
- protected void getMenus(Model model,PageData pd,List<Map> menuItems){
+ protected void getMenus(Model model, PageData pd, List<Map> menuItems) {
List<Map> removeMenuItems = new ArrayList<Map>();
- for(Map menuItem : menuItems){
- if(!"-1".equals(menuItem.get("parentId")) && !"1".equals(menuItem.get("level"))){
- Map parentMenuItem = this.getMenuItemFromList(menuItems,menuItem.get("parentId").toString());
- if(parentMenuItem == null){
+ for (Map menuItem : menuItems) {
+ if (!"-1".equals(menuItem.get("parentId")) && !"1".equals(menuItem.get("level"))) {
+ Map parentMenuItem = this.getMenuItemFromList(menuItems, menuItem.get("parentId").toString());
+ if (parentMenuItem == null) {
continue;
}
- if(parentMenuItem.containsKey("subMenus")){
+ if (parentMenuItem.containsKey("subMenus")) {
List<Map> subMenus = (List<Map>) parentMenuItem.get("subMenus");
subMenus.add(menuItem);
- }else{
+ } else {
List<Map> subMenus = new ArrayList<Map>();
subMenus.add(menuItem);
- parentMenuItem.put("subMenus",subMenus);
+ parentMenuItem.put("subMenus", subMenus);
}
//removeMenuItems.add(menuItem);
@@ -187,19 +225,18 @@
//bug 20180510 濡傛灉鍦ㄤ竴绾ц彍鍗曚笅闈㈡病鏈夋寕浜岀骇鑿滃崟鎶ラ敊闂澶勭悊
- ifNoSubMenusToRemove(menuItems,removeMenuItems);
+ ifNoSubMenusToRemove(menuItems, removeMenuItems);
- removeMap(menuItems,removeMenuItems);
+ removeMap(menuItems, removeMenuItems);
-
- model.addAttribute("menus",menuItems);
+ model.addAttribute("menus", menuItems);
}
- private Map getMenuItemFromList(List<Map> menuItems,String parentId){
- for(Map menuItem : menuItems){
- if(menuItem.get("mId").toString().equals(parentId)){
+ private Map getMenuItemFromList(List<Map> menuItems, String parentId) {
+ for (Map menuItem : menuItems) {
+ if (menuItem.get("mId").toString().equals(parentId)) {
return menuItem;
}
}
@@ -208,22 +245,23 @@
/**
* 鍒犻櫎map
+ *
* @param menuItems
* @param removeMenuItems
*/
- private void removeMap(List<Map> menuItems,List<Map> removeMenuItems){
- if(removeMenuItems == null || removeMenuItems.size() == 0){
+ private void removeMap(List<Map> menuItems, List<Map> removeMenuItems) {
+ if (removeMenuItems == null || removeMenuItems.size() == 0) {
return;
}
- for(Map removeMenuItem : removeMenuItems){
+ for (Map removeMenuItem : removeMenuItems) {
menuItems.remove(removeMenuItem);
}
}
- private void ifNoSubMenusToRemove(List<Map> menuItems,List<Map> removeMenuItems){
- for(Map menu :menuItems){
- if(!menu.containsKey("subMenus")){
+ private void ifNoSubMenusToRemove(List<Map> menuItems, List<Map> removeMenuItems) {
+ for (Map menu : menuItems) {
+ if (!menu.containsKey("subMenus")) {
removeMenuItems.add(menu);
}
}
@@ -231,15 +269,65 @@
/**
* 灏佽鏁版嵁
+ *
* @param reqJson
* @param headers
* @return
* @throws Exception
*/
- protected BusinessServiceDataFlow writeDataToDataFlowContext(String reqJson, Map<String,String> headers) throws Exception {
- BusinessServiceDataFlow businessServiceDataFlow = DataFlowFactory.newInstance(BusinessServiceDataFlow.class).builder(reqJson,headers);
+ protected BusinessServiceDataFlow writeDataToDataFlowContext(String reqJson, Map<String, String> headers) throws Exception {
+ BusinessServiceDataFlow businessServiceDataFlow = DataFlowFactory.newInstance(BusinessServiceDataFlow.class).builder(reqJson, headers);
return businessServiceDataFlow;
}
+ protected void hasPrivilege(RestTemplate restTemplate, IPageData pd, String resource) {
+ ResponseEntity<String> responseEntity = null;
+ //娌℃湁鐢ㄦ埛鐨勬儏鍐典笅涓嶅仛鏉冮檺鍒ゆ柇
+ if (StringUtil.isEmpty(pd.getUserId())) {
+ return;
+ }
+ JSONObject paramIn = new JSONObject();
+ //paramIn.put("resource", resource);
+ paramIn.put("userId", pd.getUserId());
+
+ //鏍¢獙璧勬簮璺姴鏄惁瀹氫箟鏉冮檺
+ List<BasePrivilegeDto> basePrivilegeDtos = PrivilegeCache.getPrivileges();
+ if (basePrivilegeDtos == null || basePrivilegeDtos.size() < 1) {
+ return;
+ }
+ String tmpResource = null;
+ boolean hasPrivilege = false;
+ for (BasePrivilegeDto privilegeDto : basePrivilegeDtos) {
+ if (resource.equals(privilegeDto.getResource())) {
+ hasPrivilege = true;
+ }
+ }
+ if (!hasPrivilege) { //鏉冮檺娌℃湁閰嶇疆锛岀洿鎺ヨ烦杩�
+ return;
+ }
+
+ ResultVo resultVo = getCommunityStoreInfoSMOImpl.checkUserHasResourceListener(restTemplate, pd, paramIn, pd.getUserId());
+ if (resultVo == null || resultVo.getCode() != ResultVo.CODE_OK) {
+ throw new UnsupportedOperationException("鐢ㄦ埛娌℃湁鏉冮檺鎿嶄綔");
+ }
+ JSONArray privileges = JSONArray.parseArray(resultVo.getMsg());
+
+ hasPrivilege = false;
+ if (privileges == null || privileges.size() < 1) {
+ throw new UnsupportedOperationException("鐢ㄦ埛娌℃湁鏉冮檺鎿嶄綔");
+ }
+ for (int privilegeIndex = 0; privilegeIndex < privileges.size(); privilegeIndex++) {
+ tmpResource = privileges.getJSONObject(privilegeIndex).getString("resource");
+ if (resource.equals(tmpResource)) {
+ hasPrivilege = true;
+ break;
+ }
+ }
+ if (!hasPrivilege) {
+ throw new UnsupportedOperationException("鐢ㄦ埛娌℃湁鏉冮檺鎿嶄綔");
+ }
+
+ }
+
}
--
Gitblit v1.8.0