Commit 3009e2ac365fd61592b29348170bb183d2ef47db
1 parent
cd07eb23
Exists in
master
权限模板增加
Showing
26 changed files
with
768 additions
and
236 deletions
Show diff stats
cloud/dahua/src/main/java/com/example/dahua/bean/StudentBean.java
... | ... | @@ -39,7 +39,7 @@ public class StudentBean implements Serializable { |
39 | 39 | |
40 | 40 | private String Face; |
41 | 41 | |
42 | - private String StudentCode; | |
42 | +// private String StudentCode; | |
43 | 43 | |
44 | 44 | private String student_num; |
45 | 45 | |
... | ... | @@ -201,13 +201,13 @@ public class StudentBean implements Serializable { |
201 | 201 | Face = face; |
202 | 202 | } |
203 | 203 | |
204 | - public String getStudentCode() { | |
205 | - return StudentCode; | |
206 | - } | |
207 | - | |
208 | - public void setStudentCode(String studentCode) { | |
209 | - StudentCode = studentCode; | |
210 | - } | |
204 | +// public String getStudentCode() { | |
205 | +// return StudentCode; | |
206 | +// } | |
207 | +// | |
208 | +// public void setStudentCode(String studentCode) { | |
209 | +// StudentCode = studentCode; | |
210 | +// } | |
211 | 211 | |
212 | 212 | public long getID() { |
213 | 213 | return ID; |
... | ... | @@ -245,7 +245,7 @@ public class StudentBean implements Serializable { |
245 | 245 | ", AddTime=" + AddTime + |
246 | 246 | ", Sex=" + Sex + |
247 | 247 | ", Face='" + Face + '\'' + |
248 | - ", StudentCode='" + StudentCode + '' + | |
248 | +// ", StudentCode='" + StudentCode + '' + | |
249 | 249 | ", student_num='" + student_num + '\'' + |
250 | 250 | ", student_id='" + student_id + '\'' + |
251 | 251 | ", user_id='" + user_id + '\'' + | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/FaceUnifyController.java
... | ... | @@ -44,4 +44,12 @@ public class FaceUnifyController { |
44 | 44 | return JSON.toJSONString(permissFaceService.getPermissions(schoolId)); |
45 | 45 | } |
46 | 46 | |
47 | + | |
48 | + @RequestMapping(value = "addFace",method = RequestMethod.POST) | |
49 | + @ApiOperation("上传学生/老师人脸") | |
50 | + public String addFace(@RequestParam("imgUrl")String imgUrl,@RequestParam("userId")String userId) throws UnsupportedEncodingException { | |
51 | + return JSON.toJSONString(permissFaceService.addFace(imgUrl,userId)); | |
52 | + } | |
53 | + | |
54 | + | |
47 | 55 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/control/UserControl.java
... | ... | @@ -115,186 +115,15 @@ public class UserControl { |
115 | 115 | @RequestMapping(value = "checkFace", method = RequestMethod.GET) |
116 | 116 | @ApiOperation("在线活体检测") |
117 | 117 | public boolean checkFace(@RequestParam("url") String httpurl) { |
118 | - // 请求url | |
119 | - String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceverify"; | |
120 | - try { | |
121 | - | |
122 | - List list = new ArrayList(); | |
123 | - Map<String, String> map = new HashMap<>(); | |
124 | - String image_type = ""; | |
125 | - String imgFilePath = httpurl; | |
126 | - File target = new File("./huoti/"); | |
127 | - if (!target.exists()) target.mkdirs(); | |
128 | - File target1 = new File(target.getAbsolutePath(), new File(httpurl).getName()); | |
129 | - if (httpurl.startsWith("http")) image_type = "URL"; | |
130 | - else { | |
131 | - CompressPic.CompressPic(httpurl, target1.getAbsolutePath(), "");//压缩后的图片 | |
132 | - image_type = "BASE64"; | |
133 | - httpurl = Base64Util.encode(image2byte(target1.getAbsolutePath())); | |
134 | - } | |
135 | - map.put("image", httpurl); | |
136 | - map.put("image_type", image_type); | |
137 | -// map.put("face_field",""); | |
138 | -// map.put("option","GATE"); | |
139 | - list.add(map); | |
140 | - String param = GsonUtils.toJson(list); | |
141 | - // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 | |
142 | - String accessToken = getAuth(); | |
143 | - | |
144 | - String result1 = HttpUtil.post(url, accessToken, "application/json", param); | |
145 | - JSONObject jsonObject = new JSONObject(result1); | |
146 | - String error_msg = jsonObject.optString("error_msg"); | |
147 | - JSONObject result = jsonObject.optJSONObject("result"); | |
148 | - if (error_msg.equals("SUCCESS")) { | |
149 | - double face_liveness = result.optDouble("face_liveness", 0.00);//活体分数值 | |
150 | - JSONArray face_list = result.optJSONArray("face_list"); | |
151 | - JSONObject location = face_list.optJSONObject(0).optJSONObject("location"); | |
152 | - double rotation = location.optDouble("rotation", 0.0);//竖直方向旋转角度 | |
153 | - System.out.println(" face_liveness:" + face_liveness); | |
154 | - if (face_liveness > 0.4) { | |
155 | - int angel = 0; | |
156 | - if (45 < rotation && rotation < 135) {//右向横图,需要旋转270度 | |
157 | - System.out.println("旋转270度"); | |
158 | - angel = 270; | |
159 | - } else if (rotation > -135 && rotation < -45) {//左向横图,需要旋转90度 | |
160 | - System.out.println("旋转90度"); | |
161 | - angel = 90; | |
162 | - } else if (rotation >= -180 && rotation <= -135 || rotation >= 135 && rotation <= 180) {//倒向图片,需要旋转180度 | |
163 | - System.out.println("旋转180度"); | |
164 | - angel = 180; | |
165 | - } | |
166 | - System.out.println("图片检验成功"); | |
167 | - FileUtils.getInstance().writeLogs("检测成功:" + imgFilePath, FileUtils.checkSuc); | |
168 | - //E:\wwwhtdocs\SmartCampus\face17e50\School | |
169 | - //http://campus.myjxt.com//face17e5/School861/Student/GBZX20171134.jpg | |
170 | - //F:\wwwroot\smartcampus\face17e5 | |
171 | -// imgFilePath =httpurl.replace("http://campus.myjxt.com","E:\\wwwhtdocs\\SmartCampus"); | |
172 | -// imgFilePath = httpurl.replace("http://60.190.202.57:1000","F:\\wwwroot\\smartcampus"); | |
173 | -// System.out.println("图片是否存在:" + imgFilePath); | |
174 | - if (angel != 0) | |
175 | - ImageUtils.rotatePhonePhoto(imgFilePath, angel); | |
176 | - return true; | |
177 | - } else { | |
178 | - FileUtils.getInstance().writeLogs("检测失败,活体分数:" + face_liveness + " " + imgFilePath, FileUtils.checkFail); | |
179 | - System.out.println("图片不合格" + imgFilePath); | |
180 | - deleteImgFile(imgFilePath); | |
181 | - return false; | |
182 | - } | |
183 | - } else { | |
184 | - System.out.println("检测失败"); | |
185 | - FileUtils.getInstance().writeLogs("检测失败:" + error_msg + imgFilePath, FileUtils.checkFail); | |
186 | - deleteImgFile(imgFilePath); | |
187 | - return false; | |
188 | - } | |
189 | - } catch (Exception e) { | |
190 | - e.printStackTrace(); | |
191 | - } | |
192 | - return true; | |
193 | - } | |
194 | 118 | |
195 | - private boolean deleteImgFile(String imgFilePath) { | |
196 | - imgFilePath = imgFilePath.replace("http://campus.myjxt.com", "E:\\wwwhtdocs\\SmartCampus"); | |
197 | - File file = new File(imgFilePath); | |
198 | - if (file.exists()) { | |
199 | - return file.delete(); | |
200 | - } | |
201 | - return false; | |
202 | - } | |
119 | + return BaiduUtils.getBaiduUtils().checkImg(httpurl); | |
203 | 120 | |
204 | - //图片到byte数组 | |
205 | - public byte[] image2byte(String path) { | |
206 | - byte[] data = null; | |
207 | - FileImageInputStream input = null; | |
208 | - try { | |
209 | - input = new FileImageInputStream(new File(path)); | |
210 | - ByteArrayOutputStream output = new ByteArrayOutputStream(); | |
211 | - byte[] buf = new byte[1024]; | |
212 | - int numBytesRead = 0; | |
213 | - while ((numBytesRead = input.read(buf)) != -1) { | |
214 | - output.write(buf, 0, numBytesRead); | |
215 | - } | |
216 | - data = output.toByteArray(); | |
217 | - output.close(); | |
218 | - input.close(); | |
219 | - } catch (FileNotFoundException ex1) { | |
220 | - ex1.printStackTrace(); | |
221 | - } catch (IOException ex1) { | |
222 | - ex1.printStackTrace(); | |
223 | - } | |
224 | - return data; | |
225 | 121 | } |
226 | 122 | |
227 | - /** | |
228 | - * 获取权限token | |
229 | - * | |
230 | - * @return 返回示例: | |
231 | - * { | |
232 | - * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567", | |
233 | - * "expires_in": 2592000 | |
234 | - * } | |
235 | - */ | |
236 | - public String getAuth() { | |
237 | - // 官网获取的 API Key 更新为你注册的 | |
238 | - String clientId = "u6rV4YxRZmwzKj56N0DCW8eO"; | |
239 | - // 官网获取的 Secret Key 更新为你注册的 | |
240 | - String clientSecret = "Krp3KhmIBdnNEsRa1LavMHuZl0KhQGVm"; | |
241 | - return getAuth(clientId, clientSecret); | |
242 | - } | |
243 | 123 | |
244 | - /** | |
245 | - * 获取API访问token | |
246 | - * 该token有一定的有效期,需要自行管理,当失效时需重新获取. | |
247 | - * | |
248 | - * @param ak - 百度云官网获取的 API Key | |
249 | - * @param sk - 百度云官网获取的 Securet Key | |
250 | - * @return assess_token 示例: | |
251 | - * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567" | |
252 | - */ | |
253 | - public static String getAuth(String ak, String sk) { | |
254 | - // 获取token地址 | |
255 | - String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; | |
256 | - String getAccessTokenUrl = authHost | |
257 | - // 1. grant_type为固定参数 | |
258 | - + "grant_type=client_credentials" | |
259 | - // 2. 官网获取的 API Key | |
260 | - + "&client_id=" + ak | |
261 | - // 3. 官网获取的 Secret Key | |
262 | - + "&client_secret=" + sk; | |
263 | - try { | |
264 | - URL realUrl = new URL(getAccessTokenUrl); | |
265 | - // 打开和URL之间的连接 | |
266 | - HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); | |
267 | - connection.setRequestMethod("GET"); | |
268 | - connection.connect(); | |
269 | - // 获取所有响应头字段 | |
270 | - Map<String, List<String>> map = connection.getHeaderFields(); | |
271 | - // 遍历所有的响应头字段 | |
272 | -// for (String key : map.keySet()) { | |
273 | -// System.err.println(key + "--->" + map.get(key)); | |
274 | -// } | |
275 | - // 定义 BufferedReader输入流来读取URL的响应 | |
276 | - BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); | |
277 | - String result = ""; | |
278 | - String line; | |
279 | - while ((line = in.readLine()) != null) { | |
280 | - result += line; | |
281 | - } | |
282 | - /** | |
283 | - * 返回结果示例 | |
284 | - */ | |
285 | -// System.err.println("result:" + result); | |
286 | - JSONObject jsonObject = new JSONObject(result); | |
287 | - String access_token = jsonObject.getString("access_token"); | |
288 | - return access_token; | |
289 | - } catch (Exception e) { | |
290 | - System.err.printf("获取token失败!"); | |
291 | - e.printStackTrace(System.err); | |
292 | - } | |
293 | - return null; | |
294 | - } | |
295 | 124 | |
296 | 125 | |
297 | - @RequestMapping(value = "tranpic", method = RequestMethod.GET) | |
126 | + /*@RequestMapping(value = "tranpic", method = RequestMethod.GET) | |
298 | 127 | @ApiOperation("旋转图片") |
299 | 128 | public void tranPic(@RequestParam("path") String httpurl) { |
300 | 129 | // 请求url |
... | ... | @@ -366,7 +195,7 @@ public class UserControl { |
366 | 195 | } catch (Exception e) { |
367 | 196 | e.printStackTrace(); |
368 | 197 | } |
369 | - } | |
198 | + }*/ | |
370 | 199 | |
371 | 200 | // @RequestMapping(value = "deleteFace", method = RequestMethod.GET) |
372 | 201 | // @ApiOperation("删除人脸") |
... | ... | @@ -377,7 +206,7 @@ public class UserControl { |
377 | 206 | // } |
378 | 207 | |
379 | 208 | |
380 | - @RequestMapping(value = "FaceSearch", method = RequestMethod.POST) | |
209 | + /* @RequestMapping(value = "FaceSearch", method = RequestMethod.POST) | |
381 | 210 | @ApiOperation("人脸搜索") |
382 | 211 | public String FaceSearch(@RequestPart("file") MultipartFile file) { |
383 | 212 | |
... | ... | @@ -401,7 +230,7 @@ public class UserControl { |
401 | 230 | } |
402 | 231 | return null; |
403 | 232 | |
404 | - } | |
233 | + }*/ | |
405 | 234 | |
406 | 235 | |
407 | 236 | @RequestMapping(value = "movePic", method = RequestMethod.GET) |
... | ... | @@ -451,7 +280,7 @@ public class UserControl { |
451 | 280 | |
452 | 281 | } |
453 | 282 | |
454 | - @RequestMapping(value = "translatePic", method = RequestMethod.POST) | |
283 | + /* @RequestMapping(value = "translatePic", method = RequestMethod.POST) | |
455 | 284 | @ApiOperation("图片转文字") |
456 | 285 | public String translatePic(@RequestPart MultipartFile file) { |
457 | 286 | try { |
... | ... | @@ -479,13 +308,13 @@ public class UserControl { |
479 | 308 | e.printStackTrace(); |
480 | 309 | } |
481 | 310 | return "解析失败"; |
482 | - } | |
311 | + }*/ | |
483 | 312 | |
484 | 313 | |
485 | 314 | private String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" + AuthService.getAuth(); |
486 | 315 | // + AuthService.getAuth(); |
487 | 316 | |
488 | - private String getAnswer(String imgUrl, int type) { | |
317 | + /* private String getAnswer(String imgUrl, int type) { | |
489 | 318 | RestTemplate restTemplate = new RestTemplate(); |
490 | 319 | |
491 | 320 | HttpHeaders headers = new HttpHeaders(); |
... | ... | @@ -521,6 +350,6 @@ public class UserControl { |
521 | 350 | System.out.println("result:" + stringBuilder.toString()); |
522 | 351 | } |
523 | 352 | return stringBuilder.toString().equals("") ? "" : stringBuilder.toString(); |
524 | - } | |
353 | + }*/ | |
525 | 354 | |
526 | 355 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/dao/UserDao.java
... | ... | @@ -23,6 +23,9 @@ public interface UserDao { |
23 | 23 | @Select(" select Top(1)* from SZ_V_School_Student where school_id = #{school_id} and studentcode = #{studentcode}") |
24 | 24 | UserInfoBean getUserInfo(@Param("school_id") String school_id, @Param("studentcode") String studentcode); |
25 | 25 | |
26 | + @Select("select * from SZ_V_School_Student where school_id = 1066 and class_id between 78506 and 78514") | |
27 | + List<UserInfoBean> getStuUserInfos(); | |
28 | + | |
26 | 29 | @Select(" select Top(1)* from SZ_V_School_Teacher where school_id = #{school_id} and num = #{num}") |
27 | 30 | TeacherBean getTeacher(@Param("school_id") String school_id, @Param("num") String num); |
28 | 31 | |
... | ... | @@ -88,6 +91,9 @@ public interface UserDao { |
88 | 91 | @Select("select * from SZ_Attendance where clint_type = #{clint_type} and school_id = #{school_id}") |
89 | 92 | List<AttendanceBean> selectDeviceWithschool_id(@Param("clint_type") String clint_type, @Param("school_id") String school_id); |
90 | 93 | |
94 | + @Select("select * from SZ_Attendance where school_id = #{school_id}") | |
95 | + List<AttendanceBean> getAllDevices(@Param("school_id") String school_id); | |
96 | + | |
91 | 97 | @Select("select * from SZ_V_School_Student where school_id = #{school_id} and len(photo)>0 and len(student_num)>0") |
92 | 98 | List<StudentBean> getAllStudentsWithSchoolId(@Param("school_id") String school_id); |
93 | 99 | |
... | ... | @@ -118,4 +124,13 @@ public interface UserDao { |
118 | 124 | |
119 | 125 | @Select(" select * from SZ_V_School_Teacher where school_id = #{school_id}") |
120 | 126 | List<TeacherBean> getTeachers(@Param("school_id") String school_id); |
127 | + | |
128 | + @Select("select * from SZ_User where user_id =#{userId} and state = 1") | |
129 | + void getUserWidthUserId(@Param("userId") String userId); | |
130 | + | |
131 | + @Select("select * from SZ_V_School_Student where user_id = #{userId}") | |
132 | + List<StudentBean> getStudentWithUserId(@Param("userId")String userId); | |
133 | + | |
134 | + @Select("select * from SZ_V_School_Teacher where user_id = #{userId}") | |
135 | + List<TeacherBean> getTeaWithUserId(@Param("userId")String userId); | |
121 | 136 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/service/PermissFaceService.java
cloud/dahua/src/main/java/com/example/dahua/service/imp/PermissFaceServiceImp.java
... | ... | @@ -5,12 +5,22 @@ import com.example.dahua.bean.*; |
5 | 5 | import com.example.dahua.dao.PermissionFaceDao; |
6 | 6 | import com.example.dahua.dao.UserDao; |
7 | 7 | import com.example.dahua.service.PermissFaceService; |
8 | +import com.example.dahua.utils.BaiduUtils; | |
9 | +import com.example.dahua.utils.HttpUtil; | |
8 | 10 | import com.example.dahua.utils.HttpUtils; |
9 | 11 | import lombok.extern.slf4j.Slf4j; |
10 | 12 | import org.springframework.beans.factory.annotation.Autowired; |
13 | +import org.springframework.http.HttpMethod; | |
14 | +import org.springframework.http.ResponseEntity; | |
11 | 15 | import org.springframework.stereotype.Service; |
12 | 16 | import org.springframework.util.StringUtils; |
17 | +import org.springframework.web.client.RestTemplate; | |
13 | 18 | |
19 | +import java.io.File; | |
20 | +import java.io.FileOutputStream; | |
21 | +import java.io.IOException; | |
22 | +import java.net.URI; | |
23 | +import java.net.URISyntaxException; | |
14 | 24 | import java.util.List; |
15 | 25 | |
16 | 26 | @Slf4j |
... | ... | @@ -114,8 +124,6 @@ public class PermissFaceServiceImp implements PermissFaceService { |
114 | 124 | } |
115 | 125 | |
116 | 126 | |
117 | - | |
118 | - | |
119 | 127 | @Override |
120 | 128 | public ResponseBeanList<PermissionFaceBean> getPermissions(int schoolId) { |
121 | 129 | ResponseBeanList responseBeanList = new ResponseBeanList(); |
... | ... | @@ -149,4 +157,93 @@ public class PermissFaceServiceImp implements PermissFaceService { |
149 | 157 | } |
150 | 158 | return responseBeanList; |
151 | 159 | } |
160 | + | |
161 | + @Override | |
162 | + public ResponseBean<String> addFace(String imgUrl, String userId) { | |
163 | + | |
164 | + RestTemplate restTemplate = new RestTemplate(); | |
165 | + try { | |
166 | + URI uri = new URI(imgUrl); | |
167 | + ResponseEntity<byte[]> responseEntity = restTemplate.exchange(uri, HttpMethod.GET, null, byte[].class); | |
168 | + | |
169 | + byte[] bytes = responseEntity.getBody(); | |
170 | + | |
171 | + String savePath = "./imgsave/"; | |
172 | + File saveFile = new File(savePath); | |
173 | + if (!saveFile.exists()) saveFile.mkdirs(); | |
174 | + File saveImgFile = new File(savePath, System.currentTimeMillis() + ".jpg"); | |
175 | + if (!saveImgFile.exists()) saveImgFile.createNewFile(); | |
176 | + FileOutputStream fileOutputStream = new FileOutputStream(saveImgFile); | |
177 | + | |
178 | + fileOutputStream.write(bytes); | |
179 | + | |
180 | + //检测图片 | |
181 | + BaiduUtils.getBaiduUtils().checkImg(saveImgFile.getAbsolutePath()); | |
182 | + | |
183 | + List<StudentBean> studentBeans = userDao.getStudentWithUserId(userId); | |
184 | + | |
185 | + if (null != studentBeans && studentBeans.size() > 0) { | |
186 | + log.error("学生下发"); | |
187 | + for (int i = 0; i < studentBeans.size(); i++) { | |
188 | + StudentBean studentBean = studentBeans.get(i); | |
189 | + int schoolId = studentBean.getSchool_id(); | |
190 | + uploadImgs(saveImgFile, schoolId + "", studentBean.getStudentcode(), 2, studentBean.getCard(), studentBean.getName()); | |
191 | + } | |
192 | + | |
193 | + } else { | |
194 | + List<TeacherBean> teacherBeans = userDao.getTeaWithUserId(userId); | |
195 | +log.error("教师下发"); | |
196 | + if (null != teacherBeans && teacherBeans.size() > 0) { | |
197 | + | |
198 | + for (int i = 0; i < teacherBeans.size(); i++) { | |
199 | + TeacherBean teacherBean = teacherBeans.get(i); | |
200 | + | |
201 | + String schoolId = teacherBean.getSchool_id(); | |
202 | + uploadImgs(saveImgFile, schoolId, teacherBean.getNum(), 1, teacherBean.getTeacher_num(), teacherBean.getName()); | |
203 | + | |
204 | + } | |
205 | + | |
206 | + } | |
207 | + | |
208 | + } | |
209 | + | |
210 | + fileOutputStream.close(); | |
211 | + } catch (URISyntaxException | IOException e) { | |
212 | + e.printStackTrace(); | |
213 | + } | |
214 | + | |
215 | +// userDao.getUserWidthUserId(userId); | |
216 | + | |
217 | +// HttpUtils.uploadImgs() | |
218 | + | |
219 | + ResponseBean responseBean = new ResponseBean(); | |
220 | + | |
221 | + responseBean.setData(1); | |
222 | + responseBean.setMessage("下发成功"); | |
223 | + responseBean.setData(true); | |
224 | + | |
225 | + return responseBean; | |
226 | + } | |
227 | + | |
228 | + private void uploadImgs(File saveImgFile, String schoolId, String studentcode, int userType, String card, String name) { | |
229 | + List<AttendanceBean> attendanceBeanList = userDao.getAllDevices(schoolId + ""); | |
230 | + if (null != attendanceBeanList && attendanceBeanList.size() > 0) | |
231 | + for (int i = 0; i < attendanceBeanList.size(); i++) { | |
232 | + AttendanceBean attendanceBean = attendanceBeanList.get(i); | |
233 | + | |
234 | + String clintType = attendanceBean.getClint_type(); | |
235 | + //根据设备类型上传人脸 | |
236 | + log.error("设备:{}",clintType); | |
237 | + if (clintType.equals("18") || clintType.equals("28")) { | |
238 | + HttpUtils.uploadImg2HK(saveImgFile.getAbsolutePath(), card, name, attendanceBean.getClint_id(), String.valueOf(userType)); | |
239 | + | |
240 | + } else if (clintType.equals("22") || clintType.equals("29")) { | |
241 | + HttpUtils.uploadImgs(saveImgFile, schoolId, studentcode | |
242 | + , clintType, userType); | |
243 | + } | |
244 | + | |
245 | + } | |
246 | + | |
247 | + | |
248 | + } | |
152 | 249 | } | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/utils/BaiduUtils.java
0 → 100644
... | ... | @@ -0,0 +1,211 @@ |
1 | +package com.example.dahua.utils; | |
2 | + | |
3 | +import com.example.dahua.async.ImageUtils; | |
4 | +import com.example.dahua.lib.CompressPic; | |
5 | +import org.json.JSONArray; | |
6 | +import org.json.JSONObject; | |
7 | + | |
8 | +import javax.imageio.stream.FileImageInputStream; | |
9 | +import java.io.*; | |
10 | +import java.net.HttpURLConnection; | |
11 | +import java.net.URL; | |
12 | +import java.util.ArrayList; | |
13 | +import java.util.HashMap; | |
14 | +import java.util.List; | |
15 | +import java.util.Map; | |
16 | + | |
17 | +public class BaiduUtils { | |
18 | + | |
19 | + private static BaiduUtils baiduUtils; | |
20 | + | |
21 | + public static BaiduUtils getBaiduUtils(){ | |
22 | + | |
23 | + if (null==baiduUtils){ | |
24 | + synchronized (BaiduUtils.class){ | |
25 | + if (null==baiduUtils)baiduUtils=new BaiduUtils(); | |
26 | + } | |
27 | + } | |
28 | + return baiduUtils; | |
29 | + } | |
30 | + | |
31 | + | |
32 | + public boolean checkImg(String httpurl){ | |
33 | + // 请求url | |
34 | + String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceverify"; | |
35 | + try { | |
36 | + | |
37 | + List list = new ArrayList(); | |
38 | + Map<String, String> map = new HashMap<>(); | |
39 | + String image_type = ""; | |
40 | + String imgFilePath = httpurl; | |
41 | + File target = new File("./huoti/"); | |
42 | + if (!target.exists()) target.mkdirs(); | |
43 | + File target1 = new File(target.getAbsolutePath(), new File(httpurl).getName()); | |
44 | + if (httpurl.startsWith("http")) image_type = "URL"; | |
45 | + else { | |
46 | + CompressPic.CompressPic(httpurl, target1.getAbsolutePath(), "");//压缩后的图片 | |
47 | + image_type = "BASE64"; | |
48 | + httpurl = Base64Util.encode(image2byte(target1.getAbsolutePath())); | |
49 | + } | |
50 | + map.put("image", httpurl); | |
51 | + map.put("image_type", image_type); | |
52 | +// map.put("face_field",""); | |
53 | +// map.put("option","GATE"); | |
54 | + list.add(map); | |
55 | + String param = GsonUtils.toJson(list); | |
56 | + // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 | |
57 | + String accessToken = getAuth(); | |
58 | + | |
59 | + String result1 = HttpUtil.post(url, accessToken, "application/json", param); | |
60 | + JSONObject jsonObject = new JSONObject(result1); | |
61 | + String error_msg = jsonObject.optString("error_msg"); | |
62 | + JSONObject result = jsonObject.optJSONObject("result"); | |
63 | + if (error_msg.equals("SUCCESS")) { | |
64 | + double face_liveness = result.optDouble("face_liveness", 0.00);//活体分数值 | |
65 | + JSONArray face_list = result.optJSONArray("face_list"); | |
66 | + JSONObject location = face_list.optJSONObject(0).optJSONObject("location"); | |
67 | + double rotation = location.optDouble("rotation", 0.0);//竖直方向旋转角度 | |
68 | + System.out.println(" face_liveness:" + face_liveness); | |
69 | + if (face_liveness > 0.4) { | |
70 | + int angel = 0; | |
71 | + if (45 < rotation && rotation < 135) {//右向横图,需要旋转270度 | |
72 | + System.out.println("旋转270度"); | |
73 | + angel = 270; | |
74 | + } else if (rotation > -135 && rotation < -45) {//左向横图,需要旋转90度 | |
75 | + System.out.println("旋转90度"); | |
76 | + angel = 90; | |
77 | + } else if (rotation >= -180 && rotation <= -135 || rotation >= 135 && rotation <= 180) {//倒向图片,需要旋转180度 | |
78 | + System.out.println("旋转180度"); | |
79 | + angel = 180; | |
80 | + } | |
81 | + System.out.println("图片检验成功"); | |
82 | + FileUtils.getInstance().writeLogs("检测成功:" + imgFilePath, FileUtils.checkSuc); | |
83 | + //E:\wwwhtdocs\SmartCampus\face17e50\School | |
84 | + //http://campus.myjxt.com//face17e5/School861/Student/GBZX20171134.jpg | |
85 | + //F:\wwwroot\smartcampus\face17e5 | |
86 | +// imgFilePath =httpurl.replace("http://campus.myjxt.com","E:\\wwwhtdocs\\SmartCampus"); | |
87 | +// imgFilePath = httpurl.replace("http://60.190.202.57:1000","F:\\wwwroot\\smartcampus"); | |
88 | +// System.out.println("图片是否存在:" + imgFilePath); | |
89 | + if (angel != 0) | |
90 | + ImageUtils.rotatePhonePhoto(imgFilePath, angel); | |
91 | + return true; | |
92 | + } else { | |
93 | + FileUtils.getInstance().writeLogs("检测失败,活体分数:" + face_liveness + " " + imgFilePath, FileUtils.checkFail); | |
94 | + System.out.println("图片不合格" + imgFilePath); | |
95 | + deleteImgFile(imgFilePath); | |
96 | + return false; | |
97 | + } | |
98 | + } else { | |
99 | + System.out.println("检测失败"); | |
100 | + FileUtils.getInstance().writeLogs("检测失败:" + error_msg + imgFilePath, FileUtils.checkFail); | |
101 | + deleteImgFile(imgFilePath); | |
102 | + return false; | |
103 | + } | |
104 | + } catch (Exception e) { | |
105 | + e.printStackTrace(); | |
106 | + } | |
107 | + return true; | |
108 | + } | |
109 | + | |
110 | + //图片到byte数组 | |
111 | + public byte[] image2byte(String path) { | |
112 | + byte[] data = null; | |
113 | + FileImageInputStream input = null; | |
114 | + try { | |
115 | + input = new FileImageInputStream(new File(path)); | |
116 | + ByteArrayOutputStream output = new ByteArrayOutputStream(); | |
117 | + byte[] buf = new byte[1024]; | |
118 | + int numBytesRead = 0; | |
119 | + while ((numBytesRead = input.read(buf)) != -1) { | |
120 | + output.write(buf, 0, numBytesRead); | |
121 | + } | |
122 | + data = output.toByteArray(); | |
123 | + output.close(); | |
124 | + input.close(); | |
125 | + } catch (FileNotFoundException ex1) { | |
126 | + ex1.printStackTrace(); | |
127 | + } catch (IOException ex1) { | |
128 | + ex1.printStackTrace(); | |
129 | + } | |
130 | + return data; | |
131 | + } | |
132 | + | |
133 | + private boolean deleteImgFile(String imgFilePath) { | |
134 | + imgFilePath = imgFilePath.replace("http://campus.myjxt.com", "E:\\wwwhtdocs\\SmartCampus"); | |
135 | + File file = new File(imgFilePath); | |
136 | + if (file.exists()) { | |
137 | + return file.delete(); | |
138 | + } | |
139 | + return false; | |
140 | + } | |
141 | + | |
142 | + /** | |
143 | + * 获取权限token | |
144 | + * | |
145 | + * @return 返回示例: | |
146 | + * { | |
147 | + * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567", | |
148 | + * "expires_in": 2592000 | |
149 | + * } | |
150 | + */ | |
151 | + public String getAuth() { | |
152 | + // 官网获取的 API Key 更新为你注册的 | |
153 | + String clientId = "u6rV4YxRZmwzKj56N0DCW8eO"; | |
154 | + // 官网获取的 Secret Key 更新为你注册的 | |
155 | + String clientSecret = "Krp3KhmIBdnNEsRa1LavMHuZl0KhQGVm"; | |
156 | + return getAuth(clientId, clientSecret); | |
157 | + } | |
158 | + | |
159 | + /** | |
160 | + * 获取API访问token | |
161 | + * 该token有一定的有效期,需要自行管理,当失效时需重新获取. | |
162 | + * | |
163 | + * @param ak - 百度云官网获取的 API Key | |
164 | + * @param sk - 百度云官网获取的 Securet Key | |
165 | + * @return assess_token 示例: | |
166 | + * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567" | |
167 | + */ | |
168 | + public static String getAuth(String ak, String sk) { | |
169 | + // 获取token地址 | |
170 | + String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; | |
171 | + String getAccessTokenUrl = authHost | |
172 | + // 1. grant_type为固定参数 | |
173 | + + "grant_type=client_credentials" | |
174 | + // 2. 官网获取的 API Key | |
175 | + + "&client_id=" + ak | |
176 | + // 3. 官网获取的 Secret Key | |
177 | + + "&client_secret=" + sk; | |
178 | + try { | |
179 | + URL realUrl = new URL(getAccessTokenUrl); | |
180 | + // 打开和URL之间的连接 | |
181 | + HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); | |
182 | + connection.setRequestMethod("GET"); | |
183 | + connection.connect(); | |
184 | + // 获取所有响应头字段 | |
185 | + Map<String, List<String>> map = connection.getHeaderFields(); | |
186 | + // 遍历所有的响应头字段 | |
187 | +// for (String key : map.keySet()) { | |
188 | +// System.err.println(key + "--->" + map.get(key)); | |
189 | +// } | |
190 | + // 定义 BufferedReader输入流来读取URL的响应 | |
191 | + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); | |
192 | + String result = ""; | |
193 | + String line; | |
194 | + while ((line = in.readLine()) != null) { | |
195 | + result += line; | |
196 | + } | |
197 | + /** | |
198 | + * 返回结果示例 | |
199 | + */ | |
200 | +// System.err.println("result:" + result); | |
201 | + JSONObject jsonObject = new JSONObject(result); | |
202 | + String access_token = jsonObject.getString("access_token"); | |
203 | + return access_token; | |
204 | + } catch (Exception e) { | |
205 | + System.err.printf("获取token失败!"); | |
206 | + e.printStackTrace(System.err); | |
207 | + } | |
208 | + return null; | |
209 | + } | |
210 | + | |
211 | +} | ... | ... |
cloud/dahua/src/main/java/com/example/dahua/utils/HttpUtils.java
... | ... | @@ -63,6 +63,20 @@ public class HttpUtils { |
63 | 63 | } |
64 | 64 | |
65 | 65 | |
66 | + public static String uploadImg2HK(String filePath,String card,String name,String deviceId,String userType){ | |
67 | + | |
68 | + String url = String.format("http://114.55.30.100:8089/facereco/sendCardAndImg1?filePath=%s&card=%s&name=%s&userType=%s&deviceId=%s", | |
69 | + filePath,card,name,userType,deviceId); | |
70 | + | |
71 | + RestTemplate restTemplate = new RestTemplate(); | |
72 | + | |
73 | + ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class); | |
74 | + | |
75 | + System.out.println("responseEntity:" + responseEntity.getBody()); | |
76 | + return responseEntity.getBody(); | |
77 | + } | |
78 | + | |
79 | + | |
66 | 80 | public static boolean imgsSend(String schoolId, int type) { |
67 | 81 | String url = "http://121.40.109.21:8991/file/imgsSend?schoolId=" + schoolId + "&type=" + type; |
68 | 82 | RestTemplate restTemplate = new RestTemplate(); | ... | ... |
cloud/dahua/src/test/java/com/example/dahua/DahuaApplicationTests.java
... | ... | @@ -23,6 +23,7 @@ import org.springframework.http.ResponseEntity; |
23 | 23 | import org.springframework.test.context.junit4.SpringRunner; |
24 | 24 | import org.springframework.web.client.RestTemplate; |
25 | 25 | |
26 | +import java.io.*; | |
26 | 27 | import java.util.*; |
27 | 28 | |
28 | 29 | @RunWith(SpringRunner.class) |
... | ... | @@ -368,7 +369,7 @@ public class DahuaApplicationTests { |
368 | 369 | sendCards.setStartTime("2020-06-23 00:07:59"); |
369 | 370 | sendCards.setType("1"); |
370 | 371 | |
371 | - Map<String, String> body = new HashMap<String,String>(); | |
372 | + Map<String, String> body = new HashMap<String, String>(); | |
372 | 373 | body.put("cardNo", teacherBean.getTeacher_num()); |
373 | 374 | body.put("endTime", "2030-06-23T00:07:59"); |
374 | 375 | body.put("id", "5"); |
... | ... | @@ -413,7 +414,7 @@ public class DahuaApplicationTests { |
413 | 414 | for (int j = 0; j < deviceids.length; j++) { |
414 | 415 | String deviceId = deviceids[j]; |
415 | 416 | |
416 | - Map<String, String> body = new HashMap<String,String>(); | |
417 | + Map<String, String> body = new HashMap<String, String>(); | |
417 | 418 | body.put("cardNo", teacherBean.getStudent_num()); |
418 | 419 | body.put("id", "8"); |
419 | 420 | body.put("sn", deviceId); |
... | ... | @@ -454,7 +455,7 @@ public class DahuaApplicationTests { |
454 | 455 | for (int j = 0; j < deviceids.length; j++) { |
455 | 456 | String deviceId = deviceids[j]; |
456 | 457 | |
457 | - Map<String, String> body = new HashMap<String,String>(); | |
458 | + Map<String, String> body = new HashMap<String, String>(); | |
458 | 459 | body.put("cardNo", teacherBean.getStudent_num()); |
459 | 460 | body.put("id", "8"); |
460 | 461 | body.put("sn", deviceId); |
... | ... | @@ -486,14 +487,37 @@ public class DahuaApplicationTests { |
486 | 487 | // |
487 | 488 | // System.out.println("list:" + list.toString()); |
488 | 489 | |
489 | - List<AttendanceBean> attendanceBeanList = userDao.getAttendanceBeans("479","4"); | |
490 | +// List<AttendanceBean> attendanceBeanList = userDao.getAttendanceBeans("479","4"); | |
491 | +// | |
492 | +// for (int i = 0; i < attendanceBeanList.size(); i++) { | |
493 | +// AttendanceBean attendanceBean = attendanceBeanList.get(i); | |
494 | +// | |
495 | +// | |
496 | +// } | |
490 | 497 | |
491 | - for (int i = 0; i < attendanceBeanList.size(); i++) { | |
492 | - AttendanceBean attendanceBean = attendanceBeanList.get(i); | |
498 | + File file = new File("D:\\新七年级\\名字.txt"); | |
493 | 499 | |
500 | + try { | |
501 | + FileReader fileReader = new FileReader(file); | |
502 | + BufferedReader bufferedReader = new BufferedReader(fileReader); | |
503 | + List<UserInfoBean> userInfoBeans = userDao.getStuUserInfos(); | |
504 | + String content = null; | |
505 | + while ((content = bufferedReader.readLine()) != null) { | |
494 | 506 | |
495 | - } | |
507 | + for (int i = 0; i < userInfoBeans.size(); i++) { | |
508 | + UserInfoBean userInfoBean = userInfoBeans.get(i); | |
509 | + if (content.equals(userInfoBean.getName())){ | |
510 | + System.out.println(userInfoBean.getStudentcode()+"\t"); | |
511 | + } | |
512 | + } | |
513 | + | |
514 | + } | |
496 | 515 | |
516 | + } catch (FileNotFoundException e) { | |
517 | + e.printStackTrace(); | |
518 | + } catch (IOException e) { | |
519 | + e.printStackTrace(); | |
520 | + } | |
497 | 521 | |
498 | 522 | |
499 | 523 | } |
... | ... | @@ -506,7 +530,7 @@ public class DahuaApplicationTests { |
506 | 530 | |
507 | 531 | mqttManager.init(); |
508 | 532 | |
509 | - List<String> stringList = userDao.getAllDecWithSch(479); | |
533 | + List<String> stringList = userDao.getAllDecWithSch(27); | |
510 | 534 | System.out.println("stringList:" + stringList.size()); |
511 | 535 | for (int i = 0; i < stringList.size(); i++) { |
512 | 536 | String devId = stringList.get(i); | ... | ... |
cloud/haikangface/mvnw
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 | # ---------------------------------------------------------------------------- |
20 | 20 | |
21 | 21 | # ---------------------------------------------------------------------------- |
22 | -# Maven2 Start Up Batch script | |
22 | +# Maven Start Up Batch script | |
23 | 23 | # |
24 | 24 | # Required ENV vars: |
25 | 25 | # ------------------ |
... | ... | @@ -114,7 +114,6 @@ if $mingw ; then |
114 | 114 | M2_HOME="`(cd "$M2_HOME"; pwd)`" |
115 | 115 | [ -n "$JAVA_HOME" ] && |
116 | 116 | JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" |
117 | - # TODO classpath? | |
118 | 117 | fi |
119 | 118 | |
120 | 119 | if [ -z "$JAVA_HOME" ]; then |
... | ... | @@ -212,7 +211,11 @@ else |
212 | 211 | if [ "$MVNW_VERBOSE" = true ]; then |
213 | 212 | echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." |
214 | 213 | fi |
215 | - jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" | |
214 | + if [ -n "$MVNW_REPOURL" ]; then | |
215 | + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" | |
216 | + else | |
217 | + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" | |
218 | + fi | |
216 | 219 | while IFS="=" read key value; do |
217 | 220 | case "$key" in (wrapperUrl) jarUrl="$value"; break ;; |
218 | 221 | esac |
... | ... | @@ -221,22 +224,38 @@ else |
221 | 224 | echo "Downloading from: $jarUrl" |
222 | 225 | fi |
223 | 226 | wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" |
227 | + if $cygwin; then | |
228 | + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` | |
229 | + fi | |
224 | 230 | |
225 | 231 | if command -v wget > /dev/null; then |
226 | 232 | if [ "$MVNW_VERBOSE" = true ]; then |
227 | 233 | echo "Found wget ... using wget" |
228 | 234 | fi |
229 | - wget "$jarUrl" -O "$wrapperJarPath" | |
235 | + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then | |
236 | + wget "$jarUrl" -O "$wrapperJarPath" | |
237 | + else | |
238 | + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" | |
239 | + fi | |
230 | 240 | elif command -v curl > /dev/null; then |
231 | 241 | if [ "$MVNW_VERBOSE" = true ]; then |
232 | 242 | echo "Found curl ... using curl" |
233 | 243 | fi |
234 | - curl -o "$wrapperJarPath" "$jarUrl" | |
244 | + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then | |
245 | + curl -o "$wrapperJarPath" "$jarUrl" -f | |
246 | + else | |
247 | + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f | |
248 | + fi | |
249 | + | |
235 | 250 | else |
236 | 251 | if [ "$MVNW_VERBOSE" = true ]; then |
237 | 252 | echo "Falling back to using Java to download" |
238 | 253 | fi |
239 | 254 | javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" |
255 | + # For Cygwin, switch paths to Windows format before running javac | |
256 | + if $cygwin; then | |
257 | + javaClass=`cygpath --path --windows "$javaClass"` | |
258 | + fi | |
240 | 259 | if [ -e "$javaClass" ]; then |
241 | 260 | if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then |
242 | 261 | if [ "$MVNW_VERBOSE" = true ]; then |
... | ... | @@ -277,6 +296,11 @@ if $cygwin; then |
277 | 296 | MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` |
278 | 297 | fi |
279 | 298 | |
299 | +# Provide a "standardized" way to retrieve the CLI args that will | |
300 | +# work with both Windows and non-Windows executions. | |
301 | +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" | |
302 | +export MAVEN_CMD_LINE_ARGS | |
303 | + | |
280 | 304 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain |
281 | 305 | |
282 | 306 | exec "$JAVACMD" \ | ... | ... |
cloud/haikangface/mvnw.cmd
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 | @REM ---------------------------------------------------------------------------- |
19 | 19 | |
20 | 20 | @REM ---------------------------------------------------------------------------- |
21 | -@REM Maven2 Start Up Batch script | |
21 | +@REM Maven Start Up Batch script | |
22 | 22 | @REM |
23 | 23 | @REM Required ENV vars: |
24 | 24 | @REM JAVA_HOME - location of a JDK home dir |
... | ... | @@ -26,7 +26,7 @@ |
26 | 26 | @REM Optional ENV vars |
27 | 27 | @REM M2_HOME - location of maven2's installed home dir |
28 | 28 | @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands |
29 | -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending | |
29 | +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending | |
30 | 30 | @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven |
31 | 31 | @REM e.g. to debug Maven itself, use |
32 | 32 | @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 |
... | ... | @@ -37,7 +37,7 @@ |
37 | 37 | @echo off |
38 | 38 | @REM set title of command window |
39 | 39 | title %0 |
40 | -@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' | |
40 | +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' | |
41 | 41 | @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% |
42 | 42 | |
43 | 43 | @REM set %HOME% to equivalent of $HOME |
... | ... | @@ -120,23 +120,44 @@ SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" |
120 | 120 | set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" |
121 | 121 | set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain |
122 | 122 | |
123 | -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" | |
124 | -FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO ( | |
125 | - IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B | |
123 | +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" | |
124 | + | |
125 | +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( | |
126 | + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B | |
126 | 127 | ) |
127 | 128 | |
128 | 129 | @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central |
129 | 130 | @REM This allows using the maven wrapper in projects that prohibit checking in binary data. |
130 | 131 | if exist %WRAPPER_JAR% ( |
131 | - echo Found %WRAPPER_JAR% | |
132 | + if "%MVNW_VERBOSE%" == "true" ( | |
133 | + echo Found %WRAPPER_JAR% | |
134 | + ) | |
132 | 135 | ) else ( |
133 | - echo Couldn't find %WRAPPER_JAR%, downloading it ... | |
134 | - echo Downloading from: %DOWNLOAD_URL% | |
135 | - powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')" | |
136 | - echo Finished downloading %WRAPPER_JAR% | |
136 | + if not "%MVNW_REPOURL%" == "" ( | |
137 | + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" | |
138 | + ) | |
139 | + if "%MVNW_VERBOSE%" == "true" ( | |
140 | + echo Couldn't find %WRAPPER_JAR%, downloading it ... | |
141 | + echo Downloading from: %DOWNLOAD_URL% | |
142 | + ) | |
143 | + | |
144 | + powershell -Command "&{"^ | |
145 | + "$webclient = new-object System.Net.WebClient;"^ | |
146 | + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ | |
147 | + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ | |
148 | + "}"^ | |
149 | + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ | |
150 | + "}" | |
151 | + if "%MVNW_VERBOSE%" == "true" ( | |
152 | + echo Finished downloading %WRAPPER_JAR% | |
153 | + ) | |
137 | 154 | ) |
138 | 155 | @REM End of extension |
139 | 156 | |
157 | +@REM Provide a "standardized" way to retrieve the CLI args that will | |
158 | +@REM work with both Windows and non-Windows executions. | |
159 | +set MAVEN_CMD_LINE_ARGS=%* | |
160 | + | |
140 | 161 | %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* |
141 | 162 | if ERRORLEVEL 1 goto error |
142 | 163 | goto end | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
1 | 1 | package com.sincere.haikangface; |
2 | 2 | |
3 | 3 | import com.alibaba.fastjson.JSON; |
4 | +import com.alibaba.fastjson.JSONArray; | |
4 | 5 | import com.alibaba.fastjson.JSONObject; |
5 | 6 | import com.sincere.haikangface.bean.*; |
7 | +import com.sincere.haikangface.bean.face.BaiduUserInfoBean; | |
6 | 8 | import com.sincere.haikangface.bean.xiaoan.Face_Recoder; |
7 | 9 | import com.sincere.haikangface.dao.DeviceDao; |
8 | 10 | import com.sincere.haikangface.dao.UserDao; |
... | ... | @@ -21,8 +23,14 @@ import org.springframework.beans.factory.annotation.Autowired; |
21 | 23 | import org.springframework.beans.factory.annotation.Value; |
22 | 24 | import org.springframework.boot.ApplicationArguments; |
23 | 25 | import org.springframework.boot.ApplicationRunner; |
26 | +import org.springframework.core.io.FileSystemResource; | |
27 | +import org.springframework.http.HttpEntity; | |
28 | +import org.springframework.http.HttpHeaders; | |
29 | +import org.springframework.http.MediaType; | |
24 | 30 | import org.springframework.http.ResponseEntity; |
25 | 31 | import org.springframework.stereotype.Component; |
32 | +import org.springframework.util.LinkedMultiValueMap; | |
33 | +import org.springframework.util.MultiValueMap; | |
26 | 34 | import org.springframework.util.StringUtils; |
27 | 35 | import org.springframework.web.client.RestTemplate; |
28 | 36 | |
... | ... | @@ -30,6 +38,8 @@ import java.io.*; |
30 | 38 | import java.net.InetAddress; |
31 | 39 | import java.net.UnknownHostException; |
32 | 40 | import java.nio.ByteBuffer; |
41 | +import java.text.DecimalFormat; | |
42 | +import java.text.ParseException; | |
33 | 43 | import java.text.SimpleDateFormat; |
34 | 44 | import java.util.Date; |
35 | 45 | import java.util.HashMap; |
... | ... | @@ -54,8 +64,8 @@ public class CMSServer implements ApplicationRunner { |
54 | 64 | //114.55.30.100 |
55 | 65 | //120.26.116.253 |
56 | 66 | // private String ip_cloud = "120.26.116.253"; |
57 | - private String ip_cloud = "172.16.2.53"; | |
58 | - // private String ip_cloud = "114.55.30.100"; | |
67 | +// private String ip_cloud = "192.168.71.242"; | |
68 | + private String ip_cloud = "114.55.30.100"; | |
59 | 69 | private String ip; |
60 | 70 | |
61 | 71 | { |
... | ... | @@ -144,6 +154,7 @@ public class CMSServer implements ApplicationRunner { |
144 | 154 | pInBuffer.dwSize = pInBuffer.size(); |
145 | 155 | AttendanceBean attendanceBean = new AttendanceBean(); |
146 | 156 | attendanceBean.setClint_id(deviceId); |
157 | + | |
147 | 158 | if (deviceId.startsWith("ytj")) |
148 | 159 | attendanceBean.setClint_type("28"); |
149 | 160 | else |
... | ... | @@ -291,6 +302,7 @@ public class CMSServer implements ApplicationRunner { |
291 | 302 | public class PSS_Storage_Callback implements HCEHomeSS.EHomeSSStorageCallBack { |
292 | 303 | |
293 | 304 | public boolean invoke(NativeLong iHandle, String pFileName, Pointer pFileBuf, int dwFileLen, Pointer pFilePath, Pointer pUser) { |
305 | + log.error("图片进来:{}" , pFileName); | |
294 | 306 | String strPath = "C://EhomePicServer/"; |
295 | 307 | // System.out.println("pFileName:" + pFileName); |
296 | 308 | pFileName = pFileName.replace("_", ""); |
... | ... | @@ -335,6 +347,9 @@ public class CMSServer implements ApplicationRunner { |
335 | 347 | buffers.get(bytes); |
336 | 348 | fout.write(bytes); |
337 | 349 | fout.close(); |
350 | + | |
351 | + sendToKB(strFilePathFile); | |
352 | + | |
338 | 353 | } catch (FileNotFoundException e) { |
339 | 354 | // TODO Auto-generated catch block |
340 | 355 | e.printStackTrace(); |
... | ... | @@ -354,6 +369,77 @@ public class CMSServer implements ApplicationRunner { |
354 | 369 | } |
355 | 370 | } |
356 | 371 | |
372 | + /** | |
373 | + * 发送人脸到看板 | |
374 | + * | |
375 | + * @param strFilePathFile | |
376 | + */ | |
377 | + public void sendToKB(File strFilePathFile) { | |
378 | + try { | |
379 | + | |
380 | + log.error("开始识别....."); | |
381 | + String url = "http://120.26.116.253:9214/baiduapi/search/16"; | |
382 | + | |
383 | + RestTemplate restTemplate = new RestTemplate(); | |
384 | + | |
385 | + HttpHeaders headers = new HttpHeaders(); | |
386 | + MediaType mediaType = MediaType.parseMediaType(MediaType.MULTIPART_FORM_DATA_VALUE); | |
387 | + headers.setContentType(mediaType); | |
388 | + MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap<>(); | |
389 | + FileSystemResource fileSystemResource = new FileSystemResource(strFilePathFile); | |
390 | + | |
391 | + multiValueMap.add("file ", fileSystemResource); | |
392 | + HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(multiValueMap, headers); | |
393 | + | |
394 | + ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); | |
395 | + log.error("识别结果:{}" , responseEntity.getBody()); | |
396 | + JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); | |
397 | + | |
398 | + String face = jsonObject.getString("data"); | |
399 | + if (face.startsWith("face"))return; | |
400 | + | |
401 | + JSONObject data = jsonObject.getJSONObject("data"); | |
402 | + String error_msg = data.getString("error_msg"); | |
403 | + | |
404 | + if (error_msg.equals("SUCCESS")) {//识别成功 | |
405 | + JSONObject result = data.getJSONObject("result"); | |
406 | + JSONArray user_list = result.getJSONArray("user_list"); | |
407 | + | |
408 | + if (user_list != null && user_list.size() > 0) { | |
409 | + | |
410 | + for (int i = 0; i < user_list.size(); i++) { | |
411 | + JSONObject user = user_list.getJSONObject(i); | |
412 | + | |
413 | + String user_id = user.getString("user_id"); | |
414 | + String score = user.getString("score"); | |
415 | + double sc = Double.valueOf(score.split("\\.")[0]); | |
416 | + if (sc >= 60) { | |
417 | + System.out.println("user_id:" + user_id); | |
418 | + TeacherBean teacherBean = userDao.getTeacherWithUserId1(user_id); | |
419 | + if (null != teacherBean) { | |
420 | + if (TextUtils.isEmpty(teacherBean.getTeacer_num()))teacherBean.setTeacer_num(user_id); | |
421 | + MqtUtils.getInstance().sendMsg("09EA8EB5142F2964", 1, teacherBean.toString()); | |
422 | + } else { | |
423 | + System.out.println("用户身份信息不存在"); | |
424 | + } | |
425 | + }else { | |
426 | + System.out.println("用户身份信息不存在"+score); | |
427 | + } | |
428 | + | |
429 | + } | |
430 | + | |
431 | + } | |
432 | + } else { | |
433 | + System.out.println("识别失败:" + error_msg); | |
434 | + } | |
435 | + log.error("发送成功....."); | |
436 | +// System.out.println("responseEntity:"+responseEntity.getBody()); | |
437 | + }catch (Exception e){ | |
438 | + e.printStackTrace(); | |
439 | + } | |
440 | + | |
441 | + } | |
442 | + | |
357 | 443 | HCEHomeAlarm.NET_EHOME_ALARM_LISTEN_PARAM net_ehome_alarm_listen_param = new HCEHomeAlarm.NET_EHOME_ALARM_LISTEN_PARAM(); |
358 | 444 | EHomeMsgCallBack cbEHomeMsgCallBack; |
359 | 445 | ;//报警监听回调函数实现 |
... | ... | @@ -420,8 +506,8 @@ public class CMSServer implements ApplicationRunner { |
420 | 506 | strXMLData.read(); |
421 | 507 | |
422 | 508 | String strXML = new String(strXMLData.byValue); |
423 | - System.out.println(strXML); | |
424 | - | |
509 | +// System.out.println(strXML); | |
510 | +// log.error("报警监听:{}",strXML); | |
425 | 511 | if (null == alarmUtils) { |
426 | 512 | alarmUtils = new AlarmUtils(deviceDao); |
427 | 513 | alarmUtils.setCallBack(new AlarmUtils.AlarmCallBack() { |
... | ... | @@ -477,7 +563,7 @@ public class CMSServer implements ApplicationRunner { |
477 | 563 | cardNo = sendRecoderUtils.getCard(card); |
478 | 564 | |
479 | 565 | StudentBean studentBean = userDao.getStudentWithCard(cardNo); |
480 | - | |
566 | + log.error("studentBean:{}",studentBean); | |
481 | 567 | if (null != studentBean) { |
482 | 568 | FileUtils.getInstance().writeLogs(studentBean.getName() + " " + cardNo, FileUtils.facerecoder); |
483 | 569 | |
... | ... | @@ -501,7 +587,6 @@ public class CMSServer implements ApplicationRunner { |
501 | 587 | } else { |
502 | 588 | //教师点名 |
503 | 589 | isTeacher(cardNo, deviceID); |
504 | - FileUtils.getInstance().writeLogs("card:" + card, FileUtils.faceSuccess); | |
505 | 590 | } |
506 | 591 | |
507 | 592 | if (deviceID.startsWith("qj")) {//枪击 用来抓拍人脸考勤用 |
... | ... | @@ -529,10 +614,12 @@ public class CMSServer implements ApplicationRunner { |
529 | 614 | public void isTeacher(String cardNo, String deviceID) { |
530 | 615 | |
531 | 616 | List<String> devLists = userDao.getDeviceRoomRelation(deviceID); |
617 | + log.error("cardNo:{},devLists{}",cardNo,devLists); | |
532 | 618 | |
533 | 619 | if (null != devLists && devLists.size() > 0) { |
534 | 620 | |
535 | 621 | StudentBean teacher = userDao.getTeacherWithCard(cardNo); |
622 | + FileUtils.getInstance().writeLogs("teacher:" + teacher+"----"+cardNo, "教师点名.txt"); | |
536 | 623 | if (null != teacher) { |
537 | 624 | String url = String.format("http://campus.myjxt.com/api/RollCall/AddRollCallPersonnelRecord?userId=%s&deviceId=%s", teacher.getUser_id(), deviceID); |
538 | 625 | |
... | ... | @@ -540,7 +627,7 @@ public class CMSServer implements ApplicationRunner { |
540 | 627 | |
541 | 628 | String res = restTemplate.getForObject(url, String.class); |
542 | 629 | JSONObject jsonObject = JSON.parseObject(res); |
543 | - | |
630 | + FileUtils.getInstance().writeLogs("card:" + res, "教师点名.txt"); | |
544 | 631 | System.out.println("result:" + res + "------url:" + jsonObject.getBoolean("data")); |
545 | 632 | |
546 | 633 | } |
... | ... | @@ -657,11 +744,11 @@ public class CMSServer implements ApplicationRunner { |
657 | 744 | "<password>MTIzNDU2</password>\r\n" + |
658 | 745 | "<maxSwipeTime></maxSwipeTime>\r\n" + |
659 | 746 | "<swipeTime></swipeTime>\r\n" + |
660 | - "<groupNo>5</groupNo>\r\n" + | |
747 | + "<groupNo></groupNo>\r\n" + | |
661 | 748 | "<name>"; |
662 | 749 | String nameAfter = "</name>\r\n" + |
663 | 750 | "<employeeNo>" + employeeNo + "</employeeNo>\r\n" + |
664 | - "<departmentNo>3</departmentNo>\r\n" + | |
751 | + "<departmentNo></departmentNo>\r\n" + | |
665 | 752 | "<schedulePlanNo></schedulePlanNo>\r\n" + |
666 | 753 | "<schedulePlanType></schedulePlanType>\r\n" + |
667 | 754 | "</CardCfg>\r\n" + | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java
... | ... | @@ -105,7 +105,7 @@ public class SendUserAsync { |
105 | 105 | if (weekDay.getDeviceIds() != null && weekDay.getDeviceIds().size() > 0) { |
106 | 106 | permissionBean.setDeviceIds(weekDay.getDeviceIds()); |
107 | 107 | } |
108 | - List<String> deviceIds = permissionBean.getDeviceIds(); | |
108 | + List<String> deviceIds = weekDay.getDeviceIds(); | |
109 | 109 | List<String> cardNumList = new ArrayList<>(); |
110 | 110 | String sex = weekDay.getSex(); |
111 | 111 | if (userType.equals("1")) { | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/TeacherBean.java
... | ... | @@ -10,6 +10,16 @@ public class TeacherBean implements Serializable { |
10 | 10 | |
11 | 11 | private String num; |
12 | 12 | |
13 | + private String face; | |
14 | + | |
15 | + public String getTeacher_num() { | |
16 | + return teacher_num; | |
17 | + } | |
18 | + | |
19 | + public void setTeacher_num(String teacher_num) { | |
20 | + this.teacher_num = teacher_num; | |
21 | + } | |
22 | + | |
13 | 23 | public String getNum() { |
14 | 24 | return num; |
15 | 25 | } |
... | ... | @@ -33,4 +43,20 @@ public class TeacherBean implements Serializable { |
33 | 43 | public void setTeacer_num(String teacer_num) { |
34 | 44 | this.teacher_num = teacer_num; |
35 | 45 | } |
46 | + | |
47 | + public String getFace() { | |
48 | + return face; | |
49 | + } | |
50 | + | |
51 | + public void setFace(String face) { | |
52 | + this.face = face; | |
53 | + } | |
54 | + | |
55 | + @Override | |
56 | + public String toString() { | |
57 | + return "{\"name\":\"" + name + '\"' + | |
58 | + ", \"teacher_num\":\"" + teacher_num + '\"' + | |
59 | + ", \"num\":\"" + num + '\"' + | |
60 | + ", \"face\":\"" + face + '\"' +"}"; | |
61 | + } | |
36 | 62 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/BaiduUserInfoBean.java
0 → 100644
... | ... | @@ -0,0 +1,45 @@ |
1 | +package com.sincere.haikangface.bean.face; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | + | |
5 | +public class BaiduUserInfoBean implements Serializable { | |
6 | + | |
7 | + private int status; | |
8 | + | |
9 | + private String message; | |
10 | + | |
11 | + private BaiduUserInfoDataBean data; | |
12 | + | |
13 | + public int getStatus() { | |
14 | + return status; | |
15 | + } | |
16 | + | |
17 | + public void setStatus(int status) { | |
18 | + this.status = status; | |
19 | + } | |
20 | + | |
21 | + public String getMessage() { | |
22 | + return message; | |
23 | + } | |
24 | + | |
25 | + public void setMessage(String message) { | |
26 | + this.message = message; | |
27 | + } | |
28 | + | |
29 | + public BaiduUserInfoDataBean getData() { | |
30 | + return data; | |
31 | + } | |
32 | + | |
33 | + public void setData(BaiduUserInfoDataBean data) { | |
34 | + this.data = data; | |
35 | + } | |
36 | + | |
37 | + @Override | |
38 | + public String toString() { | |
39 | + return "BaiduUserInfoBean{" + | |
40 | + "status=" + status + | |
41 | + ", message='" + message + '\'' + | |
42 | + ", data=" + data + | |
43 | + '}'; | |
44 | + } | |
45 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/BaiduUserInfoDataBean.java
0 → 100644
... | ... | @@ -0,0 +1,45 @@ |
1 | +package com.sincere.haikangface.bean.face; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | + | |
5 | +public class BaiduUserInfoDataBean implements Serializable { | |
6 | + | |
7 | + private String error_msg; | |
8 | + | |
9 | + private int error_code; | |
10 | + | |
11 | + private BaiduUserInfoResultBean data; | |
12 | + | |
13 | + public String getError_msg() { | |
14 | + return error_msg; | |
15 | + } | |
16 | + | |
17 | + public void setError_msg(String error_msg) { | |
18 | + this.error_msg = error_msg; | |
19 | + } | |
20 | + | |
21 | + public int getError_code() { | |
22 | + return error_code; | |
23 | + } | |
24 | + | |
25 | + public void setError_code(int error_code) { | |
26 | + this.error_code = error_code; | |
27 | + } | |
28 | + | |
29 | + public BaiduUserInfoResultBean getData() { | |
30 | + return data; | |
31 | + } | |
32 | + | |
33 | + public void setData(BaiduUserInfoResultBean data) { | |
34 | + this.data = data; | |
35 | + } | |
36 | + | |
37 | + @Override | |
38 | + public String toString() { | |
39 | + return "BaiduUserInfoDataBean{" + | |
40 | + "error_msg='" + error_msg + '\'' + | |
41 | + ", error_code=" + error_code + | |
42 | + ", data=" + data + | |
43 | + '}'; | |
44 | + } | |
45 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/BaiduUserInfoListBean.java
0 → 100644
... | ... | @@ -0,0 +1,23 @@ |
1 | +package com.sincere.haikangface.bean.face; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | + | |
5 | +public class BaiduUserInfoListBean implements Serializable { | |
6 | + | |
7 | + private String user_id; | |
8 | + | |
9 | + public String getUser_id() { | |
10 | + return user_id; | |
11 | + } | |
12 | + | |
13 | + public void setUser_id(String user_id) { | |
14 | + this.user_id = user_id; | |
15 | + } | |
16 | + | |
17 | + @Override | |
18 | + public String toString() { | |
19 | + return "BaiduUserInfoListBean{" + | |
20 | + "user_id='" + user_id + '\'' + | |
21 | + '}'; | |
22 | + } | |
23 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/face/BaiduUserInfoResultBean.java
0 → 100644
... | ... | @@ -0,0 +1,24 @@ |
1 | +package com.sincere.haikangface.bean.face; | |
2 | + | |
3 | +import java.io.Serializable; | |
4 | +import java.util.List; | |
5 | + | |
6 | +public class BaiduUserInfoResultBean implements Serializable { | |
7 | + | |
8 | + private List<BaiduUserInfoListBean> user_list; | |
9 | + | |
10 | + public List<BaiduUserInfoListBean> getUser_list() { | |
11 | + return user_list; | |
12 | + } | |
13 | + | |
14 | + public void setUser_list(List<BaiduUserInfoListBean> user_list) { | |
15 | + this.user_list = user_list; | |
16 | + } | |
17 | + | |
18 | + @Override | |
19 | + public String toString() { | |
20 | + return "BaiduUserInfoResultBean{" + | |
21 | + "user_list=" + user_list + | |
22 | + '}'; | |
23 | + } | |
24 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/FileControl.java
... | ... | @@ -81,7 +81,7 @@ public class FileControl { |
81 | 81 | String filePath = dest.getAbsolutePath(); |
82 | 82 | FileUtils.getInstance().writeLogs("filePath:" + filePath + " card:" + card + " name:" + name + " deviceId:" + deviceId, FileUtils.sendUserInfo); |
83 | 83 | long time = System.currentTimeMillis(); |
84 | - if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); | |
84 | +// if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); | |
85 | 85 | if (new File(filePath.trim()).exists()) { |
86 | 86 | String targetPath = FileUtils.picPathComp + new File(filePath).getName().replace(".png", ".jpg"); |
87 | 87 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java
... | ... | @@ -67,6 +67,7 @@ public class UserControl { |
67 | 67 | @ApiOperation("下发权限给设备") |
68 | 68 | public boolean sendPermiss(@RequestBody PermissionBean permissionBean) { |
69 | 69 | log.error("permissionBean:{}", JSON.toJSONString(permissionBean)); |
70 | + FileUtils.getInstance().writeLogs("传入权限模板:"+JSON.toJSONString(permissionBean),"设置权限内容.txt"); | |
70 | 71 | if (!StringUtils.isEmpty(permissionBean.getDeviceIds())) { |
71 | 72 | // List<String> cardNumList = userDao.getStudentCardsWidthSchoolId(permissionBean.getSchoolId()); |
72 | 73 | return sendUserAsync.sendPermiss(permissionBean, 0); |
... | ... | @@ -97,6 +98,16 @@ public class UserControl { |
97 | 98 | } |
98 | 99 | } |
99 | 100 | |
101 | + @RequestMapping(value = "sendToKB", method = RequestMethod.GET) | |
102 | + @ApiOperation("发送数据到看板") | |
103 | + public void sendToKB(@RequestParam("filePath") String filePath) { | |
104 | + try { | |
105 | + cmsServer.sendToKB(new File(filePath)); | |
106 | + } catch (Exception e) { | |
107 | + e.printStackTrace(); | |
108 | + } | |
109 | + } | |
110 | + | |
100 | 111 | |
101 | 112 | @RequestMapping(value = "sendStuCardAndImg", method = RequestMethod.GET) |
102 | 113 | @ApiOperation("下发人脸给设备") |
... | ... | @@ -106,10 +117,18 @@ public class UserControl { |
106 | 117 | return sendImg2Device(filePath, card, name, deviceId, userType); |
107 | 118 | } |
108 | 119 | |
120 | + @RequestMapping(value = "sendCardAndImg1", method = RequestMethod.GET) | |
121 | + @ApiOperation("下发人脸给设备") | |
122 | + public boolean sendCardAndImg1(@RequestParam("filePath") String filePath, @RequestParam("card") String card | |
123 | + , @RequestParam("name") String name, @RequestParam("deviceId") String deviceId, @RequestParam("userType") String userType) { | |
124 | + log.error("sendCardAndImg1:---------------------------------"); | |
125 | + return sendImg2Device(filePath, card, name, deviceId, userType); | |
126 | + } | |
127 | + | |
109 | 128 | private boolean sendImg2Device(String filePath, String card, String name, String deviceId, String userType) { |
110 | 129 | try { |
111 | 130 | |
112 | - if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); | |
131 | +// if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); | |
113 | 132 | if (new File(filePath.trim()).exists()) { |
114 | 133 | String targetPath = FileUtils.picPathComp + new File(filePath).getName(); |
115 | 134 | try { | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java
... | ... | @@ -239,6 +239,9 @@ public interface UserDao { |
239 | 239 | @Select("select Top(1) * from SZ_V_School_Teacher where user_id = #{userId} and teacher_num<>''") |
240 | 240 | TeacherBean getTeacherWithUserId(@Param("userId") String userId); |
241 | 241 | |
242 | + @Select("select Top(1) * from SZ_V_School_Teacher where user_id = #{userId}") | |
243 | + TeacherBean getTeacherWithUserId1(@Param("userId") String userId); | |
244 | + | |
242 | 245 | |
243 | 246 | List<String> getStudentWiSidAndSex(@Param("schoolId") String schoolId, @Param("sexs") List<String> sexs); |
244 | 247 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/mqtt/MqttManager.java
... | ... | @@ -20,6 +20,22 @@ public class MqttManager { |
20 | 20 | |
21 | 21 | private static int qosLevel; |
22 | 22 | |
23 | + private static MqttManager mqttManager; | |
24 | + | |
25 | +// public static MqttManager getInstance(){ | |
26 | +// | |
27 | +// if (null==mqttManager){ | |
28 | +// synchronized (MqttManager.class){ | |
29 | +// if (null==mqttManager) { | |
30 | +// mqttManager = new MqttManager(); | |
31 | +// init(); | |
32 | +// } | |
33 | +// } | |
34 | +// } | |
35 | +// return mqttManager; | |
36 | +// } | |
37 | + | |
38 | + | |
23 | 39 | public void init() { |
24 | 40 | final String brokerUrl = "tcp://post-cn-4590mq2hr03.mqtt.aliyuncs.com:1883"; |
25 | 41 | groupId = "GID_HFJSIURFHAQO110"; |
... | ... | @@ -95,7 +111,7 @@ public class MqttManager { |
95 | 111 | public void sendMq(String deviceId, int cmd, String msg) { |
96 | 112 | String recvClientId = groupId + "@@@" + deviceId; |
97 | 113 | final String p2pSendTopic = topic + "/p2p/" + recvClientId; |
98 | - String content = "{\"cmd\":\"" + cmd + "\",\"clientId\":\"\",\"data\": \"" + msg + "\"}"; | |
114 | + String content = "{\"cmd\":\"" + cmd + "\",\"clientId\":\"\",\"data\": " + msg + "}"; | |
99 | 115 | MqttMessage message = new MqttMessage(content.getBytes()); |
100 | 116 | message.setQos(qosLevel); |
101 | 117 | System.out.println("发送内容:" + p2pSendTopic + " msg:---------" + msg); | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java
... | ... | @@ -22,10 +22,10 @@ public class CompressPic { |
22 | 22 | int width = bufferedImage.getWidth(null); |
23 | 23 | int height = bufferedImage.getHeight(null); |
24 | 24 | long fileLength = file.length(); |
25 | - System.out.println("fileLength:" + fileLength); | |
26 | - System.out.println("原始宽高:" + "width:" + width + "--height:" + height); | |
25 | +// System.out.println("fileLength:" + fileLength); | |
26 | +// System.out.println("原始宽高:" + "width:" + width + "--height:" + height); | |
27 | 27 | if ((fileLength / 1024) < 200) { |
28 | - System.out.println("小于200k压缩:" + "width:" + width + "--height:" + height); | |
28 | +// System.out.println("小于200k压缩:" + "width:" + width + "--height:" + height); | |
29 | 29 | writeImgToFile(bufferedImage, width, height, targetPath); |
30 | 30 | } else { |
31 | 31 | while ((fileLength / 1024) >= 200) { |
... | ... | @@ -40,8 +40,8 @@ public class CompressPic { |
40 | 40 | width = bufferedImage1.getWidth(null); |
41 | 41 | height = bufferedImage1.getHeight(null); |
42 | 42 | fileLength = file1.length(); |
43 | - System.out.println("最终宽高:" + "width:" + width + "--height:" + height); | |
44 | - System.out.println("fileLength1:" + fileLength); | |
43 | +// System.out.println("最终宽高:" + "width:" + width + "--height:" + height); | |
44 | +// System.out.println("fileLength1:" + fileLength); | |
45 | 45 | fileInputStream.close(); |
46 | 46 | } |
47 | 47 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/HttpUtil.java
... | ... | @@ -124,7 +124,7 @@ public class HttpUtil { |
124 | 124 | |
125 | 125 | ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, httpEntity, String.class); |
126 | 126 | |
127 | - System.out.println("responseEntity:" + responseEntity.getBody()); | |
127 | + System.out.println("responseEntity:" + responseEntity.getBody()+name); | |
128 | 128 | return responseEntity.getBody().equals("1"); |
129 | 129 | } |
130 | 130 | ... | ... |
cloud/haikangface/src/main/resources/mapper/usermapper.xml
... | ... | @@ -19,7 +19,7 @@ |
19 | 19 | </select> |
20 | 20 | |
21 | 21 | <select id="getDeviceRoomRelation" resultType="java.lang.String"> |
22 | - select clint_id from SZ_DeviceRoomRelation where clint_id = #{clint_id}; | |
22 | + select clint_id from SZ_DeviceRoomRelation where clint_id = #{clint_id} and state = 1; | |
23 | 23 | </select> |
24 | 24 | |
25 | 25 | </mapper> | ... | ... |
cloud/mypulsar/src/main/java/com/example/mypulsar/MyRunnerableInt.java