Procházet zdrojové kódy

小区单元修改开发完成

wuxw před 7 roky
rodič
revize
79d396f96e

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

@@ -7,7 +7,6 @@ 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;

+ 176 - 0
Api/src/main/java/com/java110/api/listener/unit/UpdateUnitListener.java

@@ -0,0 +1,176 @@
+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.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.floor.IFloorInnerServiceSMO;
+import com.java110.core.smo.unit.IUnitInnerServiceSMO;
+import com.java110.dto.FloorDto;
+import com.java110.dto.UnitDto;
+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 UpdateUnitListener
+ * @Description TODO 修改小区单元信息
+ * @Author wuxw
+ * @Date 2019/5/3 18:19
+ * @Version 1.0
+ * add by wuxw 2019/5/3
+ **/
+@Java110Listener("updateUnitListener")
+public class UpdateUnitListener extends AbstractServiceApiDataFlowListener {
+
+    private static Logger logger = LoggerFactory.getLogger(UpdateUnitListener.class);
+
+    @Autowired
+    private IFloorInnerServiceSMO floorInnerServiceSMOImpl;
+
+    @Autowired
+    private IUnitInnerServiceSMO unitInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_UPDATE_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(editUnit(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 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, "unitId", "请求报文中未包含unitId节点");
+        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("是否有电梯 传入数据错误");
+        }
+
+        FloorDto floorDto = new FloorDto();
+        floorDto.setCommunityId(reqJson.getString("communityId"));
+        floorDto.setFloorId(reqJson.getString("floorId"));
+        //校验小区楼ID和小区是否有对应关系
+        int total = floorInnerServiceSMOImpl.queryFloorsCount(floorDto);
+
+        if (total < 1) {
+            throw new IllegalArgumentException("传入小区楼ID不是该小区的楼");
+        }
+
+        //校验 小区楼ID 和单元ID是否有关系
+        UnitDto unitDto = new UnitDto();
+        unitDto.setFloorId(reqJson.getString("floorId"));
+        unitDto.setUnitId(reqJson.getString("unitId"));
+        total = unitInnerServiceSMOImpl.queryUnitsCount(unitDto);
+        if (total < 1) {
+            throw new IllegalArgumentException("传入单元不是该小区的楼的单元");
+        }
+    }
+
+
+    /**
+     * 修改小区楼信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @param dataFlowContext 数据上下文
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject editUnit(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_UNIT_INFO);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessUnit = new JSONObject();
+        businessUnit.put("floorId", paramInJson.getString("floorId"));
+        businessUnit.put("layerCount", paramInJson.getString("layerCount"));
+        businessUnit.put("unitId", paramInJson.getString("unitId"));
+        businessUnit.put("unitNum", paramInJson.getString("unitNum"));
+        businessUnit.put("lift", paramInJson.getString("lift"));
+        businessUnit.put("remark", paramInJson.getString("remark"));
+        businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID));
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessUnit", businessUnit);
+
+        return business;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    public IFloorInnerServiceSMO getFloorInnerServiceSMOImpl() {
+        return floorInnerServiceSMOImpl;
+    }
+
+    public void setFloorInnerServiceSMOImpl(IFloorInnerServiceSMO floorInnerServiceSMOImpl) {
+        this.floorInnerServiceSMOImpl = floorInnerServiceSMOImpl;
+    }
+
+    public static Logger getLogger() {
+        return logger;
+    }
+
+    public static void setLogger(Logger logger) {
+        UpdateUnitListener.logger = logger;
+    }
+}

+ 40 - 0
WebService/src/main/java/com/java110/web/components/unit/EditUnitComponent.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 EditUnitComponent
+ * @Description TODO 编辑小区楼单元信息
+ * @Author wuxw
+ * @Date 2019/5/3 18:12
+ * @Version 1.0
+ * add by wuxw 2019/5/3
+ **/
+@Component("editUnit")
+public class EditUnitComponent {
+
+    @Autowired
+    private IUnitServiceSMO unitServiceSMOImpl;
+
+    /**
+     * 修改小区单元信息
+     *
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    public ResponseEntity<String> update(IPageData pd) {
+        return unitServiceSMOImpl.updateUnit(pd);
+    }
+
+    public IUnitServiceSMO getUnitServiceSMOImpl() {
+        return unitServiceSMOImpl;
+    }
+
+    public void setUnitServiceSMOImpl(IUnitServiceSMO unitServiceSMOImpl) {
+        this.unitServiceSMOImpl = unitServiceSMOImpl;
+    }
+}

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

@@ -30,4 +30,12 @@ public interface IUnitServiceSMO {
      * @return ResponseEntity对象
      */
     ResponseEntity<String> saveUnit(IPageData pd);
+
+    /**
+     * 修改小区单元信息
+     *
+     * @param pd 页面数据封装
+     * @return ResponseEntity对象
+     */
+    ResponseEntity<String> updateUnit(IPageData pd);
 }

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

@@ -107,6 +107,37 @@ public class UnitServiceSMOImpl extends BaseComponentSMO implements IUnitService
         return responseEntity;
     }
 
+    @Override
+    public ResponseEntity<String> updateUnit(IPageData pd) {
+        //校验入参
+        validateUpdateUnit(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.updateUnit";
+
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                apiUrl,
+                HttpMethod.POST);
+        return responseEntity;
+    }
+
     /**
      * 校验 保存小区单元参数信息
      *
@@ -126,6 +157,25 @@ public class UnitServiceSMOImpl extends BaseComponentSMO implements IUnitService
         }
     }
 
+    /**
+     * 校验 修改小区单元参数信息
+     *
+     * @param pd 页面数据封装
+     */
+    private void validateUpdateUnit(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("是否有电梯 传入数据错误");
+        }
+    }
+
     /**
      * 小区单元查询数据校验
      *

+ 11 - 0
WebService/src/main/resources/components/add-unit/addUnit.js

@@ -16,6 +16,7 @@
          },
          _initEvent:function(){
              vc.on('addUnit','addUnitModel',function(_params){
+                vc.component.refreshAddUnitInfo();
                 $('#addUnitModel').modal('show');
                 vc.component.addUnitInfo.floorId = _params.floorId;
                 vc.component.addUnitInfo.communityId = vc.getCurrentCommunity().communityId;
@@ -104,6 +105,16 @@
 
                         vc.message(errInfo);
                      });
+            },
+            refreshAddUnitInfo:function(){
+                vc.component.addUnitInfo= {
+                  floorId:'',
+                  unitNum:'',
+                  layerCount:'',
+                  lift:'',
+                  remark:'',
+                  communityId:''
+                }
             }
         }
     });

+ 41 - 0
WebService/src/main/resources/components/edit-unit/editUnit.html

@@ -0,0 +1,41 @@
+<div id = "editUnitModel" 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">
+                <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="editUnitInfo.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="editUnitInfo.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="editUnitInfo.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="editUnitInfo.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="editUnit()" ><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>
+    </div>
+</div>

+ 122 - 0
WebService/src/main/resources/components/edit-unit/editUnit.js

@@ -0,0 +1,122 @@
+(function(vc,vm){
+
+    vc.extends({
+        data:{
+            editUnitInfo:{
+                floorId:'',
+                unitNum:'',
+                layerCount:'',
+                lift:'',
+                remark:'',
+                communityId:''
+            }
+        },
+         _initMethod:function(){
+
+         },
+         _initEvent:function(){
+             vc.on('editUnit','openUnitModel',function(_params){
+                vc.component.refreshEditUnitInfo();
+                $('#editUnitModel').modal('show');
+                vc.component.editUnitInfo = _params;
+                vc.component.editUnitInfo.communityId = vc.getCurrentCommunity().communityId;
+            });
+        },
+        methods:{
+            editUnitValidate:function(){
+                        return vc.validate.validate({
+                            editUnitInfo:vc.component.editUnitInfo
+                        },{
+                            'editUnitInfo.floorId':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"小区楼不能为空"
+                                }
+                            ],
+                            'editUnitInfo.unitNum':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"单元编号不能为空"
+                                },
+                                {
+                                    limit:"maxLength",
+                                    param:"12",
+                                    errInfo:"单元编号长度不能超过12位"
+                                },
+                            ],
+                            'editUnitInfo.layerCount':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"单元楼层高度不能为空"
+                                },
+                                {
+                                    limit:"num",
+                                    param:"",
+                                    errInfo:"单元楼层高度必须为数字"
+                                }
+                            ],
+                            'editUnitInfo.lift':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"必须选择单元是否电梯"
+                                }
+                            ],
+                            'editUnitInfo.remark':[
+                                {
+                                    limit:"maxLength",
+                                    param:"200",
+                                    errInfo:"备注长度不能超过200位"
+                                },
+                            ]
+
+                        });
+             },
+            editUnit:function(){
+                if(!vc.component.editUnitValidate()){
+                    vc.message(vc.validate.errInfo);
+                    return ;
+                }
+
+                vc.http.post(
+                    'editUnit',
+                    'update',
+                    JSON.stringify(vc.component.editUnitInfo),
+                    {
+                        emulateJSON:true
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            $('#editUnitModel').modal('hide');
+                            vc.emit('unit','loadUnit',{
+                                floorId:vc.component.editUnitInfo.floorId
+                            });
+                            return ;
+                        }
+                        vc.message(json);
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+
+                        vc.message(errInfo);
+                     });
+            },
+            refreshEditUnitInfo:function(){
+                vc.component.editUnitInfo= {
+                  floorId:'',
+                  unitNum:'',
+                  layerCount:'',
+                  lift:'',
+                  remark:'',
+                  communityId:''
+                }
+            }
+        }
+    });
+
+})(window.vc,window.vc.component);

+ 4 - 0
WebService/src/main/resources/components/unit/unit.html

@@ -39,6 +39,9 @@
                                 {{unit.remark}}
                             </td>
                             <td class="text-right">
+                                <div class="btn-group">
+                                    <button class="btn-white btn btn-xs" v-on:click="_openEditUnitModel(unit)">修改</button>
+                                </div>
                                 <div class="btn-group">
                                     <button class="btn-white btn btn-xs" v-on:click="_openDeleteUnitModel(unit)">删除</button>
                                 </div>
@@ -59,5 +62,6 @@
         </div>
     </div>
     <!-- 删除员工权限 -->
+    <vc:create name="editUnit"></vc:create>
     <vc:create name="deleteUnit"></vc:create>
 </div>

+ 4 - 0
WebService/src/main/resources/components/unit/unit.js

@@ -39,6 +39,10 @@
             _openDeleteUnitModel:function(_unit){
                 _unit.floorId = vc.component.unitInfo._currentFloorId;
                 vc.emit('deleteUnit','openUnitModel',_unit);
+            },
+            _openEditUnitModel:function(_unit){
+                _unit.floorId = vc.component.unitInfo._currentFloorId;
+                vc.emit('editUnit','openUnitModel',_unit);
             }
         }
     });

+ 1 - 0
docs/_sidebar.md

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

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

@@ -57,7 +57,6 @@ SIGN:aabdncdhdbd878sbdudn898
 {
     "floorId":"填写具体值",
      "layerCount":"填写具体值",
-     "unitId":"填写具体值",
      "unitNum":"填写具体值",
      "lift":"填写具体值",
      "remark":"填写具体值"

+ 70 - 0
docs/api/unit/updateUnit.md

@@ -0,0 +1,70 @@
+
+
+**1\. 修改小区单元信息**
+###### 接口功能
+> 用户通过web端或APP修改单元信息接口
+
+###### URL
+> [http://api.java110.com:8008/api/unit.updateUnit](http://api.java110.com:8008/api/unit.updateUnit)
+
+###### 支持格式
+> 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|-|
+|unitId|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.updateUnit](http://api.java110.com:8008/api/unit.updateUnit)
+
+``` 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

@@ -372,4 +372,7 @@ public class ServiceCodeConstant {
 
     //保存小区单元
     public static final String SERVICE_CODE_SAVE_UNIT = "unit.saveUnit";
+
+    //修改小区单元
+    public static final String SERVICE_CODE_UPDATE_UNIT = "unit.updateUnit";
 }