feat:消费机-获取服务器时间接口

This commit is contained in:
dzc committed 2026-02-12 15:08:53 +08:00
1 parent 5ed9ac14f9
commit 8cc16c5873
6 files changed
+104 -11

No files matched your search

+2 -1
View File
@@ -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 '修改人',
@@ -62,6 +62,12 @@ public class HardXfjLogEntity extends Model<HardXfjLogEntity> {
@Schema(description = "req")
private String req;
/**
* error
*/
@Schema(description = "error")
private String error;
/**
* 开始时间
*/
@@ -75,10 +81,10 @@ public class HardXfjLogEntity extends Model<HardXfjLogEntity> {
private LocalDateTime endTime;
/**
* 耗时(秒)
* 耗时(毫秒)
*/
@Schema(description = "耗时(秒)")
private Integer cost;
@Schema(description = "耗时(毫秒)")
private Long cost;
/**
* 创建人
@@ -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;
}
@@ -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<String> httpEntity, @RequestHeader Map<String, String> headers) {
public XfjServerTimeVo serverTime(HttpEntity<String> httpEntity, @RequestHeader Map<String, String> headers) {
return hardXfjService.serverTime(httpEntity.getBody(), headers);
}
@@ -211,6 +211,20 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
return vo;
}
@Override
public HardManagerVo getByUniqueCode(String uniqueCode) {
HardManagerEntity hard = baseMapper.selectOne(new LambdaQueryWrapper<HardManagerEntity>().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();
@@ -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<String, String> headers, String title) {
Map<String, String> transitionHeader = new LinkedHashMap<>();
for (Map.Entry<String, String> 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<String, String> 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;
}