From 9b8159c0adc5de7a64bf39ae53c88474a9f98bdb Mon Sep 17 00:00:00 2001
From: xusd <hugeinfo123>
Date: Sat, 07 Sep 2024 14:10:42 +0800
Subject: [PATCH] AI相关接口

---
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/LawInfoDto.java        |   23 +++++
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java                 |  136 ++++++++++++++++++++++++++++++++++
 dyh-service/dyh-mediate/src/main/resources/config/application-test.yml                               |   11 +-
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDto.java       |   19 ++++
 dyh-service/dyh-mediate/src/main/resources/config/application.yml                                    |    2 
 dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDetailDto.java |   37 +++++++++
 dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml                                |    5 +
 7 files changed, 227 insertions(+), 6 deletions(-)

diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java
new file mode 100644
index 0000000..b321e2e
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java
@@ -0,0 +1,136 @@
+package cn.huge.module.ai.controller;
+
+import cn.huge.base.common.utils.HttpClientUtils;
+import cn.huge.base.common.utils.ReturnSucUtils;
+import cn.huge.module.ai.controller.domain.dto.CaseInfoDetailDto;
+import cn.huge.module.ai.controller.domain.dto.CaseInfoDto;
+import cn.huge.module.ai.controller.domain.dto.LawInfoDto;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.openfeign.support.FeignHttpClientProperties;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * AI请求调用/get-case获取案件列表(一般包含3个纠纷类和3个判决类),/get-law获取法条推荐列表;案件详情在根据案件列表的id及type调用/get-case-detail获取案件详情
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api/ai/case-law")
+public class AiController {
+
+    @Value("${ai.url}")
+    private String aiUrl;
+
+    @RequestMapping("/get-case")
+    public Object getCase(@RequestParam String caseDes, @RequestParam String caseClaim, @RequestParam String caseId) {
+        List<CaseInfoDto> caseInfoDtoList = new ArrayList<>();
+        Map<String, String> params = new HashMap<>();
+        params.put("caseDes", caseDes);//案件描述
+        params.put("caseClaim", caseClaim);//案件诉求
+        params.put("caseId", caseId);//案件id
+        params.put("topK", "3");
+        params.put("metricType", "IP");
+        String s = HttpClientUtils.httpPostForm(aiUrl + "/queryConciliationCase", params, new HashMap<>(), "utf-8");
+        JSONObject object = JSONObject.parseObject(s);
+        int code = object.getIntValue("code");
+        if (code == 200) {
+            JSONArray data = object.getJSONArray("data");
+            for (int i = 0; i < data.size(); i++) {
+                JSONObject jsonObject = data.getJSONObject(i);
+                CaseInfoDto caseInfoDto = new CaseInfoDto();
+                caseInfoDto.setCaseId(jsonObject.getString("id"));
+                caseInfoDto.setCaseName(jsonObject.getString("case_title"));
+                caseInfoDto.setCaseType(1);//表示调解类案件
+                caseInfoDtoList.add(caseInfoDto);
+            }
+        }
+        if (caseInfoDtoList.size() < 6) {
+            s = HttpClientUtils.httpPostForm(aiUrl + "/queryJudgmentCase", params, new HashMap<>(), "utf-8");
+            object = JSONObject.parseObject(s);
+            if (code == 200) {
+                JSONArray data = object.getJSONArray("data");
+                for (int i = 0; i < data.size(); i++) {
+                    JSONObject jsonObject = data.getJSONObject(i);
+                    CaseInfoDto caseInfoDto = new CaseInfoDto();
+                    caseInfoDto.setCaseId(jsonObject.getString("id"));
+                    caseInfoDto.setCaseName(jsonObject.getString("case_title"));
+                    caseInfoDto.setCaseType(2);//表示判决类案件
+                    caseInfoDtoList.add(caseInfoDto);
+                    if (caseInfoDtoList.size() == 3)
+                        break;
+                }
+            }
+        }
+        return ReturnSucUtils.getRepInfo("请求成功", caseInfoDtoList);
+    }
+
+
+    @RequestMapping("/get-law")
+    public Object getLaw(@RequestParam String caseDes, @RequestParam String caseClaim, @RequestParam String caseId) {
+        List<LawInfoDto> lawInfoDtos = new ArrayList<>();
+        Map<String, String> params = new HashMap<>();
+        params.put("caseDes", caseDes);//案件描述
+        params.put("caseClaim", caseClaim);//案件诉求
+        params.put("caseId", caseId);//案件id
+        String s = HttpClientUtils.httpPostForm(aiUrl + "/queryLawProvision", params, new HashMap<>(), "utf-8");
+        JSONObject object = JSONObject.parseObject(s);
+        int code = object.getIntValue("code");
+        if (code == 200) {
+            JSONArray data = object.getJSONArray("data");
+            for (int i = 0; i < data.size(); i++) {
+                JSONObject jsonObject = data.getJSONObject(i);
+                LawInfoDto lawInfoDto = new LawInfoDto();
+                lawInfoDto.setLawInfoId(jsonObject.getString("law_info_id"));
+                lawInfoDto.setLawIndex(jsonObject.getString("provision_index"));
+                lawInfoDto.setLawDesc(jsonObject.getString("provision_text"));
+                lawInfoDto.setLawTitle(jsonObject.getString("law_title"));
+                lawInfoDtos.add(lawInfoDto);
+            }
+        }
+        return ReturnSucUtils.getRepInfo("请求成功", lawInfoDtos);
+    }
+
+    @RequestMapping("/get-case-detail")
+    public Object getCaseLawDetail(@RequestParam String caseId, @RequestParam int type) {
+        Map<String, String> params = new HashMap<>();
+        params.put("caseId", caseId);
+        String s = "";
+        CaseInfoDetailDto caseInfoDetailDto = new CaseInfoDetailDto();
+        if (type == 1) {//表示纠纷类案件
+            s = HttpClientUtils.httpGet(aiUrl + "/getConciliationCaseText", new HashMap<>(), "utf-8");
+            JSONObject object = JSONObject.parseObject(s);
+            int code = object.getIntValue("code");
+            if (code == 1) {
+                JSONObject data = object.getJSONObject("data");
+                caseInfoDetailDto.setCaseId(data.getString("id"));
+                caseInfoDetailDto.setCaseTitle(data.getString("case_title"));
+                caseInfoDetailDto.setCaseDesc(data.getString("case_des"));
+                caseInfoDetailDto.setCaseClaim("case_claim");
+                caseInfoDetailDto.setAgreeContent(data.getString("agree_content"));
+            }
+        } else {
+            s = HttpClientUtils.httpGet(aiUrl + "/getJudgmentCaseText", new HashMap<>(), "utf-8");
+            JSONObject object = JSONObject.parseObject(s);
+            int code = object.getIntValue("code");
+            if (code == 1) {
+                JSONObject data = object.getJSONObject("data");
+                caseInfoDetailDto.setCaseId(data.getString("idcpws_case_info_id"));
+                caseInfoDetailDto.setCaseTitle(data.getString("basic_case_info"));
+                caseInfoDetailDto.setCaseDesc(data.getString("full_text"));
+                caseInfoDetailDto.setAgreeContent(data.getString("judgment"));
+                caseInfoDetailDto.setLegalBasis(data.getString("legal_basis"));
+            }
+        }
+        return ReturnSucUtils.getRepInfo("请求成功", caseInfoDetailDto);
+    }
+
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDetailDto.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDetailDto.java
new file mode 100644
index 0000000..8e06c08
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDetailDto.java
@@ -0,0 +1,37 @@
+package cn.huge.module.ai.controller.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class CaseInfoDetailDto {
+    /**
+     * 案件名称
+     */
+    private String caseTitle;
+    /**
+     * 案件描述
+     */
+    private String caseDesc;
+    /**
+     * 案件要求
+     */
+    private String caseClaim;
+    /**
+     * 案件类型
+     */
+    private String caseType;
+    /**
+     * 案件id
+     */
+    private String caseId;
+
+    /**
+     * 和解协议
+     */
+    private String agreeContent;
+
+    /**
+     * 立案依据
+     */
+    private String legalBasis;
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDto.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDto.java
new file mode 100644
index 0000000..4874838
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDto.java
@@ -0,0 +1,19 @@
+package cn.huge.module.ai.controller.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class CaseInfoDto {
+    /**
+     * 案件标题
+     */
+    private String caseName;
+    /**
+     * 案件类型  1 调解类   2 判决类
+     */
+    private int caseType;
+    /**
+     *  案件ID
+     */
+    private String caseId;
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/LawInfoDto.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/LawInfoDto.java
new file mode 100644
index 0000000..59b2023
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/LawInfoDto.java
@@ -0,0 +1,23 @@
+package cn.huge.module.ai.controller.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class LawInfoDto {
+    /**
+     * 法条id
+     */
+    private String lawInfoId;
+    /**
+     * 法条标题
+     */
+    private String lawTitle;
+    /**
+     * 法条描述
+     */
+    private String lawDesc;
+    /**
+     * 法条索引:第XXX条
+     */
+    private String lawIndex;
+}
diff --git a/dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml b/dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml
index a32c8a2..4ea8b45 100644
--- a/dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml
+++ b/dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml
@@ -93,4 +93,7 @@
     servlet:
       context-path: /
     ssl:
-      enabled: false
\ No newline at end of file
+      enabled: false
+
+ai:
+  url: http://183.2.142.21:9003
\ No newline at end of file
diff --git a/dyh-service/dyh-mediate/src/main/resources/config/application-test.yml b/dyh-service/dyh-mediate/src/main/resources/config/application-test.yml
index a32c8a2..f327225 100644
--- a/dyh-service/dyh-mediate/src/main/resources/config/application-test.yml
+++ b/dyh-service/dyh-mediate/src/main/resources/config/application-test.yml
@@ -1,7 +1,7 @@
 #server配置
 server:
   #端口
-  port: 9006
+  port: 9008
 
 #Spring配置
 spring:
@@ -10,9 +10,9 @@
     name: dyh-mediate
   #数据源配置
   datasource:
-    url: jdbc:dm://192.168.3.51:5236?schema=gzdyh_dev
+    url: jdbc:dm://183.2.142.46:9006?schema=gzdyh_dev
     username: SYSDBA
-    password: hugeinfo123
+    password: SYSDBA
     driver-class-name: dm.jdbc.driver.DmDriver
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
@@ -93,4 +93,7 @@
     servlet:
       context-path: /
     ssl:
-      enabled: false
\ No newline at end of file
+      enabled: false
+
+ai:
+  url: http://183.2.142.21:9003
\ No newline at end of file
diff --git a/dyh-service/dyh-mediate/src/main/resources/config/application.yml b/dyh-service/dyh-mediate/src/main/resources/config/application.yml
index ab13312..cdd5643 100644
--- a/dyh-service/dyh-mediate/src/main/resources/config/application.yml
+++ b/dyh-service/dyh-mediate/src/main/resources/config/application.yml
@@ -3,7 +3,7 @@
   profiles:
     active:
       - dev
-  #      - test
+#        - test
   #      - prod
 
   devtools:

--
Gitblit v1.8.0