Browse Source

加入修改房屋接口

wuxw 7 years ago
parent
commit
6491b83e5e

+ 155 - 0
Api/src/main/java/com/java110/api/listener/room/UpdateRoomListener.java

@@ -0,0 +1,155 @@
+package com.java110.api.listener.room;
+
+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.unit.IUnitInnerServiceSMO;
+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;
+
+import java.util.List;
+
+/**
+ * @ClassName SaveUnitListener
+ * @Description TODO 修改房屋信息
+ * @Author wuxw
+ * @Date 2019/5/3 11:54
+ * @Version 1.0
+ * add by wuxw 2019/5/3
+ **/
+@Java110Listener("updateRoomListener")
+public class UpdateRoomListener extends AbstractServiceApiDataFlowListener {
+    private static Logger logger = LoggerFactory.getLogger(UpdateRoomListener.class);
+
+
+    @Autowired
+    private IUnitInnerServiceSMO unitInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_UPDATE_ROOMS;
+    }
+
+    @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_ORDER_TYPE_CD, "D");
+        JSONArray businesses = new JSONArray();
+
+        //添加单元信息
+        businesses.add(updateRoom(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 updateRoom(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_ROOM_INFO);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessUnit = new JSONObject();
+        businessUnit.putAll(paramInJson);
+        businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID));
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessRoom", businessUnit);
+
+        return business;
+    }
+
+    /**
+     * 数据校验
+     *
+     * @param paramIn "communityId": "7020181217000001",
+     *                "memberId": "3456789",
+     *                "memberTypeCd": "390001200001"
+     */
+    private void validate(String paramIn) {
+        Assert.jsonObjectHaveKey(paramIn, "roomId", "请求报文中未包含roomId节点");
+        Assert.jsonObjectHaveKey(paramIn, "communityId", "请求报文中未包含communityId节点");
+        Assert.jsonObjectHaveKey(paramIn, "unitId", "请求报文中未包含unitId节点");
+        Assert.jsonObjectHaveKey(paramIn, "roomNum", "请求报文中未包含roomNum节点");
+        Assert.jsonObjectHaveKey(paramIn, "layer", "请求报文中未包含layer节点");
+        Assert.jsonObjectHaveKey(paramIn, "section", "请求报文中未包含section节点");
+        Assert.jsonObjectHaveKey(paramIn, "apartment", "请求报文中未包含apartment节点");
+        Assert.jsonObjectHaveKey(paramIn, "builtUpArea", "请求报文中未包含builtUpArea节点");
+        Assert.jsonObjectHaveKey(paramIn, "unitPrice", "请求报文中未包含unitPrice节点");
+        JSONObject reqJson = JSONObject.parseObject(paramIn);
+        Assert.isInteger(reqJson.getString("section"), "房间数不是有效数字");
+        Assert.isMoney(reqJson.getString("builtUpArea"), "建筑面积数据格式错误");
+        Assert.isMoney(reqJson.getString("unitPrice"), "房屋单价数据格式错误");
+
+        if (!"1010".equals(reqJson.getString("apartment")) && !"2020".equals(reqJson.getString("apartment"))) {
+            throw new IllegalArgumentException("不是有效房屋户型 传入数据错误");
+        }
+
+        UnitDto unitDto = new UnitDto();
+        unitDto.setCommunityId(reqJson.getString("communityId"));
+        unitDto.setUnitId(reqJson.getString("unitId"));
+        //校验小区楼ID和小区是否有对应关系
+        List<UnitDto> units = unitInnerServiceSMOImpl.queryUnitsByCommunityId(unitDto);
+
+        if (units == null || units.size() < 1) {
+            throw new IllegalArgumentException("传入单元ID不是该小区的单元");
+        }
+
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+    public IUnitInnerServiceSMO getUnitInnerServiceSMOImpl() {
+        return unitInnerServiceSMOImpl;
+    }
+
+    public void setUnitInnerServiceSMOImpl(IUnitInnerServiceSMO unitInnerServiceSMOImpl) {
+        this.unitInnerServiceSMOImpl = unitInnerServiceSMOImpl;
+    }
+}

+ 63 - 0
WebService/src/main/java/com/java110/web/components/room/EditRoomComponent.java

@@ -0,0 +1,63 @@
+package com.java110.web.components.room;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.IRoomServiceSMO;
+import com.java110.web.smo.IUnitServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName AddRoomComponent
+ * @Description TODO 编辑房屋
+ * @Author wuxw
+ * @Date 2019/5/6 20:23
+ * @Version 1.0
+ * add by wuxw 2019/5/6
+ **/
+@Component("editRoom")
+public class EditRoomComponent {
+
+    @Autowired
+    private IUnitServiceSMO unitServiceSMOImpl;
+
+    @Autowired
+    private IRoomServiceSMO roomServiceSMOImpl;
+
+    /**
+     * 根据 floorId 查询单元信息
+     *
+     * @param pd 包含floorId 和小区ID 页面封装对象
+     * @return 单元信息
+     */
+    public ResponseEntity<String> loadUnits(IPageData pd) {
+        return unitServiceSMOImpl.listUnits(pd);
+    }
+
+    /**
+     * 保存房屋信息
+     *
+     * @param pd 房屋信息
+     * @return 单元信息
+     */
+    public ResponseEntity<String> update(IPageData pd) {
+        return roomServiceSMOImpl.updateRoom(pd);
+    }
+
+
+    public IUnitServiceSMO getUnitServiceSMOImpl() {
+        return unitServiceSMOImpl;
+    }
+
+    public void setUnitServiceSMOImpl(IUnitServiceSMO unitServiceSMOImpl) {
+        this.unitServiceSMOImpl = unitServiceSMOImpl;
+    }
+
+    public IRoomServiceSMO getRoomServiceSMOImpl() {
+        return roomServiceSMOImpl;
+    }
+
+    public void setRoomServiceSMOImpl(IRoomServiceSMO roomServiceSMOImpl) {
+        this.roomServiceSMOImpl = roomServiceSMOImpl;
+    }
+}

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

@@ -24,4 +24,12 @@ public interface IRoomServiceSMO {
      * @return 返回 ResponseEntity对象包含 http状态 信息 body信息
      */
     ResponseEntity<String> listRoom(IPageData pd);
+
+
+    /**
+     * 修改房屋信息
+     * @param pd 页面数据封装对象
+     * @return 返回 ResponseEntity对象包含 http状态 信息 body信息
+     */
+    ResponseEntity<String> updateRoom(IPageData pd);
 }

+ 49 - 1
WebService/src/main/java/com/java110/web/smo/impl/RoomServiceSMOImpl.java

@@ -32,7 +32,7 @@ public class RoomServiceSMOImpl extends BaseComponentSMO implements IRoomService
 
     @Override
     public ResponseEntity<String> saveRoom(IPageData pd) {
-       validateSaveRoom(pd);
+        validateSaveRoom(pd);
 
         //校验员工是否有权限操作
         super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_ROOM);
@@ -89,6 +89,34 @@ public class RoomServiceSMOImpl extends BaseComponentSMO implements IRoomService
         return responseEntity;
     }
 
+    @Override
+    public ResponseEntity<String> updateRoom(IPageData pd) {
+        validateUpdateRoom(pd);
+
+        //校验员工是否有权限操作
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_ROOM);
+
+        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);
+        paramIn.put("userId", pd.getUserId());
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                ServiceConstant.SERVICE_API_URL + "/api/room.updateRoom",
+                HttpMethod.POST);
+
+        return responseEntity;
+    }
+
 
     /**
      * 小区房屋查询数据校验
@@ -113,8 +141,10 @@ public class RoomServiceSMOImpl extends BaseComponentSMO implements IRoomService
         }
 
     }
+
     /**
      * 校验前台传入房屋信息
+     *
      * @param pd 页面数据封装
      */
     private void validateSaveRoom(IPageData pd) {
@@ -140,6 +170,24 @@ public class RoomServiceSMOImpl extends BaseComponentSMO implements IRoomService
 
     }
 
+    /**
+     * 校验前台传入房屋信息
+     *
+     * @param pd 页面数据封装
+     */
+    private void validateUpdateRoom(IPageData pd) {
+
+        validateSaveRoom(pd);
+
+        Assert.jsonObjectHaveKey(pd.getReqData(), "roomId", "请求报文中未包含roomId节点");
+
+        JSONObject reqJson = JSONObject.parseObject(pd.getReqData());
+
+        Assert.hasLength(reqJson.getString("roomId"), "房屋roomId不能为空");
+
+
+    }
+
 
     public RestTemplate getRestTemplate() {
         return restTemplate;

+ 63 - 0
WebService/src/main/resources/components/edit-room/editRoom.html

@@ -0,0 +1,63 @@
+<div id = "editRoomModel" 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="editRoomInfo.roomNum" 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="editRoomInfo.layer" 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="editRoomInfo.unitId">
+                                        <option selected  disabled value="">必填,请选择单元</option>
+                                        <option v-for="(unit,index) in editRoomUnits" :key="index" v-bind:value="unit.unitId">{{unit.unitNum}}单元</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="editRoomInfo.section" 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="editRoomInfo.apartment">
+                                        <option selected disabled 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="editRoomInfo.builtUpArea" 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"><input v-model="editRoomInfo.unitPrice" 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"><input v-model="editRoomInfo.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="editRoom()" ><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>

+ 214 - 0
WebService/src/main/resources/components/edit-room/editRoom.js

@@ -0,0 +1,214 @@
+(function(vc,vm){
+
+    vc.extends({
+        data:{
+            editRoomUnits:[],
+            editRoomInfo:{
+                unitId:'',
+                roomNum:'',
+                layer:'',
+                section:'',
+                apartment:'',
+                builtUpArea:'',
+                unitPrice:'',
+                remark:'',
+                communityId:''
+            }
+        },
+         _initMethod:function(){
+
+         },
+         _initEvent:function(){
+             vc.on('editRoom','openEditRoomModal',function(_room){
+                 vc.copyObject(_room,vc.component.editRoomInfo);
+                 vc.component.loadUnits(_room.floorId);
+                 $('#editRoomModel').modal('show');
+
+                vc.component.editRoomInfo.floorId = _room.floorId;
+                vc.component.editRoomInfo.communityId = vc.getCurrentCommunity().communityId;
+
+             });
+        },
+        methods:{
+            /**
+                根据楼ID加载房屋
+            **/
+            loadUnits:function(_floorId){
+                vc.component.editRoomUnits = [];
+                var param = {
+                    params:{
+                        floorId:_floorId,
+                        communityId:vc.getCurrentCommunity().communityId
+                    }
+                }
+                vc.http.get(
+                    'editRoom',
+                    'loadUnits',
+                     param,
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            var tmpUnits = JSON.parse(json);
+                            vc.component.editRoomUnits = tmpUnits;
+                            /*if(tmpUnits == null || tmpUnits.length == 0){
+                                return ;
+                            }
+                            for(var unitIndex = 0; unitIndex < tmpUnits.length;unitIndex++){
+                               vc.component.editRoomInfo.units[unitIndex] = tmpUnits[unitIndex];
+                            }*/
+                            return ;
+                        }
+                        vc.message(json);
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+
+                        vc.message(errInfo);
+                     });
+            },
+            editRoomValidate:function(){
+                        return vc.validate.validate({
+                            editRoomInfo:vc.component.editRoomInfo
+                        },{
+                            'editRoomInfo.unitId':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"小区楼房屋不能为空"
+                                }
+                            ],
+                            'editRoomInfo.roomNum':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"房屋编号不能为空"
+                                },
+                                {
+                                    limit:"maxLength",
+                                    param:"12",
+                                    errInfo:"房屋编号长度不能超过12位"
+                                },
+                            ],
+                            'editRoomInfo.layer':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"房屋楼层高度不能为空"
+                                },
+                                {
+                                    limit:"num",
+                                    param:"",
+                                    errInfo:"房屋楼层高度必须为数字"
+                                }
+                            ],
+                            'editRoomInfo.section':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"房间数不能为空"
+                                },
+                                {
+                                    limit:"num",
+                                    param:"",
+                                    errInfo:"房间数必须为数字"
+                                }
+                            ],
+                            'editRoomInfo.apartment':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"户型不能为空"
+                                }
+                            ],
+                            'editRoomInfo.builtUpArea':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"建筑面积不能为空"
+                                },
+                                {
+                                    limit:"money",
+                                    param:"",
+                                    errInfo:"建筑面积错误,如 300.00"
+                                },
+                                {
+                                  limit:"maxLength",
+                                  param:"12",
+                                  errInfo:"建筑面积数字长度不能超过6位"
+                                }
+                            ],
+                            'editRoomInfo.unitPrice':[
+                                {
+                                    limit:"required",
+                                    param:"",
+                                    errInfo:"房屋单价不能为空"
+                                },
+                                {
+                                    limit:"money",
+                                    param:"",
+                                    errInfo:"房屋单价错误 如 300.00"
+                                },
+                                 {
+                                   limit:"maxLength",
+                                   param:"12",
+                                   errInfo:"房屋单价数字长度不能超过12位"
+                                 }
+                            ],
+                            'editRoomInfo.remark':[
+                                {
+                                    limit:"maxLength",
+                                    param:"200",
+                                    errInfo:"备注长度不能超过200位"
+                                },
+                            ]
+
+                        });
+             },
+            editRoom:function(){
+                if(!vc.component.editRoomValidate()){
+                    vc.message(vc.validate.errInfo);
+                    return ;
+                }
+
+                vc.http.post(
+                    'editRoom',
+                    'update',
+                    JSON.stringify(vc.component.editRoomInfo),
+                    {
+                        emulateJSON:true
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            $('#editRoomModel').modal('hide');
+                            vc.emit('room','loadData',{
+                                floorId:vc.component.editRoomInfo.floorId
+                            });
+                            return ;
+                        }
+                        vc.message(json);
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+
+                        vc.message(errInfo);
+                     });
+            },
+            refreshEditRoomInfo:function(){
+                vc.component.editRoomInfo= {
+                  unitId:'',
+                  roomNum:'',
+                  layer:'',
+                  section:'',
+                  apartment:'',
+                  builtUpArea:'',
+                  unitPrice:'',
+                  remark:'',
+                  communityId:''
+                }
+            }
+        }
+    });
+
+})(window.vc,window.vc.component);

+ 7 - 2
WebService/src/main/resources/components/room/room.html

@@ -33,7 +33,7 @@
                                 {{room.roomNum}}
                             </td>
                             <td>
-                                {{room.unitName}}
+                                {{room.unitNum}}
                             </td>
                             <td>
                                 {{room.layer}}
@@ -57,6 +57,9 @@
                                 {{room.remark}}
                             </td>
                             <td class="text-right">
+                                <div class="btn-group">
+                                    <button class="btn-white btn btn-xs" v-on:click="_openEditRoomModel(room)">修改</button>
+                                </div>
                                 <div class="btn-group">
                                     <button class="btn-white btn btn-xs" v-on:click="_openDelRoomModel(room)">删除</button>
                                 </div>
@@ -78,5 +81,7 @@
             </div>
         </div>
     </div>
-
+    <!-- 删除员工权限 -->
+    <vc:create name="editRoom"></vc:create>
+    <!--<vc:create name="deleteRoom"></vc:create>-->
 </div>

+ 7 - 2
WebService/src/main/resources/components/room/room.js

@@ -58,8 +58,13 @@
                              }
                            );
             },
-            _openDelRoomModel:function(_community){
-                //vc.emit('storeExitCommunity','openStoreExitCommunityModal',_community);
+            _openEditRoomModel:function(_room){
+                _room.floorId = vc.component.roomInfo.floorId;
+                vc.emit('editRoom','openEditRoomModal',_room);
+            },
+            _openDelRoomModel:function(_room){
+                 _room.floorId = vc.component.roomInfo.floorId;
+                 vc.emit('editRoom','openDeleteRoomModal',_room);
             }
         }
     });

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

@@ -387,4 +387,7 @@ public class ServiceCodeConstant {
 
     //查询房屋信息
     public static final String SERVICE_CODE_QUERY_ROOMS = "room.queryRooms";
+
+    //修改房屋信息
+    public static final String SERVICE_CODE_UPDATE_ROOMS = "room.updateRoom";
 }