Browse Source

Merge branch 'master' of http://git.zonelife.cn:3000/huangyang/national-motion-backend

zhangxin 5 days ago
parent
commit
d77c628e0a

+ 21 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/hikiot/HikiotConstant.java

@@ -0,0 +1,21 @@
+package org.jeecg.modules.hikiot;
+
+/**
+ * @Author SheepHy
+ * @Description 海康相关常量池
+ * @Date 16:00 2025/8/12
+ **/
+public interface HikiotConstant {
+    String APP_KEY = "appKey";
+    String APP_SECRET = "appSecret";
+    String APP_ACCESS_TOKEN = "appAccessToken";
+    String REFRESH_APP_TOKEN = "refreshAppToken";
+    /**APP KEY*/
+    String APP_KEY_VALUE = "1954824074366873616";
+    /**APP SECRET*/
+    String APP_SECRET_VALUE = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAK450rptZVPVc2cqJWZgf6wT0rTsmrIAXxZ+7J4ILS+cUFEMPpLlDbq5+F6KJB6p2cSI9QVBrAdr84dZC9FD2lYgFVy6SzafiesJsdCFbogocZB3L70TNKCwNj+TAXmb5m2APFy1hVJiV+VvPCnZTzXmrvG8+mFqKQLlG+eTeWY5AgMBAAECgYAFD8j/gY4gEWN469CKWONcrHbCqt0Trs8UaDuXm8U0TOZIdIKc4eq0MhL1LC5Adc7N1uzHalEFJi29EOk2+zGsopRpf9vm1ObqFougip5iMR369Rz3OUphOo/jPbjZIJ8DPPSxsfJbkWmYftBoWX5tN5ZAxVAUyMTyumD1ciPYAQJBAOLplU1yfqQ6/1+oJd3YwhJHDZaswSiAAwMS3gSl5qSGFvr6XO3RwNfzMcSmpam1ALBH72MqABb5hJGLz57YJZECQQDEj0OfwCe9OYsy8zN+2wr+eqK63/sTXSaxSmYuE6lbZB8hO7oL/zJg0zw3XsWLMguHrwc/4mJJRZyI2UKQbEIpAkB9zR6XV3jauFLIx8JmojvGQlpIRPK57268D4PDc+7RG/41mwRWXUna79uRuQpzcgQ1t0wC4FA4bJGQ18B9wjvhAkBbQ12VpeWNoVM1U+BcDR4crBo0hFySUBTwCmhJCo3+xg0CJDYs7c+ZT1rNJq64A4OA+051ZgpWlQCqNZ4HaoyJAkEA3sseLIbNfJuMYNhksIHsiqBd5pNMhJyz7uoNy007EQcG0fwkoBTT4V7pkczcE2Nd6scKZJjldfRxL3qEGKcESQ==";
+    /**获取访问凭证URL*/
+    String GET_ACCESS_TOKEN_URL = "https://open-api.hikiot.com/auth/exchangeAppToken";
+    /**刷新应用访问凭证URL*/
+    String REFRESH_ACCESS_TOKEN_URL = "https://open-api.hikiot.com/auth/refreshAppToken";
+}

+ 85 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/hikiot/HikiotTool.java

@@ -0,0 +1,85 @@
+package org.jeecg.modules.hikiot;
+
+import org.jeecg.common.exception.JeecgBootException;
+
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+import static com.alibaba.dashscope.utils.JsonUtils.gson;
+import static org.jeecg.modules.hikiot.HikiotConstant.*;
+
+public class HikiotTool {
+    private static final HttpClient httpClient = HttpClient.newBuilder()
+            .version(HttpClient.Version.HTTP_2)
+            .build();
+    /**
+     * 发送HTTPS POST请求
+     * @param url 请求地址
+     * @param jsonParam 请求参数(JSON格式)
+     * @return 响应结果
+     */
+    public static String sendPostRequest(String url, String jsonParam) {
+        try {
+            HttpRequest request = HttpRequest.newBuilder()
+                    .uri(URI.create(url))
+                    .header("Content-Type", "application/json; charset=UTF-8")
+                    .POST(HttpRequest.BodyPublishers.ofString(jsonParam, StandardCharsets.UTF_8))
+                    .build();
+
+            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
+            return response.body();
+        } catch (Exception e) {
+            throw new JeecgBootException("请求海康开放平台接口异常", e);
+        }
+    }
+    /**
+     * 发送HTTPS GET请求
+     * @param url 完整请求地址(包含查询参数)
+     * @return 响应结果
+     */
+    public static String sendGetRequest(String url) {
+        try {
+            HttpRequest request = HttpRequest.newBuilder()
+                    .uri(URI.create(url))
+                    .header("Accept", "application/json")
+                    .GET()
+                    .build();
+            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
+            return response.body();
+        } catch (Exception e) {
+            throw new JeecgBootException("请求海康开放平台接口异常", e);
+        }
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 获取应用访问凭证
+     * @Date 16:05 2025/8/12
+     **/
+    public static String getAppAccessToken() {
+        Map<String, String> map = new HashMap<>();
+        map.put(APP_KEY, APP_KEY_VALUE);
+        map.put(APP_SECRET, APP_SECRET_VALUE);
+        return HikiotTool.sendPostRequest(GET_ACCESS_TOKEN_URL, gson.toJson(map));
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 刷新应用访问凭证
+     * @Date 16:25 2025/8/12
+     **/
+    public static String refreshAppAccessToken(String appAccessToken, String refreshAppToken) {
+        Map<String, String> map = new HashMap<>();
+        map.put(APP_ACCESS_TOKEN, appAccessToken);
+        map.put(REFRESH_APP_TOKEN, refreshAppToken);
+        return HikiotTool.sendPostRequest(REFRESH_ACCESS_TOKEN_URL, gson.toJson(map));
+    }
+    public static void main(String[] args) {
+        System.out.println(HikiotTool.getAppAccessToken());
+    }
+}

+ 10 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/hikiot/IHikiot.java

@@ -0,0 +1,10 @@
+package org.jeecg.modules.hikiot;
+/**
+ * @Author SheepHy
+ * @Description 海康服务
+ * @Date 14:13 2025/8/12
+ * @Param
+ * @return
+ **/
+public interface IHikiot {
+}

+ 7 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/WebSearchHotController.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.system.app.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
@@ -9,7 +11,6 @@ import org.jeecg.modules.system.app.service.IAppSearchHotService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.List;
 
 @Tag(name="WEB热词相关接口")
 @RestController
@@ -28,8 +29,11 @@ public class WebSearchHotController {
      **/
     @GetMapping("/getHotSearch")
     @Operation(summary = "查询全部热词")
-    public Result<List<AppSearchHot>> getHotSearch(){
-        return Result.ok(webSearchHotService.getHotSearch());
+    public Result<IPage<AppSearchHot>> getHotSearch(@RequestParam(value = "name", required = false) String name,
+                                                    @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                                    @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
+        Page<AppSearchHot> page = new Page<>(pageNo, pageSize);
+        return Result.ok(webSearchHotService.getHotSearch(page,name));
     }
 
     /**

+ 8 - 6
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSearchHot.java

@@ -33,6 +33,8 @@ public class AppSearchHot implements Serializable {
     private String id;
     @Schema(description = "搜索次数")
     private int searchCount;
+    @Schema(description = "排序")
+    private int sort;
     @Schema(description = "搜索内容")
     private String searchContent;
     @Schema(description = "是否启用 0、未启用 1、启用")
@@ -44,15 +46,15 @@ public class AppSearchHot implements Serializable {
     @Schema(description = "最后一次搜索用户ID")
     private String lastUser;
     /**开始时间*/
-    @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
     @Schema(description = "开始时间")
     private Date startTime;
     /**结束时间*/
-    @Excel(name = "结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "结束时间", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
     @Schema(description = "结束时间")
     private Date endTime;
 

+ 3 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSearchHotService.java

@@ -1,10 +1,10 @@
 package org.jeecg.modules.system.app.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.system.app.entity.AppSearchHot;
 
-import java.util.List;
-
 public interface IAppSearchHotService extends IService<AppSearchHot> {
     /**
      * @Author SheepHy
@@ -13,7 +13,7 @@ public interface IAppSearchHotService extends IService<AppSearchHot> {
      * @Param
      * @return
      **/
-    List<AppSearchHot> getHotSearch();
+    IPage<AppSearchHot> getHotSearch(Page<AppSearchHot> page,String name);
 
     /**
      * @Author SheepHy

+ 10 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSearchHotServiceImpl.java

@@ -1,5 +1,8 @@
 package org.jeecg.modules.system.app.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.modules.system.app.entity.AppSearchHot;
 import org.jeecg.modules.system.app.mapper.AppSearchHotMapper;
@@ -7,15 +10,19 @@ import org.jeecg.modules.system.app.service.IAppSearchHotService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.List;
 
 @Service
 public class AppSearchHotServiceImpl extends ServiceImpl<AppSearchHotMapper, AppSearchHot> implements IAppSearchHotService {
     @Resource
     private AppSearchHotMapper appSearchHotMapper;
     @Override
-    public List<AppSearchHot> getHotSearch() {
-        return appSearchHotMapper.selectList(null);
+    public IPage<AppSearchHot> getHotSearch(Page<AppSearchHot> page, String name) {
+        if(null != name && !"".equals(name)){
+            return appSearchHotMapper.selectPage(page, Wrappers.<AppSearchHot>lambdaQuery()
+                    .like(AppSearchHot::getSearchContent, name));
+        }else {
+            return appSearchHotMapper.selectPage(page,null);
+        }
     }
 
     @Override