TRX 1 год назад
Родитель
Сommit
cf4c0fdd95

+ 24 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/ServerTimeModel.java

@@ -0,0 +1,24 @@
+package com.zhongshu.card.client.model.payment;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ServerTimeModel {
+
+    @Schema(description = "设备中的总白名单数")
+    @JsonProperty("WLSum")
+    private Integer wLSum;
+
+    @Schema(description = "自定义机号")
+    @JsonProperty("DeviceID")
+    private Integer deviceID;
+}

+ 23 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/ServerTimeResult.java

@@ -0,0 +1,23 @@
+package com.zhongshu.card.client.model.payment;
+
+import com.zhongshu.card.client.model.payment.base.HxzBaseResult;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ServerTimeResult extends HxzBaseResult {
+    @Schema(description = "服务器时间")
+    private String Time;
+    @Schema(description = "1:有白名单更新  0:无")
+    private int WLUptate;
+    @Schema(description = "起始页数(当WLUptate为1却WLPage为0时 清除所有白名单)")
+    private int WLPage;
+}

+ 41 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/payment/base/HxzBaseResult.java

@@ -0,0 +1,41 @@
+package com.zhongshu.card.client.model.payment.base;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class HxzBaseResult implements Serializable {
+    // 1:成功; 0:失败
+    private int Status = 0;
+    // 错误消息(Status为0时屏幕显示此内容,最多不超过8个汉字)
+    private String Msg;
+
+    public boolean isSuccess() {
+        return Status == 1;
+    }
+
+    // 设置失败
+    public void setFailed(String msg) {
+        Status = 0;
+        this.Msg = msg;
+    }
+    // 设置成功
+    public void setSuccess(String msg) {
+        Status = 1;
+        this.Msg = msg;
+    }
+    // 设置成功
+    public void setSuccess() {
+        Status = 1;
+    }
+
+}

+ 20 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/utils/type/payment/RequestType.java

@@ -0,0 +1,20 @@
+package com.zhongshu.card.client.utils.type.payment;
+
+import lombok.Getter;
+
+/**
+ * 请求类型
+ */
+public enum RequestType {
+    HXZ("云版消费机"),
+    IotCenter("物联网"),
+    Common("普通"),
+    ;
+
+    @Getter
+    private String remark;
+
+    RequestType(String remark) {
+        this.remark = remark;
+    }
+}

+ 36 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/payment/HxzController.java

@@ -0,0 +1,36 @@
+package com.zhongshu.card.server.core.controller.payment;
+
+
+import com.zhongshu.card.client.model.payment.ServerTimeModel;
+import com.zhongshu.card.client.model.payment.ServerTimeResult;
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.server.core.service.payment.HxzService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+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;
+
+@Slf4j
+@RestController
+@RequestMapping("hxz/v1")
+@Tag(name = "云版消费机接口-HXZ")
+public class HxzController {
+
+    @Autowired
+    private HxzService hxzService;
+
+    /**
+     * 系统时间
+     */
+    @Operation(summary = "获取服务器时间接口")
+    @PostMapping(value = "ServerTime", consumes = MediaType.APPLICATION_JSON_VALUE)
+    public ResultContent<ServerTimeResult> serverTime(@RequestBody ServerTimeModel serverTimeModel) {
+        return hxzService.serverTime(serverTimeModel);
+    }
+
+}

+ 14 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/payment/RequestInfoDao.java

@@ -0,0 +1,14 @@
+package com.zhongshu.card.server.core.dao.payment;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.domain.payment.RequestInfo;
+
+/**
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface RequestInfoDao extends MongoDao<RequestInfo> {
+
+    RequestInfo findTopById(String id);
+
+}

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/DeviceInfoDao.java

@@ -15,6 +15,8 @@ import java.util.List;
  */
 public interface DeviceInfoDao extends MongoDao<DeviceInfo>, DeviceInfoDaoExtend {
 
+    DeviceInfo findTopByDeviceId(String deviceId);
+
     DeviceInfo findTopById(String id);
 
     DeviceInfo findTopByCodeAndOid(String code, String oid);

+ 49 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/payment/RequestInfo.java

@@ -0,0 +1,49 @@
+package com.zhongshu.card.server.core.domain.payment;
+
+import com.zhongshu.card.client.utils.type.payment.RequestType;
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.util.Date;
+
+/**
+ * 请求数据
+ *
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class RequestInfo extends SuperMain {
+    @Schema(description = "请求参数")
+    private Object param;
+
+    @Schema(description = "校园参数")
+    private Object response;
+
+    @Schema(description = "时间")
+    private String timeStr;
+
+    @Schema(description = "是否成功")
+    private Boolean isSuccess = Boolean.TRUE;
+
+    @Schema(description = "请求分类")
+    private RequestType requestType = RequestType.Common;
+
+    @Schema(description = "错误信息")
+    private String msg = "";
+
+    @Schema(description = "请求耗时:毫秒")
+    private Long millis;
+
+    @Schema(description = "过期时间")
+    @Indexed(expireAfterSeconds = 0)
+    private Date TTL;
+}

+ 6 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/httpRequest/ApiRequestService.java

@@ -11,9 +11,11 @@ import com.zhongshu.card.server.core.httpRequest.apiConf.ApiConfParam;
 import com.zhongshu.card.server.core.httpRequest.conf.IotCenterAPIConfig;
 import com.zhongshu.card.server.core.httpRequest.conf.IotCenterConf;
 import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.service.payment.RequestInfoService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springdoc.webmvc.core.service.RequestService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -28,6 +30,9 @@ public class ApiRequestService extends SuperService {
     @Autowired
     IotCenterConf iotCenterConf;
 
+    @Autowired
+    RequestInfoService requestInfoService;
+
     /**
      * 发送请求
      *
@@ -66,6 +71,7 @@ public class ApiRequestService extends SuperService {
         }
         stopWatch.stop();
         responseModel.setMillis(stopWatch.getTotalTimeMillis());
+        requestInfoService.addIotRequestInfo(data, responseModel);
         return responseModel;
     }
 

+ 10 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/httpRequest/apiConf/APIResponseModel.java

@@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * @author TRX
@@ -15,14 +16,16 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @NoArgsConstructor
 public class APIResponseModel {
-    private Boolean failed;
-    private Boolean success;
+    private boolean failed;
+    private boolean success;
     private String msg;
     private String state;
     private String content;
 
     private ApiConfParam param;
 
+    private Object data;
+
     @Schema(description = "请求耗时:毫秒")
     private Long millis;
 
@@ -41,17 +44,20 @@ public class APIResponseModel {
     }
 
     public boolean isSuccess() {
+        if (StringUtils.isNotEmpty(this.state) && "Fail".equals(state)) {
+            return false;
+        }
         return success;
     }
 
     public boolean isFailed() {
-        return failed;
+        return !this.isSuccess();
     }
 
     public void setIsFailed() {
         this.success = Boolean.FALSE;
         this.failed = Boolean.TRUE;
-        this.state = "fail";
+        this.state = "Fail";
     }
 
     public void setIsFailed(String msg) {

+ 5 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/mqtt/MqttServiceImpl.java

@@ -71,11 +71,11 @@ public class MqttServiceImpl extends SuperService {
 //        str = str.replaceAll("\\t", "");
 //        str = str.replaceAll("\\n", "");
 
-//        APIResponseModel resultContent = apiRequestService.sendIotCenterAPI(
-//                IotCenterAPIConfig.sendMessage, param);
-//        if (resultContent.isSuccess()) {
-//
-//        }
+        APIResponseModel resultContent = apiRequestService.sendIotCenterAPI(
+                IotCenterAPIConfig.sendMessage, param);
+        if (resultContent.isSuccess()) {
+
+        }
 //        log.info("是否成功: {} {}", resultContent.isSuccess(), resultContent.getContent());
         return ResultContent.buildSuccess(msg);
     }

+ 51 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/HxzService.java

@@ -0,0 +1,51 @@
+package com.zhongshu.card.server.core.service.payment;
+
+import com.zhongshu.card.client.model.payment.ServerTimeModel;
+import com.zhongshu.card.client.model.payment.ServerTimeResult;
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.server.core.dao.school.DeviceInfoDao;
+import com.zhongshu.card.server.core.domain.school.DeviceInfo;
+import com.zhongshu.card.server.core.httpRequest.ApiRequestService;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Slf4j
+@Service
+public class HxzService extends SuperService {
+
+    @Autowired
+    DeviceInfoDao deviceInfoDao;
+
+    @Autowired
+    RequestInfoService requestInfoService;
+
+    @Autowired
+    ApiRequestService apiRequestService;
+
+    /**
+     * 得到系统时间
+     * @param param
+     * @return
+     */
+    public ResultContent<ServerTimeResult> serverTime(ServerTimeModel param) {
+        String deviceId = param.getDeviceID().toString();
+        ServerTimeResult result = new ServerTimeResult();
+        DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(deviceId);
+        if (ObjectUtils.isEmpty(deviceInfo)) {
+            result.setFailed("业务设备未注册");
+            requestInfoService.addRequestInfo(param, result);
+            return ResultContent.buildFail("业务设备未注册");
+        }else {
+            result.setSuccess();
+        }
+        requestInfoService.addRequestInfo(param, result);
+        return ResultContent.buildSuccess(result);
+    }
+}

+ 65 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/RequestInfoService.java

@@ -0,0 +1,65 @@
+package com.zhongshu.card.server.core.service.payment;
+
+import com.zhongshu.card.client.model.payment.base.HxzBaseResult;
+import com.zhongshu.card.client.utils.type.payment.RequestType;
+import com.zhongshu.card.server.core.dao.payment.RequestInfoDao;
+import com.zhongshu.card.server.core.domain.payment.RequestInfo;
+import com.zhongshu.card.server.core.httpRequest.apiConf.APIResponseModel;
+import com.zhongshu.card.server.core.util.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ * @author TRX
+ * @date 2024/6/25
+ */
+@Slf4j
+@Service
+public class RequestInfoService {
+
+    @Autowired
+    RequestInfoDao requestInfoDao;
+
+    /**
+     * 添加 HXZ 请求日志
+     *
+     * @param param
+     * @param response
+     * @return
+     */
+    public boolean addRequestInfo(Object param, HxzBaseResult response) {
+        RequestInfo requestInfo = new RequestInfo();
+        requestInfo.setParam(param);
+        requestInfo.setResponse(response);
+        requestInfo.setIsSuccess(response.isSuccess());
+        requestInfo.setMsg(response.getMsg());
+        requestInfo.setTimeStr(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
+        requestInfo.setRequestType(RequestType.HXZ);
+        requestInfo.setTTL(new Date(System.currentTimeMillis() + 30 * 24 * 60 * 60 * 1000L));
+        requestInfoDao.save(requestInfo);
+        return true;
+    }
+
+    /**
+     * 添加IOT平台访问日志
+     * @param param
+     * @param response
+     * @return
+     */
+    public boolean addIotRequestInfo(Object param, APIResponseModel response) {
+        RequestInfo requestInfo = new RequestInfo();
+        requestInfo.setParam(param);
+        requestInfo.setResponse(response);
+        requestInfo.setIsSuccess(response.isSuccess());
+        requestInfo.setMsg(response.getMsg());
+        requestInfo.setTimeStr(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
+        requestInfo.setRequestType(RequestType.IotCenter);
+        requestInfo.setTTL(new Date(System.currentTimeMillis() + 30 * 24 * 60 * 60 * 1000L));
+        requestInfo.setMillis(response.getMillis());
+        requestInfoDao.save(requestInfo);
+        return true;
+    }
+}