Kaynağa Gözat

加入登录功能,后台逻辑

wuxw7 7 yıl önce
ebeveyn
işleme
81b89aecf1
19 değiştirilmiş dosya ile 347 ekleme ve 523 silme
  1. 7 0
      OrderService/src/main/java/com/java110/order/OrderServiceApplicationStart.java
  2. 1 1
      WebService/src/main/java/com/java110/web/WebServiceApplicationStart.java
  3. 23 8
      WebService/src/main/java/com/java110/web/components/LoginComponent.java
  4. 2 1
      WebService/src/main/java/com/java110/web/components/MenuComponent.java
  5. 2 1
      WebService/src/main/java/com/java110/web/components/NavComponent.java
  6. 3 2
      WebService/src/main/java/com/java110/web/components/VueTestComponent.java
  7. 17 5
      WebService/src/main/java/com/java110/web/controller/CallComponentController.java
  8. 0 63
      WebService/src/main/java/com/java110/web/controller/HomeController.java
  9. 3 51
      WebService/src/main/java/com/java110/web/smo/IConsoleServiceSMO.java
  10. 17 0
      WebService/src/main/java/com/java110/web/smo/ILoginServiceSMO.java
  11. 7 277
      WebService/src/main/java/com/java110/web/smo/impl/ConsoleServiceSMOImpl.java
  12. 59 0
      WebService/src/main/java/com/java110/web/smo/impl/LoginServiceSMOImpl.java
  13. 5 0
      java110-common/src/main/java/com/java110/common/constant/CommonConstant.java
  14. 15 0
      java110-common/src/main/java/com/java110/common/constant/ServiceConstant.java
  15. 33 0
      java110-core/src/main/java/com/java110/core/base/smo/BaseServiceSMO.java
  16. 24 0
      java110-core/src/main/java/com/java110/core/context/IPageData.java
  17. 74 103
      java110-core/src/main/java/com/java110/core/context/PageData.java
  18. 10 0
      java110-core/src/main/java/com/java110/core/factory/AuthenticationFactory.java
  19. 45 11
      java110-service/src/main/java/com/java110/service/aop/PageProcessAspect.java

+ 7 - 0
OrderService/src/main/java/com/java110/order/OrderServiceApplicationStart.java

@@ -6,6 +6,8 @@ import com.java110.core.annotation.Java110ListenerDiscovery;
 import com.java110.core.client.RestTemplate;
 import com.java110.event.center.DataFlowEventPublishing;
 import com.java110.service.init.ServiceStartInit;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.client.RestTemplateBuilder;
@@ -35,6 +37,8 @@ import java.nio.charset.Charset;
         basePackages = {"com.java110.order.listener"})
 public class OrderServiceApplicationStart {
 
+    private final static Logger logger = LoggerFactory.getLogger(OrderServiceApplicationStart.class);
+
     /**
      * 实例化RestTemplate,通过@LoadBalanced注解开启均衡负载能力.
      * @return restTemplate
@@ -77,11 +81,14 @@ public class OrderServiceApplicationStart {
      * @param args
      */
     private static void flushMainCache(String []args) {
+
+        logger.debug("判断是否需要刷新日志,参数 args 为 {}",args);
         if (args == null || args.length == 0) {
             return;
         }
         for (int i = 0; i < args.length; i++) {
             if (args[i].equalsIgnoreCase("-Dcache")) {
+                logger.debug("开始刷新日志,入参为:{}",args[i]);
                 ICenterServiceCacheSMO centerServiceCacheSMO = (ICenterServiceCacheSMO) ApplicationContextFactory.getBean("centerServiceCacheSMOImpl");
                 centerServiceCacheSMO.startFlush();
             }

+ 1 - 1
WebService/src/main/java/com/java110/web/WebServiceApplicationStart.java

@@ -43,7 +43,7 @@ public class WebServiceApplicationStart {
      * @return restTemplate
      */
     @Bean
-    @LoadBalanced
+    //@LoadBalanced
     public RestTemplate restTemplate() {
         StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8"));
         RestTemplate restTemplate = new RestTemplateBuilder().additionalMessageConverters(m).build();

+ 23 - 8
WebService/src/main/java/com/java110/web/components/LoginComponent.java

@@ -1,24 +1,35 @@
 package com.java110.web.components;
 
 
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ServiceCodeConstant;
+import com.java110.common.constant.ServiceConstant;
+import com.java110.common.util.Assert;
+import com.java110.core.context.IPageData;
+import com.java110.core.factory.AuthenticationFactory;
+import com.java110.web.smo.ILoginServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.*;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
 
 @Component("login")
 public class LoginComponent {
 
+
+
+    @Autowired
+    private ILoginServiceSMO loginServiceSMOImpl;
     /**
      * 用户登录
-     * @param userInfo
+     * @param pd
      * @return
      */
-    public ResponseEntity<String> doLogin(String userInfo){
-
+    public ResponseEntity<String> doLogin(IPageData pd){
         ResponseEntity<String> responseEntity = null;
-
         try{
-            responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK);
+            responseEntity =  loginServiceSMOImpl.doLogin(pd);
         }catch (Exception e){
             responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
         }finally {
@@ -26,8 +37,12 @@ public class LoginComponent {
         }
     }
 
-    private void userLogin(){
 
+    public ILoginServiceSMO getLoginServiceSMOImpl() {
+        return loginServiceSMOImpl;
+    }
 
+    public void setLoginServiceSMOImpl(ILoginServiceSMO loginServiceSMOImpl) {
+        this.loginServiceSMOImpl = loginServiceSMOImpl;
     }
 }

+ 2 - 1
WebService/src/main/java/com/java110/web/components/MenuComponent.java

@@ -1,6 +1,7 @@
 package com.java110.web.components;
 
 import com.alibaba.fastjson.JSONArray;
+import com.java110.core.context.IPageData;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
@@ -16,7 +17,7 @@ public class MenuComponent {
      * 测试版本号
      * @return
      */
-    public ResponseEntity<String> getMenus(String msg){
+    public ResponseEntity<String> getMenus(IPageData pd){
 
         String menuData = "[{'id':1,'icon':'fa-desktop','name':'我的菜单','label':'HOT','childs':[" +
                 "{'name':'子菜单','href':'http://www.baidu.com'}]}," +

+ 2 - 1
WebService/src/main/java/com/java110/web/components/NavComponent.java

@@ -2,6 +2,7 @@ package com.java110.web.components;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.context.IPageData;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
@@ -15,7 +16,7 @@ import org.springframework.stereotype.Component;
 public class NavComponent {
 
 
-    public ResponseEntity<String> getNavData(String param){
+    public ResponseEntity<String> getNavData(IPageData pd){
 
         String result = "{'welcomeText':'欢迎访问HC小区管理系统,学文!','noticeSize':10," +
                 "'moreNoticeUrl':'/moreNotice','notices':[" +

+ 3 - 2
WebService/src/main/java/com/java110/web/components/VueTestComponent.java

@@ -1,6 +1,7 @@
 package com.java110.web.components;
 
 
+import com.java110.core.context.IPageData;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
@@ -13,9 +14,9 @@ public class VueTestComponent {
      * 测试版本号
      * @return
      */
-    public ResponseEntity<String> getTestVersion(String msg){
+    public ResponseEntity<String> getTestVersion(IPageData pd){
 
-        return new ResponseEntity<String>(msg+ " vue test v0.0.1", HttpStatus.OK);
+        return new ResponseEntity<String>(pd.getReqData()+ " vue test v0.0.1", HttpStatus.OK);
     }
 
 }

+ 17 - 5
WebService/src/main/java/com/java110/web/controller/CallComponentController.java

@@ -1,8 +1,13 @@
 package com.java110.web.controller;
 
+import com.java110.common.constant.CommonConstant;
 import com.java110.common.factory.ApplicationContextFactory;
 import com.java110.common.util.Assert;
 import com.java110.core.base.controller.BaseController;
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.impl.LoginServiceSMOImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
@@ -14,17 +19,18 @@ import java.lang.reflect.Method;
 @RestController
 public class CallComponentController extends BaseController {
 
+    private final static Logger logger = LoggerFactory.getLogger(LoginServiceSMOImpl.class);
+
     /**
      * 调用组件方法
      * @return
      */
 
-    @RequestMapping(path="/callComponent/{componentCode}/{componentMethod}",
-            method = RequestMethod.POST)
+    @RequestMapping(path="/callComponent/{componentCode}/{componentMethod}")
     public ResponseEntity<String> callComponent(
             @PathVariable String componentCode,
             @PathVariable String componentMethod,
-            @RequestBody String info,
+            //@RequestBody String info,
             HttpServletRequest request){
         ResponseEntity<String> responseEntity = null;
         try{
@@ -35,15 +41,21 @@ public class CallComponentController extends BaseController {
 
             Assert.notNull(componentInstance,"未找到组件对应的处理类,请确认 "+componentCode);
 
-            Method cMethod = componentInstance.getClass().getDeclaredMethod(componentMethod,String.class);
+            Method cMethod = componentInstance.getClass().getDeclaredMethod(componentMethod,IPageData.class);
 
             Assert.notNull(cMethod,"未找到组件对应处理类的方法,请确认 "+componentCode+"方法:"+componentMethod);
 
-             responseEntity = (ResponseEntity<String>)cMethod.invoke(componentInstance,info);
+            IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
+
+            logger.debug("组件编码{},组件方法{},pd 为{}",componentCode,componentMethod,pd.toString());
+
+             responseEntity = (ResponseEntity<String>)cMethod.invoke(componentInstance,pd);
+
 
         }catch (Exception e){
             responseEntity = new ResponseEntity<>("调用组件失败"+e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
         }finally {
+            logger.debug("组件调用返回信息为{}",responseEntity);
             return responseEntity;
         }
     }

+ 0 - 63
WebService/src/main/java/com/java110/web/controller/HomeController.java

@@ -37,69 +37,6 @@ public class HomeController extends BaseController {
             return template;
     }
 
-    /**
-     * 查询数据
-     * @param model
-     * @param request
-     * @return
-     */
-    @RequestMapping(path = "/console/list")
-    public String listData(Model model, HttpServletRequest request){
-        String template = "";
-        try {
-
-            //1.0 获取对象
-            PageData pd = this.getPageData(request);
-
-            Assert.hasLength(pd.getParam().getString("templateCode"),"请求参数templateCode 不能为空!");
-            // 判断用户是否登录
-            checkLogin(pd);
-            //2.0 查询模板信息
-            checkTemplate(pd,model);
-            //3.0 查询菜单信息
-            getMenus(model,pd,consoleServiceSMOImpl.getMenuItemsByManageId(pd.getUserId()));
-            //3.0 查询各个系统调用量
-
-            template = pd.getData().getJSONObject("template").containsKey("htmlName")
-                    && !StringUtil.isNullOrNone( pd.getData().getJSONObject("template").getString("htmlName")) ?
-                    pd.getData().getJSONObject("template").getString("htmlName"):
-                    "list_template";
-
-        }catch (NoAuthorityException e){
-            //跳转到登录页面
-            template = "redirect:/login";
-        }catch (IllegalArgumentException e){
-            template = "redirect:/system/error";
-        }catch (SMOException e){
-            template = "redirect:/system/error";
-        }catch (Exception e){
-            logger.error("系统异常:",e);
-            template = "redirect:/system/error";
-        }finally {
-            return template;
-        }
-
-    }
-
-
-    /**
-     * 模板校验并将模板写入到 model 对象中 前台页面展示用
-     * @param pd
-     * @param model
-     */
-    private void checkTemplate(PageData pd,Model model) throws IllegalArgumentException{
-        try {
-            consoleServiceSMOImpl.getTemplate(pd);
-            JSONObject template = pd.getData().getJSONObject("template");
-            model.addAttribute("templateCode",template.getString("templateCode"));
-            model.addAttribute("templateName",template.getString("templateName"));
-        }catch (Exception e){
-            logger.error("查询异常",e);
-            throw  new IllegalArgumentException("配置错误,没有当前模板【"+pd.getParam().getString("templateCode")+"】");
-        }
-
-    }
-
 
 
     public IConsoleServiceSMO getConsoleServiceSMOImpl() {

+ 3 - 51
WebService/src/main/java/com/java110/web/smo/IConsoleServiceSMO.java

@@ -1,6 +1,7 @@
 package com.java110.web.smo;
 
 import com.java110.common.exception.SMOException;
+import com.java110.core.context.IPageData;
 import com.java110.core.context.PageData;
 
 import java.util.List;
@@ -12,63 +13,14 @@ import java.util.Map;
  */
 public interface IConsoleServiceSMO {
 
-    /**
-     * 根据 管理员ID 查询菜单
-     * @param manageId
-     * @return
-     */
-    public List<Map> getMenuItemsByManageId(String manageId) throws SMOException,IllegalArgumentException;
-
-    /**
-     * 用户登录
-     * @param pd
-     * @return
-     * @throws SMOException
-     */
-    public void login(PageData pd) throws SMOException;
 
 
     /**
-     * 查询模板信息
-     * @param pd
-     * @throws SMOException
-     */
-    public void getTemplateCol(PageData pd) throws SMOException;
-
-    /**
-     * 获取模板
+     * 用户登录
      * @param pd
      * @return
      * @throws SMOException
      */
-    public void getTemplate(PageData pd) throws SMOException;
-
-    /**
-     * 查询模板数据
-     * @param pd
-     * @throws SMOException
-     */
-    public void getTemplateData(PageData pd) throws SMOException;
-
-    /**
-     * 刷新缓存
-     * @param pd
-     * @throws SMOException
-     */
-    public void flushCache(PageData pd) throws SMOException;
-
-    /**
-     * 查询缓存信息
-     * @param pd
-     */
-    public void queryCacheOne(PageData pd) throws  SMOException;
-
-    /**
-     * 编辑模板数据
-     * @param pd
-     * @throws SMOException
-     */
-    public void editTemplateData(PageData pd) throws SMOException;
-
+    public void login(IPageData pd) throws SMOException;
 
 }

+ 17 - 0
WebService/src/main/java/com/java110/web/smo/ILoginServiceSMO.java

@@ -0,0 +1,17 @@
+package com.java110.web.smo;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * Created by wuxw on 2019/3/20.
+ */
+public interface ILoginServiceSMO {
+
+    /**
+     * 登录接口
+     * @param pd 页面请求对象
+     * @return
+     */
+    public ResponseEntity<String> doLogin(IPageData pd);
+}

+ 7 - 277
WebService/src/main/java/com/java110/web/smo/impl/ConsoleServiceSMOImpl.java

@@ -9,6 +9,7 @@ import com.java110.common.constant.ResponseConstant;
 import com.java110.common.constant.ServiceCodeConstant;
 import com.java110.common.exception.SMOException;
 import com.java110.common.util.DateUtil;
+import com.java110.core.context.IPageData;
 import com.java110.core.factory.AuthenticationFactory;
 import com.java110.core.factory.DataTransactionFactory;
 import com.java110.common.log.LoggerEngine;
@@ -37,110 +38,14 @@ import java.util.Map;
  * Created by wuxw on 2018/4/28.
  */
 @Service("consoleServiceSMOImpl")
-public class ConsoleServiceSMOImpl extends LoggerEngine implements IConsoleServiceSMO {
+public class ConsoleServiceSMOImpl  implements IConsoleServiceSMO {
 
     private final static Logger logger = LoggerFactory.getLogger(ConsoleServiceSMOImpl.class);
 
     @Autowired
     private RestTemplate restTemplate;
-    /**
-     * 根据 管理员ID 查询菜单
-     * @param manageId
-     * @return
-     */
-    @Override
-    public List<Map> getMenuItemsByManageId(String manageId) throws SMOException,IllegalArgumentException{
-        Map paramIn = new HashMap();
-        paramIn.put("manageId", manageId);
-        paramIn.put("menuGroup", CommonConstant.MENU_GROUP_LEFT);
-        paramIn.put(CommonConstant.ORDER_USER_ID,manageId);
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE,ServiceCodeConstant.SERVICE_CODE_QUERY_MENU_ITEM);
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,ServiceCodeConstant.SERVICE_CODE_QUERY_MENU_ITEM_NAME);
-        JSONObject businessObj = doExecute(paramIn);
-        Assert.isNotNull(businessObj,"menus","接口返回错误,未包含menus节点");
-        JSONArray menus = businessObj.getJSONArray("menus");
-        return menus.toJavaList(Map.class);
-    }
-
-    /**
-     * 用户登录
-     * @param pd
-     * @return
-     * @throws SMOException
-     */
-    @Override
-    public void login(PageData pd) throws SMOException {
-        String userCode = pd.getParam().getString("userCode");
-        String userPwd = pd.getParam().getString("userPwd");
-        String pageSign = pd.getParam().getString("pageSign");
-
-        Assert.hasText(userCode,"用户编码不能为空");
-        Assert.hasText(userPwd,"用户密码不能为空");
-
-        Map paramIn = new HashMap();
-        paramIn.put("userCode", userCode);
-        paramIn.put(CommonConstant.ORDER_USER_ID,CommonConstant.ORDER_DEFAULT_USER_ID);
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE,ServiceCodeConstant.SERVICE_CODE_QUERY_USER_LOGIN);
-        //paramIn.put("userPwd", userPwd);
-        JSONObject businessObj = doExecute(paramIn);
-
-        Assert.isNotNull(businessObj,"user","查询模板 服务配置错误,返回报文中未包含user节点");
-
-        JSONObject user = businessObj.getJSONObject("user");
-        //String newPwd = AuthenticationFactory.md5UserPassword(userPwd);
-        if(!AuthenticationFactory.md5UserPassword(userPwd).equals(user.getString("userPwd"))){
-            throw new SMOException(ResponseConstant.RESULT_CODE_NO_AUTHORITY_ERROR,"密码不正确");
-        }
-        String token = "";
-        try {
-            Map userMap = new HashMap();
-            userMap.put(CommonConstant.LOGIN_USER_ID,user.getString("userId"));
-            userMap.put(CommonConstant.LOGIN_USER_NAME,user.getString("userName"));
-            token = AuthenticationFactory.createAndSaveToken(userMap);
-            pd.setToken(token);
-        }catch (Exception e){
-            logger.error("登录异常:",e);
-            throw new SMOException(ResponseConstant.RESULT_CODE_INNER_ERROR,"系统内部错误,请联系管理员");
-        }
-
-        //封装成功信息
-        pd.setResJson(DataTransactionFactory.pageResponseJson(pd.getTransactionId(),ResponseConstant.RESULT_CODE_SUCCESS,"登录成功 ",null));
-
-    }
-
-
-    /**
-     * 查询模板信息
-     * @param pd
-     * @throws SMOException
-     */
-    @Override
-    public void getTemplateCol(PageData pd) throws SMOException{
-        String templateCode = pd.getParam().getString("templateCode");
-
-        Assert.hasText(templateCode,"模板编码不能为空");
-
-        Map paramIn = new HashMap();
-        paramIn.put("templateCode", templateCode);
-        paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE,ServiceCodeConstant.SERVICE_CODE_QUERY_CONSOLE_TEMPLATE_COL);
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,ServiceCodeConstant.SERVICE_CODE_QUERY_CONSOLE_TEMPLATE_COL_NAME);
-        //paramIn.put("userPwd", userPwd);
-        JSONObject businessObj = doExecute(paramIn);
-
-        Assert.isNotNull(businessObj,"template","查询模板 服务配置错误,返回报文中未包含template节点");
-
-        removeButtonName(businessObj);
-
-        JSONObject templateObj = new JSONObject();
-
-        paramColModelToJson(businessObj.getJSONArray("template"));
 
-        templateObj.put("template",businessObj.getJSONArray("template"));
 
-        pd.setResJson(DataTransactionFactory.pageResponseJson(pd.getTransactionId(),ResponseConstant.RESULT_CODE_SUCCESS,"查询成功 ",templateObj));
-
-    }
 
     /**
      *  colModel 字段处理
@@ -242,186 +147,6 @@ public class ConsoleServiceSMOImpl extends LoggerEngine implements IConsoleServi
     }
 
 
-    /**
-     * 获取模板
-     * @param pd
-     * @return
-     * @throws SMOException
-     */
-    public void getTemplate(PageData pd) throws SMOException{
-        String templateCode = pd.getParam().getString("templateCode");
-
-        Assert.hasText(templateCode,"模板编码不能为空");
-
-        Map paramIn = new HashMap();
-        paramIn.put("templateCode", templateCode);
-        paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE,ServiceCodeConstant.SERVICE_CODE_QUERY_CONSOLE_TEMPLATE);
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,ServiceCodeConstant.SERVICE_CODE_QUERY_CONSOLE_TEMPLATE_NAME);
-        //paramIn.put("userPwd", userPwd);
-        JSONObject businessObj = doExecute(paramIn);
-
-        Assert.isNotNull(businessObj,"template","查询模板 服务配置错误,返回报文中未包含template节点");
-
-
-        JSONObject templateObj = new JSONObject();
-        templateObj.put("template",businessObj.getJSONObject("template"));
-        pd.setData(templateObj);
-        pd.setResJson(DataTransactionFactory.pageResponseJson(pd.getTransactionId(),ResponseConstant.RESULT_CODE_SUCCESS,"查询成功 ",templateObj));
-
-    }
-
-    /**
-     * 查询模板数据
-     * @param pd
-     * @throws SMOException
-     */
-    public void getTemplateData(PageData pd) throws SMOException{
-
-        //查询模板信息
-        getTemplate(pd);
-        JSONObject template = pd.getData().getJSONObject("template");
-        Assert.isInteger(pd.getParam().getString("rows"),"rows 字段不能为空,并且为整数");
-        Assert.isInteger(pd.getParam().getString("page"),"page 字段不能为空,并且为整数");
-        int rows = Integer.parseInt(pd.getParam().getString("rows"));
-        int page = Integer.parseInt(pd.getParam().getString("page"));
-        String sord = pd.getParam().getString("sord");
-        String templateUrl = template.getString("templateUrl");
-        if(StringUtil.isNullOrNone(templateUrl) || !templateUrl.contains(CommonConstant.TEMPLATE_URL_LIST)){
-            throw new SMOException(ResponseConstant.RESULT_CODE_CONFIG_ERROR,"配置错误,模板中为配置查询数据的地址");
-        }
-
-        Map paramIn = new HashMap();
-
-        paramIn.put("rows", rows);
-        paramIn.put("page", (page-1)*rows);
-        paramIn.put("sord", sord);
-        paramIn.put("userId", pd.getUserId());
-        paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE,getServiceCode(templateUrl,CommonConstant.TEMPLATE_URL_LIST));
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,"数据查询");
-        //paramIn.put("userPwd", userPwd);
-        JSONObject businessObj = doExecute(paramIn);
-
-        pd.setResJson(businessObj);
-    }
-
-
-    /**
-     * 刷新缓存
-     * @param pd
-     * @throws SMOException
-     */
-    public void flushCache(PageData pd) throws SMOException{
-        //查询单条缓存信息
-        queryCacheOne(pd);
-
-        JSONObject cacheObj = pd.getData().getJSONObject("cache");
-
-        String serviceCode = cacheObj.getString("serviceCode");
-
-        String param = cacheObj.getString("param");
-        if(!Assert.isJsonObject(param)){
-            throw new SMOException(ResponseConstant.RESULT_CODE_CONFIG_ERROR,serviceCode+"缓存配置param错误,不是有效的json格式");
-        }
-        Map paramIn = new HashMap();
-        paramIn.putAll(JSONObject.parseObject(param));
-        paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE,serviceCode);
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,"刷新缓存");
-        //paramIn.put("userPwd", userPwd);
-        JSONObject businessObj = doExecute(paramIn);
-
-        Assert.notEmpty(businessObj,"刷新缓存失败,请联系管理员");
-
-        pd.setResJson(DataTransactionFactory.pageResponseJson(pd.getTransactionId(),ResponseConstant.RESULT_CODE_SUCCESS,"查询成功 ",null));
-
-    }
-
-    /**
-     * 查询缓存信息
-     * @param pd
-     */
-    public void queryCacheOne(PageData pd) throws  SMOException{
-        String cacheCode = pd.getParam().getString("cacheCode");
-
-        Assert.hasText(cacheCode,"缓存编码不能为空");
-
-        Map paramIn = new HashMap();
-        paramIn.put("cacheCode", cacheCode);
-        paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE,ServiceCodeConstant.SERVICE_CODE_QUERY_CONSOLE_CACHE);
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,ServiceCodeConstant.SERVICE_CODE_QUERY_CONSOLE_CACHE_NAME);
-        //paramIn.put("userPwd", userPwd);
-        JSONObject businessObj = doExecute(paramIn);
-
-        Assert.isNotNull(businessObj,"cache","查询单条缓存信息 配置错误,返回报文中未包含cache节点");
-
-
-        JSONObject templateObj = new JSONObject();
-        templateObj.put("cache",businessObj.getJSONObject("cache"));
-        pd.setData(templateObj);
-        pd.setResJson(DataTransactionFactory.pageResponseJson(pd.getTransactionId(),ResponseConstant.RESULT_CODE_SUCCESS,"查询成功 ",templateObj));
-
-    }
-
-    /**
-     * 编辑模板数据
-     * @param pd
-     * @throws SMOException
-     */
-    public void editTemplateData(PageData pd) throws SMOException{
-
-        //查询模板信息
-        getTemplate(pd);
-        JSONObject template = pd.getData().getJSONObject("template");
-        String oper = pd.getParam().getString("oper");
-        Assert.hasLength(oper,"oper 字段不能为空");
-        String templateUrl = template.getString("templateUrl");
-        if(StringUtil.isNullOrNone(templateUrl)){
-            throw new SMOException(ResponseConstant.RESULT_CODE_CONFIG_ERROR,"配置错误,模板中url 没有被配置");
-        }
-        String serviceCode = "";
-        if(CommonConstant.TEMPLATE_OPER_ADD.equals(oper)){
-            serviceCode = CommonConstant.TEMPLATE_URL_INSERT;
-        }else if(CommonConstant.TEMPLATE_OPER_EDIT.equals(oper)){
-            serviceCode = CommonConstant.TEMPLATE_URL_UPDATE;
-        }else if(CommonConstant.TEMPLATE_OPER_DEL.equals(oper)){
-            serviceCode = CommonConstant.TEMPLATE_URL_DELETE;
-        }else{
-            throw new SMOException(ResponseConstant.RESULT_PARAM_ERROR,"入参错误oper 只能为 add edit del 中的一种");
-        }
-        Map paramIn = new HashMap();
-        paramIn.putAll(pd.getParam());
-        paramIn.put("userId", pd.getUserId());
-        paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE,getServiceCode(templateUrl,serviceCode));
-        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,"数据操作");
-        //paramIn.put("userPwd", userPwd);
-        JSONObject businessObj = doExecute(paramIn);
-
-        pd.setResJson(businessObj);
-    }
-
-    /**
-     * 获取serviceCode
-     * @param templateUrl
-     * @param model
-     * @return
-     * @throws SMOException
-     */
-    private String getServiceCode(String templateUrl,String model) throws SMOException{
-        String [] tUrls = templateUrl.split(CommonConstant.TEMPLATE_URL_SPILT);
-        for(String url : tUrls){
-            if(url.contains(model)){
-                return url.substring(model.length());
-            }
-        }
-
-        throw new SMOException(ResponseConstant.RESULT_CODE_CONFIG_ERROR,"配置错误,模板中为配置["+model+"]数据的地址");
-    }
-
-
 
     public RestTemplate getRestTemplate() {
         return restTemplate;
@@ -430,4 +155,9 @@ public class ConsoleServiceSMOImpl extends LoggerEngine implements IConsoleServi
     public void setRestTemplate(RestTemplate restTemplate) {
         this.restTemplate = restTemplate;
     }
+
+    @Override
+    public void login(IPageData pd) throws SMOException {
+
+    }
 }

+ 59 - 0
WebService/src/main/java/com/java110/web/smo/impl/LoginServiceSMOImpl.java

@@ -0,0 +1,59 @@
+package com.java110.web.smo.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ServiceConstant;
+import com.java110.common.util.Assert;
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.context.IPageData;
+import com.java110.core.factory.AuthenticationFactory;
+import com.java110.web.smo.ILoginServiceSMO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.*;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * 登录信息实现类
+ * Created by wuxw on 2019/3/20.
+ */
+
+@Service("loginServiceSMOImpl")
+public class LoginServiceSMOImpl extends BaseServiceSMO implements ILoginServiceSMO {
+    private final static Logger logger = LoggerFactory.getLogger(LoginServiceSMOImpl.class);
+
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+
+    /**
+     * 登录处理
+     * @param pd 页面请求对象
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> doLogin(IPageData pd) {
+
+        ResponseEntity<String> responseEntity = null;
+
+        Assert.jsonObjectHaveKey(pd.getReqData(),"username","请求报文格式错误或未包含username信息");
+        JSONObject loginInfo = JSONObject.parseObject(pd.getReqData());
+        loginInfo.put("passwd", AuthenticationFactory.passwdMd5(loginInfo.getString("passwd")));
+        responseEntity = this.callCenterService(restTemplate,pd,loginInfo.toJSONString(),ServiceConstant.SERVICE_API_URL+"/api/user.service.login",HttpMethod.POST);
+        if(responseEntity.getStatusCode() == HttpStatus.OK){
+            pd.setToken(responseEntity.getBody());
+        }
+        return responseEntity;
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 5 - 0
java110-common/src/main/java/com/java110/common/constant/CommonConstant.java

@@ -166,6 +166,11 @@ public class CommonConstant {
 
     public final static String HTTP_BUSINESS_DATAS = "datas";
 
+    /**
+     * 小区管理系统web端 APP_ID
+     */
+    public final static String HC_WEB_APP_ID = "8000418004";
+
 
 
 }

+ 15 - 0
java110-common/src/main/java/com/java110/common/constant/ServiceConstant.java

@@ -0,0 +1,15 @@
+package com.java110.common.constant;
+
+/**
+ * Created by wuxw on 2019/3/20.
+ */
+public class ServiceConstant {
+
+
+    /**
+     * API中心服务
+     */
+    //public final static String SERVICE_API_URL = "http://api-service";
+
+    public final static String SERVICE_API_URL = "http://api.java110.com:8008";
+}

+ 33 - 0
java110-core/src/main/java/com/java110/core/base/smo/BaseServiceSMO.java

@@ -3,15 +3,23 @@ package com.java110.core.base.smo;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ServiceConstant;
 import com.java110.common.log.LoggerEngine;
+import com.java110.common.util.Assert;
 import com.java110.common.util.ProtocolUtil;
 import com.java110.core.base.AppBase;
 import com.java110.core.context.AppContext;
 import com.java110.core.context.BusinessServiceDataFlow;
 import com.java110.core.context.DataFlowContext;
+import com.java110.core.context.IPageData;
+import com.java110.core.factory.AuthenticationFactory;
 import com.java110.core.factory.DataFlowFactory;
 import com.java110.feign.base.IPrimaryKeyService;
 import org.apache.commons.lang3.math.NumberUtils;
+import org.springframework.http.*;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
 import java.util.Map;
@@ -53,6 +61,31 @@ public class BaseServiceSMO extends AppBase {
         return targetId;
     }
 
+    /**
+     * 调用中心服务
+     * @return
+     */
+    protected ResponseEntity<String> callCenterService(RestTemplate restTemplate,IPageData pd, String param, String url, HttpMethod httpMethod){
+        ResponseEntity<String> responseEntity = null;
+        HttpHeaders header = new HttpHeaders();
+        header.add(CommonConstant.HTTP_APP_ID.toLowerCase(), CommonConstant.HC_WEB_APP_ID);
+        header.add(CommonConstant.HTTP_USER_ID.toLowerCase(), CommonConstant.ORDER_DEFAULT_USER_ID);
+        header.add(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), pd.getTransactionId());
+        header.add(CommonConstant.HTTP_REQ_TIME.toLowerCase(), pd.getReqData());
+        header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
+        HttpEntity<String> httpEntity = new HttpEntity<String>(param, header);
+        try{
+            responseEntity = restTemplate.exchange(url, httpMethod, httpEntity, String.class);
+        }catch (HttpStatusCodeException e){ //这里spring 框架 在4XX 或 5XX 时抛出 HttpServerErrorException 异常,需要重新封装一下
+            responseEntity = new ResponseEntity<String>("请求下游系统异常,"+e.getResponseBodyAsString(),e.getStatusCode());
+        }catch (Exception e){
+            responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }finally {
+            return responseEntity;
+        }
+
+    }
+
 
     /**
      * 创建上下文对象

+ 24 - 0
java110-core/src/main/java/com/java110/core/context/IPageData.java

@@ -1,5 +1,7 @@
 package com.java110.core.context;
 
+import org.springframework.http.ResponseEntity;
+
 /**
  * 页面数据封装对象
  *
@@ -7,6 +9,28 @@ package com.java110.core.context;
  */
 public interface IPageData {
 
+    public String getUserId();
+
+    public String getTransactionId();
+
+    public String getComponentCode();
+
+    public String getComponentMethod();
+
+    public String getToken();
+
+    public void setToken(String token);
+
+    public String getReqData();
+
+    public String getResponseTime();
+
+
+    public ResponseEntity getResponseEntity();
+
+
+    public void setResponseEntity(ResponseEntity responseEntity);
 
+    public IPageData builder(String userId,String token,String reqData,String componentCode,String componentMethod,String url) throws IllegalArgumentException;
 
 }

+ 74 - 103
java110-core/src/main/java/com/java110/core/context/PageData.java

@@ -1,186 +1,157 @@
 package com.java110.core.context;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.common.util.DateUtil;
+import org.springframework.http.ResponseEntity;
 
 import java.io.Serializable;
 import java.util.Map;
+import java.util.UUID;
 
 /**
  * 页面请求数据封装
  * Created by wuxw on 2018/5/2.
  */
-public class PageData implements Serializable {
+public class PageData implements IPageData,Serializable {
 
-    private String userId ;
 
-    private String transactionId;
 
-    private String requestTime;
+    public PageData(){
 
-    private String method;
+        this.setTransactionId(UUID.randomUUID().toString());
+    }
 
-    private String token;
 
-    private Object serviceSMOImpl;
+    private String userId ;
 
-    private JSONObject param;
+    private String transactionId;
 
-    private JSONObject meta;
+    private String requestTime;
 
-    private JSONObject reqJson;
+    private String componentCode;
 
-    private JSONObject resJson;
+    private String componentMethod;
 
-    private String code;
+    private String token;
 
-    private String message;
+    private String reqData;
 
     private String responseTime;
 
-    private JSONObject data;
-
-    private Map<String,String> userInfo;
+    private String url;
 
+    private ResponseEntity responseEntity;
 
     public String getUserId() {
         return userId;
     }
 
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
     public String getTransactionId() {
         return transactionId;
     }
 
-    public PageData setTransactionId(String transactionId) {
-        this.transactionId = transactionId;
-        return this;
-    }
-
-    public String getRequestTime() {
-        return requestTime;
-    }
 
-    public void setRequestTime(String requestTime) {
-        this.requestTime = requestTime;
+    public String getComponentCode() {
+        return componentCode;
     }
 
-    public String getMethod() {
-        return method;
+    public String getComponentMethod() {
+        return componentMethod;
     }
 
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-    public JSONObject getParam() {
-        return param;
-    }
-
-    public void setParam(JSONObject param) {
-        this.param = param;
-    }
-
-    public JSONObject getMeta() {
-        return meta;
+    public String getToken() {
+        return token;
     }
 
-    public void setMeta(JSONObject meta) {
-        this.meta = meta;
+    public String getReqData() {
+        return reqData;
     }
 
-    public JSONObject getReqJson() {
-        return reqJson;
+    public String getResponseTime() {
+        return responseTime;
     }
 
-    public void setReqJson(JSONObject reqJson) {
-        this.reqJson = reqJson;
+    public void setResponseTime(String responseTime) {
+        this.responseTime = responseTime;
     }
 
-    public JSONObject getResJson() {
-        return resJson;
+    public void setUserId(String userId) {
+        this.userId = userId;
     }
 
-    public void setResJson(JSONObject resJson) {
-        this.resJson = resJson;
+    public void setTransactionId(String transactionId) {
+        this.transactionId = transactionId;
     }
 
-    public void setResJson(String resJsonString) {
-        this.resJson = JSONObject.parseObject(resJsonString);
+    public void setRequestTime(String requestTime) {
+        this.requestTime = requestTime;
     }
 
-    public String getCode() {
-        return code;
+    public void setComponentCode(String componentCode) {
+        this.componentCode = componentCode;
     }
 
-    public void setCode(String code) {
-        this.code = code;
+    public void setComponentMethod(String componentMethod) {
+        this.componentMethod = componentMethod;
     }
 
-    public String getMessage() {
-        return message;
+    public void setToken(String token) {
+        this.token = token;
     }
 
-    public void setMessage(String message) {
-        this.message = message;
+    public void setReqData(String reqData) {
+        this.reqData = reqData;
     }
 
-    public String getResponseTime() {
-        return responseTime;
+    @Override
+    public ResponseEntity getResponseEntity() {
+        return responseEntity;
     }
 
-    public void setResponseTime(String responseTime) {
-        this.responseTime = responseTime;
+    public void setResponseEntity(ResponseEntity responseEntity) {
+        this.responseEntity = responseEntity;
     }
 
-    public JSONObject getData() {
-        return data;
+    public String getRequestTime() {
+        return requestTime;
     }
 
-    public void setData(JSONObject data) {
-        this.data = data;
+    public String getUrl() {
+        return url;
     }
 
-    public String getToken() {
-        return token;
+    public void setUrl(String url) {
+        this.url = url;
     }
 
-    public void setToken(String token) {
-        this.token = token;
+    /**
+     * 初始化 PageData
+     * @return
+     */
+    public static IPageData newInstance(){
+        return new PageData();
     }
 
+    public IPageData builder(Map param) throws IllegalArgumentException{
+        JSONObject reqJson = null;
 
-    public Map<String, String> getUserInfo() {
-        return userInfo;
-    }
-
-    public void setUserInfo(Map<String, String> userInfo) {
-        this.userInfo = userInfo;
+        return this;
     }
 
+    public IPageData builder(String userId,String token,String reqData,String componentCode,String componentMethod,String url)
+            throws IllegalArgumentException{
+        this.setComponentCode(componentCode);
+        this.setComponentMethod(componentMethod);
+        this.setReqData(reqData);
+        this.setRequestTime(DateUtil.getyyyyMMddhhmmssDateString());
+        this.setUserId(userId);
+        this.setToken(token);
+        this.setUrl(url);
 
-    public Object getServiceSMOImpl() {
-        return serviceSMOImpl;
-    }
-
-    public void setServiceSMOImpl(Object serviceSMOImpl) {
-        this.serviceSMOImpl = serviceSMOImpl;
+        return this;
     }
 
-    public PageData builder(String requestJson) throws IllegalArgumentException{
-        JSONObject reqJson = null;
-        try {
-            reqJson = JSONObject.parseObject(requestJson);
-        }catch (Exception e){
-            throw new IllegalArgumentException("请求参数错误",e);
-        }
-        this.setMeta(reqJson.getJSONObject("meta"));
-        this.setMethod(this.getMeta().getString("method"));
-        this.setRequestTime(this.getMeta().getString("requestTime"));
-        this.setParam(reqJson.getJSONObject("param"));
-        this.setReqJson(reqJson);
-        return this;
+    public String toString(){
+        return JSONObject.toJSONString(this);
     }
 }

+ 10 - 0
java110-core/src/main/java/com/java110/core/factory/AuthenticationFactory.java

@@ -38,6 +38,16 @@ import java.util.*;
  */
 public class AuthenticationFactory {
 
+    private final static String PASSWD_SALT= "hc@java110";
+    /**
+     * 用户密码 md5签名
+     * @param inStr
+     * @return
+     */
+    public static String passwdMd5(String inStr) throws NoAuthorityException{
+        return md5(md5(inStr+PASSWD_SALT));
+    }
+
     /**
      * md5签名
      * @param inStr

+ 45 - 11
java110-service/src/main/java/com/java110/service/aop/PageProcessAspect.java

@@ -2,6 +2,9 @@ package com.java110.service.aop;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ResponseConstant;
+import com.java110.common.exception.FilterException;
+import com.java110.core.context.IPageData;
 import com.java110.core.factory.PageDataFactory;
 import com.java110.common.util.Assert;
 import com.java110.core.factory.GenerateCodeFactory;
@@ -50,7 +53,9 @@ public class PageProcessAspect {
         ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
         HttpServletRequest request = attributes.getRequest();
 
-        PageData pd = null;
+        IPageData pd = null;
+        String reqData = "";
+        String userId = "";
         if("POST,PUT".contains(request.getMethod())){
             InputStream in = request.getInputStream();
             BufferedReader reader = new BufferedReader(new InputStreamReader(in));
@@ -60,14 +65,11 @@ public class PageProcessAspect {
             while ((str = reader.readLine()) != null) {
                 sb.append(str);
             }
-            str = sb.toString();
-            if(Assert.isPageJsonObject(str)){
-                pd = PageDataFactory.newInstance().builder(str).setTransactionId(GenerateCodeFactory.getPageTransactionId());
-            }
+            reqData = sb.toString();
+
         }
         //对 get情况下的参数进行封装
-        if(pd == null){
-            pd = PageDataFactory.newInstance().setTransactionId(GenerateCodeFactory.getPageTransactionId());
+        else{
             Map<String,String[]> params = request.getParameterMap();
             if(params != null  && !params.isEmpty()) {
                 JSONObject paramObj = new JSONObject();
@@ -82,18 +84,31 @@ public class PageProcessAspect {
                     }
                     continue;
                 }
-                pd.setParam(paramObj);
+                reqData = paramObj.toJSONString();
             }
         }
-
+        // 获取 userId
         if(request.getAttribute("claims") != null && request.getAttribute("claims") instanceof Map){
             Map<String,String> userInfo = (Map<String,String>)request.getAttribute("claims");
             if(userInfo.containsKey(CommonConstant.LOGIN_USER_ID)){
-                pd.setUserId(userInfo.get(CommonConstant.LOGIN_USER_ID));
+                userId = userInfo.get(CommonConstant.LOGIN_USER_ID);
             }
-            pd.setUserInfo(userInfo);
+        }
+
+        // 获取组件名称 和方法名称
+        String url = request.getRequestURL()!=null?request.getRequestURL().toString():"";
+        String componentCode = "";
+        String componentMethod = "";
+        if(url.contains("callComponent")){
+            String []urls = url.split("/");
 
+            if(urls.length == 6){
+                componentCode = urls[4];
+                componentMethod = urls[5];
+            }
         }
+
+         pd = PageData.newInstance().builder(userId,this.getToken(request),reqData,componentCode,componentMethod,url);
         request.setAttribute(CommonConstant.CONTEXT_PAGE_DATA,pd);
 
     }
@@ -143,4 +158,23 @@ public class PageProcessAspect {
             return null;
         }
     }
+
+
+    /**
+     * 获取TOKEN
+     * @param request
+     * @return
+     */
+    private String getToken(HttpServletRequest request) throws FilterException {
+        String token = "";
+        if(request.getCookies() == null || request.getCookies().length == 0){
+            return token;
+        }
+        for (Cookie cookie : request.getCookies()) {
+            if (CommonConstant.COOKIE_AUTH_TOKEN.equals(cookie.getName())) {
+                token = cookie.getValue();
+            }
+        }
+        return token;
+    }
 }