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