From 17788a111fe687f29ff852690c07b7312b42a074 Mon Sep 17 00:00:00 2001 From: 陈杰 <504987307@qq.com> Date: Tue, 31 Dec 2019 15:31:26 +0800 Subject: [PATCH] 中控指纹机 --- cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SZ_AttendanceDto.java | 19 +++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SyncUserDto.java | 10 +++++----- cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FingerDto.java | 39 +++++++++++++++++++++++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java | 6 +++--- cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java | 13 +++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java | 26 ++++++++++++++++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java | 6 ++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/UserMapper.java | 11 +++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java | 5 +++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java | 12 ++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java | 15 +++++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java | 23 +++++++++++++++++++++++ cloud/search_smartCampus/src/main/resources/application.yml | 12 ++++++------ cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml | 14 ++++++++++++++ cloud/search_smartCampus/src/main/resources/mapper/SyncMapper.xml | 8 ++++---- cloud/search_smartCampus/src/main/resources/mapper/UserMapper.xml | 9 +++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/ZkController.java | 30 ++++++++++++++++++++++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FingerMapper.java | 13 +++++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/ZkService.java | 12 ++++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/ZkServiceImpl.java | 24 ++++++++++++++++++++++++ cloud/search_xiaoan/src/main/resources/mapper/FingerMapper.xml | 11 +++++++++++ cloud/zkAttendance/pom.xml | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/AttApplication.java | 21 +++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/Swagger2.java | 38 ++++++++++++++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java | 295 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/feign/ScFeign.java | 36 ++++++++++++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/feign/XaFeign.java | 19 +++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/logs/LogName.java | 39 +++++++++++++++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/logs/LoggerUtils.java | 27 +++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/logs/MyTimeBasedFileNamingAndTriggeringPolicy.java | 32 ++++++++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/vo/AttendanceInfoBean.java | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/vo/OrderVo.java | 28 ++++++++++++++++++++++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/vo/UserOrderVo.java | 25 +++++++++++++++++++++++++ cloud/zkAttendance/src/main/resources/application.yaml | 16 ++++++++++++++++ cloud/zkAttendance/src/main/resources/cmd.txt | 3 +++ cloud/zkAttendance/src/main/resources/logback.xml | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 36 files changed, 1196 insertions(+), 18 deletions(-) create mode 100644 cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FingerDto.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/UserMapper.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java create mode 100644 cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java create mode 100644 cloud/search_smartCampus/src/main/resources/mapper/UserMapper.xml create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/ZkController.java create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FingerMapper.java create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/ZkService.java create mode 100644 cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/ZkServiceImpl.java create mode 100644 cloud/search_xiaoan/src/main/resources/mapper/FingerMapper.xml create mode 100644 cloud/zkAttendance/pom.xml create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/AttApplication.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/Swagger2.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/feign/ScFeign.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/feign/XaFeign.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/logs/LogName.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/logs/LoggerUtils.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/logs/MyTimeBasedFileNamingAndTriggeringPolicy.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/vo/AttendanceInfoBean.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/vo/OrderVo.java create mode 100644 cloud/zkAttendance/src/main/java/com/sincere/att/vo/UserOrderVo.java create mode 100644 cloud/zkAttendance/src/main/resources/application.yaml create mode 100644 cloud/zkAttendance/src/main/resources/cmd.txt create mode 100644 cloud/zkAttendance/src/main/resources/logback.xml 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 e0a33b4..79492a9 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 @@ -23,6 +23,25 @@ public class SZ_AttendanceDto { private int IsKaoqin; + private String ip ; + private int port ; + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + public int getIsKaoqin() { return IsKaoqin; } diff --git a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SyncUserDto.java b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SyncUserDto.java index db39a83..4bbae14 100644 --- a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SyncUserDto.java +++ b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SyncUserDto.java @@ -15,14 +15,14 @@ public class SyncUserDto { private int sex ; private String mobile ; private int updateType ; - private String hxyCustomerId ; + private String yxyUserId ; - public String getHxyCustomerId() { - return hxyCustomerId; + public String getYxyUserId() { + return yxyUserId; } - public void setHxyCustomerId(String hxyCustomerId) { - this.hxyCustomerId = hxyCustomerId; + public void setYxyUserId(String yxyUserId) { + this.yxyUserId = yxyUserId; } public int getId() { diff --git a/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FingerDto.java b/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FingerDto.java new file mode 100644 index 0000000..5091729 --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/dto/xiaoan/FingerDto.java @@ -0,0 +1,39 @@ +package com.sincere.common.dto.xiaoan; + +import java.util.Date; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:37 + */ +public class FingerDto { + + private int studentId ; + private String orderMsg ; + private Date createTime ; + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public int getStudentId() { + return studentId; + } + + public void setStudentId(int studentId) { + this.studentId = studentId; + } + + public String getOrderMsg() { + return orderMsg; + } + + public void setOrderMsg(String orderMsg) { + this.orderMsg = orderMsg; + } +} 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 e557448..902abae 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 @@ -46,8 +46,8 @@ public class HttpClientUtils { // JSONObject jsonObject = HttpClientUtils.httpPostJson(url,json); // System.out.println(jsonObject.toJSONString()); - String url = "http://115.239.135.60/token/yxt" ; - String json = "key=SZKJ&secret=87dyNIZReZNl6LXGsihfyX3unYgwukSk" ; + String url = "http://campus.myjxt.com/api/Room/GetListPageRoom" ; + String json = "PageIndex=1&roomId=6583&pageSize=9999" ; JSONObject jsonObject = HttpClientUtils.httpPost(url,json); System.out.println(jsonObject.toJSONString()); } @@ -84,7 +84,7 @@ public class HttpClientUtils { } } catch (IOException e) { - + e.printStackTrace(); } finally { httpPost.releaseConnection(); } 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 2724acc..784c2e1 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 @@ -31,5 +31,18 @@ public class AttendanceController { } + @RequestMapping(value = "insertAttendance", method = RequestMethod.POST) + void insertAttendance(@RequestBody SZ_AttendanceDto attendanceDto){ + attendacenService.insertAttendance(attendanceDto); + } + + @RequestMapping(value = "updateAttendance", method = RequestMethod.GET) + void updateAttendance(@RequestParam("clientId") String clientId){ + attendacenService.updateAttendance(clientId); + } + @RequestMapping(value = "selectRoomAttendance", method = RequestMethod.GET) + List selectRoomAttendance(@RequestParam("placeId") int placeId){ + return attendacenService.selectRoomAttendance(placeId); + } } 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 new file mode 100644 index 0000000..992e99d --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/UserController.java @@ -0,0 +1,26 @@ +package com.sincere.smartSearch.controller; + +import com.sincere.smartSearch.service.UserService; +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; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:53 + */ +@RestController +@RequestMapping("/sm/user") +public class UserController { + + @Autowired + UserService userService; + + @RequestMapping(value = "selectStudentNumByStudentId",method = RequestMethod.GET) + String selectStudentNumByStudentId(@RequestParam("studentId") int studentId){ + return userService.selectStudentNumByStudentId(studentId); + } +} diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java index 81fd8b4..6b9a43e 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java @@ -13,4 +13,10 @@ public interface AttendaceMapper { List getAttensWithIsKaoqin(int IsKaoqin); + int insertAttendance(SZ_AttendanceDto attendanceDto) ; + + int updateAttendance(String client_id); + + List selectRoomAttendance(int placeId); + } 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 new file mode 100644 index 0000000..8c866b5 --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/UserMapper.java @@ -0,0 +1,11 @@ +package com.sincere.smartSearch.mapper; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:52 + */ +public interface UserMapper { + + String selectStudentNumByStudentId(int studentId); +} diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java index 1496062..4981a09 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java @@ -13,4 +13,9 @@ public interface AttendacenService { List getAttensWithIsKaoqin(int IsKaoqin); + int insertAttendance(SZ_AttendanceDto attendanceDto) ; + + int updateAttendance(String client_id); + + List selectRoomAttendance(int placeId); } 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 new file mode 100644 index 0000000..5a27520 --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/UserService.java @@ -0,0 +1,12 @@ +package com.sincere.smartSearch.service; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:52 + */ +public interface UserService { + + String selectStudentNumByStudentId(int studentId); + +} diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java index a503d6b..19e7862 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java @@ -24,4 +24,19 @@ public class AttendacenServiceImp implements AttendacenService { return attendaceMapper.getAttensWithIsKaoqin(IsKaoqin); } + + @Override + public int insertAttendance(SZ_AttendanceDto attendanceDto) { + return attendaceMapper.insertAttendance(attendanceDto); + } + + @Override + public int updateAttendance(String client_id) { + return attendaceMapper.updateAttendance(client_id); + } + + @Override + public List selectRoomAttendance(int placeId) { + return attendaceMapper.selectRoomAttendance(placeId); + } } 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 new file mode 100644 index 0000000..31ce0fd --- /dev/null +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/UserServiceImpl.java @@ -0,0 +1,23 @@ +package com.sincere.smartSearch.service.impl; + +import com.sincere.smartSearch.mapper.UserMapper; +import com.sincere.smartSearch.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:53 + */ +@Service +public class UserServiceImpl implements UserService { + + @Autowired + UserMapper userMapper ; + + @Override + public String selectStudentNumByStudentId(int studentId) { + return userMapper.selectStudentNumByStudentId(studentId); + } +} diff --git a/cloud/search_smartCampus/src/main/resources/application.yml b/cloud/search_smartCampus/src/main/resources/application.yml index 239a06f..ad5513a 100644 --- a/cloud/search_smartCampus/src/main/resources/application.yml +++ b/cloud/search_smartCampus/src/main/resources/application.yml @@ -4,12 +4,12 @@ spring: application: name: smartCampusSearch datasource: -# username: szjxtuser -# password: RQminVCJota3H1u8bBYH -# url: jdbc:sqlserver://116.62.155.137:33419;database=SmartCampus - username: SZJXTUSER - password: xst200919 - url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ + username: szjxtuser + password: RQminVCJota3H1u8bBYH + url: jdbc:sqlserver://116.62.155.137:33419;database=SmartCampus +# username: SZJXTUSER +# password: xst200919 +# url: jdbc:sqlserver://60.190.202.57:14333;database=SmartCampusSZ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver mvc: static-path-pattern: /images/** diff --git a/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml index d196bfb..2ed85bd 100644 --- a/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml +++ b/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml @@ -28,4 +28,18 @@ + + insert into SZ_Attendance(clint_id , clint_type , ip , port , intime ,school_id , state) + values (#{clint_id},#{clint_type},#{ip} , #{port},#{intime},#{school_id},#{state}) + + + + update SZ_Attendance set lastlogin_time = GETDATE() , isConnection = 1 where clint_id = #{clint_id} + + + + + diff --git a/cloud/search_smartCampus/src/main/resources/mapper/SyncMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/SyncMapper.xml index 14653d8..866216a 100644 --- a/cloud/search_smartCampus/src/main/resources/mapper/SyncMapper.xml +++ b/cloud/search_smartCampus/src/main/resources/mapper/SyncMapper.xml @@ -48,7 +48,7 @@ - update HS_StudentUpdateCard set yxy_is_new = 1 where ID = #{id} + update HS_StudentUpdateCard set Yxy_IsNew = 1 where ID = #{id} @@ -60,7 +60,7 @@ - + @@ -88,7 +88,7 @@ - update SZ_UserRelation set updateTime = GETDATE() where state = #{state} and hxyCustomerId = #{hxyCustomerId} + update SZ_UserRelation set updateTime = GETDATE() , state = #{state} where hxyCustomerId = #{hxyCustomerId} + select student_num from SZ_V_School_Student where student_id = #{studentId} + + + \ No newline at end of file diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/ZkController.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/ZkController.java new file mode 100644 index 0000000..63d4e8d --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/ZkController.java @@ -0,0 +1,30 @@ +package com.sincere.xiaoanSearch.controller; + +import com.sincere.common.dto.xiaoan.CheckInDto; +import com.sincere.common.dto.xiaoan.CheckOutDto; +import com.sincere.common.dto.xiaoan.FingerDto; +import com.sincere.xiaoanSearch.model.CheckIn; +import com.sincere.xiaoanSearch.service.ZkService; +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; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:41 + */ +@RestController +@RequestMapping("/xa/zk") +public class ZkController { + + @Autowired + ZkService zkService ; + + @RequestMapping(value = "insertFinger",method = RequestMethod.POST) + public int insertFinger(@RequestBody FingerDto fingerDto){ + return zkService.insertFinger(fingerDto); + } +} diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FingerMapper.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FingerMapper.java new file mode 100644 index 0000000..1ae0ffc --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/FingerMapper.java @@ -0,0 +1,13 @@ +package com.sincere.xiaoanSearch.mapper; + +import com.sincere.common.dto.xiaoan.FingerDto; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:38 + */ +public interface FingerMapper { + + int insertFinger(FingerDto fingerDto); +} diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/ZkService.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/ZkService.java new file mode 100644 index 0000000..a1e5480 --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/ZkService.java @@ -0,0 +1,12 @@ +package com.sincere.xiaoanSearch.service; + +import com.sincere.common.dto.xiaoan.FingerDto; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:40 + */ +public interface ZkService { + int insertFinger(FingerDto fingerDto); +} diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/ZkServiceImpl.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/ZkServiceImpl.java new file mode 100644 index 0000000..a0f770d --- /dev/null +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/ZkServiceImpl.java @@ -0,0 +1,24 @@ +package com.sincere.xiaoanSearch.service.impl; + +import com.sincere.common.dto.xiaoan.FingerDto; +import com.sincere.xiaoanSearch.mapper.FingerMapper; +import com.sincere.xiaoanSearch.service.ZkService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:40 + */ +@Service +public class ZkServiceImpl implements ZkService { + + @Autowired + FingerMapper fingerMapper ; + + @Override + public int insertFinger(FingerDto fingerDto) { + return fingerMapper.insertFinger(fingerDto); + } +} diff --git a/cloud/search_xiaoan/src/main/resources/mapper/FingerMapper.xml b/cloud/search_xiaoan/src/main/resources/mapper/FingerMapper.xml new file mode 100644 index 0000000..51db800 --- /dev/null +++ b/cloud/search_xiaoan/src/main/resources/mapper/FingerMapper.xml @@ -0,0 +1,11 @@ + + + + + + + insert into zk_finger (student_id , order_msg , create_time) + values (#{studentId},#{orderMsg},#{createTime}) + + + \ No newline at end of file diff --git a/cloud/zkAttendance/pom.xml b/cloud/zkAttendance/pom.xml new file mode 100644 index 0000000..29e9e74 --- /dev/null +++ b/cloud/zkAttendance/pom.xml @@ -0,0 +1,138 @@ + + + + cloud + com.sincere + 1.0.0 + + 4.0.0 + + zkAttendance + + + + com.sincere + common + 1.0.0 + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.cloud + spring-cloud-starter-feign + 1.3.6.RELEASE + + + org.springframework.cloud + spring-cloud-openfeign-core + 2.1.2.RELEASE + + + org.apache.commons + commons-lang3 + 3.3.2 + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + att_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.quartz.QuartzApplication + 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/zkAttendance/src/main/java/com/sincere/att/AttApplication.java b/cloud/zkAttendance/src/main/java/com/sincere/att/AttApplication.java new file mode 100644 index 0000000..692e434 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/AttApplication.java @@ -0,0 +1,21 @@ +package com.sincere.att; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +/** + * @author chen + * @version 1.0 + * @date 2019/11/27 0027 14:24 + */ +@EnableFeignClients(basePackages = "com.sincere.att.feign") +@EnableEurekaClient +@SpringBootApplication +public class AttApplication { + + public static void main(String[] args) { + SpringApplication.run(AttApplication.class, args); + } +} diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/Swagger2.java b/cloud/zkAttendance/src/main/java/com/sincere/att/Swagger2.java new file mode 100644 index 0000000..4dcbca2 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/Swagger2.java @@ -0,0 +1,38 @@ +package com.sincere.att; + +import io.swagger.annotations.ApiOperation; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@EnableSwagger2 +@Configuration //让Spring来加载该类配置 +public class Swagger2 { + + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .enableUrlTemplating(true) + .select() + // 扫描所有有注解的api,用这种方式更灵活 + .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) + .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/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java b/cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java new file mode 100644 index 0000000..4248848 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java @@ -0,0 +1,295 @@ +package com.sincere.att.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.sincere.att.feign.ScFeign; +import com.sincere.att.feign.XaFeign; +import com.sincere.att.logs.LogName; +import com.sincere.att.logs.LoggerUtils; +import com.sincere.att.vo.AttendanceInfoBean; +import com.sincere.att.vo.UserOrderVo; +import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; +import com.sincere.common.dto.xiaoan.FingerDto; +import com.sincere.common.util.DateUtils; +import com.sincere.common.util.HttpClientUtils; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.math.BigInteger; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 所有的设备请求都会在url参数里携带SN,这是设备序列号(serial number的缩写),每个设备唯一标识 + */ +@Controller +@RequestMapping("/iclock") +public class AttPushController { + private static final Logger Log_orderFail = LoggerUtils.Logger(LogName.orderFail); + private static final Logger Log_orderSuccess = LoggerUtils.Logger(LogName.orderSuccess); + private static final Logger Log_kaoInfo = LoggerUtils.Logger(LogName.kaoInfo); + + private static Map> cmdMap = new HashMap<>(); + private static Map cmdOrderMap = new HashMap<>(); + + private static String pwd = "22222222-6faf-48uh-a5a9-447ec68bfe2f" ; + private static String account = "yueqingzhijiao" ; + + + @Autowired + ScFeign scFeign; + + @Autowired + XaFeign xaFeign ; + + @RequestMapping(value = "sendOrder/{roomId}" , method = RequestMethod.GET) + public void sendOrder(@PathVariable int roomId){ + JSONObject object = new JSONObject(); + object.put("PageIndex",1); + object.put("roomId",roomId); + object.put("pageSize",9999); + JSONObject result = HttpClientUtils.httpPostJson("http://campus.myjxt.com/api/Room/GetListPageRoom",object.toJSONString()); + JSONArray array = (JSONArray) ((JSONObject) result.get("data")).get("roomList") ; + List order = new ArrayList<>(); + List attendanceList = scFeign.selectRoomAttendance(roomId); + for(String attendance : attendanceList){ + for(int i = 0 ; i < array.size() ; i++){ + JSONObject student = (JSONObject) array.get(i); + UserOrderVo vo = new UserOrderVo(); + vo.setStudentId((Integer) student.get("studentid")); + vo.setStudentName((String) student.get("name")); + int number = 1 ; + try{ + number = cmdOrderMap.get(attendance) ; + }catch (Exception e){ + + } + vo.setNumber(number); + number++ ; + cmdOrderMap.put(attendance,number) ; + if(vo.getStudentId() != 0){ + order.add(vo.toString()); + } + } + cmdMap.put(attendance,order); + } + } + /** + * 1,设备通完电以后第一个发送到后台的请求 + * 格式为 /iclock/cdata?options=all&language=xxxx&pushver=xxxx + */ + @RequestMapping(value="/cdata",params = {"options","language","pushver"},method = RequestMethod.GET) + public void init(String SN, String options, String language, String pushver, HttpServletRequest request , + @RequestParam(required = false) String PushOptionsFlag, HttpServletResponse response){ + try { + if(cmdMap.get(SN) == null){ + cmdMap.put(SN,new ArrayList<>()); + cmdOrderMap.put(SN,1); + } + if(scFeign.selectAttendaceWithId(SN) == null){ + SZ_AttendanceDto attendanceDto = new SZ_AttendanceDto(); + attendanceDto.setClint_id(SN); + attendanceDto.setClint_type("24"); + attendanceDto.setIp(request.getRemoteAddr()); + attendanceDto.setPort(request.getRemotePort()); + attendanceDto.setIntime(DateUtils.date2String(new Date(),DateUtils.format2)); + attendanceDto.setSchool_id("-1"); + attendanceDto.setState(1); + scFeign.insertAttendance(attendanceDto); + }else { + scFeign.updateAttendance(SN); + } + String initOptions = initOptions(SN,PushOptionsFlag); + response.getWriter().write(initOptions);//返回成功以后设备会发送心跳请求 + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 2,心跳请求,会从服务器拿到命令返回 给设备 + */ + @RequestMapping("/getrequest") + public void heartBeat(String SN, HttpServletResponse response){ + scFeign.updateAttendance(SN); + StringBuffer sb = new StringBuffer("OK"); + List cmds = cmdMap.get(SN); + if(cmds==null){//等于空说明从来没加载过,如果初始化加载过了,此时应该不为Null 只是size为0 + cmds = new ArrayList<>(); + cmdMap.put(SN,cmds); + cmdOrderMap.put(SN,1); + } + if(cmds!=null&&cmds.size()>0){ + sb.setLength(0);//如果有命令就不返回OK了 + cmds.stream().forEach(cmd->sb.append(cmd).append("\r\n\r\n")); + + } + try { + response.setCharacterEncoding("gbk"); + response.getWriter().write(sb.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * 3,候补心跳请求,正常情况下设备不发此请求,有大量数据上传的时候,不发上面的心跳,发这个请求, + * 这个请求,服务器只能返回OK,不可以返回命令 + */ + @RequestMapping("/ping") + public void ping(HttpServletResponse response){ + System.out.println("考勤机心跳请求大量进来了......ping"+new SimpleDateFormat("HH:mm:ss").format(new Date())); + try { + response.getWriter().write("OK"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 4,设备端处理完命令以后会发送该请求,告诉服务器命令的处理结果 + */ + @RequestMapping("/devicecmd") + public void handleCmd(String SN, @RequestBody String data, HttpServletResponse response){ + //判断data 清空map + List cmdList = cmdMap.get(SN); + String[] returnList = data.split("\n"); + if(returnList.length > 0 && cmdList.size() > 0){ + for(String message : returnList){ + String number = message.substring(message.indexOf("=")+1,message.indexOf("&")); + String result = message.substring(message.indexOf("=",message.indexOf("&"))+1,message.indexOf("&",message.indexOf("&")+1)); + if(result.equals("0")){ + Iterator it = cmdList.iterator(); + while (((Iterator) it).hasNext()) { + String b = it.next(); + if (b.contains("C:"+number)) { + Log_orderSuccess.info("指令成功=========="+b); + it.remove(); + } + } + } + } + } + try { + response.getWriter().write("OK"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * 5 考勤数据上报 + */ + @RequestMapping(value = "/cdata") + public void handleRtData(HttpServletRequest request, HttpServletResponse response, String SN, String table) throws UnsupportedEncodingException { + request.setCharacterEncoding("gbk"); + String data = ""; + ByteArrayOutputStream bos = null; + byte[] b= new byte[1024]; + try { + InputStream is = request.getInputStream(); + bos = new ByteArrayOutputStream(); + int len = 0; + while((len=is.read(b))!=-1){ + bos.write(b,0,len); + } + data = new String(bos.toByteArray(),"gbk"); + } catch (IOException e) { + e.printStackTrace(); + } + if("ATTLOG".equals(table)){ + String[] list = data.split("\t"); + String cardNo = scFeign.selectStudentNumByStudentId(Integer.valueOf(list[0])); + cardNo = new BigInteger(cardNo, 16).toString(); + //考勤日志 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String info = String.format("", + simpleDateFormat.format(new Date()), SN, cardNo, list[1], "-1"); + AttendanceInfoBean attendanceInfoBean = new AttendanceInfoBean(); + attendanceInfoBean.setInfo(info); + attendanceInfoBean.setIsControl(0); + attendanceInfoBean.setPwd(pwd); + attendanceInfoBean.setUsername(account); + + String jsonResult = JSON.toJSONString(attendanceInfoBean); + String urlHXY = "http://campus.myjxt.com/api/XiaoAnCommon/SendHXY"; + JSONObject jsonObject = HttpClientUtils.httpPostJson(urlHXY, jsonResult); + if ((int) jsonObject.get("status") == 1){ + Log_kaoInfo.info("出入寝签到成功:" + SN + " 卡号:" + cardNo); + }else { + Log_orderFail.info("出入寝签到失败:" + SN + " 卡号:" + cardNo + " result1:" + jsonObject.toJSONString()); + } + } + if("OPERLOG".equals(table)){ + //操作日志 + if(data.substring(0,3).contains("FP")){ + //添加指纹 + String studentId = data.substring(data.indexOf("=")+1,data.indexOf("\t",data.indexOf("="))); + String order = data.substring(3); + FingerDto fingerDto = new FingerDto(); + fingerDto.setOrderMsg(order); + fingerDto.setStudentId(Integer.valueOf(studentId)); + fingerDto.setCreateTime(new Date()); + xaFeign.insertFinger(fingerDto); + } + } + try { + response.getWriter().write("OK"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 设备通电以后连接到服务器,需要返回的初始化参数 + * @param sn + * @param PushOptionsFlag + * @return + */ + private String initOptions(String sn,String PushOptionsFlag) { + StringBuffer devOptions = new StringBuffer(); + devOptions.append("GET OPTION FROM: "+sn); + // + "\nStamp=" + devInfo.devInfoJson.getString("Stamp") + devOptions.append("\nATTLOGStamp=0"); + devOptions.append("\nOPERLOGStamp=0"); + devOptions.append("\nBIODATAStamp=0"); + devOptions.append("\nATTPHOTOStamp=0"); + devOptions.append("\nErrorDelay=10");//断网重连 + devOptions.append("\nDelay=5");//心跳间隔 + devOptions.append("\nTimeZone=8");//时区 + devOptions.append("\nRealtime=1");//实时上传 + devOptions.append("\nServerVer=3.0.1");//这个必须填写 +// 1 考勤记录 +// 2 操作日志 +// 3 考勤照片 +// 4 登记新指纹 +// 5 登记新用户 +// 6 指纹图片 +// 7 修改用户信息 +// 8 修改指纹 +// 9 新登记人脸 +// 10 用户照片 +// 11 工作号码 +// 12 比对照片 + devOptions.append("\nTransFlag=111111111111");// 1-12二进制位 分别代表以上含义 + System.out.println("PushOptionsFlag============="+PushOptionsFlag); + if (PushOptionsFlag!=null&&PushOptionsFlag.equals("1")) + { + // 支持参数单独获取的才要把需要获取的参数回传给设备 modifeid by max 20170926 + devOptions.append("\nPushOptions=RegDeviceType,FingerFunOn,FaceFunOn,FPVersion,FaceVersion,NetworkType,HardwareId3,HardwareId5,HardwareId56,LicenseStatus3,LicenseStatus5,LicenseStatus56"); + } + devOptions.append("\n"); + return devOptions.toString(); + } +} diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/feign/ScFeign.java b/cloud/zkAttendance/src/main/java/com/sincere/att/feign/ScFeign.java new file mode 100644 index 0000000..179342e --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/feign/ScFeign.java @@ -0,0 +1,36 @@ +package com.sincere.att.feign; + +import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; +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/12/31 0031 11:08 + */ +@FeignClient("smartCampusSearch") +public interface ScFeign { + + @RequestMapping(value = "attendance/insertAttendance", method = RequestMethod.POST) + void insertAttendance(@RequestBody SZ_AttendanceDto attendanceDto); + + @RequestMapping(value = "attendance/updateAttendance", method = RequestMethod.GET) + void updateAttendance(@RequestParam("clientId") String clientId); + + @RequestMapping(value = "attendance/selectAttendaceWithId" , method = RequestMethod.GET) + SZ_AttendanceDto selectAttendaceWithId(@RequestParam("clint_id") String clint_id); + + @RequestMapping(value = "attendance/selectRoomAttendance", method = RequestMethod.GET) + List selectRoomAttendance(@RequestParam("placeId") int placeId); + + @RequestMapping(value = "/sm/user/selectStudentNumByStudentId",method = RequestMethod.GET) + String selectStudentNumByStudentId(@RequestParam("studentId") int studentId); + + +} diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/feign/XaFeign.java b/cloud/zkAttendance/src/main/java/com/sincere/att/feign/XaFeign.java new file mode 100644 index 0000000..a8279e3 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/feign/XaFeign.java @@ -0,0 +1,19 @@ +package com.sincere.att.feign; + +import com.sincere.common.dto.xiaoan.FingerDto; +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; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 13:42 + */ +@FeignClient("xiaoanSearch") +public interface XaFeign { + + @RequestMapping(value = "/xa/zk/insertFinger",method = RequestMethod.POST) + int insertFinger(@RequestBody FingerDto fingerDto); +} diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/logs/LogName.java b/cloud/zkAttendance/src/main/java/com/sincere/att/logs/LogName.java new file mode 100644 index 0000000..d2a1122 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/logs/LogName.java @@ -0,0 +1,39 @@ +package com.sincere.att.logs; + +/** + * @author chen + * @version 1.0 + * @date 2019/10/12 0012 16:18 + */ +public enum LogName { + orderSuccess("orderSuccess"), + orderFail("orderFail"), + kaoInfo("kaoInfo"), + heartBeat("heartBeat"), + error("error"); + + private String logFileName; + + LogName(String fileName) { + this.logFileName = fileName; + } + + public String getLogFileName() { + return logFileName; + } + + public void setLogFileName(String logFileName) { + this.logFileName = logFileName; + } + + public static LogName getAwardTypeEnum(String value) { + LogName[] arr = values(); + for (LogName item : arr) { + if (null != item && !item.logFileName.equals("")) { + return item; + } + } + return null; + } +} + diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/logs/LoggerUtils.java b/cloud/zkAttendance/src/main/java/com/sincere/att/logs/LoggerUtils.java new file mode 100644 index 0000000..f81fcc3 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/logs/LoggerUtils.java @@ -0,0 +1,27 @@ +package com.sincere.att.logs; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author chen + * @version 1.0 + * @date 2019/10/12 0012 16:19 + */ +public class LoggerUtils { + + public static Logger Logger(Class clazz) { + return LoggerFactory.getLogger(clazz); + } + + /** + * 打印到指定的文件下 + * + * @param desc 日志文件名称 + * @return + */ + public static Logger Logger(LogName desc) { + return LoggerFactory.getLogger(desc.getLogFileName()); + } + +} diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/logs/MyTimeBasedFileNamingAndTriggeringPolicy.java b/cloud/zkAttendance/src/main/java/com/sincere/att/logs/MyTimeBasedFileNamingAndTriggeringPolicy.java new file mode 100644 index 0000000..d490a28 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/logs/MyTimeBasedFileNamingAndTriggeringPolicy.java @@ -0,0 +1,32 @@ +package com.sincere.att.logs; + +import ch.qos.logback.core.joran.spi.NoAutoStart; +import ch.qos.logback.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy; + +/** + * @author chen + * @version 1.0 + * @date 2019/10/31 0031 13:42 + */ +@NoAutoStart +public class MyTimeBasedFileNamingAndTriggeringPolicy extends DefaultTimeBasedFileNamingAndTriggeringPolicy { + + //这个用来指定时间间隔 + private Integer multiple = 1; + + @Override + protected void computeNextCheck() { + nextCheck = rc.getEndOfNextNthPeriod(dateInCurrentPeriod, multiple).getTime(); + } + + public Integer getMultiple() { + return multiple; + } + + public void setMultiple(Integer multiple) { + if (multiple > 1) { + this.multiple = multiple; + } + } + +} diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/vo/AttendanceInfoBean.java b/cloud/zkAttendance/src/main/java/com/sincere/att/vo/AttendanceInfoBean.java new file mode 100644 index 0000000..422489c --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/vo/AttendanceInfoBean.java @@ -0,0 +1,61 @@ +package com.sincere.att.vo; + +/** + * 考勤账号表 + */ +public class AttendanceInfoBean { + + /** + * 控制器类型,0是其他控制器,1是微耕控制器 + */ + private Integer isControl; + + public Integer getIsControl() { + return isControl; + } + + public void setIsControl(Integer isControl) { + this.isControl = isControl; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPwd() { + return pwd; + } + + public void setPwd(String pwd) { + this.pwd = pwd; + } + + /** + * 刷卡信息,XML格式字符串: + * + * + */ + private String info; + + /** + * 账号 + */ + private String username; + + /** + * 密码 + */ + private String pwd; +} diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/vo/OrderVo.java b/cloud/zkAttendance/src/main/java/com/sincere/att/vo/OrderVo.java new file mode 100644 index 0000000..814dc79 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/vo/OrderVo.java @@ -0,0 +1,28 @@ +package com.sincere.att.vo; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 9:50 + */ +public class OrderVo { + + private int number ; + private int studentId ; + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } + + public int getStudentId() { + return studentId; + } + + public void setStudentId(int studentId) { + this.studentId = studentId; + } +} diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/vo/UserOrderVo.java b/cloud/zkAttendance/src/main/java/com/sincere/att/vo/UserOrderVo.java new file mode 100644 index 0000000..a470918 --- /dev/null +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/vo/UserOrderVo.java @@ -0,0 +1,25 @@ +package com.sincere.att.vo; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/31 0031 9:08 + */ +public class UserOrderVo extends OrderVo { + + private String studentName ; + + + public String getStudentName() { + return studentName; + } + + public void setStudentName(String studentName) { + this.studentName = studentName; + } + + @Override + public String toString() { + return "C:"+this.getNumber()+":DATA UPDATE USERINFO PIN="+this.getStudentId()+"\tName="+this.getStudentName()+"\tPasswd=\tCard=\tPri=0\r\n\r\n"; + } +} diff --git a/cloud/zkAttendance/src/main/resources/application.yaml b/cloud/zkAttendance/src/main/resources/application.yaml new file mode 100644 index 0000000..72638f5 --- /dev/null +++ b/cloud/zkAttendance/src/main/resources/application.yaml @@ -0,0 +1,16 @@ +server: + port: 8081 + +spring: + application: + name: zkAtt-server + +eureka: + instance: + hostname: localhost + lease-expiration-duration-in-seconds: 60 + lease-renewal-interval-in-seconds: 10 + client: + service-url: + defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ + diff --git a/cloud/zkAttendance/src/main/resources/cmd.txt b/cloud/zkAttendance/src/main/resources/cmd.txt new file mode 100644 index 0000000..1eee52f --- /dev/null +++ b/cloud/zkAttendance/src/main/resources/cmd.txt @@ -0,0 +1,3 @@ +C:2:DATA UPDATE USERINFO PIN=133\tName=jwz\tPasswd=\tCard=\tPri=0 下发用户 +C:3:DATA QUERY FINGERTMP PIN=133\tFID=6 +C:4:DATA UPDATE FINGERTMP PIN=133\tFID=7\tSize=1636\tValid=1\tTMP=TYlTUzIxAAAEyskECAUHCc7QAAAcy2kBAAAAhHcop8oiAAQP8QDjAInFcgAwAPAPogBAymEP3wBIAE4PjcpOAGAPrACUAGrFAAFrACcPCwB3yoAPrQB3AJkPBcuDAKQPnABAAEjFtACfADoOKwC0yqwPogC0AIQPB8vAALQPwgAMADTFCQHOAKkObwDVyjgPcADUAIYPAsvWAJwOZQA3AELF0gD3ACEPwgH+yvUO4gAMAWAOZMoPAUgP4ADfAQ/FYgAgASsOMwAiy48PVgAtATEOasoyAaoOmgD2AajFCgE0AfsOHwA8y5gPvAA8AVsPkMpCAaIPfwCJAZPF7wBUAYIPsgBTy4wPvQBcAcEPs1LyFdOlSgbua3NB6JK6koftPHIqyw5fygJHDNJkIj+vAcpylhGXFsummIb7nNepuyTXMqIUiRIi3CPymbQu+WslGfKTFXfGpPvq8QLiNPv+zP4QHQt2CJ8S+cYIGmkLxfov8gIxIQ6J9H7++Ar6MhIBjvw/D+IHqDyg6iapgQPPBHvWhH+SGRPwi1n+mE9PIZyBh8cYddcAB4ZUPWhMfrq+EOW1OYGCTIYJXJvobcmZTp+shUhguv4UJQwnETLfHG7mewNkp/y2WtMM3gQinKv1qTJMDkYVRQwc9pYmp+nei8f0CPjaJ6vlPmhbbNJkJIIxNXsgPwHHxyPtAgBuAXDCwAB4y2zCOgYAssQJUgoFANYBCcAFBwRSBXqMPgkAaAsE9MH+RAYAfNZrxApuBACnJAOPEQQnJZB3dMLAAUp6zQHPKQlBRssAcuTs//7B/UY6wS/aAck0icJpBsDHrn/ABwDLNcwvM94AFTqgwsE6icW7dMH/wXwHxWVCqG5sFADcR0lvxQjAiXBcUwbF1khGwMKGBwDYiAb4/fwPAIVOYrFvXIDBFACpUXRXacUKZcBU/koQxYdXlMD/wXjB/wT/UTUXARRVnsG9wvsIaIvBhcJozAChkvb+//3//vYTBGlYa8J8wsAFwcSZwDHAGQEQop7EC3nCwcHBjELBxa7C/MISAMO1g8YPwsCZwMHABGd80gGYh1B+arRxiwtnwcHCDwBYiVQJU3J0wZMNxb2QjMLCwMJfwgGSDsrClCT+ZcIEuQrKgZhMam3COsKMxgHBnDrCwATAjAzFwx4BFJx1a5ZJwMHDxMBwB8BgkcE7CgC1o/jCxKzAjgoAx6P1wG4IxcbDCwDtaa2AD8XGxYsMAFq3R77Bw26QDABhtzkK/sHCcMPABhUFyL+3wYTCwATEmwnAw1xzGQHMy8dbcMGCw5uEvVgOysPMMMCQxAeUJssEz6s9w8FLxa0JWoRxdcPBBsFr6AAK1NbElkbBxAiToMHBwcEFcEA1wP79/w0Ab9U+soLCw8SDGcQC0Wg2Z8TIxcUEwsULwcDBwMPAB8LAwAFw20ZvwAHAlN8ABNuM+ysHwcYAyMLDwHbBBJAKynvoOmLCwgZ6es0BYvVMPCrJAGM/QsL/ooJVwREQxnAqBREWFrLA+TUFEFowEzDBEQP/dTUGED4+P/8mzRGYRhfD/wZZAdo+R/3+OgXVg0vQfgUQP1ADhwYVzVd0Pf4GEPxYAp/DAxB7WBoBAxQPZwDAUkIAzkMFygELRVI= \ No newline at end of file diff --git a/cloud/zkAttendance/src/main/resources/logback.xml b/cloud/zkAttendance/src/main/resources/logback.xml new file mode 100644 index 0000000..02e9fb0 --- /dev/null +++ b/cloud/zkAttendance/src/main/resources/logback.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n + + + + + + %d{yyyy-MM-dd HH:mm:ss} -%msg%n + + + + 1 + + + ${logPath}/info/orderSuccess/%d{yyyy-MM-dd}.log + ${maxHistory} + + + + + %d{yyyy-MM-dd HH:mm:ss} -%msg%n + + + + 1 + + + ${logPath}/info/orderFail/%d{yyyy-MM-dd}.log + ${maxHistory} + + + + + %d{yyyy-MM-dd HH:mm:ss} -%msg%n + + + + 1 + + + ${logPath}/info/heartBeat/%d{yyyy-MM-dd}.log + ${maxHistory} + + + + + %d{yyyy-MM-dd HH:mm:ss} -%msg%n + + + + 1 + + + ${logPath}/info/kaoInfo/%d{yyyy-MM-dd}.log + ${maxHistory} + + + + + + + + + ERROR + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n + + + + 1 + + ${logPath}/infoError/${PROJECT_NAME}.%d{yyyy-MM-dd}.log + + ${maxHistory} + + + + + + + + + + + + + + + + + + + + + +        + + + + + + + + + + \ No newline at end of file -- libgit2 0.21.0