Api/src/main/java/com/java110/api/rest/RestApi.java
@@ -4,6 +4,7 @@ import com.java110.api.smo.IApiServiceSMO; import com.java110.common.constant.CommonConstant; import com.java110.core.base.controller.BaseController; import com.java110.core.smo.user.IUserInnerServiceSMO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -31,6 +32,8 @@ private final static Logger logger = LoggerFactory.getLogger(RestApi.class); @Autowired private IApiServiceSMO apiServiceSMOImpl; private IUserInnerServiceSMO userInnerServiceSMOImpl; /** * 健康检查 服务 * @return @@ -41,6 +44,16 @@ return ""; } /** * 健康检查 服务 * @return */ @RequestMapping(path = "/checkUserServiceVersion",method = RequestMethod.GET) @ApiOperation(value="检查用服务版本", notes="test: 返回 2XX 表示服务正常") public String checkUserServiceVersion(){ return userInnerServiceSMOImpl.getUserServiceVersion("test"); } /** * 资源请求 post方式 UserService/src/main/java/com/java110/user/smo/impl/UserInnerServiceSMOImpl.java
New file @@ -0,0 +1,13 @@ package com.java110.user.smo.impl; import com.java110.core.smo.user.IUserInnerServiceSMO; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class UserInnerServiceSMOImpl implements IUserInnerServiceSMO { @Override public String getUserServiceVersion(@RequestParam("code") String code) { return code + " 0.0.6"; } } WebService/src/main/java/com/java110/web/components/floor/ListFloorComponent.java
New file @@ -0,0 +1,30 @@ package com.java110.web.components.floor; import com.java110.core.context.IPageData; import com.java110.web.smo.IFloorServiceSMO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; /** * 查询楼列表组件 */ @Component("listFloor") public class ListFloorComponent { @Autowired private IFloorServiceSMO floorServiceSMOImpl; public ResponseEntity<String> list(IPageData pd){ return floorServiceSMOImpl.listFloor(pd); } public IFloorServiceSMO getFloorServiceSMOImpl() { return floorServiceSMOImpl; } public void setFloorServiceSMOImpl(IFloorServiceSMO floorServiceSMOImpl) { this.floorServiceSMOImpl = floorServiceSMOImpl; } } WebService/src/main/java/com/java110/web/controller/CallComponentController.java
@@ -1,6 +1,7 @@ package com.java110.web.controller; import com.java110.common.constant.CommonConstant; import com.java110.common.exception.SMOException; import com.java110.common.factory.ApplicationContextFactory; import com.java110.common.util.Assert; import com.java110.core.base.controller.BaseController; @@ -8,8 +9,10 @@ import com.java110.web.smo.impl.LoginServiceSMOImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -36,27 +39,30 @@ //@RequestBody String info, HttpServletRequest request){ ResponseEntity<String> responseEntity = null; try{ Assert.hasLength(componentCode,"参数错误,未传入组件编码"); Assert.hasLength(componentMethod,"参数错误,未传入调用组件方法"); try { Assert.hasLength(componentCode, "参数错误,未传入组件编码"); Assert.hasLength(componentMethod, "参数错误,未传入调用组件方法"); Object componentInstance = ApplicationContextFactory.getBean(componentCode); Assert.notNull(componentInstance,"未找到组件对应的处理类,请确认 "+componentCode); Assert.notNull(componentInstance, "未找到组件对应的处理类,请确认 " + componentCode); Method cMethod = componentInstance.getClass().getDeclaredMethod(componentMethod,IPageData.class); Method cMethod = componentInstance.getClass().getDeclaredMethod(componentMethod, IPageData.class); Assert.notNull(cMethod,"未找到组件对应处理类的方法,请确认 "+componentCode+"方法:"+componentMethod); Assert.notNull(cMethod, "未找到组件对应处理类的方法,请确认 " + componentCode + "方法:" + componentMethod); IPageData pd = (IPageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA); logger.debug("组件编码{},组件方法{},pd 为{}",componentCode,componentMethod,pd.toString()); logger.debug("组件编码{},组件方法{},pd 为{}", componentCode, componentMethod, pd.toString()); responseEntity = (ResponseEntity<String>)cMethod.invoke(componentInstance,pd); responseEntity = (ResponseEntity<String>) cMethod.invoke(componentInstance, pd); }catch (SMOException e){ MultiValueMap<String, String> headers = new HttpHeaders(); headers.add("code",e.getResult().getCode()); responseEntity = new ResponseEntity<>(e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR); }catch (Exception e){ responseEntity = new ResponseEntity<>("调用组件失败"+e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR); responseEntity = new ResponseEntity<>(e.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR); }finally { logger.debug("组件调用返回信息为{}",responseEntity); return responseEntity; WebService/src/main/java/com/java110/web/smo/IFloorServiceSMO.java
New file @@ -0,0 +1,17 @@ package com.java110.web.smo; import com.java110.core.context.IPageData; import org.springframework.http.ResponseEntity; /** * 小区楼接口类 */ public interface IFloorServiceSMO { /** * 查询小区楼信息 * @param pd 页面数据封装对象 * @return */ ResponseEntity<String> listFloor(IPageData pd); } WebService/src/main/java/com/java110/web/smo/impl/FloorServiceSMOImpl.java
New file @@ -0,0 +1,97 @@ package com.java110.web.smo.impl; import com.alibaba.fastjson.JSONObject; import com.java110.common.constant.ServiceConstant; import com.java110.common.exception.SMOException; import com.java110.common.util.Assert; import com.java110.common.util.StringUtil; import com.java110.core.context.IPageData; import com.java110.web.core.BaseComponentSMO; import com.java110.web.smo.IFloorServiceSMO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; /** * 小区楼实现类 * * add by wuxw 2019-04-22 */ @Service("floorServiceSMOImpl") public class FloorServiceSMOImpl extends BaseComponentSMO implements IFloorServiceSMO { private final static Logger logger = LoggerFactory.getLogger(FloorServiceSMOImpl.class); @Autowired private RestTemplate restTemplate; /** * 查询小区楼 * @param pd 页面数据封装对象 * @return */ @Override public ResponseEntity<String> listFloor(IPageData pd) { validateListFloor(pd); JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); int page = Integer.parseInt(paramIn.getString("page")); int rows = Integer.parseInt(paramIn.getString("rows")); String floorName = paramIn.getString("floorName"); page = (page-1)*rows; ResponseEntity responseEntity = super.getStoreInfo(pd,restTemplate); if(responseEntity.getStatusCode() != HttpStatus.OK){ return responseEntity; } Assert.jsonObjectHaveKey(responseEntity.getBody().toString(),"storeId","根据用户ID查询商户ID失败,未包含storeId节点"); String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId"); if(StringUtil.isEmpty(floorName)) { responseEntity = this.callCenterService(restTemplate, pd, "", ServiceConstant.SERVICE_API_URL + "/api/query.staff.infos?rows=" + rows + "&page=" + page + "&storeId=" + storeId, HttpMethod.GET); }else { responseEntity = this.callCenterService(restTemplate, pd, "", ServiceConstant.SERVICE_API_URL + "/api/query.staff.byName?rows=" + rows + "&page=" + page + "&storeId=" + storeId+"&name="+floorName, HttpMethod.GET); } if(responseEntity.getStatusCode() != HttpStatus.OK){ return responseEntity; } JSONObject resultObjs = JSONObject.parseObject(responseEntity.getBody().toString()); resultObjs.put("row",rows); resultObjs.put("page",page); return responseEntity; } /** * 校验查询小区楼信息 * @param pd */ private void validateListFloor(IPageData pd){ Assert.jsonObjectHaveKey(pd.getReqData(),"page","请求报文中未包含page节点"); Assert.jsonObjectHaveKey(pd.getReqData(),"rows","请求报文中未包含rows节点"); JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); Assert.isInteger(paramIn.getString("page"),"page不是数字"); Assert.isInteger(paramIn.getString("rows"),"rows不是数字"); int rows = Integer.parseInt(paramIn.getString("rows")); if(rows>50){ throw new SMOException(1999,"rows 数量不能大于50"); } } public RestTemplate getRestTemplate() { return restTemplate; } public void setRestTemplate(RestTemplate restTemplate) { this.restTemplate = restTemplate; } } WebService/src/main/resources/components/floor/listFloor.html
New file @@ -0,0 +1,67 @@ <div id="component" class="wrapper wrapper-content animated fadeInRight ecommerce"> <div class="row"> <div class="col-lg-12"> <div class="ibox"> <div class="ibox-title"> <h5>小区楼信息</h5> <div class="ibox-tools" style="top:10px;"> <button type="button" class="btn btn-primary btn-sm" v-on:click="_openAddFloorModal()"> <i class="glyphicon glyphicon-plus"></i> 初始化楼 </button> </div> </div> <div class="ibox-content"> <table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15"> <thead> <tr> <th>楼ID</th> <th data-hide="phone">名称</th> <th data-hide="phone">编号</th> <th data-hide="phone">创建员工</th> <th data-hide="phone">备注</th> <th data-hide="phone">创建时间</th> <th class="text-right">操作</th> </tr> </thead> <tbody> <tr v-for="floor in listFloorInfo.floors"> <td> {{floor.floorId}} </td> <td> {{floor.name}} </td> <td> {{floor.userName}} </td> <td> {{floor.remark}} </td> <td> {{vc.dateFormat(floor.createTime)}} </td> <td class="text-right"> <div class="btn-group"> <button class="btn-white btn btn-xs" v-on:click="_openDelFloorModel(floor)">删除</button> </div> </td> </tr> </tbody> <tfoot> <tr> <td colspan="7"> <ul class="pagination float-right"></ul> </td> </tr> </tfoot> </table> </div> </div> </div> </div> </div> WebService/src/main/resources/components/floor/listFloor.js
New file @@ -0,0 +1,46 @@ (function(vc){ var DEFAULT_PAGE = 1; var DEFAULT_ROWS = 15; vc.extends({ data:{ listFloorInfo:{ floors:[], errorInfo:"" } }, _initMethod:function(){ vc.component._listFloorData(); }, _initEvent:function(){ }, methods:{ _listFloorData(){ var param = { params:{ page:DEFAULT_PAGE, rows:DEFAULT_ROWS } } //发送get请求 vc.http.get('listFloor', 'list', param, function(json,res){ vc.component.listFloorInfo.floors=JSON.parse(json); },function(errInfo,error){ console.log('请求失败处理'); } ); }, _openAddFloorModal:function(){ //打开添加框 }, _openDelFloorModel:function(_floor){ // 打开删除对话框 } } }) })(window.vc); WebService/src/main/resources/views/floorFlow.html
New file @@ -0,0 +1,33 @@ <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:vc="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>小区楼初始化|java110</title> <vc:create name="commonTop"></vc:create> </head> <body> <vc:create name="loading"></vc:create> <div id="wrapper"> <vc:create name="menu"></vc:create> <div id="page-wrapper" class="gray-bg dashbard-1"> <div class="row border-bottom"> <vc:create name="nav"></vc:create> </div> <!-- id="component" --> <div class="wrapper wrapper-content animated fadeInRight"> <vc:create name="listFloor"></vc:create> </div> <vc:create name="copyright"></vc:create> </div> </div> <vc:create name="commonBottom"></vc:create> </body> </html> java110-core/src/main/java/com/java110/core/smo/ITestInnerServiceSMO.java
New file @@ -0,0 +1,4 @@ package com.java110.core.smo; public interface ITestInnerServiceSMO { } java110-core/src/main/java/com/java110/core/smo/user/IUserInnerServiceSMO.java
New file @@ -0,0 +1,22 @@ package com.java110.core.smo.user; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; /** * 用户服务接口类(供服务间调用) */ @FeignClient("user-service") @RequestMapping("/userApi") public interface IUserInnerServiceSMO { /** * 查询用户服务版本 * @param code * @return */ @RequestMapping(value = "/getUserServiceVersion",method = RequestMethod.GET) String getUserServiceVersion(@RequestParam("code") String code); }