diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index e8f2dd084..415012c9e 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -604,9 +604,10 @@ CREATE TABLE hard_xfj_log headers varchar(2048) COMMENT 'headers', res varchar(2048) COMMENT 'res', req varchar(2048) COMMENT 'req', + error varchar(2048) COMMENT 'error', start_time datetime DEFAULT NULL COMMENT '开始时间', end_time datetime DEFAULT NULL COMMENT '结束时间', - cost int DEFAULT NULL COMMENT '耗时(秒)', + cost int DEFAULT NULL COMMENT '耗时(毫秒)', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/xfj/HardXfjLogEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/xfj/HardXfjLogEntity.java index a0fbd1d4a..0b135b336 100755 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/xfj/HardXfjLogEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/xfj/HardXfjLogEntity.java @@ -62,6 +62,12 @@ public class HardXfjLogEntity extends Model { @Schema(description = "req") private String req; + /** + * error + */ + @Schema(description = "error") + private String error; + /** * 开始时间 */ @@ -75,10 +81,10 @@ public class HardXfjLogEntity extends Model { private LocalDateTime endTime; /** - * 耗时(秒) + * 耗时(毫秒) */ - @Schema(description = "耗时(秒)") - private Integer cost; + @Schema(description = "耗时(毫秒)") + private Long cost; /** * 创建人 diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjBaseVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjBaseVo.java index 2704d243f..7cb41fbce 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjBaseVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjBaseVo.java @@ -5,15 +5,21 @@ import lombok.Data; @Data public class XfjBaseVo { + static final Integer STATUS_SUCCESS = 1; + static final Integer STATUS_FAIL = 0; + + static final String DEFAULT_SUCCESS_MSG = "成功"; + static final String DEFAULT_FAIL_MSG = "服务端错误"; + /** * 1:成功 * 0:失败 */ - private String Status; + private Integer Status = STATUS_SUCCESS; /** * 错误消息(Status为0时屏幕显示此内容,最多不超过8个汉字) */ - private String Msg; + private String Msg = DEFAULT_SUCCESS_MSG; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java index 02a55a0b5..7a090134b 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java @@ -1,6 +1,7 @@ package com.bsd.pjcloud.hard.controller.xfj; import com.bsd.pjcloud.common.security.annotation.Inner; +import com.bsd.pjcloud.hard.api.vo.xfj.XfjServerTimeVo; import com.bsd.pjcloud.hard.service.HardXfjService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -28,7 +29,7 @@ public class HardXfjController { @Operation(summary = "获取服务器时间接口") @PostMapping("/v1/ServerTime") @Inner(value = false) - public Object serverTime(HttpEntity httpEntity, @RequestHeader Map headers) { + public XfjServerTimeVo serverTime(HttpEntity httpEntity, @RequestHeader Map headers) { return hardXfjService.serverTime(httpEntity.getBody(), headers); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java index 537fedd45..71aba6dcf 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java @@ -211,6 +211,20 @@ public class HardManagerServiceImpl extends ServiceImpl().eq(HardManagerEntity::getUniqueCode, uniqueCode)); + if (ObjectUtil.isEmpty(hard)) { + return null; + } + HardManagerVo vo = BeanUtils.toBean(hard, HardManagerVo.class); + MchManageVo mch = mchService.getById(hard.getMerchantId()).getData(); + if (ObjectUtil.isNotEmpty(mch)) { + vo.setMerchantDeptId(mch.getDeptId()); + } + return vo; + } + @Override public CurrentUserHardTypeInfoDto getCurrentUserHardTypeInfo(PjcloudUser user) { CurrentUserHardTypeInfoDto result = new CurrentUserHardTypeInfoDto(); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java index 921348da8..dbfe3a070 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java @@ -1,15 +1,24 @@ package com.bsd.pjcloud.hard.service.impl.xfj; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity; +import com.bsd.pjcloud.hard.api.entity.xfj.HardXfjLogEntity; +import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo; import com.bsd.pjcloud.hard.api.vo.xfj.*; import com.bsd.pjcloud.hard.service.HardManagerService; +import com.bsd.pjcloud.hard.service.HardXfjLogService; import com.bsd.pjcloud.hard.service.HardXfjService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.time.Duration; +import java.time.LocalDateTime; import java.util.LinkedHashMap; import java.util.Map; @@ -20,6 +29,7 @@ import java.util.Map; public class HardXfjServiceImpl implements HardXfjService { private final HardManagerService hardManagerService; + private final HardXfjLogService hardXfjLogService; /** * 检查设备并返回配置 @@ -30,12 +40,46 @@ public class HardXfjServiceImpl implements HardXfjService { transitionHeader.put(entry.getKey().toUpperCase(), entry.getValue()); } String deviceId = transitionHeader.get("DEVICE-ID"); - if(ObjectUtil.isEmpty(deviceId)){ + if (ObjectUtil.isEmpty(deviceId)) { throw new RuntimeException("|检查设备并返回配置|错误,deviceId不存在"); } - hardManagerService.getByHardId() + HardManagerVo hardManager = hardManagerService.getByUniqueCode(deviceId); + if (ObjectUtil.isEmpty(hardManager)) { + throw new RuntimeException("|检查设备并返回配置|错误,deviceId对应的设备不存在"); + } + if (ObjectUtil.notEqual(HardTypeEnum.YUN_XFJ.getType(), hardManager.getType())) { + throw new RuntimeException("|检查设备并返回配置|错误,设备类型错误"); + } // 验签 - return null; + return hardManager; + } + + /** + * 初始化日志 + */ + private HardXfjLogEntity initLogger(String body, Map headers, String title) { + Map transitionHeader = new LinkedHashMap<>(); + for (Map.Entry entry : headers.entrySet()) { + transitionHeader.put(entry.getKey().toUpperCase(), entry.getValue()); + } + + HardXfjLogEntity logger = new HardXfjLogEntity(); + logger.setTitle(title); + logger.setHardType(HardTypeEnum.YUN_XFJ.getType()); + logger.setReq(body); + logger.setHeaders(JSONUtil.toJsonStr(transitionHeader)); + logger.setStartTime(LocalDateTime.now()); + return logger; + } + + public void saveLogger(HardXfjLogEntity logger) { + LocalDateTime now = LocalDateTime.now(); + logger.setEndTime(now); + if (ObjectUtil.isNotEmpty(logger.getStartTime())) { + long durationSeconds = Duration.between(logger.getStartTime(), now).toMillis(); + logger.setCost(durationSeconds); + } + hardXfjLogService.save(logger); } /** @@ -43,12 +87,33 @@ public class HardXfjServiceImpl implements HardXfjService { */ @Override public XfjServerTimeVo serverTime(String body, Map headers) { - HardManagerEntity entity = checkSignAndReturnConfig(body, headers); + HardXfjLogEntity logger = initLogger(body, headers, "获取服务器时间接口"); try { + HardManagerEntity entity = checkSignAndReturnConfig(body, headers); + logger.setUniqueCode(entity.getUniqueCode()); + LocalDateTime now = LocalDateTime.now().plusDays(1); + String timeStr = LocalDateTimeUtil.format(now, DatePattern.PURE_DATETIME_PATTERN); + int dayOfWeek = now.getDayOfWeek().getValue(); + // 将星期日从 7 改为 0 + if (dayOfWeek == 7) { + dayOfWeek = 0; + } + timeStr += dayOfWeek; + + XfjServerTimeVo result = new XfjServerTimeVo(); + + result.setTime(timeStr); + result.setWLUptate(1); + result.setWLPage(0); + logger.setRes(JSONUtil.toJsonStr(result)); + return result; } catch (Exception e) { + logger.setError(e.getMessage()); e.printStackTrace(); log.error("|获取服务器时间接口|意外的错误error:{}", e.getMessage()); + } finally { + saveLogger(logger); } return null; }