lantian 1 рік тому
батько
коміт
7d31d81d53

+ 0 - 1
src/main/java/com/tao/ElementSyncApplication.java

@@ -1,6 +1,5 @@
 package com.tao;
 
-import com.tao.listener.ApplicationStartup;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;

+ 1 - 1
src/main/java/com/tao/listener/StepExecutor.java

@@ -22,7 +22,7 @@ public class StepExecutor implements Runnable {
     public void startStreamTask() {
         try {
             System.out.println("=========> 启动成功!请访问:http://localhost:8085");
-//            Runtime.getRuntime().exec("cmd /c start http://localhost:8085");
+            Runtime.getRuntime().exec("cmd /c start http://localhost:8085");
         } catch (Exception ex) {
             ex.printStackTrace();
         }

+ 38 - 15
src/main/resources/templates/index.html

@@ -170,17 +170,17 @@
     </div>
 </div>
 <script>
-    // 自定义模块,这里只需要开放soulTable即可
+    // 自定义模块
     layui.config({
-        base: '/layui/modules/'   // 第三方模块所在目录
-        , layimResPath: '/layui/modules/layim/dist/layim-assets/'
+        base: '/layui/modules/'   // LayUI第三方模块所在目录
+        , layimResPath: '/layui/modules/layim/dist/layim-assets/'   // LayIM模块资源存放路径
     }).extend({
         soulTable: 'soulTable/soulTable',
         tableChild: 'soulTable/tableChild',
         tableMerge: 'soulTable/tableMerge',
         tableFilter: 'soulTable/tableFilter',
         excel: 'soulTable/excel',
-        layim: 'layim/dist/layim'
+        layim: 'layim/dist/layim'   // 导入LayIM模块
     });
 
     //JS
@@ -224,13 +224,30 @@
             });
         }
 
+        // 页面加载初始化时触发
         $(function () {
+            /* 删除之前的聊天记录 */
+            let cache =  layui.layim.cache();
+            let local = layui.data('layim')[cache.mine.id]; //获取当前用户本地数据
+            //删除本地聊天记录
+            delete local.chatlog;
+            //向localStorage同步数据
+            layui.data('layim', {
+                key: cache.mine.id
+                ,value: local
+            });
+
+            // 初始化时最小化聊天窗口
             layim.setChatMin();
-            //【增】:向 chatgpt 表插入一个 myprompt 字段,如果该表不存在,则自动建立。
+            // 设置聊天状态,此处作为初始化提示
+            layim.setChatStatus('<span style="color:#2678b3;">tips: 国外服务加载较慢,请耐心等待哦~</span>');
+
+            // 向 chatgpt 表插入一个 myprompt 字段,如果该表不存在,则自动建立,用于存储聊天上下文
             layui.sessionData('chatgpt', {
                 key: 'myprompt'
                 , value: ''
             });
+
             flashPages();
             clipboard = new ClipboardJS('.js-clipboard');
             clipboard.on('success', function (e) {
@@ -243,7 +260,7 @@
             });
         });
 
-        //提交
+        // 提交同步元素请求
         form.on('submit(formSubmit)', function (data) {
             const loading = layer.load(2);
             $.ajax({
@@ -281,6 +298,7 @@
             return false;
         });
 
+        // 提交搜索请求
         form.on('submit(search)', function (data) {
             data.field["elementType"] = elementType;
             data.field["pageID"] = pageID;
@@ -378,10 +396,10 @@
             }
         });
 
+        // LayIM模块配置,并创建一个简约的聊天窗口
         layim.config({
             brief: true //是否简约模式(如果true则不显示主面板)
-            , minRight: '370px'
-            , isfriend: true
+            , minRight: '370px' // 用户控制聊天面板最小化时、及新消息提示层的相对right的px坐标。
         }).chat({
             name: 'ChatGPT'
             , type: 'friend'
@@ -389,22 +407,28 @@
             , id: -2
         });
 
+        // 发送消息事件
         layim.on('sendMessage', function (res) {
+            /* 获取聊天中对方的信息,并将状态装换为输入中 */
             let To = res.to;
             if(To.type === 'friend'){
                 layim.setChatStatus('<span style="color:#ffa502;">(๑・`◡´・๑) 正在努力输入…</span>');
             }
 
+            /* 获取聊天中自己的信息 */
             let Mine = res.mine;
+            /* 读取sessionData中的上下文,并将本次的问题添加到上下文后面 */
             let localChatGPT = layui.sessionData('chatgpt');
             layui.sessionData('chatgpt', {
                 key: 'myprompt'
                 , value: localChatGPT.myprompt + " Q1:" + Mine.content
             });
 
+            /* 发送ChatGPT请求,获取回答 */
             $.ajax({
                 type: 'post',
                 url: 'https://api.openai.com/v1/completions',
+                // sk-xxxxxxxxx为OpenAI的api-key,每个账号有18美元的免费额度
                 headers: {
                     "Content-Type": "application/json",
                     "Authorization": "Bearer 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"
@@ -416,19 +440,23 @@
                     "model": "text-davinci-003"
                 }),
                 success: function (res) {
+                    // 将ChatGPT的回答添加到上下文中
                     layui.sessionData('chatgpt', {
                         key: 'myprompt'
                         , value: layui.sessionData('chatgpt').myprompt + " A1:" + res.choices[0].text
                     });
+                    // 取消输入中状态,变为在线状态
                     layim.setChatStatus('<span style="color:#2ed573;">o( ̄▽ ̄)d 在线</span>');
+                    // 回答可能为空,需要做下判断
                     if (res.choices[0].text.trim().length != 0) {
+                        // 接受消息
                         layim.getMessage({
                             username: To.name //消息来源用户名
                             , avatar: To.avatar //消息来源用户头像
                             , id: To.id //消息的来源ID(如果是私聊,则是用户id,如果是群聊,则是群组id)
                             , type: To.type //聊天窗口来源类型,从发送消息传递的to里面获取
-                            , content: res.choices[0].text.trim().replace(/A1:/g, '').replace(/A1:/g, '') //消息内容
-                            , fromid: To.id //消息的发送者id(比如群组中的某个消息发送者),可用于自动解决浏览器多窗口时的一些问题
+                            , content: res.choices[0].text.replace(/A1:/g, '').replace(/A1:/g, '').trim() //消息内容
+                            , fromid: To.id //消息的发送者id(比如群组中的某个消息发送者),可用于自动解决浏览器多窗口时的一些问题,不加会导致回答出现在聊天窗口的右边
                             , mine: false //是否我发送的消息,如果为true,则会显示在右方
                         });
                     } else {
@@ -454,11 +482,6 @@
                 }
             })
         });
-
-        layim.on('chatChange', function(obj){
-            console.log("页面变化");
-        });
-
     });
 </script>
 </body>