Bladeren bron

完成 迎宾系统 推送

魏熙美 6 jaren geleden
bovenliggende
commit
d22fa8fed7

+ 1
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/common/hk/HKConstant.java Bestand weergeven

@@ -35,6 +35,7 @@ public class HKConstant {
35 35
     //  public static final String OPENAPI_IP_PORT_HTTPS = "http://192.168.0.122";
36 36
     //public static final String OPENAPI_IP_PORT_HTTP = "http://huiju.ngrok.xiaomiqiu.cn";
37 37
     public static final String OPENAPI_IP_PORT_HTTP = "http://huifang.vipgz1.idcfengye.com";
38
+    // public static final String OPENAPI_IP_PORT_HTTP = "192.168.10.200";
38 39
 
39 40
     /**
40 41
      * <p>操作用户UUID,即用户UUID,首次使用操作用户UUID可以通过接口 [获取默认用户UUID]来获取</p>

+ 235
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/common/welcome/OkHttpRequestUtils.java Bestand weergeven

@@ -0,0 +1,235 @@
1
+package com.community.huiju.common.welcome;
2
+
3
+import com.beust.jcommander.internal.Maps;
4
+import com.fasterxml.jackson.databind.util.ByteBufferBackedInputStream;
5
+import okhttp3.*;
6
+
7
+import java.io.*;
8
+import java.util.Iterator;
9
+import java.util.Map;
10
+
11
+/**
12
+ * 封装请求
13
+ * @author weiximei
14
+ */
15
+public class OkHttpRequestUtils {
16
+
17
+    // 定义请求客户端
18
+    private static OkHttpClient client = new OkHttpClient();
19
+
20
+    /**
21
+     * get 请求
22
+     * @param url 请求URL
23
+     * @return
24
+     * @throws Exception
25
+     */
26
+    public static String doGet(String url) throws Exception {
27
+       return doGet(url, Maps.newHashMap());
28
+    }
29
+
30
+
31
+    /**
32
+     * get 请求
33
+     * @param url 请求URL
34
+     * @param query 携带参数参数
35
+     * @return
36
+     * @throws Exception
37
+     */
38
+    public static String doGet(String url, Map<String, Object> query) throws Exception {
39
+
40
+        return doGet(url, Maps.newHashMap(), query);
41
+    }
42
+
43
+    /**
44
+     * get 请求
45
+     * @param url url
46
+     * @param header 请求头参数
47
+     * @param query 参数
48
+     * @return
49
+     */
50
+    public static String doGet(String url, Map<String, Object> header, Map<String, Object> query) throws Exception {
51
+
52
+        // 创建一个请求 Builder
53
+        Request.Builder builder = new Request.Builder();
54
+        // 创建一个 request
55
+        Request request = builder.url(url).build();
56
+
57
+        // 创建一个 HttpUrl.Builder
58
+        HttpUrl.Builder urlBuilder = request.url().newBuilder();
59
+        // 创建一个 Headers.Builder
60
+        Headers.Builder headerBuilder = request.headers().newBuilder();
61
+
62
+        // 装载请求头参数
63
+        Iterator<Map.Entry<String, Object>> headerIterator = header.entrySet().iterator();
64
+        headerIterator.forEachRemaining(e -> {
65
+            headerBuilder.add(e.getKey(), (String) e.getValue());
66
+        });
67
+
68
+        // 装载请求的参数
69
+        Iterator<Map.Entry<String, Object>> queryIterator = query.entrySet().iterator();
70
+        queryIterator.forEachRemaining(e -> {
71
+            urlBuilder.addQueryParameter(e.getKey(), (String) e.getValue());
72
+        });
73
+
74
+        // 设置自定义的 builder
75
+        builder.url(urlBuilder.build()).headers(headerBuilder.build());
76
+
77
+        try (Response execute = client.newCall(builder.build()).execute()) {
78
+            return execute.body().string();
79
+        }
80
+    }
81
+
82
+    /**
83
+     * post 请求, 请求参数 并且 携带文件上传
84
+     * @param url
85
+     * @param header
86
+     * @param parameter
87
+     * @param file
88
+     * @return
89
+     * @throws Exception
90
+     */
91
+    public static String doPost(String url, Map<String, Object> header, Map<String, Object> parameter, File file) throws Exception {
92
+
93
+        // 创建一个请求 Builder
94
+        Request.Builder builder = new Request.Builder();
95
+        // 创建一个 request
96
+        Request request = builder.url(url).build();
97
+
98
+        // 创建一个 Headers.Builder
99
+        Headers.Builder headerBuilder = request.headers().newBuilder();
100
+
101
+        // 装载请求头参数
102
+        Iterator<Map.Entry<String, Object>> headerIterator = header.entrySet().iterator();
103
+        headerIterator.forEachRemaining(e -> {
104
+            headerBuilder.add(e.getKey(), (String) e.getValue());
105
+        });
106
+
107
+        MultipartBody.Builder requestBuilder = new MultipartBody.Builder();
108
+
109
+        // 状态请求参数
110
+        Iterator<Map.Entry<String, Object>> queryIterator = parameter.entrySet().iterator();
111
+        queryIterator.forEachRemaining(e -> {
112
+            requestBuilder.addFormDataPart(e.getKey(), (String) e.getValue());
113
+        });
114
+
115
+        if (null != file) {
116
+            // application/octet-stream
117
+            requestBuilder.addFormDataPart("uploadFiles", file.getName(), RequestBody.create(MediaType.parse("application/octet-stream"), file));
118
+        }
119
+
120
+        // 设置自定义的 builder
121
+        builder.headers(headerBuilder.build()).post(requestBuilder.build());
122
+
123
+        try (Response execute = client.newCall(builder.build()).execute()) {
124
+            return execute.body().string();
125
+        }
126
+    }
127
+
128
+    /**
129
+     * post 请求, 请求参数 并且 携带文件上传二进制流
130
+     * @param url
131
+     * @param header
132
+     * @param parameter
133
+     * @param fileName 文件名
134
+     * @param fileByte 文件的二进制流
135
+     * @return
136
+     * @throws Exception
137
+     */
138
+    public static String doPost(String url, Map<String, Object> header, Map<String, Object> parameter, String fileName, byte [] fileByte) throws Exception {
139
+// 创建一个请求 Builder
140
+        Request.Builder builder = new Request.Builder();
141
+        // 创建一个 request
142
+        Request request = builder.url(url).build();
143
+
144
+        // 创建一个 Headers.Builder
145
+        Headers.Builder headerBuilder = request.headers().newBuilder();
146
+
147
+        // 装载请求头参数
148
+        Iterator<Map.Entry<String, Object>> headerIterator = header.entrySet().iterator();
149
+        headerIterator.forEachRemaining(e -> {
150
+            headerBuilder.add(e.getKey(), (String) e.getValue());
151
+        });
152
+
153
+        MultipartBody.Builder requestBuilder = new MultipartBody.Builder();
154
+
155
+        // 状态请求参数
156
+        Iterator<Map.Entry<String, Object>> queryIterator = parameter.entrySet().iterator();
157
+        queryIterator.forEachRemaining(e -> {
158
+            requestBuilder.addFormDataPart(e.getKey(), (String) e.getValue());
159
+        });
160
+
161
+        if (fileByte.length > 0) {
162
+            // application/octet-stream
163
+            requestBuilder.addFormDataPart("uploadFiles", fileName, RequestBody.create(MediaType.parse("application/octet-stream"), fileByte));
164
+        }
165
+
166
+        // 设置自定义的 builder
167
+        builder.headers(headerBuilder.build()).post(requestBuilder.build());
168
+
169
+        try (Response execute = client.newCall(builder.build()).execute()) {
170
+            return execute.body().string();
171
+        }
172
+    }
173
+
174
+
175
+    /**
176
+     * post 请求  携带文件上传
177
+     * @param url
178
+     * @param file
179
+     * @return
180
+     * @throws Exception
181
+     */
182
+    public static String doPost(String url, File file) throws Exception {
183
+        return doPost(url, Maps.newHashMap(), Maps.newHashMap(), file);
184
+    }
185
+
186
+    /**
187
+     * post 请求
188
+     * @param url
189
+     * @param header 请求头
190
+     * @param parameter 参数
191
+     * @return
192
+     * @throws Exception
193
+     */
194
+    public static String doPost(String url, Map<String, Object> header, Map<String, Object> parameter) throws Exception {
195
+        return doPost(url, header, parameter, null);
196
+    }
197
+
198
+    /**
199
+     * post 请求
200
+     * @param url
201
+     * @param parameter 参数
202
+     * @return
203
+     * @throws Exception
204
+     */
205
+    public static String doPost(String url, Map<String, Object> parameter) throws Exception {
206
+        return doPost(url, Maps.newHashMap(), parameter, null);
207
+    }
208
+
209
+    public static void main(String[] args) throws Exception {
210
+
211
+        byte [] fileByte = null;
212
+
213
+        File file = new File("C:\\Users\\szc\\Pictures\\file-read-4182.jpg");
214
+        FileInputStream fileInputStream = new FileInputStream(file);
215
+
216
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
217
+        byte[] b = new byte[1024];
218
+        int n;
219
+        while ((n = fileInputStream.read(b)) != -1)
220
+        {
221
+            bos.write(b, 0, n);
222
+        }
223
+        fileInputStream.close();
224
+        bos.close();
225
+        fileByte = bos.toByteArray();
226
+
227
+
228
+        Map<String, Object> queryMap = Maps.newHashMap();
229
+        queryMap.put("pageNum","2");
230
+        queryMap.put("pageSize","50");
231
+        System.out.println(OkHttpRequestUtils.doPost("http://localhost:8080/uploadImage" , Maps.newHashMap(), Maps.newHashMap(),file.getName(), fileByte));
232
+
233
+    }
234
+
235
+}

+ 26
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/common/welcome/WelcomeProperties.java Bestand weergeven

@@ -0,0 +1,26 @@
1
+package com.community.huiju.common.welcome;
2
+
3
+import lombok.AllArgsConstructor;
4
+import lombok.Data;
5
+import lombok.NoArgsConstructor;
6
+import org.springframework.boot.context.properties.ConfigurationProperties;
7
+import org.springframework.stereotype.Component;
8
+
9
+/**
10
+ * 迎宾系统配置
11
+ * @author weiximei
12
+ */
13
+@ConfigurationProperties(prefix = "welcome")
14
+@Component
15
+@Data
16
+@AllArgsConstructor
17
+@NoArgsConstructor
18
+public class WelcomeProperties {
19
+
20
+    /** 小区 **/
21
+    private Integer communityId;
22
+
23
+    /** 请求url **/
24
+    private String url;
25
+
26
+}

+ 17
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/controller/UserController.java Bestand weergeven

@@ -19,6 +19,7 @@ import org.springframework.beans.BeanUtils;
19 19
 import org.springframework.beans.factory.annotation.Autowired;
20 20
 import org.springframework.cloud.context.config.annotation.RefreshScope;
21 21
 import org.springframework.web.bind.annotation.*;
22
+import org.springframework.web.multipart.MultipartFile;
22 23
 
23 24
 import javax.servlet.http.HttpSession;
24 25
 import javax.xml.crypto.dsig.keyinfo.PGPData;
@@ -250,4 +251,20 @@ public class UserController extends BaseController {
250 251
         userVO.setToken(session.getId());
251 252
         return responseBean;
252 253
     }
254
+
255
+    @ApiOperation(value = "迎宾系统添加人员", notes = "迎宾系统添加人员")
256
+    @ApiImplicitParams({
257
+            @ApiImplicitParam(paramType = "form", dataTypeClass = String.class, value = "userName人员名称"),
258
+            @ApiImplicitParam(paramType = "form", dataTypeClass = MultipartFile.class, name = "file", value = "图片"),
259
+            @ApiImplicitParam(paramType = "path", dataTypeClass = String.class, name = "X-Auth-Token", value = "Token")
260
+    })
261
+    @RequestMapping(value = "/user/welcome/add", method = RequestMethod.POST)
262
+    public ResponseBean welcomeAddUser(@RequestParam("userName") String userName, @RequestParam("file") MultipartFile file, HttpSession session) {
263
+        ResponseBean responseBean = new ResponseBean();
264
+        UserElement userElement = (UserElement) session.getAttribute(Constant.APP_USER_SESSION);
265
+        TaUser user = new TaUser();
266
+        user.setUserName(userName);
267
+        responseBean = iTaUserService.welcomeFace(userElement, file, user);
268
+        return responseBean;
269
+    }
253 270
 }

+ 3
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/FaceServiceI.java Bestand weergeven

@@ -2,6 +2,8 @@ package com.community.huiju.service;
2 2
 
3 3
 
4 4
 import com.community.commom.mode.ResponseBean;
5
+import com.community.commom.session.UserElement;
6
+import com.community.huiju.model.TaUser;
5 7
 import org.springframework.web.multipart.MultipartFile;
6 8
 
7 9
 public interface FaceServiceI {
@@ -29,4 +31,5 @@ public interface FaceServiceI {
29 31
      * @return
30 32
      */
31 33
     ResponseBean getTaFaceByUserId(Integer userId,Integer otherUserId);
34
+
32 35
 }

+ 11
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/ITaUserService.java Bestand weergeven

@@ -1,7 +1,9 @@
1 1
 package com.community.huiju.service;
2 2
 
3 3
 import com.community.commom.mode.ResponseBean;
4
+import com.community.commom.session.UserElement;
4 5
 import com.community.huiju.model.TaUser;
6
+import org.springframework.web.multipart.MultipartFile;
5 7
 
6 8
 import java.util.List;
7 9
 
@@ -113,4 +115,13 @@ public interface ITaUserService {
113 115
      */
114 116
     ResponseBean temporaryLogin(Integer communityId);
115 117
 
118
+    /**
119
+     * 迎宾专用 接口
120
+     * @param userElement
121
+     * @param uploadFile
122
+     * @param user
123
+     * @return
124
+     */
125
+    ResponseBean welcomeFace(UserElement userElement, MultipartFile uploadFile, TaUser user);
126
+
116 127
 }

+ 4
- 4
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/FaceServicelimpl.java Bestand weergeven

@@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject;
3 3
 import com.community.commom.ailiyun.AESDecode;
4 4
 import com.community.commom.constant.Constant;
5 5
 import com.community.commom.mode.ResponseBean;
6
+import com.community.commom.session.UserElement;
6 7
 import com.community.huiju.common.hk.HKOpenApi;
7 8
 import com.community.huiju.dao.TaFaceMapper;
8 9
 import com.community.huiju.dao.TaSysRoleMapper;
@@ -44,6 +45,7 @@ public class FaceServicelimpl implements FaceServiceI {
44 45
     @Transactional(rollbackFor = Exception.class)
45 46
     public ResponseBean addFace(Integer userid, MultipartFile uploadFile,Integer otherUserId) {
46 47
         ResponseBean responseBean= new ResponseBean();
48
+
47 49
          String faceImg =img(uploadFile);
48 50
         /**当otherUserId不为空时判断它是否是业主下的租客或者家属*/
49 51
         if (null!= otherUserId) {
@@ -65,7 +67,7 @@ public class FaceServicelimpl implements FaceServiceI {
65 67
             taFace.setUpdateDate(new Date());
66 68
 
67 69
         /*验证身份*/
68
-        responseBean=addVerify( activeUser,  uploadFile, otherUserId, faceImg, taFace) ;
70
+        responseBean=addVerify( activeUser,  uploadFile, faceImg, taFace) ;
69 71
         return responseBean;
70 72
     }
71 73
 
@@ -218,7 +220,7 @@ public class FaceServicelimpl implements FaceServiceI {
218 220
     /**
219 221
      *各种身份校验
220 222
      */
221
-    public ResponseBean addVerify(Integer userid, MultipartFile uploadFile,Integer otherUserId,String faceImg,TaFace taFace) {
223
+    public ResponseBean addVerify(Integer userid, MultipartFile uploadFile,String faceImg,TaFace taFace) {
222 224
         ResponseBean response = new ResponseBean();
223 225
         TaSysRole sysRole = taSysRoleMapper.findRoleByUserId(userid);
224 226
         TaUser taUser = taUserMapper.selectByPrimaryKey(userid);
@@ -265,8 +267,6 @@ public class FaceServicelimpl implements FaceServiceI {
265 267
         response.addError("您的信息已存在");
266 268
         return response;
267 269
     }
268
-
269
-
270 270
 }
271 271
 
272 272
 

+ 65
- 0
CODE/smart-community/app-api/src/main/java/com/community/huiju/service/impl/TaUserServiceImpl.java Bestand weergeven

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
4 4
 import com.alibaba.fastjson.JSONObject;
5 5
 import com.community.commom.constant.Constant;
6 6
 import com.community.commom.mode.ResponseBean;
7
+import com.community.commom.session.UserElement;
7 8
 import com.community.commom.utils.AccountValidatorUtil;
8 9
 import com.community.commom.utils.BeanTools;
9 10
 import com.community.commom.utils.MD5Utils;
@@ -11,9 +12,12 @@ import com.community.commom.uuid.IdGen;
11 12
 import com.community.huiju.common.code.cache.AppkeyCache;
12 13
 import com.community.huiju.common.hk.HKConstant;
13 14
 import com.community.huiju.common.hk.HKOpenApi;
15
+import com.community.huiju.common.welcome.OkHttpRequestUtils;
16
+import com.community.huiju.common.welcome.WelcomeProperties;
14 17
 import com.community.huiju.dao.*;
15 18
 import com.community.huiju.model.*;
16 19
 import com.community.huiju.service.ITaUserService;
20
+import com.community.huiju.service.ImageServiceI;
17 21
 import com.community.huiju.vo.TaUserVO;
18 22
 import com.google.common.collect.Lists;
19 23
 import com.google.common.collect.Maps;
@@ -26,7 +30,9 @@ import org.springframework.beans.BeanUtils;
26 30
 import org.springframework.beans.factory.annotation.Autowired;
27 31
 import org.springframework.stereotype.Service;
28 32
 import org.springframework.transaction.annotation.Transactional;
33
+import org.springframework.web.multipart.MultipartFile;
29 34
 
35
+import java.io.IOException;
30 36
 import java.text.ParseException;
31 37
 import java.text.SimpleDateFormat;
32 38
 import java.time.LocalDate;
@@ -47,6 +53,9 @@ public class TaUserServiceImpl implements ITaUserService {
47 53
 
48 54
     private IdGen idGen = IdGen.get();
49 55
 
56
+    @Autowired
57
+    private WelcomeProperties welcomeProperties;
58
+
50 59
     @Autowired
51 60
     private TaUserMapper taUserMapper;
52 61
 
@@ -71,6 +80,9 @@ public class TaUserServiceImpl implements ITaUserService {
71 80
     @Autowired
72 81
     private TpBillInvoiceMapper tpBillInvoiceMapper;
73 82
 
83
+    @Autowired
84
+    private ImageServiceI imageService;
85
+
74 86
     @Transactional(rollbackFor = Exception.class)
75 87
     @Override
76 88
     @Deprecated
@@ -979,4 +991,57 @@ public class TaUserServiceImpl implements ITaUserService {
979 991
 
980 992
         return responseBean;
981 993
     }
994
+
995
+    @Override
996
+    @Transactional(rollbackFor = Exception.class)
997
+    public ResponseBean welcomeFace(UserElement userElement, MultipartFile uploadFile, TaUser user) {
998
+        ResponseBean responseBean = new ResponseBean();
999
+
1000
+        user.setCommunityId(userElement.getCommunityId());
1001
+        user.setParentId(userElement.getId());
1002
+        user.setCreateDate(new Date());
1003
+        user.setCreateUser(userElement.getId());
1004
+        user.setCommunityId(userElement.getCommunityId());
1005
+
1006
+        int rows = taUserMapper.insertSelective(user);
1007
+        if (rows <= 0) {
1008
+            responseBean.addError("操作失败!");
1009
+            return responseBean;
1010
+        }
1011
+
1012
+        // 角色  2 表示租客
1013
+        addOrUpdateUserRole(2,responseBean,user,true);
1014
+
1015
+        // 开始推送 迎宾系统
1016
+
1017
+        Map<String, Object> parameterMap = Maps.newHashMap();
1018
+        parameterMap.put("userId", user.getId());
1019
+        parameterMap.put("username", user.getUserName());
1020
+        try {
1021
+            OkHttpRequestUtils.doPost(welcomeProperties.getUrl(), Maps.newHashMap(), parameterMap, uploadFile.getOriginalFilename(), uploadFile.getBytes());
1022
+        } catch (Exception e) {
1023
+            e.printStackTrace();
1024
+            log.error("推送 迎宾系统失败!", e);
1025
+        }
1026
+
1027
+        // 开始存储人脸的图片到本地库
1028
+        TaFace taFace = new TaFace();
1029
+        taFace.setCommunityId(user.getCommunityId());
1030
+        taFace.setCreateDate(new Date());
1031
+        taFace.setCreateUser(user.getId());
1032
+        taFace.setTaUserId(user.getId());
1033
+        taFace.setUpdateDate(new Date());
1034
+        taFace.setUpdateUser(user.getId());
1035
+        try {
1036
+            taFace.setFaceImg(imageService.getImageUrl(uploadFile));
1037
+        } catch (IOException e) {
1038
+            e.printStackTrace();
1039
+            log.error("迎宾系统 人脸图片上传阿里云失败!", e);
1040
+        }
1041
+
1042
+        taFaceMapper.insertSelective(taFace);
1043
+
1044
+        responseBean.addSuccess("操作成功!");
1045
+        return responseBean;
1046
+    }
982 1047
 }

+ 7
- 1
CODE/smart-community/app-api/src/main/resources/application.yml Bestand weergeven

@@ -22,4 +22,10 @@ logging:
22 22
 alipay:
23 23
   APP_ID: 2019021463230548
24 24
   APP_PRIVATE_KEY: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkrvqeBeJNNeKByYSBq8U+V0STFBh70IGaHi2oPa3TiF6u2WAJ7YlH2h1S4Zj2Ezojckfl0m8y/nqpPay6gSMBOpR38A+94gNiH7BVfyecuuQ9z+2BJdOxN5RkEBBkUqeW4oUbrgY4mRLPRrUKvAu/4Brd0eojkkEW0hJUxqgKj+C4H5tR+6DRowHcO23Q/98+4qlSRjhygLVK4m+u8+zb26RxF4v0ogooF+EAZQLOqz3N4uaZs2ajgnecG0drtei7mxbpyqHMr0idP4U4Lx63yXViRNWpHQ7u7byOBQNV9MFHWPHKt+aNOqZ61LCXpJt777usQPzQJggZj6TpRtT3AgMBAAECggEAHM36Sf+PeJ/PMZJU2fV4d5H+DZe7PJTYxmM26zF2oQQ+Q2kEElh45Zdx/5g0D/6G8cJAbyNijdHTFJ0UBD8oJ0Peyie0KStKGjSevCWUgSZzW5ht22QJZfrpuqLQqyuF4q9WRuQmdGnZz2V3rxv7FiGVsWzQ/k3LkrlFuYxRwh7lpJvHC/ed5o1NI4t+w0lBNp3qonJJ8QYsAGWoJR8iP/XrupErrTivRHkyzEos1DsDdPb5TPV21D+YO7FlqTb6/nqqJH6IOjxMI/PlWGRS3l12TeHqv8W2PWIrZvcTGBqMOiHKGt9Y2ZAIelKBGv+lr2G4yaSnWSXec+6V4x3sWQKBgQDv9r26pbBoEtwGd55zAXTr+0A4jwfgUtVm0Z2b/WG857k+iR5hdLX6PHinbgD7sFpRAhoWGNLPa88ZjPDD0JyFwVMEN176k6zEyrBSbbyoCYJeYbWikebdKdiKNE/WFqZGS3Olm3pdHxwD2Q92H61XHLveWRHmYGAlTi66txPh6wKBgQCvsFr8CUt4Y8RU0RGvBLG7JRpRIaVKF34r6YsHZhpAluQ1WAqJEezmYMTfLi81UNYUZHaw7SyG1O+WiEMpWH0Y+qV/z6OUn+37lll7RsIpy9EGLY4L51emCClBmcUIGp80sA2rfF4U8dc23lwIHpLSUWoKOlcQO4gqzLICTLwKJQKBgGjlCvrUAtD7rYKGN5U+RcYCBoiyvVap3u8bIjJWCKty/97+QXGIeyPv2y4VQAjFhjVzHcQbBcv17InWukheoI03fPqS2cnfU96SW5EstxMdVQe83pE6BhkXebiwNVX4gKapxNvXox2hw7VK5R9VqYgy30zK0rBJ4L1t969W6DIRAoGALGSzmNwAZftPsN7jSQY2osNNUxLdYUtuZkotB0GVgJygLZqBjwEoi04IcRyKcT5r2dtI4owLpEZKBA+KaPgjJByxlQoym2uOBvSGx8+pYEZQGu+H5Rof26RUSG9Cijmv4PBbg+l5HHG/n+2v851GHD7WPJ9hQIjKb4YptMsO+MECgYEAyD8rx2Vk2smh5chVkkiw1QMSoV91B+dJ8+B/G0Moxy9Hzp/s4O8mG4B2ByCkcRgkbMTJmNndk5MTd0gjX4C4C3FKf2vbdqFuCKAPzJ0rTs/rLcjz2/g8I7BMvVd/sEh77iewsVLvSLhF2ZRxD9Mc2qfffU4hq8F4WIyLVgvizFU=
25
-  ALIPAY_PUBLIC_KEY: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnJtkEz+TiJR/KbLDeP0rKQTSrQO7g8sGU0G0RYIN3KF6CiWd+eaT/ioM0BpR1Jx+IuAdpo3DFBqhLA6ABSHXFZPRikcxNlsyz2JgkwzfsRY+DxcPnYYNZFK7pUbku8L/AIxZiFQcbunwz36acazaZpun0zgrQlcBZqBCTCIgkT2fMQbPTm/MrmUKjDTE0VP+1mFyjYUVZWpJEYE5AJ3+x7jAPmuEdSMwKONUtOOTByDrkmXJ60RGE8zCmO/oUmOGxnTQRYfNjvBZ0lbVdP/bAw6qHVFBElzPHjNerbMK/geLuiLs3vkDY9tw7A4GQYMnjKuoetuMUhxZ6nRTH6NCeQIDAQAB
25
+  ALIPAY_PUBLIC_KEY: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnJtkEz+TiJR/KbLDeP0rKQTSrQO7g8sGU0G0RYIN3KF6CiWd+eaT/ioM0BpR1Jx+IuAdpo3DFBqhLA6ABSHXFZPRikcxNlsyz2JgkwzfsRY+DxcPnYYNZFK7pUbku8L/AIxZiFQcbunwz36acazaZpun0zgrQlcBZqBCTCIgkT2fMQbPTm/MrmUKjDTE0VP+1mFyjYUVZWpJEYE5AJ3+x7jAPmuEdSMwKONUtOOTByDrkmXJ60RGE8zCmO/oUmOGxnTQRYfNjvBZ0lbVdP/bAw6qHVFBElzPHjNerbMK/geLuiLs3vkDY9tw7A4GQYMnjKuoetuMUhxZ6nRTH6NCeQIDAQAB
26
+
27
+# 迎宾系统
28
+welcome:
29
+  communityId: 83
30
+  url: http://xxxxxxxx
31
+