Bladeren bron

小区单元保存成功

wuxw 7 jaren geleden
bovenliggende
commit
d18b7eeaa4

+ 151 - 0
Api/src/main/java/com/java110/api/listener/unit/SaveUnitListener.java

@@ -0,0 +1,151 @@
+package com.java110.api.listener.unit;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiDataFlowListener;
+import com.java110.common.constant.BusinessTypeConstant;
+import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ServiceCodeConstant;
+import com.java110.common.util.Assert;
+import com.java110.common.util.BeanConvertUtil;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.floor.IFloorInnerServiceSMO;
+import com.java110.dto.FloorDto;
+import com.java110.entity.center.AppService;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * @ClassName SaveUnitListener
+ * @Description TODO 保存小区单元信息
+ * @Author wuxw
+ * @Date 2019/5/3 11:54
+ * @Version 1.0
+ * add by wuxw 2019/5/3
+ **/
+@Java110Listener("saveUnitListener")
+public class SaveUnitListener extends AbstractServiceApiDataFlowListener {
+    private static Logger logger = LoggerFactory.getLogger(SaveUnitListener.class);
+
+
+    @Autowired
+    private IFloorInnerServiceSMO floorInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_SAVE_UNIT;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    public void soService(ServiceDataFlowEvent event) {
+
+        logger.debug("ServiceDataFlowEvent : {}", event);
+
+        DataFlowContext dataFlowContext = event.getDataFlowContext();
+        AppService service = event.getAppService();
+
+        String paramIn = dataFlowContext.getReqData();
+
+        //校验数据
+        validate(paramIn);
+        JSONObject paramObj = JSONObject.parseObject(paramIn);
+
+        HttpHeaders header = new HttpHeaders();
+        //dataFlowContext.getRequestCurrentHeaders().put(CommonConstant.HTTP_USER_ID, "-1");
+        dataFlowContext.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
+        JSONArray businesses = new JSONArray();
+
+        //添加单元信息
+        businesses.add(addUnit(paramObj, dataFlowContext));
+
+        JSONObject paramInObj = super.restToCenterProtocol(businesses, dataFlowContext.getRequestCurrentHeaders());
+
+        //将 rest header 信息传递到下层服务中去
+        super.freshHttpHeader(header, dataFlowContext.getRequestCurrentHeaders());
+
+        ResponseEntity<String> responseEntity = this.callService(dataFlowContext, service.getServiceCode(), paramInObj);
+
+        dataFlowContext.setResponseEntity(responseEntity);
+
+    }
+
+    /**
+     * 添加小区楼信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @param dataFlowContext 数据上下文
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject addUnit(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_UNIT_INFO);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessFloor = new JSONObject();
+        businessFloor.put("floorId", paramInJson.getString("floorId"));
+        businessFloor.put("layerCount", paramInJson.getString("layerCount"));
+        businessFloor.put("unitId", paramInJson.getString("-1"));
+        businessFloor.put("unitNum", paramInJson.getString("unitNum"));
+        businessFloor.put("lift", paramInJson.getString("lift"));
+        businessFloor.put("remark", paramInJson.getString("remark"));
+        businessFloor.put("userId", paramInJson.getString(dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID)));
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessUnit", businessFloor);
+
+        return business;
+    }
+
+    /**
+     * 数据校验
+     *
+     * @param paramIn "communityId": "7020181217000001",
+     *                "memberId": "3456789",
+     *                "memberTypeCd": "390001200001"
+     */
+    private void validate(String paramIn) {
+        Assert.jsonObjectHaveKey(paramIn, "communityId", "请求报文中未包含communityId节点");
+        Assert.jsonObjectHaveKey(paramIn, "floorId", "请求报文中未包含floorId节点");
+        Assert.jsonObjectHaveKey(paramIn, "unitNum", "请求报文中未包含unitNum节点");
+        Assert.jsonObjectHaveKey(paramIn, "layerCount", "请求报文中未包含layerCount节点");
+        Assert.jsonObjectHaveKey(paramIn, "lift", "请求报文中未包含lift节点");
+        JSONObject reqJson = JSONObject.parseObject(paramIn);
+        Assert.isInteger(reqJson.getString("layerCount"), "单元总层数据不是有效数字");
+
+        if (!"1010".equals(reqJson.getString("lift")) && !"2020".equals(reqJson.getString("lift"))) {
+            throw new IllegalArgumentException("是否有电梯 传入数据错误");
+        }
+
+        //校验小区楼ID和小区是否有对应关系
+        int total = floorInnerServiceSMOImpl.queryFloorsCount(BeanConvertUtil.covertBean(reqJson, FloorDto.class));
+
+        if (total < 1) {
+            throw new IllegalArgumentException("传入小区楼ID不是该小区的楼");
+        }
+
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+    public IFloorInnerServiceSMO getFloorInnerServiceSMOImpl() {
+        return floorInnerServiceSMOImpl;
+    }
+
+    public void setFloorInnerServiceSMOImpl(IFloorInnerServiceSMO floorInnerServiceSMOImpl) {
+        this.floorInnerServiceSMOImpl = floorInnerServiceSMOImpl;
+    }
+}

+ 40 - 0
WebService/src/main/java/com/java110/web/components/unit/AddUnitComponent.java

@@ -0,0 +1,40 @@
+package com.java110.web.components.unit;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.IUnitServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName AddUnitComponent
+ * @Description TODO 添加小区单元
+ * @Author wuxw
+ * @Date 2019/5/3 11:42
+ * @Version 1.0
+ * add by wuxw 2019/5/3
+ **/
+@Component("addUnit")
+public class AddUnitComponent {
+
+    @Autowired
+    private IUnitServiceSMO unitServiceSMOImpl;
+
+    /**
+     * 保存 小区单元信息
+     *
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    public ResponseEntity<String> save(IPageData pd) {
+        return unitServiceSMOImpl.saveUnit(pd);
+    }
+
+    public IUnitServiceSMO getUnitServiceSMOImpl() {
+        return unitServiceSMOImpl;
+    }
+
+    public void setUnitServiceSMOImpl(IUnitServiceSMO unitServiceSMOImpl) {
+        this.unitServiceSMOImpl = unitServiceSMOImpl;
+    }
+}

+ 9 - 0
WebService/src/main/java/com/java110/web/smo/IUnitServiceSMO.java

@@ -21,4 +21,13 @@ public interface IUnitServiceSMO {
      * @return ResponseEntity 对象给前段页面
      */
     ResponseEntity<String> listUnits(IPageData pd);
+
+
+    /**
+     * 保存小区单元信息
+     *
+     * @param pd 页面数据封装
+     * @return ResponseEntity对象
+     */
+    ResponseEntity<String> saveUnit(IPageData pd);
 }

+ 57 - 0
WebService/src/main/java/com/java110/web/smo/impl/UnitServiceSMOImpl.java

@@ -69,6 +69,63 @@ public class UnitServiceSMOImpl extends BaseComponentSMO implements IUnitService
         return responseEntity;
     }
 
+    /**
+     * 保存小区单元信息
+     *
+     * @param pd 页面数据封装
+     * @return ResponseEntity对象
+     */
+    @Override
+    public ResponseEntity<String> saveUnit(IPageData pd) {
+
+        //校验入参
+        validateSaveUnit(pd);
+
+        //校验用户是否有权限
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_UNIT);
+
+        JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+        String communityId = paramIn.getString("communityId");
+
+        ResponseEntity responseEntity = super.getStoreInfo(pd, restTemplate);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点");
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeTypeCd", "根据用户ID查询商户类型失败,未包含storeTypeCd节点");
+
+        String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
+        String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
+        //数据校验是否 商户是否入驻该小区
+        super.checkStoreEnterCommunity(pd, storeId, storeTypeCd, communityId, restTemplate);
+
+        String apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.saveUnit";
+
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                apiUrl,
+                HttpMethod.POST);
+        return responseEntity;
+    }
+
+    /**
+     * 校验 保存小区单元参数信息
+     *
+     * @param pd 页面数据封装
+     */
+    private void validateSaveUnit(IPageData pd) {
+        Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "floorId", "请求报文中未包含floorId节点");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "unitNum", "请求报文中未包含unitNum节点");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "layerCount", "请求报文中未包含layerCount节点");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "lift", "请求报文中未包含lift节点");
+        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
+        Assert.isInteger(reqJson.getString("layerCount"), "单元总层数据不是有效数字");
+
+        if (!"1010".equals(reqJson.getString("lift")) && !"2020".equals(reqJson.getString("lift"))) {
+            throw new IllegalArgumentException("是否有电梯 传入数据错误");
+        }
+    }
+
     /**
      * 小区单元查询数据校验
      *

+ 30 - 11
WebService/src/main/resources/components/add-unit/addUnit.html

@@ -1,22 +1,41 @@
-<div id = "addUnitModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="addPrivilegeModalLabel" aria-hidden="true" >
+<div id = "addUnitModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" >
     <div class="modal-dialog modal-lg">
         <div class="modal-content">
             <div class="modal-body">
-                <div class=" row">
-                    <div class="col-lg-12">
-                        <div class="ibox ">
-                                <div class="table-responsive"
-                                     style="margin-top:15px">
-
+                <h3 class="m-t-none m-b ">添加单元</h3>
+                <div class="ibox-content">
+                    <div>
+                        <div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">单元编号</label>
+                                <div class="col-sm-10"><input v-model="addUnitInfo.unitNum" type="text" placeholder="必填,请填写单元编号" class="form-control"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">总层数</label>
+                                <div class="col-sm-10"><input v-model="addUnitInfo.layerCount" type="number" placeholder="必填,请填写单元总层数" class="form-control"></div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">电梯</label>
+                                <div class="col-sm-10">
+                                    <select class="custom-select" v-model="addUnitInfo.lift">
+                                        <option selected value="">必填,请选择是否有电梯</option>
+                                        <option value="1010">有</option>
+                                        <option value="2020">无</option>
+                                    </select>
                                 </div>
-
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">备注</label>
+                                <div class="col-sm-10"><input v-model="addUnitInfo.remark" type="text" placeholder="请填写备注信息" class="form-control"></div>
+                            </div>
+                            <div class="ibox-content">
+                                <button class="btn btn-primary float-right" type="button" v-on:click="addUnit()" ><i class="fa fa-check"></i>&nbsp;保存</button>
+                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;" data-dismiss="modal">取消</button>
+                            </div>
                         </div>
                     </div>
                 </div>
             </div>
-            <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
-            </div>
         </div>
     </div>
 </div>

+ 69 - 90
WebService/src/main/resources/components/add-unit/addUnit.js

@@ -3,13 +3,12 @@
     vc.extends({
         data:{
             addUnitInfo:{
-                _currentUserId:'',
-                name:'',
-                description:'',
-                errorInfo:'',
-                _noAddPrivilege:[],
-                _noAddPrivilegeGroup:[],
-                _currentTab:1
+                floorId:'',
+                unitNum:'',
+                layerCount:'',
+                lift:'',
+                remark:'',
+                communityId:''
             }
         },
          _initMethod:function(){
@@ -18,85 +17,73 @@
          _initEvent:function(){
              vc.on('addUnit','addUnitModel',function(_params){
                 $('#addUnitModel').modal('show');
-                vc.component._refreshData(_params);
+                vc.component.addUnitInfo.floorId = _params.floorId;
+                vc.component.addUnitInfo.communityId = vc.getCurrentCommunity().communityId;
             });
         },
         methods:{
-            _refreshData:function(_params){
-                vc.component.addUnitInfo._currentUserId = _params.userId;
-                vc.component.addUnitInfo._currentTab = 1;
-                vc.component.listNoAddPrivilegeGroup();
-            },
-            changeTab:function(_tempTab){
-                vc.component.addUnitInfo._currentTab= _tempTab;
-                if(_tempTab == 2){
-                    vc.component.listNoAddPrivilege();
-                    return ;
-                }
-                vc.component.listNoAddPrivilegeGroup();
-            },
-            listNoAddPrivilegeGroup:function(){
-                vc.component.addUnitInfo._noAddPrivilegeGroup = [];
-                var param = {
-                    params:{
-                        userId:vc.component.addUnitInfo._currentUserId
-                    }
-                };
-                vc.http.get(
-                    'addUnit',
-                    'listNoAddPrivilegeGroup',
-                     param,
-                     function(json,res){
-                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
-                        if(res.status == 200){
-                            vc.component.addUnitInfo._noAddPrivilegeGroup = JSON.parse(json);
-                            return ;
-                        }
-                        vc.component.addUnitInfo.errorInfo = json;
-                     },
-                     function(errInfo,error){
-                        console.log('请求失败处理');
-
-                        vc.component.addUnitInfo.errorInfo = errInfo;
-                });
+            addUnitValidate:function(){
+                        return vc.validate.validate({
+                            addUnitInfo:vc.component.addUnitInfo
+                        },{
+                            'addUnitInfo.floorId':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"小区楼不能为空"
+                                }
+                            ],
+                            'addUnitInfo.unitNum':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"单元不能为空"
+                                },
+                                {
+                                    limit:"maxLength",
+                                    param:"12",
+                                    errInfo:"单元编号长度不能超过12位"
+                                },
+                            ],
+                            'addUnitInfo.layerCount':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"单元楼层高度不能为空"
+                                },
+                                {
+                                    limit:"num",
+                                    param:"",
+                                    errInfo:"单元楼层高度必须为数字"
+                                }
+                            ],
+                            'addUnitInfo.lift':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"必须选择单元是否电梯"
+                                }
+                            ],
+                            'addUnitInfo.remark':[
+                                {
+                                    limit:"maxLength",
+                                    param:"200",
+                                    errInfo:"备注长度不能超过200位"
+                                },
+                            ]
 
-            },
-            listNoAddPrivilege:function(){
-                vc.component.addUnitInfo._noAddPrivilege=[];
-                var param = {
-                    params:{
-                        userId:vc.component.addUnitInfo._currentUserId
-                    }
+                        });
+             },
+            addUnit:function(){
+                if(!vc.component.addStaffValidate()){
+                    vc.message(vc.validate.errInfo);
+                    return ;
                 }
-                vc.http.get(
-                            'addUnit',
-                            'listNoAddPrivilege',
-                             param,
-                             function(json,res){
-                                //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
-                                if(res.status == 200){
-                                    vc.component.addUnitInfo._noAddPrivilege = JSON.parse(json);
-                                    return ;
-                                }
-                                vc.component.addUnitInfo.errorInfo = json;
-                             },
-                             function(errInfo,error){
-                                console.log('请求失败处理');
 
-                                vc.component.addUnitInfo.errorInfo = errInfo;
-                             });
-            },
-            addUnit:function(_pId,_privilegeFlag){
-                vc.component.addUnitInfo.errorInfo = "";
-                var param = {
-                    userId:vc.component.addUnitInfo._currentUserId,
-                    pId:_pId,
-                    pFlag:_privilegeFlag
-                };
                 vc.http.post(
                     'addUnit',
-                    'addUnitOrPrivilegeGroup',
-                    JSON.stringify(param),
+                    'save',
+                    JSON.stringify(vc.component.addUnitInfo),
                     {
                         emulateJSON:true
                      },
@@ -105,26 +92,18 @@
                         if(res.status == 200){
                             //关闭model
                             $('#addUnitModel').modal('hide');
-                            vc.emit('staffPrivilege','_loadUnits',{
-                                staffId:vc.component.addUnitInfo._currentUserId
+                            vc.emit('unit','loadUnit',{
+                                floorId:vc.component.addUnitInfo.floorId
                             });
                             return ;
                         }
-                        vc.component.addUnitInfo.errorInfo = json;
+                        vc.message(json);
                      },
                      function(errInfo,error){
                         console.log('请求失败处理');
 
-                        vc.component.addUnitInfo.errorInfo = errInfo;
+                        vc.message(errInfo);
                      });
-            },
-            userAddPrivilegeGroup:function(_pgId){
-                console.log("需要添加权限:",_pgId);
-                vc.component.addUnit(_pgId,1)
-            },
-            userAddPrivilege:function(_pId){
-                console.log("需要添加权限:",_pId);
-                vc.component.addUnit(_pId,2)
             }
         }
     });

+ 1 - 0
docs/_sidebar.md

@@ -23,6 +23,7 @@
   * [编辑小区楼信息](api/floor/editFloor.md)
   * [编辑小区楼信息](api/floor/deleteFloor.md)
   * [查询单元信息](api/unit/queryUnits.md)
+  * [保存单元信息](api/unit/saveUnit.md)
 
 * 服务端接口协议
 

+ 69 - 0
docs/api/unit/saveUnit.md

@@ -0,0 +1,69 @@
+
+
+**1\. 保存小区单元信息**
+###### 接口功能
+> 用户通过web端或APP保存单元信息接口
+
+###### URL
+> [http://api.java110.com:8008/api/unit.saveUnit](http://api.java110.com:8008/api/unit.saveUnit)
+
+###### 支持格式
+> JSON
+
+###### HTTP请求方式
+> GET
+
+###### 请求参数(header部分)
+|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-:|
+|app_id|1|String|30|应用ID|Api服务分配                      |
+|transaction_id|1|String|30|请求流水号|不能重复 1000000000+YYYYMMDDhhmmss+6位序列 |
+|sign|1|String|-|签名|请参考签名说明|
+|req_time|1|String|-|请求时间|YYYYMMDDhhmmss|
+
+###### 请求参数
+|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-: |
+|floorId|1|String|30|小区楼ID|-|
+|communityId|1|String|30|小区ID|-|
+|unitNum|1|String|12|单元编号|-|
+|layerCount|1|int|-|楼总层数|-|
+|lift|1|String|4|是否有楼梯|1010 有 2020 无|
+|layerCount|1|int|-|楼总层数|-|
+|remark|?|string|200|备注|-|
+
+###### 返回协议
+
+当http返回状态不为200 时请求处理失败 body内容为失败的原因
+
+当http返回状态为200时请求处理成功,body内容为返回内容,
+
+成功
+
+
+###### 举例
+> 地址:[http://api.java110.com:8008/api/unit.saveUnit](http://api.java110.com:8008/api/unit.saveUnit)
+
+``` javascript
+请求头信息:
+Content-Type:application/json
+USER_ID:1234
+APP_ID:8000418002
+TRANSACTION_ID:10029082726
+REQ_TIME:20181113225612
+SIGN:aabdncdhdbd878sbdudn898
+请求报文:
+
+{
+    "floorId":"填写具体值",
+     "layerCount":"填写具体值",
+     "unitId":"填写具体值",
+     "unitNum":"填写具体值",
+     "lift":"填写具体值",
+     "remark":"填写具体值"
+}
+
+返回报文:
+成功
+
+```

+ 3 - 0
java110-common/src/main/java/com/java110/common/constant/ServiceCodeConstant.java

@@ -369,4 +369,7 @@ public class ServiceCodeConstant {
 
     //查询小区单元
     public static final String SERVICE_CODE_QUERY_UNITS = "unit.queryUnits";
+
+    //保存小区单元
+    public static final String SERVICE_CODE_SAVE_UNIT = "unit.saveUnit";
 }