TRX 1 年之前
父节点
当前提交
61d917a34e
共有 26 个文件被更改,包括 690 次插入17 次删除
  1. 1 1
      src/main/java/com/zswl/dataservice/controller/hardware/OperationLogsController.java
  2. 75 0
      src/main/java/com/zswl/dataservice/controller/openApi/OpenApiSignInfoController.java
  3. 39 0
      src/main/java/com/zswl/dataservice/controller/openApi/SystemTimeController.java
  4. 24 0
      src/main/java/com/zswl/dataservice/dao/openApi/OpenApiSignInfoDao.java
  5. 17 0
      src/main/java/com/zswl/dataservice/dao/openApi/extend/OpenApiSignInfoDaoExtend.java
  6. 70 0
      src/main/java/com/zswl/dataservice/dao/openApi/impl/OpenApiSignInfoDaoImpl.java
  7. 3 0
      src/main/java/com/zswl/dataservice/domain/mqtt/OperationLogs.java
  8. 37 0
      src/main/java/com/zswl/dataservice/domain/openApi/OpenApiRequestLog.java
  9. 35 0
      src/main/java/com/zswl/dataservice/domain/openApi/OpenApiSignInfo.java
  10. 27 0
      src/main/java/com/zswl/dataservice/model/openApi/SuperOpenApiParam.java
  11. 20 0
      src/main/java/com/zswl/dataservice/model/openApi/SystemTimeParam.java
  12. 39 0
      src/main/java/com/zswl/dataservice/model/openApi/sign/OpenApiSignInfoModel.java
  13. 30 0
      src/main/java/com/zswl/dataservice/model/openApi/sign/OpenApiSignInfoParam.java
  14. 29 0
      src/main/java/com/zswl/dataservice/model/openApi/sign/OpenApiSignInfoSearch.java
  15. 28 0
      src/main/java/com/zswl/dataservice/model/openApi/sign/SignStateParam.java
  16. 1 1
      src/main/java/com/zswl/dataservice/service/artemis/OperationMessageService.java
  17. 7 3
      src/main/java/com/zswl/dataservice/service/base/SuperService.java
  18. 1 0
      src/main/java/com/zswl/dataservice/service/mqtt/DeviceInfoService.java
  19. 1 3
      src/main/java/com/zswl/dataservice/service/mqtt/GateWayInfoService.java
  20. 154 0
      src/main/java/com/zswl/dataservice/service/openApi/OpenApiSignInfoService.java
  21. 28 0
      src/main/java/com/zswl/dataservice/service/openApi/SystemTimeService.java
  22. 1 1
      src/main/java/com/zswl/dataservice/service/sync/DeviceSyncFullCardService.java
  23. 17 5
      src/main/java/com/zswl/dataservice/service/user/OperationLogsService.java
  24. 3 2
      src/main/java/com/zswl/dataservice/type/AppState.java
  25. 1 1
      src/main/java/com/zswl/dataservice/utils/AppInfoUtil.java
  26. 2 0
      src/main/resources/application.yml

+ 1 - 1
src/main/java/com/zswl/dataservice/controller/hardware/OperationLogsController.java

@@ -2,7 +2,7 @@ package com.zswl.dataservice.controller.hardware;
 
 import com.zswl.dataservice.model.operLogs.OperationLogsModel;
 import com.zswl.dataservice.model.operLogs.OperationLogsSearchParam;
-import com.zswl.dataservice.service.mqtt.OperationLogsService;
+import com.zswl.dataservice.service.user.OperationLogsService;
 import com.zswl.dataservice.utils.result.ResultContent;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;

+ 75 - 0
src/main/java/com/zswl/dataservice/controller/openApi/OpenApiSignInfoController.java

@@ -0,0 +1,75 @@
+package com.zswl.dataservice.controller.openApi;
+
+import com.zswl.dataservice.model.openApi.sign.OpenApiSignInfoModel;
+import com.zswl.dataservice.model.openApi.sign.OpenApiSignInfoParam;
+import com.zswl.dataservice.model.openApi.sign.OpenApiSignInfoSearch;
+import com.zswl.dataservice.model.openApi.sign.SignStateParam;
+import com.zswl.dataservice.service.openApi.OpenApiSignInfoService;
+import com.zswl.dataservice.utils.result.ResultContent;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.validation.annotation.Validated;
+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;
+
+/**
+ * OpenApiSignInfo
+ *
+ * @author TRX
+ * @date 2024/3/21
+ */
+@RequestMapping("openApiSignInfo")
+@RestController
+@Validated
+@Tag(name = "openAPI认证信息管理")
+public class OpenApiSignInfoController {
+
+    @Autowired
+    OpenApiSignInfoService openApiSignInfoService;
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "添加-编辑数据")
+    @RequestMapping(value = "addOrUpdate", method = {RequestMethod.POST})
+    public ResultContent addOrUpdate(@RequestBody OpenApiSignInfoParam param) {
+        return openApiSignInfoService.addOpenApiSignInfo(param);
+    }
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "数据列表-分页查询")
+    @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
+    public ResultContent<Page<OpenApiSignInfoModel>> page(
+            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+            @Parameter(required = false) OpenApiSignInfoSearch param) {
+        return openApiSignInfoService.page(pageable, param);
+    }
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "删除数据")
+    @RequestMapping(value = "deleteOpenApiSignInfo", method = {RequestMethod.GET})
+    public ResultContent deleteOpenApiSignInfo(@Parameter(name = "id", description = "数据id") String id) {
+        return openApiSignInfoService.deleteOpenApiSignInfo(id);
+    }
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "查询详情")
+    @RequestMapping(value = "getOpenApiSignInfo", method = {RequestMethod.GET})
+    public ResultContent<OpenApiSignInfoModel> getOpenApiSignInfo(@Parameter(name = "id", description = "数据id") String id) {
+        return openApiSignInfoService.getOpenApiSignInfo(id);
+    }
+
+    @Parameter(in = ParameterIn.HEADER, name = "accessToken", required = false, description = "accessToken")
+    @Operation(summary = "改变状态")
+    @RequestMapping(value = "changeState", method = {RequestMethod.POST})
+    public ResultContent changeState(@RequestBody SignStateParam param) {
+        return openApiSignInfoService.changeState(param);
+    }
+
+}

+ 39 - 0
src/main/java/com/zswl/dataservice/controller/openApi/SystemTimeController.java

@@ -0,0 +1,39 @@
+package com.zswl.dataservice.controller.openApi;
+
+import com.github.microservice.models.hxz.ServerTimeModel;
+import com.github.microservice.models.hxz.ServerTimeResult;
+import com.zswl.dataservice.model.openApi.SystemTimeParam;
+import com.zswl.dataservice.service.openApi.SystemTimeService;
+import com.zswl.dataservice.utils.result.ResultContent;
+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;
+
+/**
+ * 系统时间服务
+ *
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Slf4j
+@RestController
+@RequestMapping("/v1/openApi/systemTime")
+@Tag(name = "openApi-系统时间")
+public class SystemTimeController {
+
+    @Autowired
+    SystemTimeService systemTimeService;
+
+    @Operation(summary = "获取服务器时间接口")
+    @PostMapping(value = "serverTime", consumes = MediaType.APPLICATION_JSON_VALUE)
+    public ResultContent serverTime(@RequestBody SystemTimeParam param) {
+        return systemTimeService.serverTime(param);
+    }
+
+}

+ 24 - 0
src/main/java/com/zswl/dataservice/dao/openApi/OpenApiSignInfoDao.java

@@ -0,0 +1,24 @@
+package com.zswl.dataservice.dao.openApi;
+
+import com.zswl.dataservice.dao.MongoDao;
+import com.zswl.dataservice.dao.iot.extend.IotMainDaoExtend;
+import com.zswl.dataservice.dao.openApi.extend.OpenApiSignInfoDaoExtend;
+import com.zswl.dataservice.domain.iot.IotMain;
+import com.zswl.dataservice.domain.iot.IotTemplate;
+import com.zswl.dataservice.domain.openApi.OpenApiSignInfo;
+import com.zswl.dataservice.type.FunctionType;
+import com.zswl.dataservice.type.IotDataType;
+
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface OpenApiSignInfoDao extends MongoDao<OpenApiSignInfo>, OpenApiSignInfoDaoExtend {
+
+    OpenApiSignInfo findTopById(String id);
+
+    OpenApiSignInfo findTopByName(String name);
+
+}

+ 17 - 0
src/main/java/com/zswl/dataservice/dao/openApi/extend/OpenApiSignInfoDaoExtend.java

@@ -0,0 +1,17 @@
+package com.zswl.dataservice.dao.openApi.extend;
+
+import com.zswl.dataservice.domain.iot.IotMain;
+import com.zswl.dataservice.domain.openApi.OpenApiSignInfo;
+import com.zswl.dataservice.model.iot.IotMainSearch;
+import com.zswl.dataservice.model.openApi.sign.OpenApiSignInfoSearch;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface OpenApiSignInfoDaoExtend {
+    Page<OpenApiSignInfo> page(Pageable pageable, OpenApiSignInfoSearch param);
+}

+ 70 - 0
src/main/java/com/zswl/dataservice/dao/openApi/impl/OpenApiSignInfoDaoImpl.java

@@ -0,0 +1,70 @@
+package com.zswl.dataservice.dao.openApi.impl;
+
+import com.zswl.dataservice.dao.base.BaseImpl;
+import com.zswl.dataservice.dao.iot.extend.IotMainDaoExtend;
+import com.zswl.dataservice.dao.openApi.extend.OpenApiSignInfoDaoExtend;
+import com.zswl.dataservice.domain.iot.IotMain;
+import com.zswl.dataservice.domain.iot.IotTemplate;
+import com.zswl.dataservice.domain.openApi.OpenApiSignInfo;
+import com.zswl.dataservice.helper.DBHelper;
+import com.zswl.dataservice.model.iot.IotMainSearch;
+import com.zswl.dataservice.model.openApi.sign.OpenApiSignInfoSearch;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+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.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/4/12
+ * @Version: 1.0
+ */
+public class OpenApiSignInfoDaoImpl extends BaseImpl implements OpenApiSignInfoDaoExtend {
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Override
+    public Page<OpenApiSignInfo> page(Pageable pageable, OpenApiSignInfoSearch param) {
+        Criteria criteria = new Criteria();
+
+        if (param.getAppState() != null) {
+            criteria.and("appState").is(param.getAppState());
+        }
+
+        // 模糊搜索
+        List<Criteria> criterias = new ArrayList<>();
+        if (StringUtils.isNotEmpty(param.getName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getAppId() + ".*$");
+            criterias.add(Criteria.where("appId").is(pattern));
+        }
+
+        if (StringUtils.isNotEmpty(param.getName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getName() + ".*$");
+            criterias.add(Criteria.where("name").is(pattern));
+        }
+        if (StringUtils.isNotEmpty(param.getAppKey())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getAppKey() + ".*$");
+            criterias.add(Criteria.where("appKey").is(pattern));
+        }
+        if (!CollectionUtils.isEmpty(criterias)) {
+            criteria.andOperator(criterias.toArray(new Criteria[]{}));
+        }
+
+        criteria.and("isDelete").is(Boolean.FALSE);
+        Sort sort = buildSort(param);
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, OpenApiSignInfo.class);
+    }
+
+}

+ 3 - 0
src/main/java/com/zswl/dataservice/domain/mqtt/OperationLogs.java

@@ -31,6 +31,9 @@ public class OperationLogs extends SuperEntity {
     @Schema(description = "浏览器")
     private String ua;
 
+    @Schema(description = "请求地址")
+    private String url;
+
     @Schema(description = "日志操作端类型")
     private LoginType loginType;
 

+ 37 - 0
src/main/java/com/zswl/dataservice/domain/openApi/OpenApiRequestLog.java

@@ -0,0 +1,37 @@
+package com.zswl.dataservice.domain.openApi;
+
+import com.zswl.dataservice.domain.base.SuperEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 访问日志
+ *
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class OpenApiRequestLog extends SuperEntity {
+
+    @Schema(description = "appId")
+    private String appId;
+
+    @Schema(description = "请求时间")
+    private Long requestTime;
+
+    @Schema(description = "请求时间,可阅读")
+    private String requestTimeStr;
+
+    @Schema(description = "请求参数")
+    private Object requestBody;
+
+    @Schema(description = "响应参数")
+    private Object responseBody;
+
+}

+ 35 - 0
src/main/java/com/zswl/dataservice/domain/openApi/OpenApiSignInfo.java

@@ -0,0 +1,35 @@
+package com.zswl.dataservice.domain.openApi;
+
+import com.zswl.dataservice.domain.base.SuperEntity;
+import com.zswl.dataservice.type.AppState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 用户认证信息
+ *
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Data
+@Document
+@NoArgsConstructor
+@AllArgsConstructor
+public class OpenApiSignInfo extends SuperEntity {
+
+    @Schema(description = "取个名称")
+    private String name;
+
+    @Schema(description = "appId")
+    private String appId;
+
+    @Schema(description = "appKey")
+    private String appKey;
+
+    @Schema(description = "数据状态,是否可用")
+    private AppState appState;
+
+}

+ 27 - 0
src/main/java/com/zswl/dataservice/model/openApi/SuperOpenApiParam.java

@@ -0,0 +1,27 @@
+package com.zswl.dataservice.model.openApi;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SuperOpenApiParam {
+
+    @Schema(description = "报文请求时间 格式yyyy-MM-dd HH:mm:ss")
+    @NotEmpty(message = "requestTimestamp 不能为空")
+    private String requestTimestamp;
+
+    @Schema(description = "appId")
+    @NotEmpty(message = "appId不能为空")
+    private String appId;
+
+}

+ 20 - 0
src/main/java/com/zswl/dataservice/model/openApi/SystemTimeParam.java

@@ -0,0 +1,20 @@
+package com.zswl.dataservice.model.openApi;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SystemTimeParam extends SuperOpenApiParam {
+
+    @Schema(description = "消息ID, 原路返回")
+    private String msgId;
+
+}

+ 39 - 0
src/main/java/com/zswl/dataservice/model/openApi/sign/OpenApiSignInfoModel.java

@@ -0,0 +1,39 @@
+package com.zswl.dataservice.model.openApi.sign;
+
+import com.zswl.dataservice.model.baseParam.SuperModel;
+import com.zswl.dataservice.type.AppState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OpenApiSignInfoModel extends SuperModel {
+    @Schema(description = "取个名称")
+    private String name;
+
+    @Schema(description = "appId")
+    private String appId;
+
+    @Schema(description = "appKey")
+    private String appKey;
+
+    @Schema(description = "数据状态,是否可用")
+    private AppState appState;
+
+    private String appStateStr;
+
+    public String getAppStateStr() {
+        if (appState != null) {
+            return appState.getRemark();
+        }
+        return "";
+    }
+
+}

+ 30 - 0
src/main/java/com/zswl/dataservice/model/openApi/sign/OpenApiSignInfoParam.java

@@ -0,0 +1,30 @@
+package com.zswl.dataservice.model.openApi.sign;
+
+import com.zswl.dataservice.domain.base.SuperEntity;
+import com.zswl.dataservice.model.baseParam.SuperParam;
+import com.zswl.dataservice.type.AppState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OpenApiSignInfoParam {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "取个名称")
+    @NotEmpty(message = "name不能为空")
+    private String name;
+
+    @Schema(description = "数据状态,是否可用")
+    private AppState appState = AppState.Enable;
+}

+ 29 - 0
src/main/java/com/zswl/dataservice/model/openApi/sign/OpenApiSignInfoSearch.java

@@ -0,0 +1,29 @@
+package com.zswl.dataservice.model.openApi.sign;
+
+import com.zswl.dataservice.model.baseParam.SuperSearchParam;
+import com.zswl.dataservice.type.AppState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OpenApiSignInfoSearch extends SuperSearchParam {
+    @Schema(description = "取个名称")
+    private String name;
+
+    @Schema(description = "appId")
+    private String appId;
+
+    @Schema(description = "appKey")
+    private String appKey;
+
+    @Schema(description = "数据状态,是否可用")
+    private AppState appState;
+}

+ 28 - 0
src/main/java/com/zswl/dataservice/model/openApi/sign/SignStateParam.java

@@ -0,0 +1,28 @@
+package com.zswl.dataservice.model.openApi.sign;
+
+import com.zswl.dataservice.type.AppState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SignStateParam {
+
+    @Schema(description = "数据ID")
+    @NotEmpty(message = "id不能为空")
+    private String id;
+
+    @NotEmpty(message = "appState不能为空")
+    @Schema(description = "状态")
+    private AppState appState;
+
+}

+ 1 - 1
src/main/java/com/zswl/dataservice/service/artemis/OperationMessageService.java

@@ -228,7 +228,7 @@ public class OperationMessageService {
                 jsonObject.put("event", event);
             }
             // 是否是测试
-            boolean isTest = false;
+            boolean isTest = true;
             // ping不执行
             if (isTest && event.equals("ping")) {
                 return;

+ 7 - 3
src/main/java/com/zswl/dataservice/service/base/SuperService.java

@@ -35,9 +35,13 @@ public abstract class SuperService {
      * @return
      */
     public User getCrrentUser() {
-        if (UserContext.currentUser() != null) {
-            String uid = UserContext.currentUser().getId();
-            return userDao.findTopById(uid);
+        try {
+            if (UserContext.currentUser() != null) {
+                String uid = UserContext.currentUser().getId();
+                return userDao.findTopById(uid);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
         return null;
     }

+ 1 - 0
src/main/java/com/zswl/dataservice/service/mqtt/DeviceInfoService.java

@@ -11,6 +11,7 @@ import com.zswl.dataservice.model.iot.IotMainModel;
 import com.zswl.dataservice.model.mqtt.*;
 import com.zswl.dataservice.service.iot.IotServiceImpl;
 import com.zswl.dataservice.service.sync.DeviceSyncFullCardService;
+import com.zswl.dataservice.service.user.OperationLogsService;
 import com.zswl.dataservice.type.FunctionType;
 import com.zswl.dataservice.utils.bean.BeanUtils;
 import com.zswl.dataservice.utils.mqtt.type.LogsLevel;

+ 1 - 3
src/main/java/com/zswl/dataservice/service/mqtt/GateWayInfoService.java

@@ -5,7 +5,7 @@ import com.zswl.dataservice.domain.mqtt.*;
 import com.zswl.dataservice.model.mqtt.*;
 import com.zswl.dataservice.service.base.SuperService;
 import com.zswl.dataservice.service.sync.DeviceSyncFullCardService;
-import com.zswl.dataservice.type.DeviceType;
+import com.zswl.dataservice.service.user.OperationLogsService;
 import com.zswl.dataservice.utils.DateUtils;
 import com.zswl.dataservice.utils.bean.BeanUtils;
 import com.zswl.dataservice.utils.mqtt.MqttTopicUtils;
@@ -31,9 +31,7 @@ import javax.management.remote.JMXConnector;
 import javax.management.remote.JMXConnectorFactory;
 import javax.management.remote.JMXServiceURL;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * @author TRX

+ 154 - 0
src/main/java/com/zswl/dataservice/service/openApi/OpenApiSignInfoService.java

@@ -0,0 +1,154 @@
+package com.zswl.dataservice.service.openApi;
+
+import com.zswl.dataservice.dao.openApi.OpenApiSignInfoDao;
+import com.zswl.dataservice.dataConfig.ResultMessage;
+import com.zswl.dataservice.domain.openApi.OpenApiSignInfo;
+import com.zswl.dataservice.model.openApi.sign.OpenApiSignInfoModel;
+import com.zswl.dataservice.model.openApi.sign.OpenApiSignInfoParam;
+import com.zswl.dataservice.model.openApi.sign.OpenApiSignInfoSearch;
+import com.zswl.dataservice.model.openApi.sign.SignStateParam;
+import com.zswl.dataservice.service.base.SuperService;
+import com.zswl.dataservice.service.user.OperationLogsService;
+import com.zswl.dataservice.type.AppState;
+import com.zswl.dataservice.utils.AppInfoUtil;
+import com.zswl.dataservice.utils.SecurityUtil;
+import com.zswl.dataservice.utils.bean.BeanUtils;
+import com.zswl.dataservice.utils.mqtt.type.CommonState;
+import com.zswl.dataservice.utils.mqtt.type.LogsLevel;
+import com.zswl.dataservice.utils.page.PageEntityUtil;
+import com.zswl.dataservice.utils.result.ResultContent;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * openAPI 认证信息维护
+ *
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Slf4j
+@Service
+public class OpenApiSignInfoService extends SuperService {
+
+    @Autowired
+    OpenApiSignInfoDao openApiSignInfoDao;
+
+    @Autowired
+    OperationLogsService operationLogsService;
+
+    /**
+     * 添加认证
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent<OpenApiSignInfoModel> addOpenApiSignInfo(OpenApiSignInfoParam param) {
+        if (StringUtils.isEmpty(param.getName())) {
+            return ResultContent.buildFail("name不能为空");
+        }
+        if (param.getAppState() == null) {
+            param.setAppState(AppState.Enable);
+        }
+        OpenApiSignInfo nameTemp = openApiSignInfoDao.findTopByName(param.getName());
+
+        OpenApiSignInfo openApiSignInfo = null;
+        if (StringUtils.isNotEmpty(param.getId())) {
+            openApiSignInfo = openApiSignInfoDao.findTopById(param.getId());
+            if (ObjectUtils.isEmpty(openApiSignInfo)) {
+                return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+            }
+            if (ObjectUtils.isNotEmpty(nameTemp) && !nameTemp.getId().equals(param.getId())) {
+                return ResultContent.buildFail(String.format(ResultMessage.NAME_EXIT, param.getName()));
+            }
+            BeanUtils.copyProperties(param, openApiSignInfo);
+        } else {
+            if (ObjectUtils.isNotEmpty(nameTemp)) {
+                return ResultContent.buildFail(String.format(ResultMessage.NAME_EXIT, param.getName()));
+            }
+            openApiSignInfo = new OpenApiSignInfo();
+            initEntity(openApiSignInfo);
+            BeanUtils.copyProperties(param, openApiSignInfo);
+
+            String appId = AppInfoUtil.generateRandomString();
+            String appKey = SecurityUtil.passWord(appId);
+            openApiSignInfo.setAppId(appId);
+            openApiSignInfo.setAppKey(appKey);
+
+            operationLogsService.addLogs(String.format("添加了openAPI数据:%s", appId), LogsLevel.Low);
+        }
+        openApiSignInfoDao.save(openApiSignInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 认证列表
+     *
+     * @param pageable
+     * @param param
+     * @return
+     */
+    public ResultContent<Page<OpenApiSignInfoModel>> page(Pageable pageable, OpenApiSignInfoSearch param) {
+        Page<OpenApiSignInfo> page = openApiSignInfoDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
+    }
+
+    /**
+     * 删除
+     *
+     * @param id
+     * @return
+     */
+    public ResultContent deleteOpenApiSignInfo(String id) {
+        OpenApiSignInfo openApiSignInfo = openApiSignInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(openApiSignInfo)) {
+            return ResultContent.buildFail(String.format("数据ID不存在: %s", id));
+        }
+        openApiSignInfoDao.delete(openApiSignInfo);
+        operationLogsService.addLogs(String.format("删除了openAPI数据:%s", openApiSignInfo.getAppId()), LogsLevel.Low, openApiSignInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent<OpenApiSignInfoModel> getOpenApiSignInfo(String id) {
+        OpenApiSignInfo OpenApiSignInfo = openApiSignInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(OpenApiSignInfo)) {
+            return ResultContent.buildFail(String.format("数据ID不存在: %s", id));
+        }
+        return ResultContent.buildSuccess(toModel(OpenApiSignInfo));
+    }
+
+    /**
+     * 改变状态
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent changeState(SignStateParam param) {
+        OpenApiSignInfo signInfo = openApiSignInfoDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(signInfo)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+        }
+        signInfo.setAppState(param.getAppState());
+        openApiSignInfoDao.save(signInfo);
+        operationLogsService.addLogs(String.format("改变了openAPI数据状态:%s %s", signInfo.getAppId(), signInfo.getAppState()), LogsLevel.Low, signInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    public OpenApiSignInfoModel toModel(OpenApiSignInfo entity) {
+        OpenApiSignInfoModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new OpenApiSignInfoModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+}

+ 28 - 0
src/main/java/com/zswl/dataservice/service/openApi/SystemTimeService.java

@@ -0,0 +1,28 @@
+package com.zswl.dataservice.service.openApi;
+
+import com.zswl.dataservice.model.openApi.SystemTimeParam;
+import com.zswl.dataservice.utils.result.ResultContent;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 服务器信息
+ *
+ * @author TRX
+ * @date 2024/9/11
+ */
+@Slf4j
+@Service
+public class SystemTimeService {
+
+    /**
+     * 得到系统用时间
+     *
+     * @return
+     */
+    public ResultContent serverTime(SystemTimeParam param) {
+
+        return ResultContent.buildSuccess(System.currentTimeMillis());
+    }
+
+}

+ 1 - 1
src/main/java/com/zswl/dataservice/service/sync/DeviceSyncFullCardService.java

@@ -18,7 +18,7 @@ import com.zswl.dataservice.httpRequest.ApiRequestService;
 import com.zswl.dataservice.httpRequest.apiConf.APIResponseModel;
 import com.zswl.dataservice.httpRequest.conf.FullCardAPIConfig;
 import com.zswl.dataservice.service.base.SuperService;
-import com.zswl.dataservice.service.mqtt.OperationLogsService;
+import com.zswl.dataservice.service.user.OperationLogsService;
 import com.zswl.dataservice.utils.bean.BeanUtils;
 import com.zswl.dataservice.utils.result.ResultContent;
 import lombok.SneakyThrows;

+ 17 - 5
src/main/java/com/zswl/dataservice/service/mqtt/OperationLogsService.java → src/main/java/com/zswl/dataservice/service/user/OperationLogsService.java

@@ -1,4 +1,4 @@
-package com.zswl.dataservice.service.mqtt;
+package com.zswl.dataservice.service.user;
 
 import com.zswl.dataservice.dao.UserDao;
 import com.zswl.dataservice.dao.mqtt.OperationLogsDao;
@@ -11,8 +11,10 @@ import com.zswl.dataservice.service.base.SuperService;
 import com.zswl.dataservice.utils.DateUtils;
 import com.zswl.dataservice.utils.bean.BeanUtils;
 import com.zswl.dataservice.utils.mqtt.type.LogsLevel;
+import com.zswl.dataservice.utils.net.IPUtil;
 import com.zswl.dataservice.utils.page.PageEntityUtil;
 import com.zswl.dataservice.utils.result.ResultContent;
+import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,15 +30,18 @@ import org.springframework.stereotype.Service;
 @Service
 public class OperationLogsService extends SuperService {
     @Autowired
-    OperationLogsDao operationLogsDao;
+    private OperationLogsDao operationLogsDao;
 
     @Autowired
-    UserDao userDao;
+    private UserDao userDao;
+
+    @Autowired
+    HttpServletRequest request;
 
     public ResultContent addLogs(String content, LogsLevel level) {
         OperationLogs logs = new OperationLogs();
         logs.setContent(content);
-        if(level == null) {
+        if (level == null) {
             level = LogsLevel.Low;
         }
         logs.setLevel(level);
@@ -47,6 +52,13 @@ public class OperationLogsService extends SuperService {
             logs.setLoginName(user.getLoginName());
         }
         logs.setTime(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
+        try {
+            logs.setUa(request.getHeader("User-Agent"));
+            logs.setIp(IPUtil.getRemoteIp(request));
+            logs.setUrl(request.getRequestURI());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         operationLogsDao.save(logs);
         return ResultContent.buildSuccess();
     }
@@ -54,7 +66,7 @@ public class OperationLogsService extends SuperService {
     public ResultContent addLogs(String content, LogsLevel level, SuperEntity entity) {
         OperationLogs logs = new OperationLogs();
         logs.setContent(content);
-        if(level == null) {
+        if (level == null) {
             level = LogsLevel.Low;
         }
         logs.setLevel(level);

+ 3 - 2
src/main/java/com/zswl/dataservice/type/AppState.java

@@ -3,10 +3,11 @@ package com.zswl.dataservice.type;
 import lombok.Getter;
 
 /**
+ *
  */
 public enum AppState {
-    Enable("用"),
-    Disable("不可用"),
+    Enable("用"),
+    Disable("用"),
     ;
 
     @Getter

+ 1 - 1
src/main/java/com/zswl/dataservice/utils/AppInfoUtil.java

@@ -12,6 +12,6 @@ public class AppInfoUtil {
      * @return
      */
     public static String generateRandomString() {
-        return RandomStringUtils.randomAlphabetic(16);
+        return RandomStringUtils.randomAlphabetic(18);
     }
 }

+ 2 - 0
src/main/resources/application.yml

@@ -28,6 +28,8 @@ authsettings:
       method: POST,GET
     - path: /**/free/**
       method: GET,POST
+    - path: /**/openApi/**
+      method: POST,GET,OPTIONS
     - path: /oauth/free/**
       method: POST,GET
     - path: /error