Przeglądaj źródła

加入 申请访客密码接口功能

wuxw 6 lat temu
rodzic
commit
631797bbdd

+ 179 - 0
Api/src/main/java/com/java110/api/listener/applicationKey/ApplyVisitorApplicationKey.java

@@ -0,0 +1,179 @@
+package com.java110.api.listener.applicationKey;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.smo.hardwareAdapation.IApplicationKeyInnerServiceSMO;
+import com.java110.dto.hardwareAdapation.ApplicationKeyDto;
+import com.java110.entity.center.AppService;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.ServiceCodeApplicationKeyConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * 生成访客密码
+ */
+@Java110Listener("applyVisitorApplicationKey")
+public class ApplyVisitorApplicationKey extends AbstractServiceApiListener {
+
+    @Autowired
+    private IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl;
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区");
+        Assert.hasKeyAndValue(reqJson, "idCard", "必填,请填写身份证号");
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+        HttpHeaders header = new HttpHeaders();
+        context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
+        JSONArray businesses = new JSONArray();
+
+        AppService service = event.getAppService();
+        ResponseEntity<String> responseEntity = null;
+        ApplicationKeyDto applicationKeyDto = new ApplicationKeyDto();
+        applicationKeyDto.setIdCard(reqJson.getString("idCard"));
+        applicationKeyDto.setCommunityId(reqJson.getString("communityId"));
+        applicationKeyDto.setState("10001"); //审核万彩城
+        applicationKeyDto.setTypeFlag("1100103"); //固定密码
+        applicationKeyDto.setEndTime(DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_A));
+        List<ApplicationKeyDto> applicationKeys = applicationKeyInnerServiceSMOImpl.queryApplicationKeys(applicationKeyDto);
+
+        if (applicationKeys != null && applicationKeys.size() > 0) {
+            JSONObject resObj = new JSONObject();
+            resObj.put("pwd", applicationKeys.get(0).getPwd());
+            responseEntity = new ResponseEntity<>(resObj.toJSONString(), HttpStatus.OK);
+            context.setResponseEntity(responseEntity);
+
+            return;
+        }
+
+        reqJson.put("pwd", getRandom());
+        applicationKeyDto = new ApplicationKeyDto();
+        applicationKeyDto.setIdCard(reqJson.getString("idCard"));
+        applicationKeyDto.setCommunityId(reqJson.getString("communityId"));
+        applicationKeyDto.setState("10001");
+        applicationKeys = applicationKeyInnerServiceSMOImpl.queryApplicationKeys(applicationKeyDto);
+
+        if (applicationKeys == null || applicationKeys.size() < 1) {
+            throw new IllegalArgumentException("还没有住户密码,不能申请访客密码");
+        }
+
+        Calendar cl = Calendar.getInstance();
+        cl.add(Calendar.DAY_OF_MONTH, 1);
+        String endTime = DateUtil.getFormatTimeString(cl.getTime(), DateUtil.DATE_FORMATE_STRING_A);
+
+        for (ApplicationKeyDto tmpApplicationKey : applicationKeys) {
+            //添加单元信息
+            reqJson.putAll(BeanConvertUtil.beanCovertMap(tmpApplicationKey));
+
+            reqJson.put("endTime", endTime);
+            reqJson.put("applicationKeyId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_applicationKeyId));
+            businesses.add(addApplicationKey(reqJson, context));
+        }
+
+        JSONObject paramInObj = super.restToCenterProtocol(businesses, context.getRequestCurrentHeaders());
+
+        //将 rest header 信息传递到下层服务中去
+        super.freshHttpHeader(header, context.getRequestCurrentHeaders());
+        responseEntity = this.callService(context, service.getServiceCode(), paramInObj);
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            context.setResponseEntity(responseEntity);
+            return;
+        }
+
+        JSONObject resObj = new JSONObject();
+        resObj.put("pwd", reqJson.getString("pwd"));
+        resObj.put("endTime", endTime);
+
+        responseEntity = new ResponseEntity<>(resObj.toJSONString(), HttpStatus.OK);
+        context.setResponseEntity(responseEntity);
+
+    }
+
+    /**
+     * 添加小区信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @param dataFlowContext 数据上下文
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject addApplicationKey(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+        //查询 是否住户密码已经审核完成
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_APPLICATION_KEY);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessApplicationKey = new JSONObject();
+        businessApplicationKey.putAll(paramInJson);
+        businessApplicationKey.put("applicationKeyId", paramInJson.getString("applicationKeyId"));
+        businessApplicationKey.put("state", "10001");
+        businessApplicationKey.put("typeFlag", "1100103");
+        businessApplicationKey.put("startTime", DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_A));
+
+        //计算 应收金额
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessApplicationKey", businessApplicationKey);
+        return business;
+    }
+
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeApplicationKeyConstant.APPLY_VISITOR_APPLICATION_KEY;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+    /**
+     * 获取随机数
+     *
+     * @return
+     */
+    private static String getRandom() {
+        Random random = new Random();
+        String result = "";
+        for (int i = 0; i < 6; i++) {
+            result += random.nextInt(10);
+        }
+        return result;
+    }
+
+    public IApplicationKeyInnerServiceSMO getApplicationKeyInnerServiceSMOImpl() {
+        return applicationKeyInnerServiceSMOImpl;
+    }
+
+    public void setApplicationKeyInnerServiceSMOImpl(IApplicationKeyInnerServiceSMO applicationKeyInnerServiceSMOImpl) {
+        this.applicationKeyInnerServiceSMOImpl = applicationKeyInnerServiceSMOImpl;
+    }
+}

+ 1 - 0
docs/document/_sidebar.md

@@ -84,6 +84,7 @@
   * [物业费清单](api/money/getPropertyPayFee.md)
   * [业主绑定](api/owner/appUserBindingOwner.md)
   * [业主门禁](api/owner/listOwnerMachines.md)
+  * [申请访客密码](api/applyVisitorApplicationKey/applyVisitorApplicationKey.md)
   
   
 

+ 71 - 0
docs/document/api/applicationKey/applyVisitorApplicationKey.md

@@ -0,0 +1,71 @@
+
+
+**1\. 申请访客密码**
+###### 接口功能
+> 用户通过小程序申请访客密码
+
+###### URL
+> [http://api.java110.com:8008/api/applicationKey.applyVisitorApplicationKey](http://api.java110.com:8008/api/applicationKey.applyVisitorApplicationKey)
+
+###### 支持格式
+> 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部分)
+|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-: |
+|idCard|1|String|20|业主身份证|-|
+|communityId|1|String|30|小区ID|-|
+
+
+
+###### 返回协议(body部分)
+|参数名称|约束|类型|长度|描述|取值说明|
+| :-: | :-: | :-: | :-: | :-: | :-: |
+|pwd|1|String|6|访客密码|-|
+|endTime|1|String|16|结束时间|-|
+
+当http返回状态不为200 时请求处理失败 body内容为失败的原因
+
+当http返回状态为200时请求处理成功,body内容为返回内容,
+
+
+
+###### 举例
+> 地址:[http://api.java110.com:8008/api/applicationKey.applyVisitorApplicationKey](http://api.java110.com:8008/api/applicationKey.applyVisitorApplicationKey)
+
+``` javascript
+请求头信息:
+Content-Type:application/json
+USER_ID:1234
+APP_ID:8000418002
+TRANSACTION_ID:10029082726
+REQ_TIME:20181113225612
+SIGN:aabdncdhdbd878sbdudn898
+请求报文:
+
+{
+	"idCard": "632126199109172011",
+	"communityId": "7020181217000001"
+}
+
+返回报文:
+
+成功
+
+{
+    "pwd":"123456",
+    "endTime":"2020-01-05 20:09:00"
+}
+
+```

+ 5 - 0
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeApplicationKeyConstant.java

@@ -16,6 +16,11 @@ public class ServiceCodeApplicationKeyConstant {
      */
     public static final String APPLY_APPLICATIONKEY = "applicationKey.applyApplicationKey";
 
+    /**
+     * 访客钥匙申请
+     */
+    public static final String APPLY_VISITOR_APPLICATION_KEY = "applicationKey.applyVisitorApplicationKey";
+
 
     /**
      * 修改 钥匙申请