From 79abf0116570070b72a0b4512fee5b35a3baf0c6 Mon Sep 17 00:00:00 2001 From: 陈杰 <504987307@qq.com> Date: Thu, 9 Apr 2020 14:51:09 +0800 Subject: [PATCH] 博冠人脸机 --- cloud/common/pom.xml | 11 +++++++++++ cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SZ_AttendanceDto.java | 10 ++++++++++ cloud/common/src/main/java/com/sincere/common/dto/smartCampus/StudentBean.java | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolStudent.java | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolTeacher.java | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceRecoder.java | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendfail.java | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendsuccess.java | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/util/DateUtils.java | 7 +++++++ cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- cloud/lapi/pom.xml | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/LapiDemoApplication.java | 18 ++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/Swagger2.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/Utils/FileUtils.java | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/Utils/SpringContextHolder.java | 32 ++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java | 274 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java | 39 +++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/feign/XaFeign.java | 22 ++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/pojo/HeartInfo.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/pojo/IdentificationInfo.java | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPI.java | 17 +++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPIResponse.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonImageInfo.java | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfo.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfoList.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonTimeTemplateInfo.java | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/server/ServerRun.java | 35 +++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/server/UrlParam.java | 12 ++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/server/init/LapiServerInitializer.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/server/init/NettyFactory.java | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/server/pojo/HeartBack.java | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/server/thread/ServerThread.java | 39 +++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/lapi/src/main/resources/application.yml | 19 +++++++++++++++++++ cloud/lapi/src/main/resources/logback.xml | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/Test.java | 23 ----------------------- cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java | 2 +- cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------- cloud/quartz/src/main/java/com/sincere/quartz/utils/ThreadUtils.java | 19 +++++++++++++++++++ cloud/search_smartCampus/pom.xml | 9 +++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java | 22 +++++++++++++++++++++- cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java | 27 +++++++++++++++++++++++++-- cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolStudentMapper.java | 16 ++++++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolTeacherMapper.java | 16 ++++++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/UserMapper.java | 9 ++++++++- cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/StudentBean.java | 307 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java | 16 +++++++++++++++- cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java | 32 ++++++++++++++++++++++++++++++++ cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml | 2 +- cloud/search_smartCampus/src/main/resources/mapper/SzVSchoolStudentMapper.xml | 201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/search_smartCampus/src/main/resources/mapper/SzVSchoolTeacherMapper.xml | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/search_xiaoan/pom.xml | 11 +++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/FaceController.java | 35 +++++++++++++++++++++++++++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceRecoderMapper.java | 9 +++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendfailMapper.java | 10 ++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendsuccessMapper.java | 10 ++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/FaceService.java | 14 ++++++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/FaceServiceImpl.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/search_xiaoan/src/main/resources/application.yml | 3 +++ cloud/search_xiaoan/src/main/resources/logback.xml | 2 +- cloud/search_xiaoan/src/main/resources/mapper/FaceRecoderMapper.xml | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/search_xiaoan/src/main/resources/mapper/FaceSendfailMapper.xml | 36 ++++++++++++++++++++++++++++++++++++ cloud/search_xiaoan/src/main/resources/mapper/FaceSendsuccessMapper.xml | 32 ++++++++++++++++++++++++++++++++ 65 files changed, 3962 insertions(+), 392 deletions(-) create mode 100644 cloud/common/src/main/java/com/sincere/common/dto/smartCampus/StudentBean.java create mode 100644 cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolStudent.java create mode 100644 cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolTeacher.java create mode 100644 cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceRecoder.java create mode 100644 cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendfail.java create mode 100644 cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendsuccess.java create mode 100644 cloud/lapi/pom.xml create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/LapiDemoApplication.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/Swagger2.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/Utils/FileUtils.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/Utils/SpringContextHolder.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/feign/XaFeign.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/pojo/HeartInfo.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/pojo/IdentificationInfo.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPI.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPIResponse.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonImageInfo.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfo.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfoList.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonTimeTemplateInfo.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/server/ServerRun.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/server/UrlParam.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/server/init/LapiServerInitializer.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/server/init/NettyFactory.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/server/pojo/HeartBack.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/server/thread/ServerThread.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java create mode 100644 cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java create mode 100644 cloud/lapi/src/main/resources/application.yml create mode 100644 cloud/lapi/src/main/resources/logback.xml delete mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/Test.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/utils/ThreadUtils.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolStudentMapper.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolTeacherMapper.java delete mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/StudentBean.java create mode 100644 cloud/search_smartCampus/src/main/resources/mapper/SzVSchoolStudentMapper.xml create mode 100644 cloud/search_smartCampus/src/main/resources/mapper/SzVSchoolTeacherMapper.xml create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/FaceController.java create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceRecoderMapper.java create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendfailMapper.java create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendsuccessMapper.java create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/FaceService.java create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/FaceServiceImpl.java create mode 100644 cloud/search_xiaoan/src/main/resources/mapper/FaceRecoderMapper.xml create mode 100644 cloud/search_xiaoan/src/main/resources/mapper/FaceSendfailMapper.xml create mode 100644 cloud/search_xiaoan/src/main/resources/mapper/FaceSendsuccessMapper.xml diff --git a/cloud/common/pom.xml b/cloud/common/pom.xml index c11ba14..5b701d5 100644 --- a/cloud/common/pom.xml +++ b/cloud/common/pom.xml @@ -22,6 +22,17 @@ + cn.rongcloud.im + server-sdk-java + 3.1.4 + + + + com.sun.mail + javax.mail + 1.6.2 + + com.nimbusds nimbus-jose-jwt 6.0 diff --git a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SZ_AttendanceDto.java b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SZ_AttendanceDto.java index 79492a9..9c370f3 100644 --- a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SZ_AttendanceDto.java +++ b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SZ_AttendanceDto.java @@ -26,6 +26,16 @@ public class SZ_AttendanceDto { private String ip ; private int port ; + private int outOrIn ; + + public int getOutOrIn() { + return outOrIn; + } + + public void setOutOrIn(int outOrIn) { + this.outOrIn = outOrIn; + } + public String getIp() { return ip; } diff --git a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/StudentBean.java b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/StudentBean.java new file mode 100644 index 0000000..05f6129 --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/StudentBean.java @@ -0,0 +1,307 @@ +package com.sincere.common.dto.smartCampus; + +import java.io.Serializable; +import java.util.Date; + +public class StudentBean implements Serializable { + + private String teacher_id; + + private String parent_id; + + private long ID; + + private String UserId; + + private String CustomerId; + + private int StudentType; + + private int UserType; + + private String name; + + private int ClassId; + + private String ClassName; + + private String OldCard; + + private String Card; + + private int SchoolId; + + private int school_id; + + private int IsNew; + + private int UpdateType; + + private Date AddTime; + + private int Sex; + + private String Face; + + private String studentcode; + + private String student_num; + + private String student_id; + + private String user_id; + + private String photo; + + private String teacher_num; + + private String num; + + public String getNum() { + return num; + } + + public void setNum(String num) { + this.num = num; + } + + public String getTeacher_num() { + return teacher_num; + } + + public void setTeacher_num(String teacher_num) { + this.teacher_num = teacher_num; + } + + public String getPhoto() { + return photo; + } + + public void setPhoto(String photo) { + this.photo = photo; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + + public String getStudentcode() { + return studentcode; + } + + public void setStudentcode(String studentcode) { + this.studentcode = studentcode; + } + + public String getUserId() { + return UserId; + } + + public void setUserId(String userId) { + UserId = userId; + } + + public String getCustomerId() { + return CustomerId; + } + + public void setCustomerId(String customerId) { + CustomerId = customerId; + } + + public int getStudentType() { + return StudentType; + } + + public void setStudentType(int studentType) { + StudentType = studentType; + } + + public int getUserType() { + return UserType; + } + + public String getTeacher_id() { + return teacher_id; + } + + public String getParent_id() { + return parent_id; + } + + public void setParent_id(String parent_id) { + this.parent_id = parent_id; + } + + public void setTeacher_id(String teacher_id) { + this.teacher_id = teacher_id; + } + + public void setUserType(int userType) { + UserType = userType; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getClassId() { + return ClassId; + } + + public void setClassId(int classId) { + ClassId = classId; + } + + public String getClassName() { + return ClassName; + } + + public void setClassName(String className) { + ClassName = className; + } + + public String getOldCard() { + return OldCard; + } + + public void setOldCard(String oldCard) { + OldCard = oldCard; + } + + public String getCard() { + return Card; + } + + public int getSchool_id() { + return school_id; + } + + public void setSchool_id(int school_id) { + this.school_id = school_id; + } + + public String getStudent_num() { + return student_num; + } + + public void setStudent_num(String student_num) { + this.student_num = student_num; + } + + public void setCard(String card) { + Card = card; + } + + public int getSchoolId() { + return SchoolId; + } + + public void setSchoolId(int schoolId) { + SchoolId = schoolId; + } + + public int getIsNew() { + return IsNew; + } + + public void setIsNew(int isNew) { + IsNew = isNew; + } + + public int getUpdateType() { + return UpdateType; + } + + public void setUpdateType(int updateType) { + UpdateType = updateType; + } + + public Date getAddTime() { + return AddTime; + } + + public void setAddTime(Date addTime) { + AddTime = addTime; + } + + public int getSex() { + return Sex; + } + + public void setSex(int sex) { + Sex = sex; + } + + public String getFace() { + return Face; + } + + public void setFace(String face) { + Face = face; + } + + public String getStudentCode() { + return studentcode; + } + + public void setStudentCode(String studentCode) { + this.studentcode = studentCode; + } + + public long getID() { + return ID; + } + + public void setID(long ID) { + this.ID = ID; + } + + public String getStudent_id() { + return student_id; + } + + public void setStudent_id(String student_id) { + this.student_id = student_id; + } + + @Override + public String toString() { + return "StudentBean{" + + "teacher_id='" + teacher_id + '\'' + + ", parent_id='" + parent_id + '\'' + + ", ID=" + ID + + ", UserId='" + UserId + '\'' + + ", CustomerId='" + CustomerId + '\'' + + ", StudentType=" + StudentType + + ", UserType=" + UserType + + ", name='" + name + '\'' + + ", ClassId=" + ClassId + + ", ClassName='" + ClassName + '\'' + + ", OldCard='" + OldCard + '\'' + + ", Card='" + Card + '\'' + + ", SchoolId=" + SchoolId + + ", school_id=" + school_id + + ", IsNew=" + IsNew + + ", UpdateType=" + UpdateType + + ", AddTime=" + AddTime + + ", Sex=" + Sex + + ", Face='" + Face + '\'' + + ", studentcode='" + studentcode + '\'' + + ", student_num='" + student_num + '\'' + + ", student_id='" + student_id + '\'' + + ", user_id='" + user_id + '\'' + + ", photo='" + photo + '\'' + + ", teacher_num='" + teacher_num + '\'' + + ", num='" + num + '\'' + + '}'; + } +} diff --git a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolStudent.java b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolStudent.java new file mode 100644 index 0000000..454f529 --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolStudent.java @@ -0,0 +1,235 @@ +package com.sincere.common.dto.smartCampus; + +import java.util.Date; + +public class SzVSchoolStudent { + private Integer schoolId; + + private Integer classId; + + private Integer studentId; + + private String userId; + + private String studentNum; + + private String name; + + private String num; + + private String photo; + + private Integer ismonitor; + + private Integer classState; + + private Integer roleState; + + private String modifystate; + + private String mobile; + + private String className; + + private Integer studentType; + + private String matrikelnummer; + + private String studentcode; + + private String sex; + + private String parentmobile; + + private String othername; + + private Date activetime; + + private Integer active; + + private String pass; + + public Integer getSchoolId() { + return schoolId; + } + + public void setSchoolId(Integer schoolId) { + this.schoolId = schoolId; + } + + public Integer getClassId() { + return classId; + } + + public void setClassId(Integer classId) { + this.classId = classId; + } + + public Integer getStudentId() { + return studentId; + } + + public void setStudentId(Integer studentId) { + this.studentId = studentId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getStudentNum() { + return studentNum; + } + + public void setStudentNum(String studentNum) { + this.studentNum = studentNum; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNum() { + return num; + } + + public void setNum(String num) { + this.num = num; + } + + public String getPhoto() { + return photo; + } + + public void setPhoto(String photo) { + this.photo = photo; + } + + public Integer getIsmonitor() { + return ismonitor; + } + + public void setIsmonitor(Integer ismonitor) { + this.ismonitor = ismonitor; + } + + public Integer getClassState() { + return classState; + } + + public void setClassState(Integer classState) { + this.classState = classState; + } + + public Integer getRoleState() { + return roleState; + } + + public void setRoleState(Integer roleState) { + this.roleState = roleState; + } + + public String getModifystate() { + return modifystate; + } + + public void setModifystate(String modifystate) { + this.modifystate = modifystate; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public Integer getStudentType() { + return studentType; + } + + public void setStudentType(Integer studentType) { + this.studentType = studentType; + } + + public String getMatrikelnummer() { + return matrikelnummer; + } + + public void setMatrikelnummer(String matrikelnummer) { + this.matrikelnummer = matrikelnummer; + } + + public String getStudentcode() { + return studentcode; + } + + public void setStudentcode(String studentcode) { + this.studentcode = studentcode; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getParentmobile() { + return parentmobile; + } + + public void setParentmobile(String parentmobile) { + this.parentmobile = parentmobile; + } + + public String getOthername() { + return othername; + } + + public void setOthername(String othername) { + this.othername = othername; + } + + public Date getActivetime() { + return activetime; + } + + public void setActivetime(Date activetime) { + this.activetime = activetime; + } + + public Integer getActive() { + return active; + } + + public void setActive(Integer active) { + this.active = active; + } + + public String getPass() { + return pass; + } + + public void setPass(String pass) { + this.pass = pass; + } +} \ No newline at end of file diff --git a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolTeacher.java b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolTeacher.java new file mode 100644 index 0000000..45f8dd1 --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SzVSchoolTeacher.java @@ -0,0 +1,173 @@ +package com.sincere.common.dto.smartCampus; + +public class SzVSchoolTeacher { + private Integer schoolId; + + private Integer classId; + + private Integer teacherId; + + private String userId; + + private String name; + + private String face; + + private String num; + + private String teacherNum; + + private String teacherMobile; + + private String mobile; + + private Integer classState; + + private Integer roleState; + + private Integer iskaoqin; + + private String openid; + + private String pass; + + private String dinguserid; + + private String qiyehaouserid; + + public Integer getSchoolId() { + return schoolId; + } + + public void setSchoolId(Integer schoolId) { + this.schoolId = schoolId; + } + + public Integer getClassId() { + return classId; + } + + public void setClassId(Integer classId) { + this.classId = classId; + } + + public Integer getTeacherId() { + return teacherId; + } + + public void setTeacherId(Integer teacherId) { + this.teacherId = teacherId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFace() { + return face; + } + + public void setFace(String face) { + this.face = face; + } + + public String getNum() { + return num; + } + + public void setNum(String num) { + this.num = num; + } + + public String getTeacherNum() { + return teacherNum; + } + + public void setTeacherNum(String teacherNum) { + this.teacherNum = teacherNum; + } + + public String getTeacherMobile() { + return teacherMobile; + } + + public void setTeacherMobile(String teacherMobile) { + this.teacherMobile = teacherMobile; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public Integer getClassState() { + return classState; + } + + public void setClassState(Integer classState) { + this.classState = classState; + } + + public Integer getRoleState() { + return roleState; + } + + public void setRoleState(Integer roleState) { + this.roleState = roleState; + } + + public Integer getIskaoqin() { + return iskaoqin; + } + + public void setIskaoqin(Integer iskaoqin) { + this.iskaoqin = iskaoqin; + } + + public String getOpenid() { + return openid; + } + + public void setOpenid(String openid) { + this.openid = openid; + } + + public String getPass() { + return pass; + } + + public void setPass(String pass) { + this.pass = pass; + } + + public String getDinguserid() { + return dinguserid; + } + + public void setDinguserid(String dinguserid) { + this.dinguserid = dinguserid; + } + + public String getQiyehaouserid() { + return qiyehaouserid; + } + + public void setQiyehaouserid(String qiyehaouserid) { + this.qiyehaouserid = qiyehaouserid; + } +} \ No newline at end of file diff --git a/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceRecoder.java b/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceRecoder.java new file mode 100644 index 0000000..8f43e0a --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceRecoder.java @@ -0,0 +1,75 @@ +package com.sincere.common.dto.xiaoan; + +import java.util.Date; + +public class FaceRecoder { + private String deviceid; + + private String userId; + + private String name; + + private String imgurl; + + private Integer inorout; + + private Date time; + + private String cardnum; + + public String getDeviceid() { + return deviceid; + } + + public void setDeviceid(String deviceid) { + this.deviceid = deviceid; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getImgurl() { + return imgurl; + } + + public void setImgurl(String imgurl) { + this.imgurl = imgurl; + } + + public Integer getInorout() { + return inorout; + } + + public void setInorout(Integer inorout) { + this.inorout = inorout; + } + + public Date getTime() { + return time; + } + + public void setTime(Date time) { + this.time = time; + } + + public String getCardnum() { + return cardnum; + } + + public void setCardnum(String cardnum) { + this.cardnum = cardnum; + } +} \ No newline at end of file diff --git a/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendfail.java b/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendfail.java new file mode 100644 index 0000000..0ff9d8b --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendfail.java @@ -0,0 +1,123 @@ +package com.sincere.common.dto.xiaoan; + +public class FaceSendfail { + private String deviceid; + + private String customerid; + + private String num; + + private String name; + + private String time; + + private String schoolname; + + private String imgpath; + + private Integer schoolid; + + private String failcontent; + + private Integer failtype; + + private Integer usertype; + + private Integer devicetype; + + public String getDeviceid() { + return deviceid; + } + + public void setDeviceid(String deviceid) { + this.deviceid = deviceid; + } + + public String getCustomerid() { + return customerid; + } + + public void setCustomerid(String customerid) { + this.customerid = customerid; + } + + public String getNum() { + return num; + } + + public void setNum(String num) { + this.num = num; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getSchoolname() { + return schoolname; + } + + public void setSchoolname(String schoolname) { + this.schoolname = schoolname; + } + + public String getImgpath() { + return imgpath; + } + + public void setImgpath(String imgpath) { + this.imgpath = imgpath; + } + + public Integer getSchoolid() { + return schoolid; + } + + public void setSchoolid(Integer schoolid) { + this.schoolid = schoolid; + } + + public String getFailcontent() { + return failcontent; + } + + public void setFailcontent(String failcontent) { + this.failcontent = failcontent; + } + + public Integer getFailtype() { + return failtype; + } + + public void setFailtype(Integer failtype) { + this.failtype = failtype; + } + + public Integer getUsertype() { + return usertype; + } + + public void setUsertype(Integer usertype) { + this.usertype = usertype; + } + + public Integer getDevicetype() { + return devicetype; + } + + public void setDevicetype(Integer devicetype) { + this.devicetype = devicetype; + } +} \ No newline at end of file diff --git a/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendsuccess.java b/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendsuccess.java new file mode 100644 index 0000000..210c491 --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FaceSendsuccess.java @@ -0,0 +1,105 @@ +package com.sincere.common.dto.xiaoan; + +import java.util.Date; + +public class FaceSendsuccess { + private String deviceid; + + private String customerid; + + private String num; + + private String name; + + private Date time; + + private String schoolname; + + private String imgpath; + + private Integer schoolid; + + private Integer usertype; + + private Integer devicetype; + + public String getDeviceid() { + return deviceid; + } + + public void setDeviceid(String deviceid) { + this.deviceid = deviceid; + } + + public String getCustomerid() { + return customerid; + } + + public void setCustomerid(String customerid) { + this.customerid = customerid; + } + + public String getNum() { + return num; + } + + public void setNum(String num) { + this.num = num; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getTime() { + return time; + } + + public void setTime(Date time) { + this.time = time; + } + + public String getSchoolname() { + return schoolname; + } + + public void setSchoolname(String schoolname) { + this.schoolname = schoolname; + } + + public String getImgpath() { + return imgpath; + } + + public void setImgpath(String imgpath) { + this.imgpath = imgpath; + } + + public Integer getSchoolid() { + return schoolid; + } + + public void setSchoolid(Integer schoolid) { + this.schoolid = schoolid; + } + + public Integer getUsertype() { + return usertype; + } + + public void setUsertype(Integer usertype) { + this.usertype = usertype; + } + + public Integer getDevicetype() { + return devicetype; + } + + public void setDevicetype(Integer devicetype) { + this.devicetype = devicetype; + } +} \ No newline at end of file diff --git a/cloud/common/src/main/java/com/sincere/common/util/DateUtils.java b/cloud/common/src/main/java/com/sincere/common/util/DateUtils.java index fe22f85..8764a75 100644 --- a/cloud/common/src/main/java/com/sincere/common/util/DateUtils.java +++ b/cloud/common/src/main/java/com/sincere/common/util/DateUtils.java @@ -28,6 +28,13 @@ public class DateUtils { return System.currentTimeMillis(); } + public static Date getByLong(String lo){ + long time = Long.parseLong(lo); + Date date = new Date(time); + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return string2Date(sd.format(date),format2); + } + public static String date2String(Date date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); diff --git a/cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java b/cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java index e8cde6b..b27b640 100644 --- a/cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java +++ b/cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java @@ -1,6 +1,10 @@ package com.sincere.common.util; import com.alibaba.fastjson.JSONObject; +import io.rong.RongCloud; +import io.rong.methods.user.User; +import io.rong.models.response.TokenResult; +import io.rong.models.user.UserModel; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.InputStreamRequestEntity; import org.apache.commons.httpclient.methods.PostMethod; @@ -40,17 +44,49 @@ public class HttpClientUtils { requestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build(); } -// public static void main(String[] args){ -//// String url = "http://http://zhktest.114school.com.cn/szkjapi/toyxy/addTeacherOrg" ; -//// String json = "{\"name\": \"子部门\",\"groupname\": \"父部门\",\"schoolid\": \"16\",\"token\": \"05719991\"}" ; -//// JSONObject jsonObject = HttpClientUtils.httpPostJson(url,json); -//// System.out.println(jsonObject.toJSONString()); -// -// String url = "http://campus.myjxt.com/api/Room/GetListPageRoom" ; -// String json = "PageIndex=1&roomId=6583&pageSize=9999" ; -// JSONObject jsonObject = HttpClientUtils.httpPost(url,json); + public static void main(String[] args) throws Exception { +// String url = "http://http://zhktest.114school.com.cn/szkjapi/toyxy/addTeacherOrg" ; +// String json = "{\"name\": \"子部门\",\"groupname\": \"父部门\",\"schoolid\": \"16\",\"token\": \"05719991\"}" ; +// JSONObject jsonObject = HttpClientUtils.httpPostJson(url,json); // System.out.println(jsonObject.toJSONString()); -// } + + String url = "http://39.100.248.170:8080/recv" ; + String json = "{\n" + + " \"appKey\":\"c9kqb3rdc2j9j\",\n" + + " \"channelId\":\"12\",\n" + + " \"event\":2,\n" + + " \"userId\":\"hHjap87\",\n" + + " \"timestamp\":"+System.currentTimeMillis()+",\n" + + " \"token\":\"y6f/aqQ2uJy9cgB4iKxxBNAX/fjWZa8YqXq8ZvODQXbnQpU4ylueQGbBvhBzsKU5camPO4XrURpN73+6paUtbPDbI+qinUYn\",\n" + + " \"extra\":\"xxxx\",\n" + + " \"members\":\n" + + " [{\n" + + " \"userId\": \"hHjap87\",\n" + + " \"data\":{\n" + + " \"key1\":\"value1\"\n" + + " }\n" + + " }\n" + + "}" ; + JSONObject jsonObject = HttpClientUtils.httpPostJson(url,json); + System.out.println(jsonObject.toJSONString()); +// String appKey = "c9kqb3rdc2j9j"; +// String appSecret = "L2ven2G1fB5"; +// +// RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret); +// User user = rongCloud.user; +// +// /** +// * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/user/user.html#register +// * +// * 注册用户,生成用户在融云的唯一身份标识 Token +// */ +// UserModel userModel = new UserModel() +// .setId("hHjap87") +// .setName("RongCloud") +// .setPortrait("http://www.rongcloud.cn/images/logo.png"); +// TokenResult result = user.register(userModel); +// System.out.println("getToken: " + result.toString()); + } /** * post请求传输json参数 diff --git a/cloud/lapi/pom.xml b/cloud/lapi/pom.xml new file mode 100644 index 0000000..9a7976e --- /dev/null +++ b/cloud/lapi/pom.xml @@ -0,0 +1,191 @@ + + + + cloud + com.sincere + 1.0.0 + + 4.0.0 + + lapi + + 1.8 + 2.9.2 + + + + + org.springframework.boot + spring-boot-starter-web + 2.2.5.RELEASE + + + com.sincere + common + 1.0.0 + + + + org.springframework.boot + spring-boot-starter-test + 2.2.5.RELEASE + test + + + + io.netty + netty-all + 4.1.2.Final + + + + com.alibaba + fastjson + 1.2.67 + + + + org.apache.commons + commons-lang3 + 3.9 + + + + + + + + + org.springframework.cloud + spring-cloud-starter-feign + 1.3.6.RELEASE + + + org.springframework.cloud + spring-cloud-openfeign-core + 2.1.2.RELEASE + + + org.apache.httpcomponents + httpclient + 4.5.12 + + + + org.apache.httpcomponents + httpcore + 4.4.13 + + + + org.apache.httpcomponents + httpmime + 4.5.12 + + + org.springframework + spring-test + 5.2.4.RELEASE + compile + + + + io.springfox + springfox-swagger-ui + ${swagger-version} + + + io.springfox + springfox-swagger2 + ${swagger-version} + + + + + + + boguan_server + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + UTF-8 + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + com.sincere.lapi.LapiDemoApplication + true + lib/ + + + ./config/ + + + + config/** + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + package + + copy-dependencies + + + + ${project.build.directory}/lib + + + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.5 + + UTF-8 + + + + + maven-source-plugin + 2.2 + + true + + + + compile + + jar + + + + + + + \ No newline at end of file diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/LapiDemoApplication.java b/cloud/lapi/src/main/java/com/sincere/lapi/LapiDemoApplication.java new file mode 100644 index 0000000..d605377 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/LapiDemoApplication.java @@ -0,0 +1,18 @@ +package com.sincere.lapi; + +import com.sincere.lapi.server.ServerRun; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@EnableFeignClients(basePackages = "com.sincere.lapi.feign") +@SpringBootApplication +public class LapiDemoApplication { + + public static void main(String[] args) { + SpringApplication.run(LapiDemoApplication.class, args); + ServerRun serverRun = new ServerRun(); + serverRun.start(5300); + } + +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/Swagger2.java b/cloud/lapi/src/main/java/com/sincere/lapi/Swagger2.java new file mode 100644 index 0000000..04cf594 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/Swagger2.java @@ -0,0 +1,44 @@ +package com.sincere.lapi; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.ArrayList; +import java.util.List; + +@EnableSwagger2 +@Configuration //让Spring来加载该类配置 +public class Swagger2 { + + @Bean + public Docket createRestApi() { + ParameterBuilder ticketPar = new ParameterBuilder(); + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .enableUrlTemplating(true) + .select() + // 扫描所有有注解的api,用这种方式更灵活 + .apis(RequestHandlerSelectors.basePackage("com.sincere.lapi.controller")) + .paths(PathSelectors.any()) + .build(); + + } + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("Spring Boot中使用Swagger2构建RESTful APIs") + .description("接口文档") + .termsOfServiceUrl("") + .version("1.0") + .build(); + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/Utils/FileUtils.java b/cloud/lapi/src/main/java/com/sincere/lapi/Utils/FileUtils.java new file mode 100644 index 0000000..cc734d3 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/Utils/FileUtils.java @@ -0,0 +1,136 @@ +package com.sincere.lapi.Utils; + +import org.apache.tomcat.util.http.fileupload.IOUtils; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; + +public class FileUtils { + + public static String img_url = "c:\\\\lapi\\" ; + public static String zip_url = "c:\\\\lapi\\zip\\" ; + + public static byte[] getBytes(String filePath){ + try{ + String dir = download(filePath); + String fName = dir.trim(); + String temp[] = fName.split("\\\\"); + String fileName = temp[temp.length-1]; + String zipUrl = CompressPic(dir,zip_url+fileName); + File file = new File(zipUrl); + long fileSize = file.length(); + if (fileSize > Integer.MAX_VALUE) { + System.out.println("file too big..."); + return null; + } + byte[] buffer = null; + FileInputStream fi = new FileInputStream(file); + buffer = new byte[(int) fileSize]; + int offset = 0; + int numRead = 0; + while (offset < buffer.length + && (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) { + offset += numRead; + } + // 确保所有数据均被读取 + if (offset != buffer.length) { + throw new IOException("Could not completely read file " + + file.getName()); + } + return buffer; + }catch (Exception e){ + + } + return null ; + } + + public static String download(String urlPath){ + File file = null; + String fName = urlPath.trim(); + String temp[] = fName.split("\\/"); + String fileName = temp[temp.length-1]; + try { + // 统一资源 + URL url = new URL(urlPath); + // 连接类的父类,抽象类 + URLConnection urlConnection = url.openConnection(); + // http的连接类 + HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection; + //设置超时 + httpURLConnection.setConnectTimeout(1000*5); + //设置请求方式,默认是GET + httpURLConnection.setRequestMethod("GET"); + // 设置字符编码 + httpURLConnection.setRequestProperty("Charset", "UTF-8"); + // 打开到此 URL引用的资源的通信链接(如果尚未建立这样的连接)。 + httpURLConnection.connect(); + + BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream()); + // 指定存放位置(有需求可以自定义) + String path = img_url + "lapi.jpg"; + file = new File(path); + // 校验文件夹目录是否存在,不存在就创建一个目录 + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + FileOutputStream fos = new FileOutputStream(file); + IOUtils.copy(bin, fos); + IOUtils.closeQuietly(fos); + return path; + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null ; + } + + public static String CompressPic(String srcPath, String targetPath) throws Exception { + double cutPercent = 0.2; + File file = new File(srcPath.trim()); + FileInputStream fileInputStream = new FileInputStream(file); + BufferedImage bufferedImage = ImageIO.read(fileInputStream); + int width = bufferedImage.getWidth(null); + int height = bufferedImage.getHeight(null); + long fileLength = file.length(); + if ((fileLength / 1024) < 100) { + writeImgToFile(bufferedImage, width, height, targetPath); + } else + while ((fileLength / 1024) >= 100) { + width = (int) (width * (1 - cutPercent)); + height = (int) (height * (1 - cutPercent)); + + writeImgToFile(bufferedImage, width, height, targetPath); + + File file1 = new File(targetPath); + FileInputStream fileInputStream1 = new FileInputStream(file1); + BufferedImage bufferedImage1 = ImageIO.read(fileInputStream1); + width = bufferedImage1.getWidth(null); + height = bufferedImage1.getHeight(null); + fileLength = file1.length(); + fileInputStream1.close(); + } +// System.out.printf("图片大小:"+fileLength/1024); + fileInputStream.close(); + return targetPath; + } + + private static void writeImgToFile(BufferedImage bufferedImage, int width, int height, String targetPath) { + try { + + BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); + tag.getGraphics().drawImage(bufferedImage, 0, 0, width, height, null); // 绘制缩小后的图 + FileOutputStream deskImage = new FileOutputStream(targetPath); // 输出到文件流 + boolean write = ImageIO.write(tag, "jpg", deskImage); + deskImage.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/Utils/SpringContextHolder.java b/cloud/lapi/src/main/java/com/sincere/lapi/Utils/SpringContextHolder.java new file mode 100644 index 0000000..eb33b83 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/Utils/SpringContextHolder.java @@ -0,0 +1,32 @@ +package com.sincere.lapi.Utils; + +import com.sincere.lapi.service.request.AttendanceService; +import com.sincere.lapi.service.request.TerminalHttpCall; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +/** + * @author chen + * @version 1.0 + * @date 2019/10/29 0029 16:35 + */ +@Component +public class SpringContextHolder implements ApplicationContextAware { + + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContextHolder.applicationContext = applicationContext; + } + + public static TerminalHttpCall getTerminalHttpCall(){ + return (TerminalHttpCall) applicationContext.getBean("terminalHttpCall"); + } + + public static AttendanceService getAttendanceService(){ + return (AttendanceService) applicationContext.getBean("attendanceService"); + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java b/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java new file mode 100644 index 0000000..dc84101 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/controller/LapiController.java @@ -0,0 +1,274 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/7 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.controller; + +import com.sincere.common.dto.smartCampus.SzVSchoolStudent; +import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; +import com.sincere.common.dto.xiaoan.FaceSendfail; +import com.sincere.common.dto.xiaoan.FaceSendsuccess; +import com.sincere.lapi.Utils.FileUtils; +import com.sincere.lapi.feign.ScFeign; +import com.sincere.lapi.feign.XaFeign; +import com.sincere.lapi.pojo.*; +import com.sincere.lapi.server.UrlParam; +import com.sincere.lapi.service.request.TerminalHttpCall; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import sun.misc.BASE64Encoder; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * description + * + * @author dW5565 + */ +@RestController +public class LapiController { + + @Autowired + ScFeign scFeign ; + + @Autowired + XaFeign xaFeign ; + + @Autowired + TerminalHttpCall terminalHttpCall = new TerminalHttpCall(); + + /** + * 下发整个学校 + * @param deviceIds 多个设备用,隔开 + * @param schoolId + * @param userType 1 老师 2 学生 + */ + @RequestMapping(value = "sendFaces", method = RequestMethod.GET) + @ApiOperation(value = "下发学校下所有人脸给指定设备", notes = "下发所有人脸给指定设备") + public void sendFaces(@RequestParam("deviceIds") String deviceIds, @RequestParam("schoolId") String schoolId, @RequestParam("userType") String userType) { + String[] deviceList = deviceIds.split(","); + if(userType.equals("1")){ + List list = scFeign.selectTeacherBySchoolId(schoolId) ; + for(String deviceId :deviceList){ + sendTeacherBatch(list,deviceId); + } + }else if( userType.equals("2")){ + List list = scFeign.selectStudentBySchoolId(schoolId) ; + for(String deviceId :deviceList){ + sendStudentBatch(list,deviceId); + } + } + } + + + + //下发单张人脸到设备 + @RequestMapping(value = "sendStuCardAndImg", method = RequestMethod.GET) + @ApiOperation("下发人脸给设备") + public boolean sendCardAndImg( @RequestParam("deviceId") String deviceId, @RequestParam("customerId") int customerId, @RequestParam("userType") String userType){ + if(userType.equals("1")){ + SzVSchoolTeacher teacher = scFeign.selectByTeacherId(customerId) ; + sendTeacher(teacher,deviceId); + }else if( userType.equals("2")){ + SzVSchoolStudent student = scFeign.selectByStudentId(customerId) ; + sendStudent(student,deviceId); + } + return true; + } + + private void sendStudentBatch( List list , String deviceId){ + for(SzVSchoolStudent student : list){ + if(StringUtils.isNotBlank(student.getPhoto())){ + sendStudent(student,deviceId); + } + } + } + + private void sendStudent(SzVSchoolStudent student , String deviceId){ + try{ + LAPIResponse response = sendImg(Long.valueOf(student.getStudentId()),student.getName(),student.getStudentNum(),student.getPhoto(),deviceId); + System.out.println("接收到的json-------"+response.toString()); + terminalHttpCall.removeKey(deviceId); + if(response.getStatusString().equals("Succeed")){ + insertSuccess(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2); + }else { + insertFail(deviceId,student.getStudentId(),student.getStudentNum(),student.getName(),student.getPhoto(),student.getSchoolId(),2,response.getStatusCode()); + } + }catch (Exception e){ + e.printStackTrace(); + } + + } + + private void sendTeacherBatch( List list , String deviceId){ + for(SzVSchoolTeacher teacher : list){ + if(StringUtils.isNotBlank(teacher.getFace())){ + sendTeacher(teacher,deviceId); + } + } + } + + private void sendTeacher(SzVSchoolTeacher teacher , String deviceId){ + try{ + LAPIResponse response = sendImg(Long.valueOf(teacher.getTeacherId()),teacher.getName(),teacher.getTeacherNum(),teacher.getFace(),deviceId); + terminalHttpCall.removeKey(deviceId); + if(response.getStatusString().equals("Succeed")){ + insertSuccess(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1); + }else { + insertFail(deviceId,teacher.getTeacherId(),teacher.getTeacherNum(),teacher.getName(),teacher.getFace(),teacher.getSchoolId(),1,response.getStatusCode()); + } + }catch (Exception e){ + e.printStackTrace(); + } + + } + + private LAPIResponse sendImg(long personId , String name , String code , String fileUrl , String deviceId){ + LAPIResponse response = new LAPIResponse() ; + PersonInfoList personInfoList = new PersonInfoList(); + List list1 = new ArrayList(); + personInfoList.setPersonInfoList(list1); + PersonInfo personInfo = new PersonInfo(); + list1.add(personInfo); + personInfoList.setNum(list1.size()); + + personInfo.setPersonID(personId); + personInfo.setLastChange(System.currentTimeMillis() / 1000); + personInfo.setPersonName(name); + personInfo.setGender(1); + + PersonTimeTemplateInfo personTimeTemplateInfo = new PersonTimeTemplateInfo(); + personTimeTemplateInfo.setBeginTime(System.currentTimeMillis() / 1000); + personTimeTemplateInfo.setEndTime((System.currentTimeMillis() + 10 * 365 * 24 * 60 * 60 * 1000L) / 1000); + personTimeTemplateInfo.setIndex(0); + personInfo.setTimeTemplate(personTimeTemplateInfo); + + List list = new ArrayList(); + IdentificationInfo identificationInfo = new IdentificationInfo(); + list.add(identificationInfo); + identificationInfo.setNumber(Long.parseLong(getCard(code), 16)+""); + identificationInfo.setType(1); + personInfo.setIdentificationList(list); + personInfo.setIdentificationNum(list.size()); + + List imageList = new ArrayList(); + try{ + PersonImageInfo personImageInfo = new PersonImageInfo(); + String picture = new BASE64Encoder().encode(FileUtils.getBytes(fileUrl)); + picture = picture.replaceAll("\n", "").replaceAll("\r", ""); + personImageInfo.setData(picture); + personImageInfo.setFaceID(1L); + //personImageInfo.setName("1.jpg"); + personImageInfo.setSize(picture.length()); + imageList.add(personImageInfo); + personInfo.setImageList(imageList); + personInfo.setImageNum(imageList.size()); + terminalHttpCall.addPerson(deviceId, personInfoList); + + Thread.sleep(2000); + try{ + response = terminalHttpCall.getResponse(deviceId); + response.getStatusString(); + }catch (Exception e){ + Thread.sleep(5000); + response = terminalHttpCall.getResponse(deviceId); + } + + } catch(Exception e) { + System.out.println("下发失败"+e.getMessage()); + } + return response ; + } + + + private String getCard(String card) { + + if (card.length() == 8) { + int length = card.length(); + String result = card.substring(length - 2, length) + card.substring(length - 4, length - 2) + card.substring(length - 6, length - 4) + + card.substring(length - 8, length - 6); + return result; + + } else { + System.out.println("卡号位数不对:" + card); + return ""; + } + + } + + private void insertSuccess(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType){ + FaceSendsuccess send = new FaceSendsuccess(); + send.setDeviceid(deviceId); + send.setCustomerid(customerId+""); + send.setDevicetype(25); + send.setImgpath(imgPath); + send.setSchoolid(schoolId); + send.setUsertype(userType); + send.setName(name); + send.setNum(num); + xaFeign.insertFaceSuccess(send); + } + + private void insertFail(String deviceId , int customerId , String num , String name , String imgPath , int schoolId ,int userType , int failType ){ + FaceSendfail send = new FaceSendfail(); + send.setDeviceid(deviceId); + send.setCustomerid(customerId+""); + send.setDevicetype(25); + send.setImgpath(imgPath); + send.setSchoolid(schoolId); + send.setUsertype(userType); + send.setName(name); + send.setNum(num); + send.setFailtype(failType); + send.setFailcontent(failMap.get(failType+"")); + xaFeign.insertFaceFail(send); + } + + + public static Map failMap = new HashMap<>(); + + static { + failMap.put("1000","算法初始化失败"); + failMap.put("1001","人脸检测失败"); + failMap.put("1002","图片未检测到人脸"); + failMap.put("1003","jpeg照片解码失败"); + failMap.put("1004","图片质量分数不满足"); + failMap.put("1005","图片缩放失败"); + failMap.put("1006","未启用智能"); + failMap.put("1007","导入图片过小"); + failMap.put("1008","导入图片过大"); + failMap.put("1009","导入图片分辨率超过1920*1080"); + failMap.put("1010","导入图片不存在"); + failMap.put("1011","人脸元素个数已达到上限"); + failMap.put("1012",":智能棒算法模型不匹配"); + failMap.put("1013","人脸导入库成员证件号非法"); + failMap.put("1014","人脸导入库成员图片格式错误"); + failMap.put("1015","通道布控已达设备能力上限"); + failMap.put("1016","其它客户端正在进行操作人脸库"); + failMap.put("1017","人脸库文件正在更新中"); + failMap.put("1018","Json反序列化失败"); + failMap.put("1019","Base64解码失败"); + failMap.put("1020","人脸照片,编码后的大小和实际接收到的长度不一致"); + + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java b/cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java new file mode 100644 index 0000000..727d5f7 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/feign/ScFeign.java @@ -0,0 +1,39 @@ +package com.sincere.lapi.feign; + +import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; +import com.sincere.common.dto.smartCampus.SzVSchoolStudent; +import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @author chen + * @version 1.0 + * @date 2019/11/28 0028 9:17 + */ +@FeignClient("smartCampusSearch") +public interface ScFeign { + + @RequestMapping(value = "/attendance/addAttendance", method = RequestMethod.POST) + void addAttendance(@RequestBody SZ_AttendanceDto attendanceDto); + + @RequestMapping(method = RequestMethod.GET, value = "/attendance/selectAttendaceWithId") + SZ_AttendanceDto selectAttendaceWithId(@RequestParam("clint_id") String clint_id); + + @RequestMapping(value = "/sm/user/selectTeacherBySchoolId",method = RequestMethod.GET) + List selectTeacherBySchoolId(@RequestParam("schoolId") String schoolId); + + @RequestMapping(value = "/sm/user/selectStudentBySchoolId",method = RequestMethod.GET) + List selectStudentBySchoolId(@RequestParam("schoolId") String schoolId); + + @RequestMapping(value = "/sm/user/selectByTeacherId",method = RequestMethod.GET) + SzVSchoolTeacher selectByTeacherId(@RequestParam("teacherId") int teacherId); + + @RequestMapping(value = "/sm/user/selectByStudentId",method = RequestMethod.GET) + SzVSchoolStudent selectByStudentId(@RequestParam("studentId") int studentId); +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/feign/XaFeign.java b/cloud/lapi/src/main/java/com/sincere/lapi/feign/XaFeign.java new file mode 100644 index 0000000..1580903 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/feign/XaFeign.java @@ -0,0 +1,22 @@ +package com.sincere.lapi.feign; + +import com.sincere.common.dto.xiaoan.FaceRecoder; +import com.sincere.common.dto.xiaoan.FaceSendfail; +import com.sincere.common.dto.xiaoan.FaceSendsuccess; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@FeignClient("xiaoanSearch") +public interface XaFeign { + + @RequestMapping(value = "/xa/face/success",method = RequestMethod.POST) + void insertFaceSuccess(@RequestBody FaceSendsuccess faceSendsuccess); + + @RequestMapping(value = "/xa/face/fail",method = RequestMethod.POST) + void insertFaceFail(@RequestBody FaceSendfail faceSendfail); + + @RequestMapping(value = "/xa/face/insertRecode",method = RequestMethod.POST) + void insertRecode(@RequestBody FaceRecoder faceRecoder); +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/pojo/HeartInfo.java b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/HeartInfo.java new file mode 100644 index 0000000..2285d36 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/HeartInfo.java @@ -0,0 +1,60 @@ +package com.sincere.lapi.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.io.Serializable; + +//心跳 +public class HeartInfo implements Serializable { + + @JSONField(name = "RefId", ordinal = 1) + private String refId ; + @JSONField(name = "Time", ordinal = 2) + private String time ; + @JSONField(name = "NextTime", ordinal = 3) + private String nextTime ; + @JSONField(name = "DeviceCode", ordinal = 4) + private String deviceCode ; + @JSONField(name = "DeviceType", ordinal = 5) + private int deviceType ; + + public String getRefId() { + return refId; + } + + public void setRefId(String refId) { + this.refId = refId; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getNextTime() { + return nextTime; + } + + public void setNextTime(String nextTime) { + this.nextTime = nextTime; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public int getDeviceType() { + return deviceType; + } + + public void setDeviceType(int deviceType) { + this.deviceType = deviceType; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/pojo/IdentificationInfo.java b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/IdentificationInfo.java new file mode 100644 index 0000000..4ac40f4 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/IdentificationInfo.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/13 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +/** + * description + * + * @author dW5565 + */ +public class IdentificationInfo { + + @JSONField(name = "Type", ordinal = 1) + private Integer type; + @JSONField(name = "Number", ordinal = 2) + private String number; + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPI.java b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPI.java new file mode 100644 index 0000000..807144c --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPI.java @@ -0,0 +1,17 @@ +package com.sincere.lapi.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +public class LAPI { + + @JSONField(name = "Response", ordinal = 1) + private LAPIResponse response ; + + public LAPIResponse getResponse() { + return response; + } + + public void setResponse(LAPIResponse response) { + this.response = response; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPIResponse.java b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPIResponse.java new file mode 100644 index 0000000..b807045 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/LAPIResponse.java @@ -0,0 +1,96 @@ +package com.sincere.lapi.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.io.Serializable; + +/** + * @author wW4799 + * @date 2018/10/18. + */ +public class LAPIResponse implements Serializable { + /** + * 响应URL + */ + @JSONField(name = "ResponseURL", ordinal = 1) + private String responseUrl; + + /** + * 创建Id + */ + @JSONField(name = "CreatedID", ordinal = 2) + private int createdId; + + /** + * 状态编码 + */ + @JSONField(name = "StatusCode", ordinal = 3) + private int statusCode; + + /** + * 状态描述 + */ + @JSONField(name = "StatusString", ordinal = 4) + private String statusString; + + /** + * 返回数据 + */ + @JSONField(name = "Data", ordinal = 5) + private String data; + + public String getResponseUrl() { + return responseUrl; + } + + public void setResponseUrl(String responseUrl) { + this.responseUrl = responseUrl; + } + + + public int getCreatedId() { + return createdId; + } + + public void setCreatedId(int createdId) { + this.createdId = createdId; + } + + + public int getStatusCode() { + return statusCode; + } + + public void setStatusCode(int statusCode) { + this.statusCode = statusCode; + } + + + public String getStatusString() { + return statusString; + } + + public void setStatusString(String statusString) { + this.statusString = statusString; + } + + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } + + @Override + public String toString() { + return "LAPIResponse{" + + "responseUrl='" + responseUrl + '\'' + + ", createdId=" + createdId + + ", statusCode=" + statusCode + + ", statusString='" + statusString + '\'' + + ", data='" + data + '\'' + + '}'; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonImageInfo.java b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonImageInfo.java new file mode 100644 index 0000000..95d802d --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonImageInfo.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/13 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +/** + * description + * + * @author dW5565 + */ +public class PersonImageInfo { + @JSONField(name = "FaceID", ordinal = 1) + private Long faceID; + @JSONField(name = "Name", ordinal = 2) + private String name; + @JSONField(name = "Size", ordinal = 3) + private Integer size; + @JSONField(name = "Data", ordinal = 4) + private String data; + + public Long getFaceID() { + return faceID; + } + + public void setFaceID(Long faceID) { + this.faceID = faceID; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfo.java b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfo.java new file mode 100644 index 0000000..103222c --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfo.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/13 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.List; + +/** + * description + * + * @author dW5565 + */ +public class PersonInfo { + + @JSONField(name = "PersonID", ordinal = 1) + private Long personID; + @JSONField(name = "LastChange", ordinal = 2) + private Long lastChange; + @JSONField(name = "PersonName", ordinal = 3) + private String personName; + @JSONField(name = "Gender", ordinal = 4) + private Integer gender; + @JSONField(name = "TimeTemplate", ordinal = 5) + private PersonTimeTemplateInfo timeTemplate; + @JSONField(name = "IdentificationNum", ordinal = 6) + private Integer identificationNum; + @JSONField(name = "IdentificationList", ordinal = 7) + private List identificationList; + @JSONField(name = "ImageNum", ordinal = 8) + private Integer imageNum; + @JSONField(name = "ImageList", ordinal = 9) + private List imageList; + + public Long getPersonID() { + return personID; + } + + public void setPersonID(Long personID) { + this.personID = personID; + } + + public Long getLastChange() { + return lastChange; + } + + public void setLastChange(Long lastChange) { + this.lastChange = lastChange; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public Integer getGender() { + return gender; + } + + public void setGender(Integer gender) { + this.gender = gender; + } + + public PersonTimeTemplateInfo getTimeTemplate() { + return timeTemplate; + } + + public void setTimeTemplate(PersonTimeTemplateInfo timeTemplate) { + this.timeTemplate = timeTemplate; + } + + public Integer getIdentificationNum() { + return identificationNum; + } + + public void setIdentificationNum(Integer identificationNum) { + this.identificationNum = identificationNum; + } + + public List getIdentificationList() { + return identificationList; + } + + public void setIdentificationList(List identificationList) { + this.identificationList = identificationList; + } + + public Integer getImageNum() { + return imageNum; + } + + public void setImageNum(Integer imageNum) { + this.imageNum = imageNum; + } + + public List getImageList() { + return imageList; + } + + public void setImageList(List imageList) { + this.imageList = imageList; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfoList.java b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfoList.java new file mode 100644 index 0000000..8525864 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonInfoList.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/13 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.List; + +/** + * description + * + * @author dW5565 + */ +public class PersonInfoList { + + @JSONField(name = "Num", ordinal = 1) + private Integer num; + @JSONField(name = "PersonInfoList", ordinal = 2) + private List personInfoList; + + public Integer getNum() { + return num; + } + + public void setNum(Integer num) { + this.num = num; + } + + public List getPersonInfoList() { + return personInfoList; + } + + public void setPersonInfoList(List personInfoList) { + this.personInfoList = personInfoList; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonTimeTemplateInfo.java b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonTimeTemplateInfo.java new file mode 100644 index 0000000..2c36715 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/pojo/PersonTimeTemplateInfo.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/13 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +/** + * description + * + * @author dW5565 + */ +public class PersonTimeTemplateInfo { + + + @JSONField(name = "BeginTime", ordinal = 1) + private Long beginTime; + + @JSONField(name = "EndTime", ordinal = 2) + private Long endTime; + + @JSONField(name = "Index", ordinal = 3) + private Integer index; + + public Long getBeginTime() { + return beginTime; + } + + public void setBeginTime(Long beginTime) { + this.beginTime = beginTime; + } + + public Long getEndTime() { + return endTime; + } + + public void setEndTime(Long endTime) { + this.endTime = endTime; + } + + public Integer getIndex() { + return index; + } + + public void setIndex(Integer index) { + this.index = index; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/server/ServerRun.java b/cloud/lapi/src/main/java/com/sincere/lapi/server/ServerRun.java new file mode 100644 index 0000000..8674bd8 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/server/ServerRun.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/7 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.server; + +import com.sincere.lapi.server.thread.ServerThread; + +/** + * description + * + * @author dW5565 + */ +public class ServerRun { + public void start(int port){ + try { + Thread runthread = new Thread(new ServerThread(port),"LapiServer"); + runthread.start(); + } catch (Exception e) { + System.out.println("Fail to create loop for:" + e); + } + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/server/UrlParam.java b/cloud/lapi/src/main/java/com/sincere/lapi/server/UrlParam.java new file mode 100644 index 0000000..0063ff3 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/server/UrlParam.java @@ -0,0 +1,12 @@ +package com.sincere.lapi.server; + +public class UrlParam { + + //远程开门 + public static String remote_open = "/LAPI/V1.0/PACS/Controller/RemoteOpened" ; + //默认员工库 添加员工 默认员工库id=3 + public static String person_add = "/LAPI/V1.0/PeopleLibraries/3/People" ; + //设备在线 + public static String keep_alive = "/LAPI/V1.0/System/KeepAlive" ; + +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java b/cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java new file mode 100644 index 0000000..17730ff --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/server/handler/HttpClientHandler.java @@ -0,0 +1,107 @@ +package com.sincere.lapi.server.handler; + +import com.alibaba.fastjson.JSONObject; +import com.sincere.common.util.DateUtils; +import com.sincere.lapi.Utils.SpringContextHolder; +import com.sincere.lapi.pojo.HeartInfo; +import com.sincere.lapi.pojo.LAPI; +import com.sincere.lapi.pojo.LAPIResponse; +import com.sincere.lapi.server.UrlParam; +import com.sincere.lapi.server.pojo.HeartBack; +import com.sincere.lapi.service.request.AttendanceService; +import com.sincere.lapi.service.request.TerminalHttpCall; +import io.netty.buffer.ByteBuf; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.handler.codec.http.*; +import io.netty.util.CharsetUtil; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import static io.netty.buffer.Unpooled.copiedBuffer; + +/** + * description + * + * @author dW5565 + */ +public class HttpClientHandler extends ChannelInboundHandlerAdapter { + + Logger logger = LoggerFactory.getLogger(HttpClientHandler.class); + + @Override + public void channelRead(ChannelHandlerContext ctx, Object msg) + throws Exception { + TerminalHttpCall call = SpringContextHolder.getTerminalHttpCall(); + AttendanceService attendanceService = SpringContextHolder.getAttendanceService(); + String content = (String) msg; + logger.info(content); + if (content.contains("/LAPI/V1.0/PACS/Controller/HeartReportInfo")) { + HeartInfo heartInfo = JSONObject.parseObject(getJson(content),HeartInfo.class); + call.addChannel(heartInfo.getDeviceCode(),ctx); + attendanceService.addAttendance(heartInfo.getDeviceCode()); + } + // 记录推送 + if (content.contains("/LAPI/V1.0/System/Event/Notification/PersonVerification")) { + String faceInfo = content.substring(content.indexOf("FaceInfoList")); + String timeInfo = faceInfo.substring(faceInfo.indexOf("Timestamp")); + String time = timeInfo.substring(11,timeInfo.indexOf(",")).trim(); + String deviceString = content.substring(content.indexOf("DeviceCode")); + String deviceCode = deviceString.substring(15,deviceString.indexOf(",")); + deviceCode = deviceCode.substring(0,deviceCode.length()-1); + call.setDeviceTime(deviceCode,time); + }else if (StringUtils.contains(content, "Response")) { + LAPIResponse lapiResponse = JSONObject.parseObject(content, LAPI.class).getResponse(); + if(lapiResponse.getResponseUrl().equals(UrlParam.person_add)){ + //人脸添加 + call.putResponse(call.getDeviceCodeByChannel(ctx),lapiResponse); + } + }else if(content.contains("MatchPersonID")){ + String personIdString = content.substring(content.indexOf("MatchPersonID")); + String personId = personIdString.substring(15,personIdString.indexOf(",")).trim(); + String deviceCode = call.getDeviceCodeByChannel(ctx); + String time = call.getDeviceTime(deviceCode); + attendanceService.insertRecode(personId,deviceCode,time); + } + ctx.flush(); + } + + public String getJson(String context){ + String msg = context.substring(context.indexOf("{"),context.indexOf("}")+1); + return msg ; + } + + //心跳回包 + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + HeartBack heartBack =new HeartBack(); + heartBack.setCode(0); + heartBack.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis()))); + ByteBuf myContent = copiedBuffer(heartBack.toString(), CharsetUtil.UTF_8); + FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, myContent); + + response.headers().set(HttpHeaderNames.CONTENT_LENGTH, heartBack.toString().length()); + response.headers().set(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.TEXT_PLAIN); + //开启长连接 + response.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.CLOSE); + response.headers().set("X-Frame-Options", "SAMEORIGIN"); + + //ChannelFuture future = ctx.writeAndFlush(response); + // System.out.println(future.isSuccess()); + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + //super.exceptionCaught(ctx, cause); + Channel incoming = ctx.channel(); + System.out.println("SimpleChatClient:" + incoming.remoteAddress()+"异常 : "+ cause); + //异常出现就关闭连接 + if(incoming.isActive())ctx.close(); + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/server/init/LapiServerInitializer.java b/cloud/lapi/src/main/java/com/sincere/lapi/server/init/LapiServerInitializer.java new file mode 100644 index 0000000..e65cb91 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/server/init/LapiServerInitializer.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/8 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.server.init; + +import com.sincere.lapi.server.handler.HttpClientHandler; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelPipeline; +import io.netty.channel.socket.SocketChannel; +import io.netty.handler.codec.rtsp.RtspEncoder; +import io.netty.handler.codec.string.StringDecoder; +import io.netty.handler.timeout.ReadTimeoutHandler; + + + +/** + * description + * + * @author dW5565 + */ +public class LapiServerInitializer extends ChannelInitializer { + + @Override + protected void initChannel(SocketChannel ch) throws Exception { + ChannelPipeline pipeline = ch.pipeline(); + + pipeline.addLast(new StringDecoder()); +// pipeline.addLast(new HttpRequestEncoder()); + //pipeline.addLast(new HttpResponseEncoder()); + //可以进行请求、响应编码 + pipeline.addLast(new RtspEncoder()); + //保活超时时间 + pipeline.addLast(new ReadTimeoutHandler(600)); + //处理 + pipeline.addLast(new HttpClientHandler()); + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/server/init/NettyFactory.java b/cloud/lapi/src/main/java/com/sincere/lapi/server/init/NettyFactory.java new file mode 100644 index 0000000..1c6d4dc --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/server/init/NettyFactory.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/8 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.server.init; + +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.nio.NioServerSocketChannel; + +/** + * description + * + * @author dW5565 + */ +public class NettyFactory { + + public void createNetty(int port) { + //Group:群组,Loop:循环,Event:事件,这几个东西联在一起,相比大家也大概明白它的用途了。 + //Netty内部都是通过线程在处理各种数据,EventLoopGroup就是用来管理调度他们的,注册Channel,管理他们的生命周期。 + //NioEventLoopGroup是一个处理I/O操作的多线程事件循环 + //bossGroup作为boss,接收传入连接 + //因为bossGroup仅接收客户端连接,不做复杂的逻辑处理,为了尽可能减少资源的占用,取值越小越好 + EventLoopGroup bossGroup = new NioEventLoopGroup(1); + //workerGroup作为worker,处理boss接收的连接的流量和将接收的连接注册进入这个worker + EventLoopGroup workerGroup = new NioEventLoopGroup(); + try { + ServerBootstrap b = new ServerBootstrap(); + b.group(bossGroup, workerGroup); + b.channel(NioServerSocketChannel.class); + //服务初始化通道处理 + b.childHandler(new LapiServerInitializer()); + //等待处理的队列大小 + b.option(ChannelOption.SO_BACKLOG, 128); + // b.option(ChannelOption.SO_RCVBUF,1024*1024*10); + //是否启用心跳保活机制。在双方TCP套接字建立连接后(即都进入ESTABLISHED状态)并且在两个小时左右上层没有任何数据传输的情况下,这套机制才会被激活。 + //childOption是用来给父级ServerChannel之下的Channels设置参数的 + b.childOption(ChannelOption.SO_KEEPALIVE, true); + // 绑定端口 + ChannelFuture f = b.bind(port).sync(); + //sync()会同步等待连接操作结果,用户线程将在此wait(),直到连接操作完成之后,线程被notify(),用户代码继续执行 + //closeFuture()当Channel关闭时返回一个ChannelFuture,用于链路检测 + f.channel().closeFuture().sync(); + } catch (Exception e) { + System.out.println(e); + } finally { + //资源优雅释放 + bossGroup.shutdownGracefully(); + workerGroup.shutdownGracefully(); + } + } + +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/server/pojo/HeartBack.java b/cloud/lapi/src/main/java/com/sincere/lapi/server/pojo/HeartBack.java new file mode 100644 index 0000000..c9fac0d --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/server/pojo/HeartBack.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/9 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.server.pojo; + +import com.alibaba.fastjson.annotation.JSONField; + +/** + * 本用例未做心跳回包,请自行回包 + * + * @author dW5565 + */ +public class HeartBack { + + @JSONField(name = "ResponseURL", ordinal = 1) + private String responseURL; + @JSONField(name = "Code", ordinal = 1) + private int code = 0; + @JSONField(name = "Data", ordinal = 1) + private String time; + + //private class Data{ + // @JSONField(name = "Time", ordinal = 1) + //private String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis())); + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + //} + + public String getResponseURL() { + return responseURL; + } + + public void setResponseURL(String responseURL) { + this.responseURL = responseURL; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + //public Data getData() { + //return data; + //} + + //public void setData(Data data) { + //this.data = data; + //} + + @Override + public String toString() { + return "{\n" + + "\"ResponseURL\": \"/LAPI/V1.0/PACS/Controller/HeartReportInfo\", \n" + + "\"Code\": 0, \n" + + "\"Data\": {\n" + + " \"Time\": \"" + time + "\"\n" + + "}\n" + + "}\n"; + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/server/thread/ServerThread.java b/cloud/lapi/src/main/java/com/sincere/lapi/server/thread/ServerThread.java new file mode 100644 index 0000000..128deac --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/server/thread/ServerThread.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2018, ZheJiang Uniview Technologies Co., Ltd. All rights reserved. + * + *------------------------------------------------------------------------------ + * Product : 速通门 + * Module Name : com.unv.fastgate.server.service + * Date Created: 2019/5/7 + * Creator : dW5565 dongchenghao + * Description : + * + *------------------------------------------------------------------------------ + * Modification History + * DATE NAME DESCRIPTION + *------------------------------------------------------------------------------ + *------------------------------------------------------------------------------ + */ +package com.sincere.lapi.server.thread; + +import com.sincere.lapi.server.init.NettyFactory; + + +/** + * description + * + * @author dW5565 + */ +public class ServerThread implements Runnable { + private int port; + + public ServerThread(int port) { + this.port = port; + } + + @Override + public void run() { + NettyFactory nettyFactory = new NettyFactory(); + nettyFactory.createNetty(port); + } +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java b/cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java new file mode 100644 index 0000000..8021fa1 --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/service/request/AttendanceService.java @@ -0,0 +1,52 @@ +package com.sincere.lapi.service.request; + +import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; +import com.sincere.common.dto.smartCampus.SzVSchoolStudent; +import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; +import com.sincere.common.dto.xiaoan.FaceRecoder; +import com.sincere.common.util.DateUtils; +import com.sincere.lapi.feign.ScFeign; +import com.sincere.lapi.feign.XaFeign; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service("attendanceService") +public class AttendanceService { + + @Autowired + ScFeign scFeign ; + + @Autowired + XaFeign xaFeign ; + + public void addAttendance(String clientId){ + SZ_AttendanceDto dto = new SZ_AttendanceDto(); + dto.setClint_id(clientId); + dto.setClint_type("25"); + scFeign.addAttendance(dto); + } + + + public void insertRecode(String customerId , String deviceCode , String time){ + SZ_AttendanceDto attendanceDto = scFeign.selectAttendaceWithId(deviceCode); + FaceRecoder faceRecoder = new FaceRecoder(); + faceRecoder.setDeviceid(deviceCode); + faceRecoder.setInorout(attendanceDto.getOutOrIn()); + faceRecoder.setTime(DateUtils.getByLong(time)); + SzVSchoolTeacher teacher = scFeign.selectByTeacherId(Integer.valueOf(customerId)); + if(teacher == null){ + SzVSchoolStudent student = scFeign.selectByStudentId(Integer.valueOf(customerId)); + faceRecoder.setName(student.getName()); + faceRecoder.setImgurl(student.getPhoto()); + faceRecoder.setUserId(customerId); + faceRecoder.setCardnum(student.getStudentNum()); + }else { + faceRecoder.setCardnum(teacher.getTeacherNum()); + faceRecoder.setUserId(customerId); + faceRecoder.setImgurl(teacher.getFace()); + faceRecoder.setName(teacher.getName()); + } + xaFeign.insertRecode(faceRecoder); + } + +} diff --git a/cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java b/cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java new file mode 100644 index 0000000..e8b633e --- /dev/null +++ b/cloud/lapi/src/main/java/com/sincere/lapi/service/request/TerminalHttpCall.java @@ -0,0 +1,152 @@ +package com.sincere.lapi.service.request; + +import com.alibaba.fastjson.JSON; +import com.sincere.common.util.DateUtils; +import com.sincere.lapi.pojo.LAPIResponse; +import com.sincere.lapi.pojo.PersonInfoList; +import com.sincere.lapi.server.UrlParam; +import io.netty.buffer.Unpooled; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.http.*; +import org.springframework.stereotype.Component; + +import java.net.URI; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 终端http调用 + * + * @author dW5565 + */ +@Component("terminalHttpCall") +public class TerminalHttpCall { + + + //设备号 对应 通道 + private Map channelMap = new ConcurrentHashMap(); + + //通道 对应 设备 + private Map channelCodeMap = new ConcurrentHashMap(); + //key=deviceCode + private Map responseMap = new ConcurrentHashMap<>(); + //设备刷脸时间 + private Map device2TimeMap = new ConcurrentHashMap<>(); + + public void setDeviceTime(String deviceCode , String time){ + //给的是s 转ms + device2TimeMap.put(deviceCode,time+"000"); + } + + public String getDeviceTime(String deviceCode){ + String time = device2TimeMap.get(deviceCode); + device2TimeMap.remove(deviceCode); + return time ; + } + + + public void putResponse(String key , LAPIResponse lapiResponse){ + responseMap.put(key,lapiResponse); + } + + public LAPIResponse getResponse(String key){ + return responseMap.get(key); + } + + public void removeKey(String key){ + responseMap.remove(key); + } + + public void addChannel(String deviceCode , ChannelHandlerContext channelHandlerContext){ + channelMap.put(deviceCode, channelHandlerContext); + channelCodeMap.put(channelHandlerContext,deviceCode); + } + + public ChannelHandlerContext getChannel(String deviceCode) { + ChannelHandlerContext channelHandlerContext = channelMap.get(deviceCode); + if (channelHandlerContext.channel().isActive()) { + return channelHandlerContext; + } + return null; + } + + public String getDeviceCodeByChannel(ChannelHandlerContext channelHandlerContext){ + return channelCodeMap.get(channelHandlerContext); + } + + public boolean addPerson(String deviceCode , PersonInfoList personInfoList){ + return add(deviceCode, UrlParam.person_add,personInfoList); + } + + public boolean keepAlive(String deviceCode){ + return get(deviceCode,UrlParam.keep_alive); + } + + + private boolean put(String deviceCode , String prefixUrl) { + try { + URI url = new URI(prefixUrl); + //配置HttpRequest的请求数据和一些配置信息 + FullHttpRequest request = new DefaultFullHttpRequest( + HttpVersion.HTTP_1_1, HttpMethod.PUT, url.toASCIIString()); + request.headers() + .set(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.APPLICATION_JSON) + .set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); + ChannelHandlerContext ctx = this.getChannel(deviceCode); + if(ctx == null){ + return false; + } + ctx.writeAndFlush(request); + }catch (Exception e){ + System.out.println( e); + return false; + } + return true; + } + + private boolean get(String deviceCode , String prefixUrl) { + try { + URI url = new URI(prefixUrl); + //配置HttpRequest的请求数据和一些配置信息 + FullHttpRequest request = new DefaultFullHttpRequest( + HttpVersion.HTTP_1_1, HttpMethod.GET, url.toASCIIString()); + request.headers() + .set(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.APPLICATION_JSON) + .set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); + ChannelHandlerContext ctx = this.getChannel(deviceCode); + if(ctx == null){ + return false; + } + ctx.writeAndFlush(request); + }catch (Exception e){ + System.out.println( e); + return false; + } + return true; + } + + private boolean add(String deviceCode , String prefixUrl , E e) { + try { + URI url = new URI(prefixUrl); + //配置HttpRequest的请求数据和一些配置信息 + FullHttpRequest request = new DefaultFullHttpRequest( + HttpVersion.HTTP_1_1, HttpMethod.POST, url.toASCIIString(), Unpooled.wrappedBuffer(JSON.toJSONString(e).getBytes("UTF-8"))); + request.headers() + .set(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.APPLICATION_JSON) + //开启长连接 + .set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE) + //设置传递请求内容的长度 + .set(HttpHeaderNames.CONTENT_LENGTH, request.content().readableBytes()); + ChannelHandlerContext ctx = this.getChannel(deviceCode); + if(ctx == null){ + return false; + } + ctx.writeAndFlush(request); + return true; + }catch (Exception exc){ + System.out.println(exc); + } + return false; + } + +} diff --git a/cloud/lapi/src/main/resources/application.yml b/cloud/lapi/src/main/resources/application.yml new file mode 100644 index 0000000..c34b953 --- /dev/null +++ b/cloud/lapi/src/main/resources/application.yml @@ -0,0 +1,19 @@ +server: + port: 9006 +spring: + application: + name: bo_guan_server +ribbon: + ReadTimeout: 50000 + ConnectTimeout: 5000 +eureka: + client: + serviceUrl: + defaultZone: http://127.0.0.1:8761/eureka/,http://127.0.0.1:8762/eureka/ + registry-fetch-interval-seconds: 5 + instance-info-replication-interval-seconds: 10 + instance: + instance-id: ${spring.application.name} + lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测 + lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除 + hostname: 127.0.0.1 \ No newline at end of file diff --git a/cloud/lapi/src/main/resources/logback.xml b/cloud/lapi/src/main/resources/logback.xml new file mode 100644 index 0000000..a75bd0e --- /dev/null +++ b/cloud/lapi/src/main/resources/logback.xml @@ -0,0 +1,95 @@ + + +     +     + + +     + + +     +     + +         +         + +             +             + [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %highlight([%-5level] %logger{50} - %msg%n) +             + UTF-8 +         + +     + + +     +     + +         +         + +             +             + ${LOG_HOME}/${PROJECT_NAME}/%d{yyyy-MM-dd}.%i.log +             +             + 30 +             +             + 100MB +         + + +         + +             +             + [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n +             + UTF-8 +         + +     + +     + +         + +     + + +     +     + +     + +     + +     + +     + +     + + + +     + +     + +     + +     + +     +     + +         + +         + +     + + + diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/Test.java b/cloud/quartz/src/main/java/com/sincere/quartz/Test.java deleted file mode 100644 index 842dd37..0000000 --- a/cloud/quartz/src/main/java/com/sincere/quartz/Test.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.sincere.quartz; - -import com.alibaba.fastjson.JSONObject; -import com.netflix.ribbon.proxy.annotation.Http; -import com.sincere.common.util.HttpClientUtils; - -public class Test { - - public static void main(String[] args){ - for(int i = 1 ; i < 5000 ; i++){ - - String infoUrl = "https://static-data.eol.cn/www/2.0/school/"+i+"/info.json" ; - String gradePointUrl = "https://api.eol.cn/gkcx/api/?access_token=&local_province_id=33&local_type_id=3&page=1&school_id="+i+"&signsafe=&size=10&uri=apidata/api/gk/score/province&year=" ; - String prefessionUrl = "https://static-data.eol.cn/www/2.0/school/"+i+"/pc_special.json" ; - - JSONObject infoResult = HttpClientUtils.httpGet(infoUrl) ; - JSONObject gradePointResult = HttpClientUtils.httpGet(gradePointUrl); - JSONObject prefessionResult = HttpClientUtils.httpGet(prefessionUrl); - - System.out.println(1); - } - } -} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java index a223e62..a71218a 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java @@ -20,7 +20,7 @@ public class SyncJob { @Autowired YXYReadService yxyReadService ; - @Scheduled(cron = "0 0 23 * * ? ") + @Scheduled(cron = "0 0 22 * * ?") public void Sync(){ //翼校通的同步 之后还有钉钉的同步等等 yxyWriteService.sync(); diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java index 9b35960..858418a 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java @@ -9,6 +9,7 @@ import com.sincere.quartz.model.YxyAgency; import com.sincere.quartz.model.YxyStudent; import com.sincere.quartz.model.YxyTeacher; import com.sincere.quartz.service.YxyService; +import com.sincere.quartz.utils.ThreadUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +21,8 @@ import java.security.MessageDigest; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; @Service public class YXYReadService { @@ -46,6 +49,10 @@ public class YXYReadService { private Logger logger = LoggerFactory.getLogger(YXYReadService.class); public void sync(){ + ExecutorService pool = ThreadUtils.newFixedThreadPool(8); + yxyService.updateAgency(); + yxyService.updateStudent(); + yxyService.updateTeacher(); List areaCodeList = new ArrayList<>(); areaCodeList.add("0571") ; areaCodeList.add("0572") ; @@ -56,11 +63,7 @@ public class YXYReadService { areaCodeList.add("0577") ; areaCodeList.add("0578") ; areaCodeList.add("0579") ; - areaCodeList.add("0580") ; - - yxyService.updateAgency(); - yxyService.updateStudent(); - yxyService.updateTeacher(); + List schoolList = new ArrayList<>(); for(String areaCode : areaCodeList){ try{ // 先获取学校,部门,年级 班级 @@ -74,34 +77,48 @@ public class YXYReadService { String method = getALlDept_method; JSONArray jsonArray = getMessage(wsdl, ns, method, list); if(jsonArray != null){ - List schoolList = new ArrayList<>(); + logger.info("市编码:" + areaCode); for(int i = 0 ; i < jsonArray.size() ; i++){ - logger.info("市编码:" + areaCode); JSONObject object = (JSONObject) jsonArray.get(i) ; YxyAgency agency = new YxyAgency() ; agency.setDeptId(object.get("deptID").toString()); agency.setDeptName(object.get("deptName").toString()); agency.setSuperDeptId(object.get("superDeptID").toString()); if(areaCode.equals(object.get("superDeptID").toString())){ - logger.info("学校:" + object.get("deptName").toString()); + logger.info("学校:" + object.get("deptName").toString() +";编码"+object.get("deptID").toString()); schoolList.add(object.get("deptID").toString()) ; } yxyService.insertAgency(agency); } - for(String schoolId : schoolList){ - syncTeacher(schoolId) ; - syncStudent(schoolId) ; - } } }catch (Exception e){ e.printStackTrace(); } - + } + for(String schoolId : schoolList){ + pool.execute(initSchool(schoolId)); + } + try { + boolean loop = true; + do { //等待所有任务完成 + loop = !pool.awaitTermination(2, TimeUnit.SECONDS); //阻塞,直到线程池里所有任务结束 + } while(loop); + } catch (InterruptedException e) { + e.printStackTrace(); } } - private void syncStudent(String schoolId){ + private Runnable initSchool(String schoolId){ + Runnable runnable = () -> { + syncStudent(schoolId); + syncTeacher(schoolId); + }; + return runnable ; + } + + + public void syncStudent(String schoolId){ List list = new ArrayList(); list.add(SI); list.add(getPassword(SI_CODE)); @@ -110,21 +127,30 @@ public class YXYReadService { String ns = nameSpace; String method = getALlStudent_method; JSONArray jsonArray = getMessage(wsdl, ns, method, list); - logger.info("学校ID为:"+schoolId + "共有学生" + jsonArray.size() +"人"); - if(jsonArray != null){ - for(int i = 0 ; i < jsonArray.size() ; i++){ - JSONObject object = (JSONObject) jsonArray.get(i) ; - YxyStudent student = new YxyStudent(); - student.setClassId(object.get("classID").toString()); - student.setAccount(object.get("account").toString()); - student.setName(object.get("name").toString()); - student.setUserId(object.get("userID").toString()); - yxyService.insertStudent(student); + try{ + logger.info("学校ID为:"+schoolId + "共有学生" + jsonArray.size() +"人"); + if(jsonArray != null){ + for(int i = 0 ; i < jsonArray.size() ; i++){ + JSONObject object = (JSONObject) jsonArray.get(i) ; + YxyStudent student = new YxyStudent(); + try{ + student.setClassId(object.get("classID").toString()); + student.setAccount(object.get("account").toString()); + student.setName(object.get("name").toString()); + student.setUserId(object.get("userID").toString()); + }catch (Exception e){ + } + yxyService.insertStudent(student); + } } + }catch (Exception e){ + logger.info(e.toString()); + logger.info("学校ID为:"+schoolId + "学生数据没返回"); } + } - private void syncTeacher(String schoolId){ + public void syncTeacher(String schoolId){ List list = new ArrayList(); list.add(SI); list.add(getPassword(SI_CODE)); @@ -133,32 +159,45 @@ public class YXYReadService { String ns = nameSpace; String method = getAllTeacher_method; JSONArray jsonArray = getMessage(wsdl, ns, method, list); - logger.info("学校ID为:"+schoolId + "共有老师" + jsonArray.size() +"人"); - if(jsonArray != null){ - for(int i = 0 ; i < jsonArray.size() ; i++){ - JSONObject object = (JSONObject) jsonArray.get(i) ; - YxyTeacher teacher = new YxyTeacher(); - teacher.setDeptId(object.get("classID").toString()); - teacher.setAccount(object.get("account").toString()); - teacher.setName(object.get("name").toString()); - teacher.setUserId(object.get("userID").toString()); - yxyService.insertTeacher(teacher); + try{ + logger.info("学校ID为:"+schoolId + "共有老师" + jsonArray.size() +"人"); + if(jsonArray != null){ + for(int i = 0 ; i < jsonArray.size() ; i++){ + JSONObject object = (JSONObject) jsonArray.get(i) ; + YxyTeacher teacher = new YxyTeacher(); + try { + teacher.setDeptId(object.get("classID").toString()); + teacher.setAccount(object.get("account").toString()); + teacher.setName(object.get("name").toString()); + teacher.setUserId(object.get("userID").toString()); + }catch (Exception e){ + } + yxyService.insertTeacher(teacher); + } } + }catch (Exception e){ + logger.info(e.toString()); + logger.info("学校ID为:"+schoolId + "老师数据没返回"); } + } private JSONArray getMessage(String wsdl, String ns, String method, List list){ String resultXml = HttpClientUtils.invoiceWebService(wsdl,ns,method,list); - if(StringUtils.isNotBlank(resultXml)){ - resultXml = resultXml.replaceAll("<", "<"); - resultXml = resultXml.replaceAll(">", ">"); - int begin = resultXml.indexOf(""); + int begin = resultXml.indexOf("(1024), + new ThreadFactoryBuilder().setNameFormat("pool-%d").build(), + new ThreadPoolExecutor.AbortPolicy()); + return pool ; + } +} diff --git a/cloud/search_smartCampus/pom.xml b/cloud/search_smartCampus/pom.xml index 4a78493..5d1620c 100644 --- a/cloud/search_smartCampus/pom.xml +++ b/cloud/search_smartCampus/pom.xml @@ -126,6 +126,15 @@ search_smartCampus + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.5 + + true + true + + org.apache.maven.plugins diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java index 127577f..5549d24 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java @@ -6,7 +6,6 @@ import com.sincere.smartSearch.service.AttendacenService; import com.sincere.smartSearch.service.DeviceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,6 +23,27 @@ public class AttendanceController { @Autowired DeviceService deviceService; + /** + * 没有就新增,有就更新在线时间 + * @param attendanceDto + */ + @RequestMapping(value = "addAttendance", method = RequestMethod.POST) + public void addAttendance(@RequestBody SZ_AttendanceDto attendanceDto){ + SZ_AttendanceDto attendance = attendacenService.selectDevice(attendanceDto.getClint_id()); + if(attendance != null){ + attendacenService.updateAttendance(attendance.getClint_id()); + }else { + attendanceDto.setState(1); + attendanceDto.setSchool_id("0"); + try { + attendanceDto.setIntime(DateUtils.getToday(DateUtils.format2)); + }catch (Exception e){ + + } + attendacenService.insertAttendance(attendanceDto); + } + } + @RequestMapping(method = RequestMethod.GET, value = "selectAttendaceWithId") public SZ_AttendanceDto selectAttendaceWithId(@RequestParam("clint_id") String clint_id) { return attendacenService.selectDevice(clint_id); diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java index d51ee87..5b095ba 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java @@ -1,5 +1,8 @@ package com.sincere.smartSearch.controller; +import com.sincere.common.dto.smartCampus.StudentBean; +import com.sincere.common.dto.smartCampus.SzVSchoolStudent; +import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; import com.sincere.smartSearch.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -7,6 +10,8 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * @author chen * @version 1.0 @@ -27,15 +32,33 @@ public class UserController { @RequestMapping(value = "getStudent_NumWitdCode",method = RequestMethod.GET) - String getStudent_NumWitdCode(@RequestParam("studentcode") String studentcode){ + StudentBean getStudent_NumWitdCode(@RequestParam("studentcode") String studentcode){ return userService.getStudent_NumWitdCode(studentcode); } @RequestMapping(value = "getTeacherWithstudentcode",method = RequestMethod.GET) - String getTeacherWithstudentcode(@RequestParam("num") String num,@RequestParam("schoolId") String schoolId){ + StudentBean getTeacherWithstudentcode(@RequestParam("num") String num,@RequestParam("schoolId") String schoolId){ return userService.getTeacherWithstudentcode(num,schoolId); } + @RequestMapping(value = "selectTeacherBySchoolId",method = RequestMethod.GET) + List selectTeacherBySchoolId(@RequestParam("schoolId") String schoolId){ + return userService.selectTeacherBySchool(Integer.valueOf(schoolId)); + } + + @RequestMapping(value = "selectStudentBySchoolId",method = RequestMethod.GET) + List selectStudentBySchoolId(@RequestParam("schoolId") String schoolId){ + return userService.selectStudentBySchool(Integer.valueOf(schoolId)); + } + @RequestMapping(value = "selectByTeacherId",method = RequestMethod.GET) + SzVSchoolTeacher selectByTeacherId(@RequestParam("teacherId") int teacherId){ + return userService.selectByTeacherId(teacherId); + } + + @RequestMapping(value = "selectByStudentId",method = RequestMethod.GET) + SzVSchoolStudent selectByStudentId(@RequestParam("studentId") int studentId){ + return userService.selectByStudentId(studentId); + } } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolStudentMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolStudentMapper.java new file mode 100644 index 0000000..b69626c --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolStudentMapper.java @@ -0,0 +1,16 @@ +package com.sincere.smartSearch.mapper; + +import com.sincere.common.dto.smartCampus.SzVSchoolStudent; + +import java.util.List; + +public interface SzVSchoolStudentMapper { + + List selectBySchool(int schoolId); + + SzVSchoolStudent selectByStudentId(int studentId); + + int insert(SzVSchoolStudent record); + + int insertSelective(SzVSchoolStudent record); +} \ No newline at end of file diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolTeacherMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolTeacherMapper.java new file mode 100644 index 0000000..ece8f2a --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/SzVSchoolTeacherMapper.java @@ -0,0 +1,16 @@ +package com.sincere.smartSearch.mapper; + +import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; + +import java.util.List; + +public interface SzVSchoolTeacherMapper { + + List selectBySchool(int schoolId); + + SzVSchoolTeacher selectByTeacherId(int teacherId); + + int insert(SzVSchoolTeacher record); + + int insertSelective(SzVSchoolTeacher record); +} \ No newline at end of file diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/UserMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/UserMapper.java index 1be9524..83634bc 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/UserMapper.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/UserMapper.java @@ -1,5 +1,11 @@ package com.sincere.smartSearch.mapper; +import com.sincere.common.dto.smartCampus.StudentBean; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + /** * @author chen * @version 1.0 @@ -12,9 +18,10 @@ public interface UserMapper { @Select("select Top(1)*\n" + "from SZ_V_School_Teacher\n" + "where num = #{num} and school_id = #{schoolId}") - StudentBean getTeacherWithstudentcode(@Param("num") String num,@Param("schoolId")String schoolId); + StudentBean getTeacherWithstudentcode(@Param("num") String num, @Param("schoolId")String schoolId); @Select("select Top(1) * from SZ_V_School_Student where studentcode = #{studentcode}") StudentBean getStudent_NumWitdCode(@Param("studentcode") String studentcode); + } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/StudentBean.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/StudentBean.java deleted file mode 100644 index c4a7982..0000000 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/StudentBean.java +++ /dev/null @@ -1,307 +0,0 @@ -package com.sincere.haikangface.bean; - -import java.io.Serializable; -import java.util.Date; - -public class StudentBean implements Serializable { - - private String teacher_id; - - private String parent_id; - - private long ID; - - private String UserId; - - private String CustomerId; - - private int StudentType; - - private int UserType; - - private String name; - - private int ClassId; - - private String ClassName; - - private String OldCard; - - private String Card; - - private int SchoolId; - - private int school_id; - - private int IsNew; - - private int UpdateType; - - private Date AddTime; - - private int Sex; - - private String Face; - - private String studentcode; - - private String student_num; - - private String student_id; - - private String user_id; - - private String photo; - - private String teacher_num; - - private String num; - - public String getNum() { - return num; - } - - public void setNum(String num) { - this.num = num; - } - - public String getTeacher_num() { - return teacher_num; - } - - public void setTeacher_num(String teacher_num) { - this.teacher_num = teacher_num; - } - - public String getPhoto() { - return photo; - } - - public void setPhoto(String photo) { - this.photo = photo; - } - - public String getUser_id() { - return user_id; - } - - public void setUser_id(String user_id) { - this.user_id = user_id; - } - - public String getStudentcode() { - return studentcode; - } - - public void setStudentcode(String studentcode) { - this.studentcode = studentcode; - } - - public String getUserId() { - return UserId; - } - - public void setUserId(String userId) { - UserId = userId; - } - - public String getCustomerId() { - return CustomerId; - } - - public void setCustomerId(String customerId) { - CustomerId = customerId; - } - - public int getStudentType() { - return StudentType; - } - - public void setStudentType(int studentType) { - StudentType = studentType; - } - - public int getUserType() { - return UserType; - } - - public String getTeacher_id() { - return teacher_id; - } - - public String getParent_id() { - return parent_id; - } - - public void setParent_id(String parent_id) { - this.parent_id = parent_id; - } - - public void setTeacher_id(String teacher_id) { - this.teacher_id = teacher_id; - } - - public void setUserType(int userType) { - UserType = userType; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getClassId() { - return ClassId; - } - - public void setClassId(int classId) { - ClassId = classId; - } - - public String getClassName() { - return ClassName; - } - - public void setClassName(String className) { - ClassName = className; - } - - public String getOldCard() { - return OldCard; - } - - public void setOldCard(String oldCard) { - OldCard = oldCard; - } - - public String getCard() { - return Card; - } - - public int getSchool_id() { - return school_id; - } - - public void setSchool_id(int school_id) { - this.school_id = school_id; - } - - public String getStudent_num() { - return student_num; - } - - public void setStudent_num(String student_num) { - this.student_num = student_num; - } - - public void setCard(String card) { - Card = card; - } - - public int getSchoolId() { - return SchoolId; - } - - public void setSchoolId(int schoolId) { - SchoolId = schoolId; - } - - public int getIsNew() { - return IsNew; - } - - public void setIsNew(int isNew) { - IsNew = isNew; - } - - public int getUpdateType() { - return UpdateType; - } - - public void setUpdateType(int updateType) { - UpdateType = updateType; - } - - public Date getAddTime() { - return AddTime; - } - - public void setAddTime(Date addTime) { - AddTime = addTime; - } - - public int getSex() { - return Sex; - } - - public void setSex(int sex) { - Sex = sex; - } - - public String getFace() { - return Face; - } - - public void setFace(String face) { - Face = face; - } - - public String getStudentCode() { - return studentcode; - } - - public void setStudentCode(String studentCode) { - this.studentcode = studentCode; - } - - public long getID() { - return ID; - } - - public void setID(long ID) { - this.ID = ID; - } - - public String getStudent_id() { - return student_id; - } - - public void setStudent_id(String student_id) { - this.student_id = student_id; - } - - @Override - public String toString() { - return "StudentBean{" + - "teacher_id='" + teacher_id + '\'' + - ", parent_id='" + parent_id + '\'' + - ", ID=" + ID + - ", UserId='" + UserId + '\'' + - ", CustomerId='" + CustomerId + '\'' + - ", StudentType=" + StudentType + - ", UserType=" + UserType + - ", name='" + name + '\'' + - ", ClassId=" + ClassId + - ", ClassName='" + ClassName + '\'' + - ", OldCard='" + OldCard + '\'' + - ", Card='" + Card + '\'' + - ", SchoolId=" + SchoolId + - ", school_id=" + school_id + - ", IsNew=" + IsNew + - ", UpdateType=" + UpdateType + - ", AddTime=" + AddTime + - ", Sex=" + Sex + - ", Face='" + Face + '\'' + - ", studentcode='" + studentcode + '\'' + - ", student_num='" + student_num + '\'' + - ", student_id='" + student_id + '\'' + - ", user_id='" + user_id + '\'' + - ", photo='" + photo + '\'' + - ", teacher_num='" + teacher_num + '\'' + - ", num='" + num + '\'' + - '}'; - } -} diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java index 8bd3543..e47068b 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java @@ -1,5 +1,11 @@ package com.sincere.smartSearch.service; +import com.sincere.common.dto.smartCampus.StudentBean; +import com.sincere.common.dto.smartCampus.SzVSchoolStudent; +import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; + +import java.util.List; + /** * @author chen * @version 1.0 @@ -9,8 +15,16 @@ public interface UserService { String selectStudentNumByStudentId(int studentId); - StudentBean getTeacherWithstudentcode(String num,String schoolId); + StudentBean getTeacherWithstudentcode(String num, String schoolId); StudentBean getStudent_NumWitdCode(String studentcode); + List selectTeacherBySchool(int schoolId); + + List selectStudentBySchool(int schoolId); + + SzVSchoolTeacher selectByTeacherId(int teacherId); + + SzVSchoolStudent selectByStudentId(int studentId); + } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java index 505d9d4..77a9973 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java @@ -1,10 +1,17 @@ package com.sincere.smartSearch.service.impl; +import com.sincere.common.dto.smartCampus.SzVSchoolStudent; +import com.sincere.common.dto.smartCampus.SzVSchoolTeacher; +import com.sincere.smartSearch.mapper.SzVSchoolStudentMapper; +import com.sincere.smartSearch.mapper.SzVSchoolTeacherMapper; import com.sincere.smartSearch.mapper.UserMapper; +import com.sincere.common.dto.smartCampus.StudentBean; import com.sincere.smartSearch.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * @author chen * @version 1.0 @@ -16,6 +23,12 @@ public class UserServiceImpl implements UserService { @Autowired UserMapper userMapper ; + @Autowired + SzVSchoolStudentMapper szVSchoolStudentMapper; + + @Autowired + SzVSchoolTeacherMapper szVSchoolTeacherMapper; + @Override public String selectStudentNumByStudentId(int studentId) { return userMapper.selectStudentNumByStudentId(studentId); @@ -33,4 +46,23 @@ public class UserServiceImpl implements UserService { return userMapper.getTeacherWithstudentcode(num,schoolId); } + @Override + public List selectTeacherBySchool(int schoolId) { + return szVSchoolTeacherMapper.selectBySchool(schoolId); + } + + @Override + public List selectStudentBySchool(int schoolId) { + return szVSchoolStudentMapper.selectBySchool(schoolId); + } + + @Override + public SzVSchoolTeacher selectByTeacherId(int teacherId) { + return szVSchoolTeacherMapper.selectByTeacherId(teacherId); + } + + @Override + public SzVSchoolStudent selectByStudentId(int studentId) { + return szVSchoolStudentMapper.selectByStudentId(studentId); + } } diff --git a/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml index 45060fe..c1c2c23 100644 --- a/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml +++ b/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml @@ -12,7 +12,7 @@ - + + select * from SZ_V_School_Student where school_id = #{schoolId} + + + + + + insert into SZ_V_School_Student (school_id, class_id, student_id, + user_id, student_num, name, + num, photo, ismonitor, + class_state, role_state, modifystate, + mobile, class_name, student_type, + matrikelnummer, studentcode, sex, + ParentMobile, othername, activetime, + active, pass) + values (#{schoolId,jdbcType=INTEGER}, #{classId,jdbcType=INTEGER}, #{studentId,jdbcType=INTEGER}, + #{userId,jdbcType=VARCHAR}, #{studentNum,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, + #{num,jdbcType=VARCHAR}, #{photo,jdbcType=VARCHAR}, #{ismonitor,jdbcType=INTEGER}, + #{classState,jdbcType=INTEGER}, #{roleState,jdbcType=INTEGER}, #{modifystate,jdbcType=CHAR}, + #{mobile,jdbcType=VARCHAR}, #{className,jdbcType=VARCHAR}, #{studentType,jdbcType=INTEGER}, + #{matrikelnummer,jdbcType=VARCHAR}, #{studentcode,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, + #{parentmobile,jdbcType=VARCHAR}, #{othername,jdbcType=VARCHAR}, #{activetime,jdbcType=TIMESTAMP}, + #{active,jdbcType=INTEGER}, #{pass,jdbcType=VARCHAR}) + + + insert into SZ_V_School_Student + + + school_id, + + + class_id, + + + student_id, + + + user_id, + + + student_num, + + + name, + + + num, + + + photo, + + + ismonitor, + + + class_state, + + + role_state, + + + modifystate, + + + mobile, + + + class_name, + + + student_type, + + + matrikelnummer, + + + studentcode, + + + sex, + + + ParentMobile, + + + othername, + + + activetime, + + + active, + + + pass, + + + + + #{schoolId,jdbcType=INTEGER}, + + + #{classId,jdbcType=INTEGER}, + + + #{studentId,jdbcType=INTEGER}, + + + #{userId,jdbcType=VARCHAR}, + + + #{studentNum,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{num,jdbcType=VARCHAR}, + + + #{photo,jdbcType=VARCHAR}, + + + #{ismonitor,jdbcType=INTEGER}, + + + #{classState,jdbcType=INTEGER}, + + + #{roleState,jdbcType=INTEGER}, + + + #{modifystate,jdbcType=CHAR}, + + + #{mobile,jdbcType=VARCHAR}, + + + #{className,jdbcType=VARCHAR}, + + + #{studentType,jdbcType=INTEGER}, + + + #{matrikelnummer,jdbcType=VARCHAR}, + + + #{studentcode,jdbcType=VARCHAR}, + + + #{sex,jdbcType=VARCHAR}, + + + #{parentmobile,jdbcType=VARCHAR}, + + + #{othername,jdbcType=VARCHAR}, + + + #{activetime,jdbcType=TIMESTAMP}, + + + #{active,jdbcType=INTEGER}, + + + #{pass,jdbcType=VARCHAR}, + + + + \ No newline at end of file diff --git a/cloud/search_smartCampus/src/main/resources/mapper/SzVSchoolTeacherMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/SzVSchoolTeacherMapper.xml new file mode 100644 index 0000000..7b99280 --- /dev/null +++ b/cloud/search_smartCampus/src/main/resources/mapper/SzVSchoolTeacherMapper.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into SZ_V_School_Teacher (school_id, class_id, teacher_id, + user_id, name, face, + num, teacher_num, teacher_mobile, + mobile, class_state, role_state, + IsKaoQin, OpenId, pass, + DingUserId, QiYeHaoUserId) + values (#{schoolId,jdbcType=INTEGER}, #{classId,jdbcType=INTEGER}, #{teacherId,jdbcType=INTEGER}, + #{userId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{face,jdbcType=VARCHAR}, + #{num,jdbcType=VARCHAR}, #{teacherNum,jdbcType=VARCHAR}, #{teacherMobile,jdbcType=VARCHAR}, + #{mobile,jdbcType=VARCHAR}, #{classState,jdbcType=INTEGER}, #{roleState,jdbcType=INTEGER}, + #{iskaoqin,jdbcType=INTEGER}, #{openid,jdbcType=VARCHAR}, #{pass,jdbcType=VARCHAR}, + #{dinguserid,jdbcType=VARCHAR}, #{qiyehaouserid,jdbcType=VARCHAR}) + + + insert into SZ_V_School_Teacher + + + school_id, + + + class_id, + + + teacher_id, + + + user_id, + + + name, + + + face, + + + num, + + + teacher_num, + + + teacher_mobile, + + + mobile, + + + class_state, + + + role_state, + + + IsKaoQin, + + + OpenId, + + + pass, + + + DingUserId, + + + QiYeHaoUserId, + + + + + #{schoolId,jdbcType=INTEGER}, + + + #{classId,jdbcType=INTEGER}, + + + #{teacherId,jdbcType=INTEGER}, + + + #{userId,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{face,jdbcType=VARCHAR}, + + + #{num,jdbcType=VARCHAR}, + + + #{teacherNum,jdbcType=VARCHAR}, + + + #{teacherMobile,jdbcType=VARCHAR}, + + + #{mobile,jdbcType=VARCHAR}, + + + #{classState,jdbcType=INTEGER}, + + + #{roleState,jdbcType=INTEGER}, + + + #{iskaoqin,jdbcType=INTEGER}, + + + #{openid,jdbcType=VARCHAR}, + + + #{pass,jdbcType=VARCHAR}, + + + #{dinguserid,jdbcType=VARCHAR}, + + + #{qiyehaouserid,jdbcType=VARCHAR}, + + + + \ No newline at end of file diff --git a/cloud/search_xiaoan/pom.xml b/cloud/search_xiaoan/pom.xml index d91193e..31cbcbd 100644 --- a/cloud/search_xiaoan/pom.xml +++ b/cloud/search_xiaoan/pom.xml @@ -127,6 +127,17 @@ search_xiaoan + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.5 + + true + true + + + org.apache.maven.plugins diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/FaceController.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/FaceController.java new file mode 100644 index 0000000..3353513 --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/FaceController.java @@ -0,0 +1,35 @@ +package com.sincere.xiaoanSearch.controller; + +import com.sincere.common.dto.xiaoan.FaceSendfail; +import com.sincere.common.dto.xiaoan.FaceSendsuccess; +import com.sincere.common.dto.xiaoan.FaceRecoder; +import com.sincere.xiaoanSearch.service.FaceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/xa/face") +public class FaceController { + + @Autowired + FaceService faceService ; + + + @RequestMapping(value = "success",method = RequestMethod.POST) + void insertFaceSuccess(@RequestBody FaceSendsuccess faceSendsuccess){ + faceService.insertFaceSuccess(faceSendsuccess); + } + + @RequestMapping(value = "fail",method = RequestMethod.POST) + void insertFaceFail(@RequestBody FaceSendfail faceSendfail){ + faceService.insertFaceFail(faceSendfail); + } + + @RequestMapping(value = "insertRecode",method = RequestMethod.POST) + void insertRecode(@RequestBody FaceRecoder faceRecoder){ + faceService.insertRecode(faceRecoder); + } +} diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceRecoderMapper.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceRecoderMapper.java new file mode 100644 index 0000000..be8c0a5 --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceRecoderMapper.java @@ -0,0 +1,9 @@ +package com.sincere.xiaoanSearch.mapper; + +import com.sincere.common.dto.xiaoan.FaceRecoder; + +public interface FaceRecoderMapper { + int insert(FaceRecoder record); + + int insertSelective(FaceRecoder record); +} \ No newline at end of file diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendfailMapper.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendfailMapper.java new file mode 100644 index 0000000..47868d9 --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendfailMapper.java @@ -0,0 +1,10 @@ +package com.sincere.xiaoanSearch.mapper; + +import com.sincere.common.dto.xiaoan.FaceSendfail; + +public interface FaceSendfailMapper { + + int insert(FaceSendfail record); + + void deleteById(FaceSendfail faceSendfail); +} \ No newline at end of file diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendsuccessMapper.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendsuccessMapper.java new file mode 100644 index 0000000..ab53d68 --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FaceSendsuccessMapper.java @@ -0,0 +1,10 @@ +package com.sincere.xiaoanSearch.mapper; + +import com.sincere.common.dto.xiaoan.FaceSendsuccess; + +public interface FaceSendsuccessMapper { + + int insert(FaceSendsuccess record); + + void deleteById(FaceSendsuccess faceSendsuccess); +} \ No newline at end of file diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/FaceService.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/FaceService.java new file mode 100644 index 0000000..fa5b9be --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/FaceService.java @@ -0,0 +1,14 @@ +package com.sincere.xiaoanSearch.service; + +import com.sincere.common.dto.xiaoan.FaceRecoder; +import com.sincere.common.dto.xiaoan.FaceSendfail; +import com.sincere.common.dto.xiaoan.FaceSendsuccess; + +public interface FaceService { + + void insertFaceSuccess(FaceSendsuccess faceSendsuccess); + + void insertFaceFail(FaceSendfail faceSendfail); + + void insertRecode(FaceRecoder faceRecoder); +} diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/FaceServiceImpl.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/FaceServiceImpl.java new file mode 100644 index 0000000..d0d6cf3 --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/FaceServiceImpl.java @@ -0,0 +1,51 @@ +package com.sincere.xiaoanSearch.service.impl; + +import com.sincere.common.dto.xiaoan.FaceRecoder; +import com.sincere.xiaoanSearch.mapper.FaceRecoderMapper; +import com.sincere.xiaoanSearch.mapper.FaceSendfailMapper; +import com.sincere.xiaoanSearch.mapper.FaceSendsuccessMapper; +import com.sincere.common.dto.xiaoan.FaceSendfail; +import com.sincere.common.dto.xiaoan.FaceSendsuccess; +import com.sincere.xiaoanSearch.service.FaceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class FaceServiceImpl implements FaceService { + + @Autowired + FaceSendfailMapper faceSendfailMapper ; + + @Autowired + FaceSendsuccessMapper faceSendsuccessMapper ; + + @Autowired + FaceRecoderMapper faceRecoderMapper; + + @Override + public void insertFaceSuccess(FaceSendsuccess faceSendsuccess) { + FaceSendfail faceSendfail = new FaceSendfail(); + faceSendfail.setCustomerid(faceSendsuccess.getCustomerid()); + faceSendfail.setDeviceid(faceSendsuccess.getDeviceid()); + faceSendfailMapper.deleteById(faceSendfail); + faceSendsuccessMapper.deleteById(faceSendsuccess); + + faceSendsuccessMapper.insert(faceSendsuccess); + } + + @Override + public void insertFaceFail(FaceSendfail faceSendfail) { + FaceSendsuccess faceSendsuccess = new FaceSendsuccess(); + faceSendsuccess.setCustomerid(faceSendfail.getCustomerid()); + faceSendsuccess.setDeviceid(faceSendfail.getDeviceid()); + faceSendfailMapper.deleteById(faceSendfail); + faceSendsuccessMapper.deleteById(faceSendsuccess); + + faceSendfailMapper.insert(faceSendfail); + } + + @Override + public void insertRecode(FaceRecoder faceRecoder) { + faceRecoderMapper.insert(faceRecoder); + } +} diff --git a/cloud/search_xiaoan/src/main/resources/application.yml b/cloud/search_xiaoan/src/main/resources/application.yml index 55ab757..ef664c4 100644 --- a/cloud/search_xiaoan/src/main/resources/application.yml +++ b/cloud/search_xiaoan/src/main/resources/application.yml @@ -7,6 +7,9 @@ spring: username: szjxtuser password: RQminVCJota3H1u8bBYH url: jdbc:sqlserver://116.62.241.27:33419;database=xiaoanhxy +# username: SZJXTUSER +# password: xst200919 +# url: jdbc:sqlserver://60.190.202.57:14333;database=xiaoanhxy driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver ##mybatis mybatis: diff --git a/cloud/search_xiaoan/src/main/resources/logback.xml b/cloud/search_xiaoan/src/main/resources/logback.xml index bdad794..ef446d8 100644 --- a/cloud/search_xiaoan/src/main/resources/logback.xml +++ b/cloud/search_xiaoan/src/main/resources/logback.xml @@ -5,7 +5,7 @@     - +         diff --git a/cloud/search_xiaoan/src/main/resources/mapper/FaceRecoderMapper.xml b/cloud/search_xiaoan/src/main/resources/mapper/FaceRecoderMapper.xml new file mode 100644 index 0000000..b5cf6b1 --- /dev/null +++ b/cloud/search_xiaoan/src/main/resources/mapper/FaceRecoderMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + insert into Face_Recoder (deviceId, user_id, name, + imgurl, inOrOut, time, + cardNum) + values (#{deviceid,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, + #{imgurl,jdbcType=VARCHAR}, #{inorout,jdbcType=INTEGER}, #{time,jdbcType=TIMESTAMP}, + #{cardnum,jdbcType=VARCHAR}) + + + insert into Face_Recoder + + + deviceId, + + + user_id, + + + name, + + + imgurl, + + + inOrOut, + + + time, + + + cardNum, + + + + + #{deviceid,jdbcType=VARCHAR}, + + + #{userId,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{imgurl,jdbcType=VARCHAR}, + + + #{inorout,jdbcType=INTEGER}, + + + #{time,jdbcType=TIMESTAMP}, + + + #{cardnum,jdbcType=VARCHAR}, + + + + \ No newline at end of file diff --git a/cloud/search_xiaoan/src/main/resources/mapper/FaceSendfailMapper.xml b/cloud/search_xiaoan/src/main/resources/mapper/FaceSendfailMapper.xml new file mode 100644 index 0000000..0a6bba9 --- /dev/null +++ b/cloud/search_xiaoan/src/main/resources/mapper/FaceSendfailMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + insert into Face_SendFail (deviceID, customerid, Num, + Name, time, schoolName, + imgPath, schoolId, failContent, + failType, userType, deviceType + ) + values (#{deviceid,jdbcType=VARCHAR}, #{customerid,jdbcType=VARCHAR}, #{num,jdbcType=VARCHAR}, + #{name,jdbcType=VARCHAR}, GETDATE(), #{schoolname,jdbcType=VARCHAR}, + #{imgpath,jdbcType=VARCHAR}, #{schoolid,jdbcType=INTEGER}, #{failcontent,jdbcType=VARCHAR}, + #{failtype,jdbcType=INTEGER}, #{usertype,jdbcType=INTEGER}, #{devicetype,jdbcType=INTEGER} + ) + + + + + delete Face_SendFail where deviceID = #{deviceid} and customerid = #{customerid} + + + \ No newline at end of file diff --git a/cloud/search_xiaoan/src/main/resources/mapper/FaceSendsuccessMapper.xml b/cloud/search_xiaoan/src/main/resources/mapper/FaceSendsuccessMapper.xml new file mode 100644 index 0000000..53f5a6d --- /dev/null +++ b/cloud/search_xiaoan/src/main/resources/mapper/FaceSendsuccessMapper.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + insert into Face_SendSuccess (deviceID, customerid, Num, + Name, time, schoolName, + imgPath, schoolId, userType, + deviceType) + values (#{deviceid,jdbcType=VARCHAR}, #{customerid,jdbcType=VARCHAR}, #{num,jdbcType=VARCHAR}, + #{name,jdbcType=VARCHAR}, GETDATE(), #{schoolname,jdbcType=VARCHAR}, + #{imgpath,jdbcType=VARCHAR}, #{schoolid,jdbcType=INTEGER}, #{usertype,jdbcType=INTEGER}, + #{devicetype,jdbcType=INTEGER}) + + + + delete Face_SendSuccess where deviceID = #{deviceid} and customerid = #{customerid} + + + + \ No newline at end of file -- libgit2 0.21.0