wuxw лет назад: 7
Родитель
Сommit
4a5f5d15ea

+ 0 - 5
Api/src/main/java/com/java110/api/listener/CheckUserHasPrivilegeListener.java

@@ -2,10 +2,8 @@ package com.java110.api.listener;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.java110.api.listener.users.QueryStaffByUserNameServiceListener;
 import com.java110.common.constant.ServiceCodeConstant;
 import com.java110.common.util.Assert;
-import com.java110.common.util.StringUtil;
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
 import com.java110.entity.center.AppService;
@@ -16,9 +14,6 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
-import java.util.HashMap;
-import java.util.Map;
-
 /**
  * 检查用户是否有权限
  */

+ 110 - 0
Api/src/main/java/com/java110/api/listener/community/CommunityMemberJoinedListener.java

@@ -0,0 +1,110 @@
+package com.java110.api.listener.community;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiDataFlowListener;
+import com.java110.api.listener.property.CheckStaffHasPropertyListener;
+import com.java110.common.constant.BusinessTypeConstant;
+import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ServiceCodeConstant;
+import com.java110.common.constant.StoreUserRelConstant;
+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.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 小区成员加入
+ */
+@Java110Listener("communityMemberJoinedListener")
+public class CommunityMemberJoinedListener extends AbstractServiceApiDataFlowListener {
+    private final static Logger logger = LoggerFactory.getLogger(CommunityMemberJoinedListener.class);
+
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_MEMBER_JOINED_COMMUNITY;
+    }
+
+    @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(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);
+    }
+
+    /**
+     * 添加小区成员
+     * @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,2);
+        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("memberId"));
+        businessCommunityMember.put("memberTypeCd", paramInJson.getString("memberTypeCd"));
+        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,"communityId","请求报文中未包含communityId");
+        Assert.jsonObjectHaveKey(paramIn,"memberId","请求报文中未包含memberId");
+        Assert.jsonObjectHaveKey(paramIn,"memberTypeCd","请求报文中未包含memberTypeCd");
+    }
+
+    @Override
+    public int getOrder() {
+        return 0;
+    }
+}

+ 16 - 0
WebService/src/main/java/com/java110/web/components/community/StoreEnterCommunityComponent.java

@@ -33,6 +33,22 @@ public class StoreEnterCommunityComponent {
             }
     }
 
+    /**
+     * 入驻小区
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> _saveEnterCommunity(IPageData pd){
+        ResponseEntity<String> responseEntity = null;
+        try{
+            responseEntity =  communityServiceSMOImpl._saveEnterCommunity(pd);
+        }catch (Exception e){
+            responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }finally {
+            return responseEntity;
+        }
+    }
+
     public ICommunityServiceSMO getCommunityServiceSMOImpl() {
         return communityServiceSMOImpl;
     }

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

@@ -22,4 +22,12 @@ public interface ICommunityServiceSMO {
      * @return
      */
     public ResponseEntity<String> listNoEnterCommunity(IPageData pd);
+
+
+    /**
+     * 入驻小区
+     * @param pd
+     * @return
+     */
+    public ResponseEntity<String> _saveEnterCommunity(IPageData pd);
 }

+ 49 - 5
WebService/src/main/java/com/java110/web/smo/impl/CommunityServiceSMOImpl.java

@@ -19,6 +19,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
+import org.thymeleaf.util.StringUtils;
 
 /**
  * 小区服务类
@@ -82,12 +83,20 @@ public class CommunityServiceSMOImpl extends BaseComponentSMO implements ICommun
 
         String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
         String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
-
+        String communityName = !_paramObj.containsKey("communityName")?"":_paramObj.getString("communityName");
         //修改用户信息
-        responseEntity = this.callCenterService(restTemplate,pd,"",
-                ServiceConstant.SERVICE_API_URL+"/api/query.noEnterCommunity.byMember?memberId="+storeId+
-                        "&memberTypeCd="+MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE,storeTypeCd),
-                HttpMethod.GET);
+        if(StringUtils.isEmpty(communityName)) {
+            responseEntity = this.callCenterService(restTemplate, pd, "",
+                    ServiceConstant.SERVICE_API_URL + "/api/query.noEnterCommunity.byMember?memberId=" + storeId +
+                            "&memberTypeCd=" + MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE, storeTypeCd),
+                    HttpMethod.GET);
+        }else{
+            responseEntity = this.callCenterService(restTemplate, pd, "",
+                    ServiceConstant.SERVICE_API_URL + "/api/query.noEnterCommunity.byMemberAndName?memberId=" + storeId +
+                            "&memberTypeCd=" + MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE, storeTypeCd)
+                    +"&name="+communityName,
+                    HttpMethod.GET);
+        }
 
         if(responseEntity.getStatusCode() != HttpStatus.OK){
             return responseEntity;
@@ -101,6 +110,41 @@ public class CommunityServiceSMOImpl extends BaseComponentSMO implements ICommun
     }
 
 
+    /**
+     * 商户入驻申请接口
+     * @param pd
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> _saveEnterCommunity(IPageData pd) {
+
+        ResponseEntity<String> responseEntity = null;
+        Assert.jsonObjectHaveKey(pd.getReqData(),"communityId","请求信息中未包含communityId");
+        JSONObject _paramObj = JSONObject.parseObject(pd.getReqData());
+
+        String communityId = _paramObj.getString("communityId");
+
+        //权限校验
+        checkUserHasPrivilege(pd,restTemplate, PrivilegeCodeConstant.PRIVILEGE_ENTER_COMMUNITY);
+        responseEntity = super.getStoreInfo(pd,restTemplate);
+        if(responseEntity.getStatusCode() != HttpStatus.OK){
+            return responseEntity;
+        }
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(),"storeId","根据用户ID查询商户ID失败,未包含storeId节点");
+
+        String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
+        String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
+        _paramObj.put("memberId",storeId);
+        _paramObj.put("memberTypeCd",MappingCache.getValue(MappingConstant.DOMAIN_STORE_TYPE_2_COMMUNITY_MEMBER_TYPE,storeTypeCd));
+
+        responseEntity = this.callCenterService(restTemplate, pd, _paramObj.toJSONString(),
+                ServiceConstant.SERVICE_API_URL + "/api/member.join.community",
+                HttpMethod.POST);
+
+        return responseEntity;
+    }
+
+
     private void freshCommunityAttr(JSONArray community){
         for(int _communityIndex = 0 ;_communityIndex < community.size();_communityIndex++){
             JSONObject _community = community.getJSONObject(_communityIndex);

+ 2 - 2
WebService/src/main/resources/components/store-enter-community/storeEnterCommunity.html

@@ -19,9 +19,9 @@
                                 </div>
                                 <div class="col-sm-5">
                                     <div class="input-group">
-                                        <input placeholder="输入小区名称" type="text" class="form-control form-control-sm">
+                                        <input placeholder="输入小区名称" v-model="storeEnterCommunityInfo.searchCommunityName" type="text" class="form-control form-control-sm">
                                         <span class="input-group-append">
-                                                <button type="button" class="btn btn-sm btn-primary">查询</button>
+                                                <button type="button" class="btn btn-sm btn-primary" v-on:click="listNoEnterCommunity()">查询</button>
                                             </span>
                                     </div>
                                 </div>

+ 48 - 47
WebService/src/main/resources/components/store-enter-community/storeEnterCommunity.js

@@ -4,7 +4,8 @@
         data:{
             storeEnterCommunityInfo:{
                 communityInfo:[],
-                errorInfo:''
+                errorInfo:'',
+                searchCommunityName:'',
             }
         },
          _initMethod:function(){
@@ -13,58 +14,58 @@
          _initEvent:function(){
             vc.on('storeEnterCommunity','openStoreEnterCommunity',function(_params){
                 $('#storeEnterCommunityModel').modal('show');
+                vc.component.storeEnterCommunityInfo.searchCommunityName = '';
                 vc.component.listNoEnterCommunity();
             });
         },
         methods:{
-
-            _saveEnterCommunity:function(){
-                var param = {};
-                vc.component.storeEnterCommunityInfo.errorInfo = "";
-                vc.http.post(
-                    'storeEnterCommunity',
-                    'enterCommunity',
-                    JSON.stringify(param),
-                    {
-                        emulateJSON:true
-                     },
-                     function(json,res){
-                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
-                        if(res.status == 200){
-                            //关闭model
-                            $('#storeEnterCommunityModel').modal('hide');
-                            vc.emit('enterCommunity','listMyCommunity',{});
-                            return ;
-                        }
-                        vc.component.storeEnterCommunityInfo.errorInfo = json;
-                     },
-                     function(errInfo,error){
-                        console.log('请求失败处理');
-
-                        vc.component.storeEnterCommunityInfo.errorInfo = errInfo;
-                     });
-            },
+//            _saveEnterCommunity:function(){
+//                var param = {};
+//                vc.component.storeEnterCommunityInfo.errorInfo = "";
+//                vc.http.post(
+//                    'storeEnterCommunity',
+//                    'enterCommunity',
+//                    JSON.stringify(param),
+//                    {
+//                        emulateJSON:true
+//                     },
+//                     function(json,res){
+//                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+//                        if(res.status == 200){
+//                            //关闭model
+//                            $('#storeEnterCommunityModel').modal('hide');
+//                            vc.emit('enterCommunity','listMyCommunity',{});
+//                            return ;
+//                        }
+//                        vc.component.storeEnterCommunityInfo.errorInfo = json;
+//                     },
+//                     function(errInfo,error){
+//                        console.log('请求失败处理');
+//
+//                        vc.component.storeEnterCommunityInfo.errorInfo = errInfo;
+//                     });
+//            },
             listNoEnterCommunity:function(){
                     vc.loading('open');
-                            var param = {
-                                params:{
-                                    msg:'123'
-                                }
+                    var param = {
+                        params:{
+                            communityName:vc.component.storeEnterCommunityInfo.searchCommunityName
+                        }
 
-                           }
-                           //发送get请求
-                           vc.http.get('storeEnterCommunity',
-                                        'listNoEnterCommunity',
-                                         param,
-                                         function(json,res){
-                                            vc.component.storeEnterCommunityInfo.communityInfo=JSON.parse(json);
-                                            vc.loading('close');
-                                         },function(errInfo,error){
-                                            console.log('请求失败处理');
-                                            vc.loading('close');
-                                         }
-                                       );
-                        },
+                   }
+                   //发送get请求
+                   vc.http.get('storeEnterCommunity',
+                                'listNoEnterCommunity',
+                                 param,
+                                 function(json,res){
+                                    vc.component.storeEnterCommunityInfo.communityInfo=JSON.parse(json);
+                                    vc.loading('close');
+                                 },function(errInfo,error){
+                                    console.log('请求失败处理');
+                                    vc.loading('close');
+                                 }
+                   );
+             },
             _saveEnterCommunity:function(_communityInfo){
                 var _param = {
                     communityId:_communityInfo.communityId
@@ -72,7 +73,7 @@
                 //发送get请求
                vc.http.post('storeEnterCommunity',
                             '_saveEnterCommunity',
-                             JSON.stringify(vc.component.registerInfo),
+                             JSON.stringify(_param),
                              {
                                  emulateJSON:true
                               },

+ 61 - 0
docs/api/community/communityMemberJoined.md

@@ -0,0 +1,61 @@
+
+
+**1\. 小区成员加入**
+###### 接口功能
+> 用户通过web端或APP物业代理商等加入到小区中接口
+
+###### URL
+> [http://api.java110.com:8008/api/member.join.community](http://api.java110.com:8008/api/member.join.community)
+
+###### 支持格式
+> JSON
+
+###### HTTP请求方式
+> POST
+
+###### 请求参数(header部分)
+|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-:|
+|app_id|1|String|30|应用ID|Api服务分配                      |
+|transaction_id|1|String|30|请求流水号|不能重复 1000000000+YYYYMMDDhhmmss+6位序列 |
+|sign|1|String|-|签名|请参考签名说明|
+|req_time|1|String|-|请求时间|YYYYMMDDhhmmss|
+
+###### 请求参数(body部分)
+|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-: |
+|memberId|1|String|30|小区成员ID|-|
+|communityId|1|String|30|小区ID|-|
+|memberTypeCd|1|String|12|成员角色|-|
+
+###### 返回协议
+
+当http返回状态不为200 时请求处理失败 body内容为失败的原因
+
+当http返回状态为200时请求处理成功,body内容为返回内容,
+
+
+
+###### 举例
+> 地址:[http://api.java110.com:8008/api/member.join.community](http://api.java110.com:8008/api/member.join.community)
+
+``` javascript
+请求头信息:
+Content-Type:application/json
+USER_ID:1234
+APP_ID:8000418002
+TRANSACTION_ID:10029082726
+REQ_TIME:20181113225612
+SIGN:aabdncdhdbd878sbdudn898
+请求报文:
+
+无
+
+返回报文:
+{
+	"memberId": "390001200001",
+	"communityId": "1234444",
+	"memberTypeCd": "12221222"
+}
+
+```

+ 118 - 0
docs/services/community/community.md

@@ -0,0 +1,118 @@
+
+
+**1\. 小区成员纳入**
+###### 接口功能
+> API服务做小区成员纳入时调用该接口
+
+###### URL
+> [http://community-service/communityApi/service](http://community-service/communityApi/service)
+
+###### 支持格式
+> JSON
+
+###### HTTP请求方式
+> POST
+
+###### 协议接口
+|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-: | :-:|
+|-|orders|1|Object|-|订单节点|-|
+|-|business|1|Array|-|业务节点|-|
+
+###### orders
+|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
+|-|orders|1|Object|-|订单节点|-|
+|orders|appId|1|String|10|系统ID|由中心服务提供|
+|orders|transactionId|1|String|30|交互流水|appId+'00'+YYYYMMDD+10位序列|
+|orders|userId|1|String|30|用户ID|已有用户ID|
+|orders|orderTypeCd|1|String|4|订单类型|查看订单类型说明|
+|orders|requestTime|1|String|14|请求时间|YYYYMMDDhhmmss|
+|orders|remark|1|String|200|备注|备注|
+|orders|sign|?|String|64|签名|查看加密说明|
+|orders|attrs|?|Array|-|订单属性|-|
+|attrs|specCd|1|String|12|规格编码|由中心服务提供|
+|attrs|value|1|String|50|属性值|-|
+|orders|response|1|Object|-|返回结果节点|-|
+|response|code|1|String|4|返回状态|查看状态说明|
+|response|message|1|String|200|返回状态描述|-|
+
+###### business
+|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
+|-|business|?|Array|-|业务节点|-|
+|business|businessTypeCd|1|String|12|业务类型编码|500100030002|
+|business|datas|1|Object|-|数据节点|不同的服务下的节点不一样|
+|datas|businessCommunityMember|1|Object|-|小区成员|小区成员|
+|businessCommunityMember|communityId|1|String|30|小区ID|小区ID|
+|businessCommunityMember|memberId|1|String|30|成员ID|成员ID|
+|businessCommunityMember|memberTypeCd|1|String|30|成员类型|成员类型|
+
+###### 返回协议
+
+当http返回状态不为200 时请求处理失败 body内容为失败的原因
+
+当http返回状态为200时请求处理成功,body内容为返回内容,
+
+
+
+
+
+###### 举例
+> 地址:[http://community-service/communityApi/service](http://community-service/communityApi/service)
+
+``` javascript
+请求头信息:
+Content-Type:application/json
+
+请求报文:
+
+{
+  "orders": {
+    "appId": "外系统ID,分配得到",
+    "transactionId": "100000000020180409224736000001",
+    "userId": "用户ID",
+    "orderTypeCd": "订单类型,查询,受理",
+    "requestTime": "20180409224736",
+    "remark": "备注",
+    "sign": "这个服务是否要求MD5签名",
+    "businessType":"I",
+    "attrs": [{
+      "specCd": "配置的字段ID",
+      "value": "具体值"
+    }]
+  },
+  "business": {
+    "businessTypeCd": "500100030002",
+    "bId":"1234567892",
+    "remark": "备注",
+    "datas": {
+      "businessCommunityMember": {
+        "communityMemberId": "-1",
+        "communityId": "7020181217000001",
+        "memberId": "3456789",
+        "memberTypeCd": "390001200001"
+      }
+    },
+    "attrs": [{
+      "specCd": "配置的字段ID",
+      "value": "具体值"
+    }]
+  }
+}
+
+返回报文:
+ {
+	"orderTypeCd": "D",
+	"response": {
+		"code": "0000",
+		"message": "成功"
+	},
+	"responseTime": "20190418102004",
+	"bId": "202019041810750003",
+	"businessType": "B",
+	"transactionId": "3a5a411ec65a4c3f895935638aa1d2bc",
+	"dataFlowId": "44fde86d39ce46f4b4aab5f6b14f3947"
+}
+
+```

+ 1 - 1
reBuildAll.sh

@@ -7,7 +7,7 @@ mvn package -Dmaven.test.skip=true
 
 docker-compose -f ./Api/docker/docker-compose.yml       up -d --build --force-recreate;
 docker-compose -f ./OrderService/docker/docker-compose.yml       up -d --build --force-recreate;
-docker-compose -f ./ShopService/docker/docker-compose.yml       up -d --build --force-recreate;
+docker-compose -f ./CommunityService/docker/docker-compose.yml       up -d --build --force-recreate;
 docker-compose -f ./StoreService/docker/docker-compose.yml       up -d --build --force-recreate;
 docker-compose -f ./UserService/docker/docker-compose.yml       up -d --build --force-recreate;
 

+ 1 - 1
restartAll.sh

@@ -2,6 +2,6 @@
 
 docker-compose -f ./Api/docker/docker-compose.yml        restart;
 docker-compose -f ./OrderService/docker/docker-compose.yml      restart;
-docker-compose -f ./ShopService/docker/docker-compose.yml       restart;
+docker-compose -f ./CommunityService/docker/docker-compose.yml       restart;
 docker-compose -f ./StoreService/docker/docker-compose.yml       restart;
 docker-compose -f ./UserService/docker/docker-compose.yml       restart;