Selaa lähdekoodia

业主管理模块开发暂存

吴学文 7 vuotta sitten
vanhempi
commit
acb0e1dba4
40 muutettua tiedostoa jossa 1846 lisäystä ja 44 poistoa
  1. 152 0
      Api/src/main/java/com/java110/api/listener/owner/DeleteOwnerListener.java
  2. 121 0
      Api/src/main/java/com/java110/api/listener/owner/EditOwnerListener.java
  3. 104 0
      Api/src/main/java/com/java110/api/listener/owner/QueryOwnersListener.java
  4. 167 0
      Api/src/main/java/com/java110/api/listener/owner/SaveOwnerListener.java
  5. 9 0
      CommunityService/src/main/java/com/java110/community/dao/ICommunityServiceDao.java
  6. 13 2
      CommunityService/src/main/java/com/java110/community/dao/impl/CommunityServiceDaoImpl.java
  7. 7 1
      CommunityService/src/main/java/com/java110/community/smo/impl/CommunityInnerServiceSMOImpl.java
  8. 2 0
      UserService/src/main/java/com/java110/user/listener/owner/AbstractOwnerBusinessServiceDataFlowListener.java
  9. 6 6
      UserService/src/main/java/com/java110/user/listener/owner/DeleteOwnerInfoListener.java
  10. 12 3
      UserService/src/main/java/com/java110/user/listener/owner/SaveOwnerInfoListener.java
  11. 4 4
      UserService/src/main/java/com/java110/user/listener/owner/UpdateOwnerInfoListener.java
  12. 31 8
      UserService/src/main/java/com/java110/user/smo/impl/OwnerInnerServiceSMOImpl.java
  13. 36 0
      WebService/src/main/java/com/java110/web/components/owner/AddOwnerComponent.java
  14. 36 0
      WebService/src/main/java/com/java110/web/components/owner/DeleteOwnerComponent.java
  15. 41 0
      WebService/src/main/java/com/java110/web/components/owner/EditOwnerComponent.java
  16. 36 0
      WebService/src/main/java/com/java110/web/components/owner/ListOwnerComponent.java
  17. 42 0
      WebService/src/main/java/com/java110/web/smo/IOwnerServiceSMO.java
  18. 242 0
      WebService/src/main/java/com/java110/web/smo/impl/OwnerServiceSMOImpl.java
  19. 32 0
      WebService/src/main/resources/components/add-owner/addOwner.html
  20. 108 0
      WebService/src/main/resources/components/add-owner/addOwner.js
  21. 19 0
      WebService/src/main/resources/components/delete-owner/deleteOwner.html
  22. 44 0
      WebService/src/main/resources/components/delete-owner/deleteOwner.js
  23. 32 0
      WebService/src/main/resources/components/edit-owner/editOwner.html
  24. 112 0
      WebService/src/main/resources/components/edit-owner/editOwner.js
  25. 83 0
      WebService/src/main/resources/components/list-owner/listOwner.html
  26. 66 0
      WebService/src/main/resources/components/list-owner/listOwner.js
  27. 33 0
      WebService/src/main/resources/views/ownerFlow.html
  28. 2 2
      docs/services/owner/DeleteOwnerInfo.md
  29. 2 0
      docs/services/owner/SaveOwnerInfo.md
  30. 3 1
      docs/services/owner/UpdateOwnerInfo.md
  31. 27 0
      java110-bean/src/main/java/com/java110/dto/OwnerDto.java
  32. 107 0
      java110-bean/src/main/java/com/java110/vo/api/ApiOwnerDataVo.java
  33. 24 0
      java110-bean/src/main/java/com/java110/vo/api/ApiOwnerVo.java
  34. 5 4
      java110-code-generator/src/main/java/com/java110/OwnerGeneratorApplication.java
  35. 3 0
      java110-common/src/main/java/com/java110/common/constant/CommunityMemberTypeConstant.java
  36. 13 0
      java110-common/src/main/java/com/java110/common/constant/ServiceCodeConstant.java
  37. 5 3
      java110-config/db/CommunityService/create_owner.sql
  38. 31 0
      java110-config/src/main/resources/mapper/community/CommunityServiceDaoImplMapper.xml
  39. 25 10
      java110-config/src/main/resources/mapper/owner/OwnerServiceDaoImplMapper.xml
  40. 9 0
      java110-core/src/main/java/com/java110/core/smo/community/ICommunityInnerServiceSMO.java

+ 152 - 0
Api/src/main/java/com/java110/api/listener/owner/DeleteOwnerListener.java

@@ -0,0 +1,152 @@
+package com.java110.api.listener.owner;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiDataFlowListener;
+import com.java110.common.constant.*;
+import com.java110.common.exception.ListenerExecuteException;
+import com.java110.common.util.Assert;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.community.ICommunityInnerServiceSMO;
+import com.java110.dto.CommunityMemberDto;
+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;
+
+/**
+ * 删除小区楼信息
+ */
+@Java110Listener("deleteOwnerListener")
+public class DeleteOwnerListener extends AbstractServiceApiDataFlowListener {
+
+    private static Logger logger = LoggerFactory.getLogger(DeleteOwnerListener.class);
+
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_DELETE_OWNER;
+    }
+
+    @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(deleteOwner(paramObj));
+        businesses.add(exitCommunityMember(paramObj));
+
+
+        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 接口调用放传入入参
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject deleteOwner(JSONObject paramInJson) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_DELETE_FLOOR_INFO);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessOwner = new JSONObject();
+        businessOwner.put("ownerId", paramInJson.getString("ownerId"));
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessOwner", businessOwner);
+
+        return business;
+    }
+
+    /**
+     * 退出小区成员
+     *
+     * @param paramInJson 接口传入入参
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject exitCommunityMember(JSONObject paramInJson) {
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_MEMBER_QUIT_COMMUNITY);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ + 1);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessCommunityMember = new JSONObject();
+        CommunityMemberDto communityMemberDto = new CommunityMemberDto();
+        communityMemberDto.setMemberId(paramInJson.getString("ownerId"));
+        communityMemberDto.setCommunityId(paramInJson.getString("communityId"));
+        communityMemberDto.setStatusCd(StatusConstant.STATUS_CD_VALID);
+        communityMemberDto.setMemberTypeCd(CommunityMemberTypeConstant.FLOOR);
+        List<CommunityMemberDto> communityMemberDtoList = communityInnerServiceSMOImpl.getCommunityMembers(communityMemberDto);
+
+        if (communityMemberDtoList == null || communityMemberDtoList.size() != 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "小区楼和小区存在关系存在异常,请检查");
+        }
+
+
+        businessCommunityMember.put("communityMemberId", communityMemberDtoList.get(0).getCommunityMemberId());
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessCommunityMember", businessCommunityMember);
+
+        return business;
+    }
+
+    /**
+     * 校验数据
+     *
+     * @param paramIn 接口请求数据
+     */
+    private void validate(String paramIn) {
+        Assert.jsonObjectHaveKey(paramIn, "ownerId", "请求报文中未包含ownerId");
+        Assert.jsonObjectHaveKey(paramIn, "communityId", "请求报文中未包含communityId");
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+    public ICommunityInnerServiceSMO getCommunityInnerServiceSMOImpl() {
+        return communityInnerServiceSMOImpl;
+    }
+
+    public void setCommunityInnerServiceSMOImpl(ICommunityInnerServiceSMO communityInnerServiceSMOImpl) {
+        this.communityInnerServiceSMOImpl = communityInnerServiceSMOImpl;
+    }
+}

+ 121 - 0
Api/src/main/java/com/java110/api/listener/owner/EditOwnerListener.java

@@ -0,0 +1,121 @@
+package com.java110.api.listener.owner;
+
+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.entity.center.AppService;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * @ClassName EditOwnerListener
+ * @Description TODO 编辑小区楼信息
+ * @Author wuxw
+ * @Date 2019/4/28 15:19
+ * @Version 1.0
+ * add by wuxw 2019/4/28
+ **/
+@Java110Listener("editOwnerListener")
+public class EditOwnerListener extends AbstractServiceApiDataFlowListener {
+
+    private static Logger logger = LoggerFactory.getLogger(EditOwnerListener.class);
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_EDIT_OWNER;
+    }
+
+    @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(editOwner(paramObj));
+
+
+        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, "ownerId", "请求报文中未包含ownerId");
+        Assert.jsonObjectHaveKey(paramIn, "name", "请求报文中未包含name");
+        Assert.jsonObjectHaveKey(paramIn, "userId", "请求报文中未包含userId");
+        Assert.jsonObjectHaveKey(paramIn, "ownerNum", "请求报文中未包含ownerNum");
+        Assert.jsonObjectHaveKey(paramIn, "communityId", "请求报文中未包含communityId");
+    }
+
+    /**
+     * 添加小区楼信息
+     *
+     * @param paramInJson 接口调用放传入入参
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject editOwner(JSONObject paramInJson) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_OWNER_INFO);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessOwner = new JSONObject();
+        businessOwner.put("ownerId", paramInJson.getString("ownerId"));
+        businessOwner.put("name", paramInJson.getString("name"));
+        businessOwner.put("remark", paramInJson.getString("remark"));
+        businessOwner.put("userId", paramInJson.getString("userId"));
+        businessOwner.put("ownerNum", paramInJson.getString("ownerNum"));
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessOwner", businessOwner);
+
+        return business;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+}

+ 104 - 0
Api/src/main/java/com/java110/api/listener/owner/QueryOwnersListener.java

@@ -0,0 +1,104 @@
+package com.java110.api.listener.owner;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiDataFlowListener;
+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.owner.IOwnerInnerServiceSMO;
+import com.java110.dto.OwnerDto;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.vo.api.ApiOwnerDataVo;
+import com.java110.vo.api.ApiOwnerVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+
+/**
+ * @ClassName OwnerDto
+ * @Description 小区楼数据层侦听类
+ * @Author wuxw
+ * @Date 2019/4/24 8:52
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+@Java110Listener("queryOwnersListener")
+public class QueryOwnersListener extends AbstractServiceApiDataFlowListener {
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_QUERY_OWNER;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+    /**
+     * 业务层数据处理
+     *
+     * @param event 时间对象
+     */
+    @Override
+    public void soService(ServiceDataFlowEvent event) {
+        DataFlowContext dataFlowContext = event.getDataFlowContext();
+        //获取请求数据
+        JSONObject reqJson = dataFlowContext.getReqJson();
+        validateOwnerData(reqJson);
+
+        int row = reqJson.getInteger("row");
+
+        ApiOwnerVo apiOwnerVo = new ApiOwnerVo();
+
+        //查询总记录数
+        int total = ownerInnerServiceSMOImpl.queryOwnersCount(BeanConvertUtil.covertBean(reqJson, OwnerDto.class));
+        apiOwnerVo.setTotal(total);
+        if (total > 0) {
+            List<OwnerDto> ownerDtoList = ownerInnerServiceSMOImpl.queryOwners(BeanConvertUtil.covertBean(reqJson, OwnerDto.class));
+            apiOwnerVo.setOwners(BeanConvertUtil.covertBeanList(ownerDtoList, ApiOwnerDataVo.class));
+        }
+
+        apiOwnerVo.setRecords((int) Math.ceil((double) total / (double) row));
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiOwnerVo), HttpStatus.OK);
+        dataFlowContext.setResponseEntity(responseEntity);
+    }
+
+    /**
+     * 校验查询条件是否满足条件
+     *
+     * @param reqJson 包含查询条件
+     */
+    private void validateOwnerData(JSONObject reqJson) {
+        Assert.jsonObjectHaveKey(reqJson, "page", "请求中未包含page信息");
+        Assert.jsonObjectHaveKey(reqJson, "row", "请求中未包含page信息");
+        Assert.jsonObjectHaveKey(reqJson, "communityId", "请求中未包含communityId信息");
+        Assert.isInteger(reqJson.getString("page"), "不是有效数字");
+        Assert.isInteger(reqJson.getString("row"), "不是有效数字");
+
+    }
+
+    @Override
+    public int getOrder() {
+        return super.DEFAULT_ORDER;
+    }
+
+
+    public IOwnerInnerServiceSMO getOwnerInnerServiceSMOImpl() {
+        return ownerInnerServiceSMOImpl;
+    }
+
+    public void setOwnerInnerServiceSMOImpl(IOwnerInnerServiceSMO ownerInnerServiceSMOImpl) {
+        this.ownerInnerServiceSMOImpl = ownerInnerServiceSMOImpl;
+    }
+}

+ 167 - 0
Api/src/main/java/com/java110/api/listener/owner/SaveOwnerListener.java

@@ -0,0 +1,167 @@
+package com.java110.api.listener.owner;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiDataFlowListener;
+import com.java110.common.constant.*;
+import com.java110.common.util.Assert;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.entity.center.AppService;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * @ClassName SaveOwnerListener
+ * @Description 保存小区楼信息
+ * @Author wuxw
+ * @Date 2019/4/26 14:51
+ * @Version 1.0
+ * add by wuxw 2019/4/26
+ **/
+
+@Java110Listener("saveOwnerListener")
+public class SaveOwnerListener extends AbstractServiceApiDataFlowListener {
+
+
+
+    private static final int DEFAULT_SEQ_COMMUNITY_MEMBER = 2;
+
+
+    private static Logger logger = LoggerFactory.getLogger(SaveOwnerListener.class);
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_SAVE_OWNER;
+    }
+
+    @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();
+
+        //生成ownerId
+        generateOwnerId(paramObj);
+
+        //添加小区楼
+        businesses.add(addOwner(paramObj));
+
+        //小区楼添加到小区中
+        businesses.add(addCommunityMember(paramObj));
+
+        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);
+
+    }
+
+    /**
+     * 生成小区楼ID
+     *
+     * @param paramObj 请求入参数据
+     */
+    private void generateOwnerId(JSONObject paramObj) {
+        String ownerId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId);
+        paramObj.put("ownerId", ownerId);
+    }
+
+
+    /**
+     * 添加小区楼信息
+     *
+     * @param paramInJson 接口调用放传入入参
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject addOwner(JSONObject paramInJson) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_OWNER_INFO);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessOwner = new JSONObject();
+        businessOwner.put("ownerId", paramInJson.getString("ownerId"));
+        businessOwner.put("name", paramInJson.getString("name"));
+        businessOwner.put("remark", paramInJson.getString("remark"));
+        businessOwner.put("userId", paramInJson.getString("userId"));
+        businessOwner.put("ownerNum", paramInJson.getString("ownerNum"));
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessOwner", businessOwner);
+
+        return business;
+    }
+
+
+    /**
+     * 添加小区成员
+     *
+     * @param paramInJson 组装 楼小区关系
+     * @return 小区成员信息
+     */
+    private JSONObject addCommunityMember(JSONObject paramInJson) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_MEMBER_JOINED_COMMUNITY);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ_COMMUNITY_MEMBER);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessCommunityMember = new JSONObject();
+        businessCommunityMember.put("communityMemberId", "-1");
+        businessCommunityMember.put("communityId", paramInJson.getString("communityId"));
+        businessCommunityMember.put("memberId", paramInJson.getString("ownerId"));
+        businessCommunityMember.put("memberTypeCd", CommunityMemberTypeConstant.FLOOR);
+        businessCommunityMember.put("auditStatusCd", StatusConstant.STATUS_CD_AUDIT_COMPLETE);
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessCommunityMember", businessCommunityMember);
+
+        return business;
+    }
+
+    /**
+     * 数据校验
+     *
+     * @param paramIn "communityId": "7020181217000001",
+     *                "memberId": "3456789",
+     *                "memberTypeCd": "390001200001"
+     */
+    private void validate(String paramIn) {
+        Assert.jsonObjectHaveKey(paramIn, "name", "请求报文中未包含name");
+        Assert.jsonObjectHaveKey(paramIn, "userId", "请求报文中未包含userId");
+        Assert.jsonObjectHaveKey(paramIn, "ownerNum", "请求报文中未包含ownerNum");
+        Assert.jsonObjectHaveKey(paramIn, "communityId", "请求报文中未包含communityId");
+    }
+
+
+    @Override
+    public int getOrder() {
+        return 0;
+    }
+
+}

+ 9 - 0
CommunityService/src/main/java/com/java110/community/dao/ICommunityServiceDao.java

@@ -210,4 +210,13 @@ public interface ICommunityServiceDao {
      */
      List<Map> getCommunityMembers(Map info) throws DAOException;
 
+    /**
+     * 查询小区成员个数
+     * 根据bId 查询小区信息
+     * @param info bId 信息
+     * @return 小区信息
+     * @throws DAOException
+     */
+     int getCommunityMemberCount(Map info);
+
 }

+ 13 - 2
CommunityService/src/main/java/com/java110/community/dao/impl/CommunityServiceDaoImpl.java

@@ -4,8 +4,8 @@ import com.alibaba.fastjson.JSONObject;
 import com.java110.common.constant.ResponseConstant;
 import com.java110.common.exception.DAOException;
 import com.java110.common.util.DateUtil;
-import com.java110.core.base.dao.BaseServiceDao;
 import com.java110.community.dao.ICommunityServiceDao;
+import com.java110.core.base.dao.BaseServiceDao;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -408,7 +408,6 @@ public class CommunityServiceDaoImpl extends BaseServiceDao implements ICommunit
     }
 
     /**
-     *
      * @param info bId 信息
      * @return
      * @throws DAOException
@@ -421,4 +420,16 @@ public class CommunityServiceDaoImpl extends BaseServiceDao implements ICommunit
 
         return memberCommunitys;
     }
+
+    @Override
+    public int getCommunityMemberCount(Map info) {
+        logger.debug("查询小区成员加入信息 入参 info : {}", info);
+
+        List<Map> memberCommunitys = sqlSessionTemplate.selectList("communityServiceDaoImpl.getCommunityMemberCount", info);
+
+        if (memberCommunitys.size() < 1) {
+            return 0;
+        }
+
+        return Integer.parseInt(memberCommunitys.get(0).get("count").toString());    }
 }

+ 7 - 1
CommunityService/src/main/java/com/java110/community/smo/impl/CommunityInnerServiceSMOImpl.java

@@ -12,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -37,6 +36,13 @@ public class CommunityInnerServiceSMOImpl extends BaseServiceSMO implements ICom
         return BeanConvertUtil.covertBeanList(communityMembers, CommunityMemberDto.class);
     }
 
+    @Override
+    public int getCommunityMemberCount(CommunityMemberDto communityMemberDto) {
+         logger.debug("getCommunityMemberCount:{}", JSONObject.toJSONString(communityMemberDto));
+
+        return communityServiceDaoImpl.getCommunityMemberCount(BeanConvertUtil.beanCovertMap(communityMemberDto));
+    }
+
     public ICommunityServiceDao getCommunityServiceDaoImpl() {
         return communityServiceDaoImpl;
     }

+ 2 - 0
UserService/src/main/java/com/java110/user/listener/owner/AbstractOwnerBusinessServiceDataFlowListener.java

@@ -45,6 +45,7 @@ public abstract class AbstractOwnerBusinessServiceDataFlowListener extends Abstr
         businessOwnerInfo.put("ownerId", businessOwnerInfo.get("owner_id"));
         businessOwnerInfo.put("userId", businessOwnerInfo.get("user_id"));
         businessOwnerInfo.put("age", businessOwnerInfo.get("age"));
+        businessOwnerInfo.put("memberId", businessOwnerInfo.get("member_id"));
         businessOwnerInfo.remove("bId");
         businessOwnerInfo.put("statusCd", statusCd);
     }
@@ -77,6 +78,7 @@ public abstract class AbstractOwnerBusinessServiceDataFlowListener extends Abstr
         currentOwnerInfo.put("ownerId", currentOwnerInfo.get("owner_id"));
         currentOwnerInfo.put("userId", currentOwnerInfo.get("user_id"));
         currentOwnerInfo.put("age", currentOwnerInfo.get("age"));
+        currentOwnerInfo.put("memberId", currentOwnerInfo.get("member_id"));
 
 
         currentOwnerInfo.put("operate", StatusConstant.OPERATE_DEL);

+ 6 - 6
UserService/src/main/java/com/java110/user/listener/owner/DeleteOwnerInfoListener.java

@@ -35,7 +35,7 @@ import java.util.Map;
 @Transactional
 public class DeleteOwnerInfoListener extends AbstractOwnerBusinessServiceDataFlowListener {
 
-    private  static Logger logger = LoggerFactory.getLogger(DeleteOwnerInfoListener.class);
+    private static Logger logger = LoggerFactory.getLogger(DeleteOwnerInfoListener.class);
     @Autowired
     IOwnerServiceDao ownerServiceDaoImpl;
 
@@ -78,7 +78,7 @@ public class DeleteOwnerInfoListener extends AbstractOwnerBusinessServiceDataFlo
                     JSONObject businessOwner = businessOwners.getJSONObject(_ownerIndex);
                     doBusinessOwner(business, businessOwner);
                     if (_obj instanceof JSONObject) {
-                        dataFlowContext.addParamOut("ownerId", businessOwner.getString("ownerId"));
+                        dataFlowContext.addParamOut("memberId", businessOwner.getString("member_id"));
                     }
                 }
             }
@@ -110,7 +110,7 @@ public class DeleteOwnerInfoListener extends AbstractOwnerBusinessServiceDataFlo
                 Map businessOwnerInfo = businessOwnerInfos.get(_ownerIndex);
                 flushBusinessOwnerInfo(businessOwnerInfo, StatusConstant.STATUS_CD_INVALID);
                 ownerServiceDaoImpl.updateOwnerInfoInstance(businessOwnerInfo);
-                dataFlowContext.addParamOut("ownerId", businessOwnerInfo.get("owner_id"));
+                dataFlowContext.addParamOut("memberId", businessOwnerInfo.get("member_id"));
             }
         }
 
@@ -161,10 +161,10 @@ public class DeleteOwnerInfoListener extends AbstractOwnerBusinessServiceDataFlo
      */
     private void doBusinessOwner(Business business, JSONObject businessOwner) {
 
-        Assert.jsonObjectHaveKey(businessOwner, "ownerId", "businessOwner 节点下没有包含 ownerId 节点");
+        Assert.jsonObjectHaveKey(businessOwner, "memberId", "businessOwner 节点下没有包含 memberId 节点");
 
-        if (businessOwner.getString("ownerId").startsWith("-")) {
-            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "ownerId 错误,不能自动生成(必须已经存在的ownerId)" + businessOwner);
+        if (businessOwner.getString("memberId").startsWith("-")) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "memberId 错误,不能自动生成(必须已经存在的ownerId)" + businessOwner);
         }
         //自动插入DEL
         autoSaveDelBusinessOwner(business, businessOwner);

+ 12 - 3
UserService/src/main/java/com/java110/user/listener/owner/SaveOwnerInfoListener.java

@@ -68,7 +68,7 @@ public class SaveOwnerInfoListener extends AbstractOwnerBusinessServiceDataFlowL
                 JSONObject businessOwner = businessOwners.getJSONObject(bOwnerIndex);
                 doBusinessOwner(business, businessOwner);
                 if (bObj instanceof JSONObject) {
-                    dataFlowContext.addParamOut("ownerId", businessOwner.getString("ownerId"));
+                    dataFlowContext.addParamOut("memberId", businessOwner.getString("memberId"));
                 }
             }
         }
@@ -130,13 +130,22 @@ public class SaveOwnerInfoListener extends AbstractOwnerBusinessServiceDataFlowL
      */
     private void doBusinessOwner(Business business, JSONObject businessOwner) {
 
+        Assert.jsonObjectHaveKey(businessOwner, "memberId", "businessOwner 节点下没有包含 memberId 节点");
         Assert.jsonObjectHaveKey(businessOwner, "ownerId", "businessOwner 节点下没有包含 ownerId 节点");
 
-        if (businessOwner.getString("ownerId").startsWith("-")) {
+        String tmpMemberId = "";
+        if (businessOwner.getString("memberId").startsWith("-")) {
             //刷新缓存
             //flushOwnerId(business.getDatas());
 
-            businessOwner.put("ownerId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId));
+            tmpMemberId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId);
+
+            businessOwner.put("memberId", tmpMemberId);
+
+        }
+
+        if (businessOwner.getString("ownerId").startsWith("-")) {
+            businessOwner.put("ownerId", tmpMemberId);
 
         }
 

+ 4 - 4
UserService/src/main/java/com/java110/user/listener/owner/UpdateOwnerInfoListener.java

@@ -110,7 +110,7 @@ public class UpdateOwnerInfoListener extends AbstractOwnerBusinessServiceDataFlo
                 flushBusinessOwnerInfo(businessOwnerInfo, StatusConstant.STATUS_CD_VALID);
                 ownerServiceDaoImpl.updateOwnerInfoInstance(businessOwnerInfo);
                 if (businessOwnerInfo.size() == 1) {
-                    dataFlowContext.addParamOut("ownerId", businessOwnerInfo.get("owner_id"));
+                    dataFlowContext.addParamOut("memberId", businessOwnerInfo.get("member_id"));
                 }
             }
         }
@@ -162,10 +162,10 @@ public class UpdateOwnerInfoListener extends AbstractOwnerBusinessServiceDataFlo
      */
     private void doBusinessOwner(Business business, JSONObject businessOwner) {
 
-        Assert.jsonObjectHaveKey(businessOwner, "ownerId", "businessOwner 节点下没有包含 ownerId 节点");
+        Assert.jsonObjectHaveKey(businessOwner, "memberId", "businessOwner 节点下没有包含 memberId 节点");
 
-        if (businessOwner.getString("ownerId").startsWith("-")) {
-            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "ownerId 错误,不能自动生成(必须已经存在的ownerId)" + businessOwner);
+        if (businessOwner.getString("memberId").startsWith("-")) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "memberId 错误,不能自动生成(必须已经存在的memberId)" + businessOwner);
         }
         //自动保存DEL
         autoSaveDelBusinessOwner(business, businessOwner);

+ 31 - 8
UserService/src/main/java/com/java110/user/smo/impl/OwnerInnerServiceSMOImpl.java

@@ -1,10 +1,13 @@
 package com.java110.user.smo.impl;
 
 
+import com.java110.common.constant.CommunityMemberTypeConstant;
 import com.java110.common.util.BeanConvertUtil;
 import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.smo.community.ICommunityInnerServiceSMO;
 import com.java110.core.smo.owner.IOwnerInnerServiceSMO;
 import com.java110.core.smo.user.IUserInnerServiceSMO;
+import com.java110.dto.CommunityMemberDto;
 import com.java110.dto.OwnerDto;
 import com.java110.dto.PageDto;
 import com.java110.dto.UserDto;
@@ -30,9 +33,12 @@ public class OwnerInnerServiceSMOImpl extends BaseServiceSMO implements IOwnerIn
     @Autowired
     private IOwnerServiceDao ownerServiceDaoImpl;
 
-    @Autowired
     private IUserInnerServiceSMO userInnerServiceSMOImpl;
 
+
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+
     @Override
     public List<OwnerDto> queryOwners(@RequestBody OwnerDto ownerDto) {
 
@@ -45,6 +51,8 @@ public class OwnerInnerServiceSMOImpl extends BaseServiceSMO implements IOwnerIn
             ownerDto.setRow(page * ownerDto.getRow());
         }
 
+        //communityInnerServiceSMOImpl.getCommunityMembers()
+
         List<OwnerDto> owners = BeanConvertUtil.covertBeanList(ownerServiceDaoImpl.getOwnerInfo(BeanConvertUtil.beanCovertMap(ownerDto)), OwnerDto.class);
 
         if (owners == null || owners.size() == 0) {
@@ -92,15 +100,13 @@ public class OwnerInnerServiceSMOImpl extends BaseServiceSMO implements IOwnerIn
 
     @Override
     public int queryOwnersCount(@RequestBody OwnerDto ownerDto) {
-        return ownerServiceDaoImpl.queryOwnersCount(BeanConvertUtil.beanCovertMap(ownerDto));
-    }
 
-    public IOwnerServiceDao getOwnerServiceDaoImpl() {
-        return ownerServiceDaoImpl;
-    }
+        //调用 小区服务查询 小区成员业主信息
+        CommunityMemberDto communityMemberDto = new CommunityMemberDto();
+        communityMemberDto.setCommunityId(ownerDto.getCommunityId());
+        communityMemberDto.setMemberTypeCd(CommunityMemberTypeConstant.OWNER);
+        return communityInnerServiceSMOImpl.getCommunityMemberCount(communityMemberDto);
 
-    public void setOwnerServiceDaoImpl(IOwnerServiceDao ownerServiceDaoImpl) {
-        this.ownerServiceDaoImpl = ownerServiceDaoImpl;
     }
 
     public IUserInnerServiceSMO getUserInnerServiceSMOImpl() {
@@ -110,4 +116,21 @@ public class OwnerInnerServiceSMOImpl extends BaseServiceSMO implements IOwnerIn
     public void setUserInnerServiceSMOImpl(IUserInnerServiceSMO userInnerServiceSMOImpl) {
         this.userInnerServiceSMOImpl = userInnerServiceSMOImpl;
     }
+
+    public ICommunityInnerServiceSMO getCommunityInnerServiceSMOImpl() {
+        return communityInnerServiceSMOImpl;
+    }
+
+    public void setCommunityInnerServiceSMOImpl(ICommunityInnerServiceSMO communityInnerServiceSMOImpl) {
+        this.communityInnerServiceSMOImpl = communityInnerServiceSMOImpl;
+    }
+
+    public IOwnerServiceDao getOwnerServiceDaoImpl() {
+        return ownerServiceDaoImpl;
+    }
+
+    public void setOwnerServiceDaoImpl(IOwnerServiceDao ownerServiceDaoImpl) {
+        this.ownerServiceDaoImpl = ownerServiceDaoImpl;
+    }
+
 }

+ 36 - 0
WebService/src/main/java/com/java110/web/components/owner/AddOwnerComponent.java

@@ -0,0 +1,36 @@
+package com.java110.web.components.owner;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.IOwnerServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * 添加小区楼组件
+ */
+@Component("addOwner")
+public class AddOwnerComponent {
+
+    @Autowired
+    private IOwnerServiceSMO ownerServiceSMOImpl;
+
+    /**
+     * 查询小区楼信息
+     * @param pd 页面封装对象 包含页面请求数据
+     * @return ResponseEntity对象返回给页面
+     */
+    public ResponseEntity<String> saveOwner(IPageData pd) {
+
+        return ownerServiceSMOImpl.saveOwner(pd);
+    }
+
+
+    public IOwnerServiceSMO getOwnerServiceSMOImpl() {
+        return ownerServiceSMOImpl;
+    }
+
+    public void setOwnerServiceSMOImpl(IOwnerServiceSMO ownerServiceSMOImpl) {
+        this.ownerServiceSMOImpl = ownerServiceSMOImpl;
+    }
+}

+ 36 - 0
WebService/src/main/java/com/java110/web/components/owner/DeleteOwnerComponent.java

@@ -0,0 +1,36 @@
+package com.java110.web.components.owner;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.IOwnerServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * 删除小区楼信息
+ */
+@Component("deleteOwner")
+public class DeleteOwnerComponent {
+
+    @Autowired
+    private IOwnerServiceSMO ownerServiceSMOImpl;
+
+    /**
+     * 删除小区楼
+     *
+     * @param pd 页面数据封装
+     * @return 对象ResponseEntity
+     */
+    public ResponseEntity<String> delete(IPageData pd) {
+        return ownerServiceSMOImpl.deleteOwner(pd);
+    }
+
+
+    public IOwnerServiceSMO getOwnerServiceSMOImpl() {
+        return ownerServiceSMOImpl;
+    }
+
+    public void setOwnerServiceSMOImpl(IOwnerServiceSMO ownerServiceSMOImpl) {
+        this.ownerServiceSMOImpl = ownerServiceSMOImpl;
+    }
+}

+ 41 - 0
WebService/src/main/java/com/java110/web/components/owner/EditOwnerComponent.java

@@ -0,0 +1,41 @@
+package com.java110.web.components.owner;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.IOwnerServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName EditOwnerComponent
+ * @Description TODO 编辑小区楼信息
+ * @Author wuxw
+ * @Date 2019/4/28 15:10
+ * @Version 1.0
+ * add by wuxw 2019/4/28
+ **/
+
+@Component("editOwner")
+public class EditOwnerComponent {
+    @Autowired
+    private IOwnerServiceSMO ownerServiceSMOImpl;
+
+    /**
+     * 修改小区楼信息
+     *
+     * @param pd 页面数据封装
+     * @return 返回ResponseEntity对象
+     */
+    public ResponseEntity<String> changeOwner(IPageData pd) {
+        return ownerServiceSMOImpl.editOwner(pd);
+    }
+
+
+    public IOwnerServiceSMO getOwnerServiceSMOImpl() {
+        return ownerServiceSMOImpl;
+    }
+
+    public void setOwnerServiceSMOImpl(IOwnerServiceSMO ownerServiceSMOImpl) {
+        this.ownerServiceSMOImpl = ownerServiceSMOImpl;
+    }
+}

+ 36 - 0
WebService/src/main/java/com/java110/web/components/owner/ListOwnerComponent.java

@@ -0,0 +1,36 @@
+package com.java110.web.components.owner;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.IOwnerServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * 查询楼列表组件
+ */
+@Component("listOwner")
+public class ListOwnerComponent {
+
+    @Autowired
+    private IOwnerServiceSMO ownerServiceSMOImpl;
+
+    /**
+     * 查询小区楼信息
+     * @param pd 页面封装对象 包含页面请求数据
+     * @return ResponseEntity对象返回给页面
+     */
+    public ResponseEntity<String> list(IPageData pd) {
+
+        return ownerServiceSMOImpl.listOwner(pd);
+    }
+
+
+    public IOwnerServiceSMO getOwnerServiceSMOImpl() {
+        return ownerServiceSMOImpl;
+    }
+
+    public void setOwnerServiceSMOImpl(IOwnerServiceSMO ownerServiceSMOImpl) {
+        this.ownerServiceSMOImpl = ownerServiceSMOImpl;
+    }
+}

+ 42 - 0
WebService/src/main/java/com/java110/web/smo/IOwnerServiceSMO.java

@@ -0,0 +1,42 @@
+package com.java110.web.smo;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 小区楼接口类
+ */
+public interface IOwnerServiceSMO {
+
+    /**
+     * 查询小区楼信息
+     *
+     * @param pd 页面数据封装对象
+     * @return 返回 ResponseEntity对象包含 http状态 信息 body信息
+     */
+    ResponseEntity<String> listOwner(IPageData pd);
+
+    /**
+     * 添加小区楼信息
+     *
+     * @param pd 页面数据封装对象
+     * @return 返回 ResponseEntity对象包含 http状态 信息 body信息
+     */
+    ResponseEntity<String> saveOwner(IPageData pd);
+
+    /**
+     * 编辑小区楼信息
+     *
+     * @param pd 页面数据封装对象
+     * @return 返回 ResponseEntity对象包含 http状态 信息 body信息
+     */
+    ResponseEntity<String> editOwner(IPageData pd);
+
+    /**
+     * 删除小区楼
+     *
+     * @param pd 页面数据封装对象
+     * @return 返回 ResponseEntity对象包含 http状态 信息 body信息
+     */
+    ResponseEntity<String> deleteOwner(IPageData pd);
+}

+ 242 - 0
WebService/src/main/java/com/java110/web/smo/impl/OwnerServiceSMOImpl.java

@@ -0,0 +1,242 @@
+package com.java110.web.smo.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.constant.PrivilegeCodeConstant;
+import com.java110.common.constant.ResponseConstant;
+import com.java110.common.constant.ServiceConstant;
+import com.java110.common.exception.SMOException;
+import com.java110.common.util.Assert;
+import com.java110.core.context.IPageData;
+import com.java110.web.core.BaseComponentSMO;
+import com.java110.web.smo.IOwnerServiceSMO;
+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;
+
+/**
+ * 小区楼实现类
+ * <p>
+ * add by wuxw 2019-04-22
+ */
+
+@Service("ownerServiceSMOImpl")
+public class OwnerServiceSMOImpl extends BaseComponentSMO implements IOwnerServiceSMO {
+
+    private static Logger logger = LoggerFactory.getLogger(OwnerServiceSMOImpl.class);
+
+
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    /**
+     * 查询小区楼
+     *
+     * @param pd 页面数据封装对象
+     * @return 返回 ResponseEntity对象包含 http状态 信息 body信息
+     */
+    @Override
+    public ResponseEntity<String> listOwner(IPageData pd) {
+
+        validateListOwner(pd);
+
+        JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+        int page = Integer.parseInt(paramIn.getString("page"));
+        int rows = Integer.parseInt(paramIn.getString("rows"));
+        String communityId = paramIn.getString("communityId");
+
+
+        //校验用户是否有权限
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_FLOOR);
+
+        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/owner.queryOwners" + mapToUrlParam(paramIn);
+
+
+        responseEntity = this.callCenterService(restTemplate, pd, "",
+                apiUrl,
+                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;
+    }
+
+    @Override
+    public ResponseEntity<String> saveOwner(IPageData pd) {
+
+        validateSaveOwner(pd);
+
+        //校验员工是否有权限操作
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_FLOOR);
+
+        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/owner.saveOwner",
+                HttpMethod.POST);
+
+        return responseEntity;
+    }
+
+    /**
+     * 编辑小区楼信息
+     *
+     * @param pd 页面数据封装对象
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> editOwner(IPageData pd) {
+
+        validateEditOwner(pd);
+
+        //校验员工是否有权限操作
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_FLOOR);
+
+        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());
+        paramIn.put("name", paramIn.getString("ownerName"));
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                ServiceConstant.SERVICE_API_URL + "/api/owner.editOwner",
+                HttpMethod.POST);
+
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> deleteOwner(IPageData pd) {
+        validateDeleteOwner(pd);
+        //校验员工是否有权限操作
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_FLOOR);
+        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);
+
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                ServiceConstant.SERVICE_API_URL + "/api/owner.deleteOwner",
+                HttpMethod.POST);
+
+        return responseEntity;
+    }
+
+    /**
+     * 删除小区楼 校验
+     *
+     * @param pd 页面数据封装
+     */
+    private void validateDeleteOwner(IPageData pd) {
+
+        Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "未包含小区ID");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "ownerId", "未包含小区楼ID");
+
+    }
+
+    /**
+     * 校验保存小区楼 信息
+     *
+     * @param pd 页面数据封装
+     */
+    private void validateEditOwner(IPageData pd) {
+        Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "未包含小区ID");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "ownerId", "未包含小区楼ID");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "ownerName", "未包含小区楼名称");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "ownerNum", "未包含小区楼编码");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "remark", "未包含小区楼备注");
+    }
+
+    /**
+     * 校验保存小区楼 信息
+     *
+     * @param pd 页面数据封装
+     */
+    private void validateSaveOwner(IPageData pd) {
+        Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "未包含小区ID");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "name", "未包含小区楼名称");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "ownerNum", "未包含小区楼编码");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "remark", "未包含小区楼备注");
+    }
+
+    /**
+     * 校验查询小区楼信息
+     *
+     * @param pd 页面封装对象
+     */
+    private void validateListOwner(IPageData pd) {
+        Assert.jsonObjectHaveKey(pd.getReqData(), "page", "请求报文中未包含page节点");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "rows", "请求报文中未包含rows节点");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点");
+        JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+        Assert.isInteger(paramIn.getString("page"), "page不是数字");
+        Assert.isInteger(paramIn.getString("rows"), "rows不是数字");
+        Assert.hasLength(paramIn.getString("communityId"), "小区ID不能为空");
+        int rows = Integer.parseInt(paramIn.getString("rows"));
+
+
+        if (rows > MAX_ROW) {
+            throw new SMOException(ResponseConstant.RESULT_CODE_ERROR, "rows 数量不能大于50");
+        }
+
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 32 - 0
WebService/src/main/resources/components/add-owner/addOwner.html

@@ -0,0 +1,32 @@
+<div id = "addOwnerModel" 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>
+                        <p style="color:red;">{{addOwnerInfo.errorInfo}}</p>
+                        <div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">楼名称</label>
+                                <div class="col-sm-10"><input v-model="addOwnerInfo.name" 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="addOwnerInfo.ownerNum" type="email" 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="addOwnerInfo.remark" type="tel" placeholder="可填,请填写备注" class="form-control"></div>
+                            </div>
+                            <div class="ibox-content">
+                                <button class="btn btn-primary float-right" type="button" v-on:click="saveOwnerInfo()" ><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>

+ 108 - 0
WebService/src/main/resources/components/add-owner/addOwner.js

@@ -0,0 +1,108 @@
+(function(vc){
+
+    vc.extends({
+        data:{
+            addOwnerInfo:{
+                name:'',
+                ownerNum:'',
+                remark:'',
+                errorInfo:''
+            }
+        },
+         _initMethod:function(){
+
+         },
+         _initEvent:function(){
+            vc.on('addOwner','openAddOwnerModal',function(){
+                $('#addOwnerModel').modal('show');
+            });
+        },
+        methods:{
+            addOwnerValidate(){
+                return vc.validate.validate({
+                    addOwnerInfo:vc.component.addOwnerInfo
+                },{
+                    'addOwnerInfo.name':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"楼名称不能为空"
+                        },
+                        {
+                            limit:"maxin",
+                            param:"2,10",
+                            errInfo:"楼名称长度必须在2位至10位"
+                        },
+                    ],
+                    'addOwnerInfo.ownerNum':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"楼编号不能为空"
+                        },
+                        {
+                            limit:"num",
+                            param:"",
+                            errInfo:"不是有效的数字"
+                        },
+                    ],
+                    'addOwnerInfo.remark':[
+
+                        {
+                            limit:"maxLength",
+                            param:"200",
+                            errInfo:"备注长度不能超过200位"
+                        }
+                    ]
+
+                });
+            },
+            saveOwnerInfo:function(){
+                if(!vc.component.addOwnerValidate()){
+                    vc.component.addOwnerInfo.errorInfo = vc.validate.errInfo;
+
+                    return ;
+                }
+
+                vc.component.addOwnerInfo.errorInfo = "";
+
+                vc.component.addOwnerInfo.communityId = vc.getCurrentCommunity().communityId;
+                vc.http.post(
+                    'addOwner',
+                    'saveOwner',
+                    JSON.stringify(vc.component.addOwnerInfo),
+                    {
+                        emulateJSON:true
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            $('#addOwnerModel').modal('hide');
+                            vc.component.clearAddOwnerInfo();
+                            vc.emit('listOwner','listOwnerData',{});
+
+                            return ;
+                        }
+                        vc.component.addOwnerInfo.errorInfo = json;
+
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+
+                        vc.component.addOwnerInfo.errorInfo = errInfo;
+
+                     });
+            },
+            clearAddOwnerInfo:function(){
+                vc.component.addOwnerInfo = {
+                                            name:'',
+                                            ownerNum:'',
+                                            remark:'',
+                                            errorInfo:''
+                                        };
+            }
+        }
+    });
+
+})(window.vc);

+ 19 - 0
WebService/src/main/resources/components/delete-owner/deleteOwner.html

@@ -0,0 +1,19 @@
+<div class="modal fade" id="deleteOwnerModel" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title" id="exampleModalLabel">请确认您的操作!</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <tr align="center"><th>确认是否删除!</th></tr>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal" >点错了</button>
+                <button type="button" class="btn btn-primary" v-on:click="deleteOwner()">确认删除</button>
+            </div>
+        </div>
+    </div>
+</div>

+ 44 - 0
WebService/src/main/resources/components/delete-owner/deleteOwner.js

@@ -0,0 +1,44 @@
+(function(vc){
+    vc.extends({
+        data:{
+            deleteOwnerInfo:{}
+        },
+        _initEvent:function(){
+             vc.on('deleteOwner','openOwnerModel',function(_ownerInfo){
+                    vc.component.deleteOwnerInfo = _ownerInfo;
+                    $('#deleteOwnerModel').modal('show');
+                });
+        },
+        methods:{
+            closeDeleteOwnerModel:function(){
+                $('#deleteOwnerModel').modal('hide');
+            },
+            deleteOwner:function(){
+
+                vc.component.deleteOwnerInfo.communityId = vc.getCurrentCommunity().communityId;
+                vc.http.post(
+                    'deleteOwner',
+                    'delete',
+                    JSON.stringify(vc.component.deleteOwnerInfo),
+                    {
+                        emulateJSON:true
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            $('#deleteOwnerModel').modal('hide');
+                            vc.emit('listOwner','listOwnerData',{});
+                            return ;
+                        }
+                        vc.component.deleteOwnernfo.errorInfo = json;
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+
+                        vc.component.deleteOwnernfo.errorInfo = errInfo;
+                     });
+            }
+        }
+    });
+})(window.vc);

+ 32 - 0
WebService/src/main/resources/components/edit-owner/editOwner.html

@@ -0,0 +1,32 @@
+<div id = "editOwnerModel" 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>
+                        <p style="color:red;">{{editOwnerInfo.errorInfo}}</p>
+                        <div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">楼名称</label>
+                                <div class="col-sm-10"><input v-model="editOwnerInfo.ownerName" 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="editOwnerInfo.ownerNum" type="email" 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="editOwnerInfo.remark" type="tel" placeholder="可填,请填写备注" class="form-control"></div>
+                            </div>
+                            <div class="ibox-content">
+                                <button class="btn btn-primary float-right" type="button" v-on:click="editOwnerMethod()" ><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>

+ 112 - 0
WebService/src/main/resources/components/edit-owner/editOwner.js

@@ -0,0 +1,112 @@
+(function(vc){
+
+    vc.extends({
+        data:{
+            editOwnerInfo:{
+                ownerId:'',
+                ownerName:'',
+                ownerNum:'',
+                remark:'',
+                errorInfo:''
+            }
+        },
+         _initMethod:function(){
+
+         },
+         _initEvent:function(){
+            vc.on('editOwner','openEditOwnerModal',function(_owner){
+                vc.component.editOwnerInfo.errorInfo="";
+                vc.copyObject(_owner,vc.component.editOwnerInfo);
+                $('#editOwnerModel').modal('show');
+            });
+        },
+        methods:{
+            editOwnerValidate(){
+                return vc.validate.validate({
+                    editOwnerInfo:vc.component.editOwnerInfo
+                },{
+                    'editOwnerInfo.ownerName':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"楼名称不能为空"
+                        },
+                        {
+                            limit:"maxin",
+                            param:"2,10",
+                            errInfo:"楼名称长度必须在2位至10位"
+                        },
+                    ],
+                    'editOwnerInfo.ownerNum':[
+                        {
+                            limit:"required",
+                            param:"",
+                            errInfo:"楼编号不能为空"
+                        },
+                        {
+                            limit:"num",
+                            param:"",
+                            errInfo:"不是有效的数字"
+                        },
+                    ],
+                    'editOwnerInfo.remark':[
+
+                        {
+                            limit:"maxLength",
+                            param:"200",
+                            errInfo:"备注长度不能超过200位"
+                        }
+                    ]
+
+                });
+            },
+            editOwnerMethod:function(){
+
+                if(!vc.component.editOwnerValidate()){
+                    vc.component.editOwnerInfo.errorInfo = vc.validate.errInfo;
+                    return ;
+                }
+
+                vc.component.editOwnerInfo.errorInfo = "";
+
+                vc.component.editOwnerInfo.communityId = vc.getCurrentCommunity().communityId;
+                vc.http.post(
+                    'editOwner',
+                    'changeOwner',
+                    JSON.stringify(vc.component.editOwnerInfo),
+                    {
+                        emulateJSON:true
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            $('#editOwnerModel').modal('hide');
+                            vc.component.clearEditOwnerInfo();
+                            vc.emit('listOwner','listOwnerData',{});
+
+                            return ;
+                        }
+                        vc.component.editOwnerInfo.errorInfo = json;
+
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+
+                        vc.component.editOwnerInfo.errorInfo = errInfo;
+
+                     });
+            },
+            clearEditOwnerInfo:function(){
+                vc.component.editOwnerInfo = {
+                                            ownerId:'',
+                                            ownerName:'',
+                                            ownerNum:'',
+                                            remark:'',
+                                            errorInfo:''
+                                        };
+            }
+        }
+    });
+
+})(window.vc);

+ 83 - 0
WebService/src/main/resources/components/list-owner/listOwner.html

@@ -0,0 +1,83 @@
+<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="_openAddOwnerModal()">
+                            <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 data-hide="phone">备注</th>
+                            <th class="text-right">操作</th>
+
+                        </tr>
+                        </thead>
+                        <tbody>
+                        <tr v-for="owner in listOwnerInfo.owners">
+                            <td>
+                                {{owner.memberId}}
+                            </td>
+
+                            <td>
+                                {{owner.name}}
+                            </td>
+                            <td>
+                                {{owner.sex}}
+                            </td>
+                            <td>
+                                {{owner.age}}
+                            </td>
+                            <td>
+                                {{owner.link}}
+                            </td>
+                            <td>
+                                {{owner.userName}}
+                            </td>
+                            <td>
+                                {{owner.remark}}
+                            </td>
+                            <td class="text-right">
+                                <div class="btn-group">
+                                    <button class="btn-white btn btn-xs" v-on:click="_openEditOwnerModel(owner)">修改</button>
+                                </div>
+                                <div class="btn-group">
+                                    <button class="btn-white btn btn-xs" v-on:click="_openDelOwnerModel(owner)">删除</button>
+                                </div>
+                            </td>
+                        </tr>
+                        </tbody>
+                        <tfoot>
+                        <tr>
+                            <td colspan="7">
+                                <ul class="pagination float-right"></ul>
+                            </td>
+                        </tr>
+                        </tfoot>
+                    </table>
+                    <!-- 分页 -->
+                    <vc:create name="pagination"></vc:create>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <vc:create name="addOwner"></vc:create>
+    <vc:create name="editOwner"></vc:create>
+    <vc:create name="deleteOwner"></vc:create>
+
+</div>

+ 66 - 0
WebService/src/main/resources/components/list-owner/listOwner.js

@@ -0,0 +1,66 @@
+(function(vc){
+    var DEFAULT_PAGE = 1;
+    var DEFAULT_ROWS = 10;
+    vc.extends({
+        data:{
+            listOwnerInfo:{
+                owners:[],
+                total:0,
+                records:1,
+                errorInfo:""
+            }
+        },
+        _initMethod:function(){
+            vc.component._listOwnerData(DEFAULT_PAGE,DEFAULT_ROWS);
+        },
+        _initEvent:function(){
+            vc.on('listOwner','listOwnerData',function(){
+                vc.component._listOwnerData(DEFAULT_PAGE,DEFAULT_ROWS);
+            });
+            vc.on('pagination','page_event',function(_currentPage){
+                vc.component._listOwnerData(_currentPage,DEFAULT_ROWS);
+            });
+        },
+        methods:{
+            _listOwnerData:function(_page,_rows){
+                var param = {
+                    params:{
+                        page:_page,
+                        rows:_rows,
+                        communityId:vc.getCurrentCommunity().communityId
+                    }
+                }
+
+               //发送get请求
+               vc.http.get('listOwner',
+                            'list',
+                             param,
+                             function(json,res){
+                                var listOwnerData =JSON.parse(json);
+
+                                vc.component.listOwnerInfo.total = listOwnerData.total;
+                                vc.component.listOwnerInfo.records = listOwnerData.records;
+                                vc.component.listOwnerInfo.owners = listOwnerData.apiOwnerDataVoList;
+
+                                vc.emit('pagination','init',{
+                                    total:vc.component.listOwnerInfo.records,
+                                    currentPage:_page
+                                });
+                             },function(errInfo,error){
+                                console.log('请求失败处理');
+                             }
+                           );
+
+            },
+            _openAddOwnerModal:function(){ //打开添加框
+                vc.emit('addOwner','openAddOwnerModal',{});
+            },
+            _openDelOwnerModel:function(_owner){ // 打开删除对话框
+                vc.emit('deleteOwner','openOwnerModel',_owner);
+            },
+            _openEditOwnerModel:function(_owner){
+                vc.emit('editOwner','openEditOwnerModal',_owner);
+            }
+        }
+    })
+})(window.vc);

+ 33 - 0
WebService/src/main/resources/views/ownerFlow.html

@@ -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="bodyTop"></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="listOwner"></vc:create>
+        </div>
+
+        <vc:create name="copyright"></vc:create>
+
+    </div>
+</div>
+
+<vc:create name="commonBottom"></vc:create>
+</body>
+</html>

+ 2 - 2
docs/services/owner/DeleteOwnerInfo.md

@@ -44,7 +44,7 @@
 |business|businessTypeCd|1|String|12|业务类型编码|110100030002|
 |business|datas|1|Object|-|数据节点|不同的服务下的节点不一样|
 |datas|businessOwnerInfo|1|Object|-|小区成员|小区成员|
-|businessOwnerInfo|ownerId|1|String|30|-|-|
+|businessOwnerInfo|memberId|1|String|30|-|-|
 
 
 ###### 返回协议
@@ -87,7 +87,7 @@ Content-Type:application/json
     "remark": "备注",
     "datas": {
       "businessOwnerInfo": {
-                "ownerId":"填写存在的值"
+                "memberId":"填写存在的值"
       }
     },
     "attrs": [{

+ 2 - 0
docs/services/owner/SaveOwnerInfo.md

@@ -51,6 +51,7 @@
 |businessOwnerInfo|ownerId|1|String|30|-|-|
 |businessOwnerInfo|userId|1|String|30|-|-|
 |businessOwnerInfo|age|1|String|30|-|-|
+|businessOwnerInfo|memberId|1|String|30|-|-|
 
 
 ###### 返回协议
@@ -93,6 +94,7 @@ Content-Type:application/json
     "datas": {
       "businessOwnerInfo": {
                 "sex":"填写具体值",
+                "memberId":"成员ID",
         "name":"填写具体值",
         "link":"填写具体值",
         "remark":"填写具体值",

+ 3 - 1
docs/services/owner/UpdateOwnerInfo.md

@@ -51,6 +51,7 @@
 |businessOwnerInfo|ownerId|1|String|30|-|-|
 |businessOwnerInfo|userId|1|String|30|-|-|
 |businessOwnerInfo|age|1|String|30|-|-|
+|businessOwnerInfo|memberId|1|String|30|-|-|
 
 
 ###### 返回协议
@@ -99,7 +100,8 @@ Content-Type:application/json
         "remark":"填写具体值",
         "ownerId":"填写具体值",
         "userId":"填写具体值",
-        "age":"填写具体值"
+        "age":"填写具体值",
+        "memberId":"成员ID"
       }
     },
     "attrs": [{

+ 27 - 0
java110-bean/src/main/java/com/java110/dto/OwnerDto.java

@@ -13,6 +13,10 @@ import java.util.Date;
  **/
 public class OwnerDto extends PageDto implements Serializable {
 
+
+    private String communityId;
+
+    private String roomId;
     private String sex;
 private String name;
 private String link;
@@ -20,6 +24,7 @@ private String remark;
 private String ownerId;
 private String userId;
 private String age;
+private String memberId;
 
 
     private Date createTime;
@@ -69,6 +74,12 @@ public String getAge() {
 public void setAge(String age) {
         this.age = age;
     }
+public String getMemberId() {
+        return memberId;
+    }
+public void setMemberId(String memberId) {
+        this.memberId = memberId;
+    }
 
 
     public Date getCreateTime() {
@@ -86,4 +97,20 @@ public void setAge(String age) {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public String getCommunityId() {
+        return communityId;
+    }
+
+    public void setCommunityId(String communityId) {
+        this.communityId = communityId;
+    }
+
+    public String getRoomId() {
+        return roomId;
+    }
+
+    public void setRoomId(String roomId) {
+        this.roomId = roomId;
+    }
 }

+ 107 - 0
java110-bean/src/main/java/com/java110/vo/api/ApiOwnerDataVo.java

@@ -0,0 +1,107 @@
+package com.java110.vo.api;
+
+import com.java110.vo.Vo;
+
+/**
+ * @ClassName ApiFloorDataVo
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/4/24 11:18
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+public class ApiOwnerDataVo extends Vo {
+    /**
+     * floorId
+     */
+    private String ownerId;
+
+    private String memberId;
+
+    private String name;
+
+    private String sex;
+
+    private String age;
+
+    private String link;
+
+
+    private String remark;
+
+    private String userName;
+
+    private String createTime;
+
+    public String getOwnerId() {
+        return ownerId;
+    }
+
+    public void setOwnerId(String ownerId) {
+        this.ownerId = ownerId;
+    }
+
+    public String getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(String memberId) {
+        this.memberId = memberId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getAge() {
+        return age;
+    }
+
+    public void setAge(String age) {
+        this.age = age;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+}

+ 24 - 0
java110-bean/src/main/java/com/java110/vo/api/ApiOwnerVo.java

@@ -0,0 +1,24 @@
+package com.java110.vo.api;
+
+import com.java110.vo.MorePageVo;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * API 查询小区楼返回对象
+ */
+public class ApiOwnerVo extends MorePageVo implements Serializable {
+
+
+    private List<ApiOwnerDataVo> owners;
+
+
+    public List<ApiOwnerDataVo> getOwners() {
+        return owners;
+    }
+
+    public void setOwners(List<ApiOwnerDataVo> owners) {
+        this.owners = owners;
+    }
+}

+ 5 - 4
java110-code-generator/src/main/java/com/java110/OwnerGeneratorApplication.java

@@ -22,18 +22,19 @@ public class OwnerGeneratorApplication {
      */
     public static void main(String[] args) {
         Data data = new Data();
-        data.setId("ownerId");
+        data.setId("memberId");
         data.setName("owner");
         data.setDesc("业主");
         data.setNewBusinessTypeCd("BUSINESS_TYPE_SAVE_OWNER_INFO");
         data.setUpdateBusinessTypeCd("BUSINESS_TYPE_UPDATE_OWNER_INFO");
         data.setDeleteBusinessTypeCd("BUSINESS_TYPE_DELETE_OWNER_INFO");
-        data.setNewBusinessTypeCdValue("540100030001");
-        data.setUpdateBusinessTypeCdValue("540100040001");
-        data.setDeleteBusinessTypeCdValue("540100050001");
+        data.setNewBusinessTypeCdValue("110100030001");
+        data.setUpdateBusinessTypeCdValue("110100040001");
+        data.setDeleteBusinessTypeCdValue("110100050001");
         data.setBusinessTableName("business_building_owner");
         data.setTableName("building_owner");
         Map<String, String> param = new HashMap<String, String>();
+        param.put("memberId", "member_id");
         param.put("ownerId", "owner_id");
         param.put("bId", "b_id");
         param.put("name", "name");

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

@@ -17,6 +17,9 @@ public final class CommunityMemberTypeConstant {
     //小区楼
     public static final String FLOOR = "390001200004";
 
+    //业主
+    public static final String OWNER = "390001200005";
+
     //物业
     public static final String PROPERTY = "390001200002";
 

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

@@ -393,4 +393,17 @@ public class ServiceCodeConstant {
 
     //修改房屋信息
     public static final String SERVICE_CODE_DELETE_ROOMS = "room.deleteRoom";
+
+
+    //查询业主
+    public static final String SERVICE_CODE_QUERY_OWNER = "owner.queryOwners";
+
+    // 保存业主信息
+    public static final String SERVICE_CODE_SAVE_OWNER = "floor.saveOwner";
+
+    // 编辑业主信息
+    public static final String SERVICE_CODE_EDIT_OWNER = "floor.editOwner";
+
+    //删除业主信息
+    public static final String SERVICE_CODE_DELETE_OWNER = "floor.deleteOwner";
 }

+ 5 - 3
java110-config/db/CommunityService/create_owner.sql

@@ -1,6 +1,7 @@
 
 -- 单元信息 building 楼宇管理
 CREATE TABLE business_building_owner(
+  member_id VARCHAR(30) NOT NULL COMMENT '业主成员ID',
   owner_id VARCHAR(30) NOT NULL COMMENT '业主ID',
   b_id VARCHAR(30) NOT NULL COMMENT '业务Id',
   name VARCHAR(12) NOT NULL COMMENT '业主名称',
@@ -14,11 +15,12 @@ CREATE TABLE business_building_owner(
 );
 
 
-CREATE INDEX idx_business_owner_id ON business_building_owner(owner_id);
+CREATE INDEX idx_business_owner_id ON business_building_owner(member_id);
 CREATE INDEX idx_business_owner_b_id ON business_building_owner(b_id);
 
 
 CREATE TABLE building_owner(
+  member_id VARCHAR(30) NOT NULL COMMENT '业主成员ID',
   owner_id VARCHAR(30) NOT NULL COMMENT '业主ID',
   b_id VARCHAR(30) NOT NULL COMMENT '业务Id',
   name VARCHAR(12) NOT NULL COMMENT '业主名称',
@@ -29,7 +31,7 @@ CREATE TABLE building_owner(
   remark VARCHAR(200) NOT NULL COMMENT '备注',
   create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0, 在用 1失效',
-  UNIQUE KEY (owner_id)
+  UNIQUE KEY (member_id)
 );
 CREATE INDEX idx_owner_b_id ON building_owner(b_id);
-CREATE UNIQUE INDEX idx_owner_id ON building_owner(room_id);
+CREATE UNIQUE INDEX idx_owner_id ON building_owner(member_id);

+ 31 - 0
java110-config/src/main/resources/mapper/community/CommunityServiceDaoImplMapper.xml

@@ -315,4 +315,35 @@
         </if>
     </update>
 
+
+    <!-- 查询小区成员  add by wuxw 2018-07-03 -->
+    <select id="getCommunityMemberCount" parameterType="Map" resultType="Map">
+        select count(1) count
+        from s_community_member ms
+        where 1=1
+        <if test="statusCd != null and statusCd != ''">
+            and ms.status_cd = #{statusCd}
+        </if>
+
+        <if test="bId != null and bId !=''">
+            and ms.b_id = #{bId}
+        </if>
+        <if test="communityMemberId != null and communityMemberId !=''">
+            and ms.community_member_id = #{communityMemberId}
+        </if>
+        <if test="memberId != null and memberId != ''">
+            and ms.member_id = #{memberId}
+        </if>
+        <if test="memberTypeCd != null and memberTypeCd != ''">
+            and ms.member_type_cd = #{memberTypeCd}
+        </if>
+        <if test="auditStatusCd != null and auditStatusCd != ''">
+            and ms.audit_status_cd = #{auditStatusCd}
+        </if>
+
+        <if test="communityId != null and communityId != ''">
+            and ms.community_id = #{communityId}
+        </if>
+    </select>
+
 </mapper>

+ 25 - 10
java110-config/src/main/resources/mapper/owner/OwnerServiceDaoImplMapper.xml

@@ -7,16 +7,16 @@
     <!-- 保存业主信息 add by wuxw 2018-07-03 -->
        <insert id="saveBusinessOwnerInfo" parameterType="Map">
            insert into business_building_owner(
-operate,sex,name,link,remark,owner_id,b_id,user_id,age
+operate,sex,name,link,remark,owner_id,b_id,user_id,age,member_id
 ) values (
-#{operate},#{sex},#{name},#{link},#{remark},#{ownerId},#{bId},#{userId},#{age}
+#{operate},#{sex},#{name},#{link},#{remark},#{ownerId},#{bId},#{userId},#{age},#{memberId}
 )
        </insert>
 
 
        <!-- 查询业主信息(Business) add by wuxw 2018-07-03 -->
        <select id="getBusinessOwnerInfo" parameterType="Map" resultType="Map">
-           select  t.operate,t.sex,t.name,t.link,t.remark,t.owner_id,t.owner_id ownerId,t.b_id,t.b_id bId,t.user_id,t.user_id userId,t.age 
+           select  t.operate,t.sex,t.name,t.link,t.remark,t.owner_id,t.owner_id ownerId,t.b_id,t.b_id bId,t.user_id,t.user_id userId,t.age,t.member_id,t.member_id memberId 
 from business_building_owner t 
 where 1 =1 
 <if test="operate !=null and operate != ''">
@@ -46,6 +46,9 @@ where 1 =1
 <if test="age !=null and age != ''">
    and t.age= #{age}
 </if> 
+<if test="memberId !=null and memberId != ''">
+   and t.member_id= #{memberId}
+</if> 
 
        </select>
 
@@ -56,8 +59,8 @@ where 1 =1
     <!-- 保存业主信息至 instance表中 add by wuxw 2018-07-03 -->
     <insert id="saveOwnerInfoInstance" parameterType="Map">
         insert into building_owner(
-sex,name,link,status_cd,remark,owner_id,b_id,user_id,age
-) select t.sex,t.name,t.link,'0',t.remark,t.owner_id,t.b_id,t.user_id,t.age from business_building_owner t where 1=1
+sex,name,link,status_cd,remark,owner_id,b_id,user_id,age,member_id
+) select t.sex,t.name,t.link,'0',t.remark,t.owner_id,t.b_id,t.user_id,t.age,t.member_id from business_building_owner t where 1=1
    and t.operate= 'ADD'
 <if test="sex !=null and sex != ''">
    and t.sex= #{sex}
@@ -83,6 +86,9 @@ sex,name,link,status_cd,remark,owner_id,b_id,user_id,age
 <if test="age !=null and age != ''">
    and t.age= #{age}
 </if> 
+<if test="memberId !=null and memberId != ''">
+   and t.member_id= #{memberId}
+</if> 
 
     </insert>
 
@@ -90,7 +96,7 @@ sex,name,link,status_cd,remark,owner_id,b_id,user_id,age
 
     <!-- 查询业主信息 add by wuxw 2018-07-03 -->
     <select id="getOwnerInfo" parameterType="Map" resultType="Map">
-        select  t.sex,t.name,t.link,t.status_cd,t.status_cd statusCd,t.remark,t.owner_id,t.owner_id ownerId,t.b_id,t.b_id bId,t.user_id,t.user_id userId,t.age 
+        select  t.sex,t.name,t.link,t.status_cd,t.status_cd statusCd,t.remark,t.owner_id,t.owner_id ownerId,t.b_id,t.b_id bId,t.user_id,t.user_id userId,t.age,t.member_id,t.member_id memberId 
 from building_owner t 
 where 1 =1 
 <if test="sex !=null and sex != ''">
@@ -120,6 +126,9 @@ where 1 =1
 <if test="age !=null and age != ''">
    and t.age= #{age}
 </if> 
+<if test="memberId !=null and memberId != ''">
+   and t.member_id= #{memberId}
+</if> 
 <if test="page != -1 and page != null ">
    limit #{page}, #{row}
 </if> 
@@ -147,17 +156,20 @@ where 1 =1
 <if test="remark !=null and remark != ''">
 , t.remark= #{remark}
 </if> 
+<if test="ownerId !=null and ownerId != ''">
+, t.owner_id= #{ownerId}
+</if> 
 <if test="userId !=null and userId != ''">
 , t.user_id= #{userId}
 </if> 
 <if test="age !=null and age != ''">
 , t.age= #{age}
 </if> 
- where 1=1 <if test="ownerId !=null and ownerId != ''">
-and t.owner_id= #{ownerId}
-</if> 
-<if test="bId !=null and bId != ''">
+ where 1=1 <if test="bId !=null and bId != ''">
 and t.b_id= #{bId}
+</if> 
+<if test="memberId !=null and memberId != ''">
+and t.member_id= #{memberId}
 </if> 
 
     </update>
@@ -194,6 +206,9 @@ where 1 =1
 <if test="age !=null and age != ''">
    and t.age= #{age}
 </if> 
+<if test="memberId !=null and memberId != ''">
+   and t.member_id= #{memberId}
+</if> 
 
 
      </select>

+ 9 - 0
java110-core/src/main/java/com/java110/core/smo/community/ICommunityInnerServiceSMO.java

@@ -32,4 +32,13 @@ public interface ICommunityInnerServiceSMO {
      */
     @RequestMapping(value = "/getCommunityMembers", method = RequestMethod.POST)
     List<CommunityMemberDto> getCommunityMembers(@RequestBody CommunityMemberDto communityMemberDto);
+
+    /**
+     * 查询小区成员数量
+     *
+     * @param communityMemberDto 小区成员数据封装
+     * @return CommunityMemberDto 数据
+     */
+    @RequestMapping(value = "/getCommunityMemberCount", method = RequestMethod.POST)
+    int getCommunityMemberCount(@RequestBody CommunityMemberDto communityMemberDto);
 }