diff --git a/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/AssetLoginLogApi.java b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/AssetLoginLogApi.java new file mode 100644 index 000000000..60a4cfb82 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/AssetLoginLogApi.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.ticket.api.assetLoginLog; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.api.assetLoginLog.vo.LoginBody; +import cn.iocoder.yudao.module.ticket.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@FeignClient(name = ApiConstants.NAME) +@Tag(name = "登陆日志") +public interface AssetLoginLogApi { + String PREFIX = ApiConstants.PREFIX + "/assetLoginLog"; + @PostMapping(PREFIX + "/login") + @Operation(summary = "设备登陆") + public CommonResult login(@RequestBody LoginBody loginBody); +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/vo/LoginBody.java b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/vo/LoginBody.java new file mode 100644 index 000000000..3f1df3fa8 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/vo/LoginBody.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.ticket.api.assetLoginLog.vo; + +import lombok.Data; + +@Data +public class LoginBody { + //设备id + private String deviceId; + //识别码 + private String identificationCode; +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/HeartBeatApi.java b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/HeartBeatApi.java new file mode 100644 index 000000000..7c7b9753d --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/HeartBeatApi.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.ticket.api.heartbeat; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.api.heartbeat.vo.Heartbeat; +import cn.iocoder.yudao.module.ticket.api.heartbeat.vo.PassengerInformation; +import cn.iocoder.yudao.module.ticket.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(name = ApiConstants.NAME) +@Tag(name = "设备状态") +public interface HeartBeatApi { + String PREFIX = ApiConstants.PREFIX + "/heartbeat"; + @PostMapping(PREFIX) + @Operation(summary = "设备状态上报") + public CommonResult receiveHeartbeat(@RequestBody Heartbeat heartbeat); + + @PostMapping(PREFIX + "/doPassengerInformation") + @Operation(summary = "旅客信息上报") + public CommonResult doPassengerInformation(@RequestBody PassengerInformation passengerInformation); +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/Heartbeat.java b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/Heartbeat.java new file mode 100644 index 000000000..f1f00d86b --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/Heartbeat.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.ticket.api.heartbeat.vo; + +import lombok.Data; + +@Data +public class Heartbeat { + //设备ID + private String deviceId; + //事件类型(1.设备上线 -1.故障发生 0.设备离线) + private String eventType; +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/PassengerInformation.java b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/PassengerInformation.java new file mode 100644 index 000000000..bc3f495f0 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-api/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/PassengerInformation.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.ticket.api.heartbeat.vo; + +import lombok.Data; + +@Data +public class PassengerInformation { + //编号 + private String id; + //设备id + private String deviceId; + //旅客姓名 + private String name; + //旅客身份证 + private String idCard; + //提交时间 + private String commitTime; +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/AssetLoginLogApiImpl.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/AssetLoginLogApiImpl.java new file mode 100644 index 000000000..4a3d11e93 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/AssetLoginLogApiImpl.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.ticket.api.assetLoginLog; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.api.assetLoginLog.vo.LoginBody; +import cn.iocoder.yudao.module.ticket.service.login.LoginService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@RestController // 提供 RESTful API 接口,给 Feign 调用 +@Validated +public class AssetLoginLogApiImpl implements AssetLoginLogApi { + @Resource + private LoginService loginService; + + @Override + public CommonResult login(LoginBody loginBody) { + System.out.println("loginBody======" + loginBody); + cn.iocoder.yudao.module.ticket.controller.admin.login.domain.LoginBody loginBody1 = new cn.iocoder.yudao.module.ticket.controller.admin.login.domain.LoginBody(); + loginBody1.setDeviceId(loginBody.getDeviceId()); + loginBody1.setIdentificationCode(loginBody.getIdentificationCode()); + return loginService.login(loginBody1); + } +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/vo/AssetLoginLogVO.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/vo/AssetLoginLogVO.java new file mode 100644 index 000000000..660b5a761 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/assetLoginLog/vo/AssetLoginLogVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.ticket.api.assetLoginLog.vo; + +import lombok.*; + +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import org.springframework.data.mongodb.core.mapping.Document; + +/** + * 设备登录日志 DO + * + * @author 管理员 + */ +@Document("loginLog") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class AssetLoginLogVO{ + //编号 + private String id; + //登录时间 + private String loginTime; + //设备id + private String deviceId; + //设备类型 + private String assetType; + //设备名称 + private String assetName; + //识别码 + private String identificationCode; + //登录状态 + private String status; + //登录状态备注 + private String loginRemark; + //登录参数 + private String loginParameter; +} \ No newline at end of file diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/HeartBeatApiImpl.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/HeartBeatApiImpl.java new file mode 100644 index 000000000..f59e3f19b --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/HeartBeatApiImpl.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.ticket.api.heartbeat; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.api.heartbeat.vo.Heartbeat; +import cn.iocoder.yudao.module.ticket.api.heartbeat.vo.PassengerInformation; +import cn.iocoder.yudao.module.ticket.service.heartbeat.HeartbeatService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController // 提供 RESTful API 接口,给 Feign 调用 +@Validated +public class HeartBeatApiImpl implements HeartBeatApi{ + @Resource + private HeartbeatService heartBeatService; + + @Override + public CommonResult receiveHeartbeat(Heartbeat heartbeat) { + cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.Heartbeat heartbeat1 = new cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.Heartbeat(); + heartbeat1.setDeviceId(heartbeat.getDeviceId()); + heartbeat1.setEventType(heartbeat.getEventType()); + return heartBeatService.receiveHeartbeat(heartbeat1); + } + + @Override + public CommonResult doPassengerInformation(PassengerInformation passengerInformation) { + cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.PassengerInformation passengerInformation1 = new cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.PassengerInformation(); + passengerInformation1.setId(passengerInformation.getId()); + passengerInformation1.setName(passengerInformation.getName()); + passengerInformation1.setCommitTime(passengerInformation.getCommitTime()); + passengerInformation1.setIdCard(passengerInformation.getIdCard()); + passengerInformation1.setDeviceId(passengerInformation.getDeviceId()); + return heartBeatService.doPassengerInformation(passengerInformation1); + } +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/AssetVO.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/AssetVO.java new file mode 100644 index 000000000..746550e45 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/api/heartbeat/vo/AssetVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.ticket.api.heartbeat.vo; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; +import org.springframework.data.mongodb.core.mapping.Document; + +/** + * 设备 DO + * + * @author 芋道源码 + */ +@Document("asset") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class AssetVO { + private String id; + private String dataId; + private String assetname; + private String assettype; + private String assettypename; + private String isOnline; + private long lastFeedbackTime; +} \ No newline at end of file diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/HeartbeatController.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/HeartbeatController.java new file mode 100644 index 000000000..6493bd18c --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/HeartbeatController.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.ticket.controller.admin.heartbeat; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.Heartbeat; +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.PassengerInformation; +import cn.iocoder.yudao.module.ticket.service.heartbeat.HeartbeatService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/heart") +public class HeartbeatController { + @Resource + private HeartbeatService heartbeatService; + @PostMapping + public CommonResult receiveHeartbeat(@RequestBody Heartbeat heartbeat) { + return heartbeatService.receiveHeartbeat(heartbeat); + } + + @PostMapping("/doPassengerInformation") + public CommonResult doPassengerInformation(@RequestBody PassengerInformation passengerInformation){ + return heartbeatService.doPassengerInformation(passengerInformation); + } +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/Heartbeat.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/Heartbeat.java new file mode 100644 index 000000000..68b5d5c16 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/Heartbeat.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain; + +import lombok.Data; + +@Data +public class Heartbeat { + //设备ID + private String deviceId; + //事件类型(1.设备上线 -1.故障发生 0.设备离线) + private String eventType; +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/HeartbeatLog.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/HeartbeatLog.java new file mode 100644 index 000000000..4e122962b --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/HeartbeatLog.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain; + +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.List; +import java.util.Map; + +@Document("heartbeatlog") +@Data +public class HeartbeatLog { + private String id; + private String dataId; + private String assetname; + private String assettype; + private String assettypename; + private long lastFeedbackTime; + private String requesttext; + private String returntext; + private List> dataMapList; + private String loginTime; +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/PassengerInformation.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/PassengerInformation.java new file mode 100644 index 000000000..d35350400 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/heartbeat/domain/PassengerInformation.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain; + +import lombok.Data; +import org.springframework.data.mongodb.core.mapping.Document; + +@Document("passengerInformation") +@Data +public class PassengerInformation { + //编号 + private String id; + //设备id + private String deviceId; + //旅客姓名 + private String name; + //旅客身份证 + private String idCard; + //提交时间 + private String commitTime; +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/LoginController.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/LoginController.java new file mode 100644 index 000000000..c09232247 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/LoginController.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.ticket.controller.admin.login; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.controller.admin.login.domain.LoginBody; +import cn.iocoder.yudao.module.ticket.controller.admin.login.domain.LoginResult; +import cn.iocoder.yudao.module.ticket.dal.dataobject.asset.AssetDO; +import cn.iocoder.yudao.module.ticket.dal.dataobject.assetLoginLog.AssetLoginLogDO; +import cn.iocoder.yudao.module.ticket.dal.mongodb.login.LoginRepository; +import cn.iocoder.yudao.module.ticket.dal.mongodb.login.SysuserRepository; +import cn.iocoder.yudao.module.ticket.service.login.LoginService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.Map; + +@RestController +public class LoginController { +// @Autowired +// private SysuserRepository sysuserRepository; +// @Autowired +// private JwtUtils jwtUtils; +// @Autowired +// private LoginRepository loginRepository; + + @Resource + private LoginService loginService; + + @PostMapping("/login") + public CommonResult login(@RequestBody LoginBody loginBody) { + return loginService.login(loginBody); + } + +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/domain/LoginBody.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/domain/LoginBody.java new file mode 100644 index 000000000..bc2311cc3 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/domain/LoginBody.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.ticket.controller.admin.login.domain; + +import lombok.Data; + +@Data +public class LoginBody { + //设备id + private String deviceId; + //识别码 + private String identificationCode; +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/domain/LoginResult.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/domain/LoginResult.java new file mode 100644 index 000000000..c4f3b21fd --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/controller/admin/login/domain/LoginResult.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.ticket.controller.admin.login.domain; + +import lombok.Data; + +@Data +public class LoginResult { +// private String userId; +// private String username; + private String token; +// private String userType; +} \ No newline at end of file diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/AssetRepository.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/AssetRepository.java new file mode 100644 index 000000000..4b32b1bd5 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/AssetRepository.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.ticket.dal.mongodb.heartbeat; + + +import cn.iocoder.yudao.module.ticket.api.heartbeat.vo.AssetVO; +import cn.iocoder.yudao.module.ticket.dal.dataobject.asset.AssetDO; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; +@Repository +public interface AssetRepository extends MongoRepository { + + ListfindAllByAssettypename(String assettypename); + AssetVO findByDataId(String dataId); + List findAllByIsOnline(String online); +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/HeartbeatLogRepository.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/HeartbeatLogRepository.java new file mode 100644 index 000000000..7f9f9486f --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/HeartbeatLogRepository.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.ticket.dal.mongodb.heartbeat; + + +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.HeartbeatLog; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface HeartbeatLogRepository extends MongoRepository { + +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/PassengerInformationRepository.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/PassengerInformationRepository.java new file mode 100644 index 000000000..b4283c829 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/heartbeat/PassengerInformationRepository.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.ticket.dal.mongodb.heartbeat; + +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.PassengerInformation; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface PassengerInformationRepository extends MongoRepository { +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/login/LoginRepository.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/login/LoginRepository.java new file mode 100644 index 000000000..addd94961 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/login/LoginRepository.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.ticket.dal.mongodb.login; + +import cn.iocoder.yudao.module.ticket.api.assetLoginLog.vo.AssetLoginLogVO; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface LoginRepository extends MongoRepository { +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/login/SysuserRepository.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/login/SysuserRepository.java new file mode 100644 index 000000000..821b9dac3 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/dal/mongodb/login/SysuserRepository.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.ticket.dal.mongodb.login; + + +//import com.example.loginModel.domain.Sysuser; +import cn.iocoder.yudao.module.ticket.api.heartbeat.vo.AssetVO; +import cn.iocoder.yudao.module.ticket.dal.dataobject.asset.AssetDO; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; + +public interface SysuserRepository extends MongoRepository { + @Query("{'dataId': {'$regex': '?0', '$options': 'i'}}") + Page findByName(String q, PageRequest pageable); + + AssetVO findSysuserByDataId(String dataId); +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/heartbeat/HeartbeatService.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/heartbeat/HeartbeatService.java new file mode 100644 index 000000000..b0ca4effa --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/heartbeat/HeartbeatService.java @@ -0,0 +1,10 @@ +package cn.iocoder.yudao.module.ticket.service.heartbeat; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.Heartbeat; +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.PassengerInformation; + +public interface HeartbeatService { + public CommonResult receiveHeartbeat(Heartbeat heartbeat); + public CommonResult doPassengerInformation(PassengerInformation passengerInformation); +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/heartbeat/HeartbeatServiceImpl.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/heartbeat/HeartbeatServiceImpl.java new file mode 100644 index 000000000..8d348bb57 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/heartbeat/HeartbeatServiceImpl.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.ticket.service.heartbeat; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.api.heartbeat.vo.AssetVO; +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.Heartbeat; +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.HeartbeatLog; +import cn.iocoder.yudao.module.ticket.controller.admin.heartbeat.domain.PassengerInformation; +import cn.iocoder.yudao.module.ticket.dal.dataobject.asset.AssetDO; +import cn.iocoder.yudao.module.ticket.dal.mongodb.heartbeat.AssetRepository; +import cn.iocoder.yudao.module.ticket.dal.mongodb.heartbeat.HeartbeatLogRepository; +import cn.iocoder.yudao.module.ticket.dal.mongodb.heartbeat.PassengerInformationRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; + +import java.text.SimpleDateFormat; + +@Service +@Validated +public class HeartbeatServiceImpl implements HeartbeatService { + @Autowired + private MongoTemplate mongoTemplate; + @Autowired + private HeartbeatLogRepository heartbeatLogRepository; + @Autowired + private AssetRepository assetRepository; + @Autowired + private PassengerInformationRepository passengerInformationRepository; + + public void update(String id, String isonline) { + Query query = new Query(Criteria.where("dataId").is(id)); + Update update = new Update().set("isOnline", isonline); + mongoTemplate.updateFirst(query, update, AssetDO.class); + } + + + @Override + public CommonResult receiveHeartbeat(@RequestBody Heartbeat heartbeat) { + AssetVO asset = assetRepository.findByDataId(heartbeat.getDeviceId()); + HeartbeatLog heartbeatLog=new HeartbeatLog(); + heartbeatLog.setDataId(asset.getDataId()); + heartbeatLog.setAssetname(asset.getAssetname()); + heartbeatLog.setAssettype(asset.getAssettype()); + heartbeatLog.setAssettypename(asset.getAssettypename()); + if(heartbeat.getEventType().equals("1")){ + long currentTimeMillis = System.currentTimeMillis(); + // + heartbeatLog.setLastFeedbackTime(currentTimeMillis); + heartbeatLog.setRequesttext(heartbeat.toString()); + heartbeatLog.setReturntext(CommonResult.success("收到").toString()); + //更新mongodb的数据 + heartbeatLogRepository.save(heartbeatLog); + } + else if(heartbeat.getEventType().equals("-1")){ + heartbeatLog.setLastFeedbackTime(System.currentTimeMillis()); + heartbeatLog.setRequesttext(heartbeat.toString()); + heartbeatLog.setReturntext(CommonResult.error(new ErrorCode(999910,"设备异常")).toString()); + heartbeatLogRepository.save(heartbeatLog); + update(heartbeat.getDeviceId(),"0"); + return CommonResult.error(new ErrorCode(999910,"设备异常")); + }else if(heartbeat.getEventType().equals("0")){ + heartbeatLog.setLastFeedbackTime(System.currentTimeMillis()); + heartbeatLog.setRequesttext(heartbeat.toString()); + heartbeatLog.setReturntext(CommonResult.error(new ErrorCode(999911,"设备下线")).toString()); + heartbeatLogRepository.save(heartbeatLog); + update(heartbeat.getDeviceId(),"0"); + return CommonResult.error(new ErrorCode(999911,"设备下线")); + }else { + heartbeatLog.setLastFeedbackTime(System.currentTimeMillis()); + heartbeatLog.setRequesttext(heartbeat.toString()); + heartbeatLog.setReturntext(CommonResult.error(new ErrorCode(999912,"未知异常")).toString()); + heartbeatLogRepository.save(heartbeatLog); + update(heartbeat.getDeviceId(),"0"); + return CommonResult.error(new ErrorCode(999912,"未知异常")); + } + update(heartbeat.getDeviceId(),"1"); + return CommonResult.success("收到"); + } + + + @Override + public CommonResult doPassengerInformation(@RequestBody PassengerInformation passengerInformation){ + System.out.println(passengerInformation); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + passengerInformation.setCommitTime(simpleDateFormat.format(System.currentTimeMillis())); + passengerInformationRepository.save(passengerInformation); + return CommonResult.success("true"); + } +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/login/LoginService.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/login/LoginService.java new file mode 100644 index 000000000..d49a24613 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/login/LoginService.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.ticket.service.login; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.controller.admin.login.domain.LoginBody; +import cn.iocoder.yudao.module.ticket.controller.admin.login.domain.LoginResult; + +public interface LoginService { + CommonResult login(LoginBody loginBody); +} diff --git a/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/login/LoginServiceImpl.java b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/login/LoginServiceImpl.java new file mode 100644 index 000000000..ef63237d2 --- /dev/null +++ b/ludu-module-ticketing/ludu-module-ticketing-biz/src/main/java/cn/iocoder/yudao/module/ticket/service/login/LoginServiceImpl.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.module.ticket.service.login; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.ticket.api.assetLoginLog.vo.AssetLoginLogVO; +import cn.iocoder.yudao.module.ticket.api.heartbeat.vo.AssetVO; +import cn.iocoder.yudao.module.ticket.controller.admin.login.domain.LoginBody; +import cn.iocoder.yudao.module.ticket.controller.admin.login.domain.LoginResult; +import cn.iocoder.yudao.module.ticket.dal.dataobject.asset.AssetDO; +import cn.iocoder.yudao.module.ticket.dal.mongodb.login.LoginRepository; +import cn.iocoder.yudao.module.ticket.dal.mongodb.login.SysuserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.annotation.Validated; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +@Service +@Validated +public class LoginServiceImpl implements LoginService { + @Autowired + private SysuserRepository sysuserRepository; + // @Autowired +// private JwtUtils jwtUtils; + @Autowired + private LoginRepository loginRepository; + + @Override + public CommonResult login(LoginBody loginBody) { + System.out.println(loginBody); + AssetLoginLogVO loginLog = new AssetLoginLogVO(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + loginLog.setLoginTime(dateFormat.format(System.currentTimeMillis())); + loginLog.setDeviceId(loginBody.getDeviceId()); + loginLog.setIdentificationCode(loginBody.getIdentificationCode()); + loginLog.setLoginParameter(loginBody.toString()); + if (ObjectUtils.isEmpty(loginBody.getDeviceId()) || ObjectUtils.isEmpty(loginBody.getIdentificationCode())) { + loginLog.setStatus("0"); + loginLog.setLoginRemark("登录失败,设备id、识别码为空"); + loginRepository.save(loginLog); + return CommonResult.error(new ErrorCode(999900,"设备id、识别码不能为空")); + } + AssetVO sysuser = sysuserRepository.findSysuserByDataId(loginBody.getDeviceId()); + if (sysuser != null){ + loginLog.setAssetType(sysuser.getAssettype()); + loginLog.setAssetName(sysuser.getAssetname()); + } + if(sysuser==null || !sysuser.getDataId().equals(loginBody.getDeviceId())){ + loginLog.setStatus("0"); + loginLog.setLoginRemark("登录失败,设备不存在"); + loginRepository.save(loginLog); + return CommonResult.error(new ErrorCode(999901,"设备不存在!")); + } + if(!loginBody.getIdentificationCode().equals("zy_alike")){ + loginLog.setStatus("0"); + loginLog.setLoginRemark("登录失败,识别码错误"); + loginRepository.save(loginLog); + return CommonResult.error(new ErrorCode(999902,"识别码错误!")); + } + Map map = new HashMap<>(); + map.put("deviceId", sysuser.getDataId()); + map.put("identificationCode", loginBody.getIdentificationCode()); + //返回登录成功信息 + LoginResult result = new LoginResult(); +// result.setUserId(sysuser.getId()); +// result.setUsername(sysuser.getUsername()); +// result.setToken(JWTUtil.sign(map)); + loginLog.setStatus("1"); + loginLog.setLoginRemark("登录成功"); + loginRepository.save(loginLog); + return CommonResult.success(result); + } +}