|
@@ -0,0 +1,117 @@
|
|
|
+import { Component } from '@angular/core';
|
|
|
+import { TestChatCompletion, TestChatMessage,oldMessage } from './class-chat-completion';
|
|
|
+import {SharedService} from 'src/modules/user/service-user/Share.service'
|
|
|
+import * as Parse from "parse"
|
|
|
+(Parse as any).serverURL = "https://web2023.fmode.cn/parse"
|
|
|
+Parse.initialize("dev")
|
|
|
+
|
|
|
+
|
|
|
+async function historyMessage(senderId: string,receiverId:string,historyMessages:Array<oldMessage>=[]){
|
|
|
+ await findMessagesByUserName(receiverId,senderId,historyMessages,"assistant")
|
|
|
+ await findMessagesByUserName(senderId,receiverId,historyMessages,"user")
|
|
|
+ historyMessages.sort((a, b) => Number(a.createdAt) - Number(b.createdAt));
|
|
|
+}
|
|
|
+
|
|
|
+async function findMessagesByUserName(senderId: string,receiverId:string,historyMessages:Array<oldMessage>=[],role:string) {
|
|
|
+ const Gzpmessage = Parse.Object.extend('Gzpmessage');
|
|
|
+ const query = new Parse.Query(Gzpmessage);
|
|
|
+ query.equalTo("senderId", senderId);
|
|
|
+ query.equalTo("receiverId", receiverId);
|
|
|
+ try {
|
|
|
+ const messages = await query.find();
|
|
|
+ for (const message of messages) {
|
|
|
+ historyMessages.push({
|
|
|
+ role:role,
|
|
|
+ content:message.get("messageContent"),
|
|
|
+ createdAt:message.get("createdAt").getTime()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error("查询消息时出错:", error);
|
|
|
+ }
|
|
|
+ return historyMessage
|
|
|
+}
|
|
|
+
|
|
|
+export function sendToParse(value:string,senderId:string,receiverId:string){
|
|
|
+ const Gzpmessage = Parse.Object.extend('Gzpmessage');
|
|
|
+ const message = new Gzpmessage();
|
|
|
+ message.set('senderId', senderId);
|
|
|
+ message.set('receiverId', receiverId);
|
|
|
+ message.set('messageContent', value);
|
|
|
+ message.set('createdAt', new Date());
|
|
|
+ // 设置其他字段...
|
|
|
+
|
|
|
+ // 保存对象到数据库
|
|
|
+ message.save().then(
|
|
|
+ (result: any) => {
|
|
|
+ console.log('对话消息已保存到数据库:', result);
|
|
|
+ },
|
|
|
+ (error: any) => {
|
|
|
+ console.error('保存对话消息时出错:', error);
|
|
|
+ }
|
|
|
+ );
|
|
|
+}
|
|
|
+@Component({
|
|
|
+ selector: 'app-ai-chat-page',
|
|
|
+ templateUrl: './ai-chat-page.component.html',
|
|
|
+ styleUrls: ['./ai-chat-page.component.scss']
|
|
|
+})
|
|
|
+export class AiChatPageComponent {
|
|
|
+
|
|
|
+ oldMessage:boolean=true;
|
|
|
+ title: string ='小助手';
|
|
|
+ userId: string = '';
|
|
|
+ userImg: string = ''
|
|
|
+ public userInput: string = '';
|
|
|
+ messageList: Array<TestChatMessage> = [];
|
|
|
+ historyMessages:Array<oldMessage>=[]
|
|
|
+ completion: TestChatCompletion;
|
|
|
+
|
|
|
+ constructor(private sharedService: SharedService) {
|
|
|
+ this.messageList.push({
|
|
|
+ role:'assistant',
|
|
|
+ content:"您好,我是您的旅行小助手,请问现在有什么可以帮到您的。",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ this.completion = new TestChatCompletion(this.messageList,this.sharedService);
|
|
|
+ this.userId = this.sharedService.getUserId();
|
|
|
+ this.userImg = this.sharedService.getUserImg();
|
|
|
+ historyMessage(this.userId,'1',this.historyMessages)
|
|
|
+ // findMessagesByUserName('Aichat',this.userId,this.messageList,"assistant")
|
|
|
+ // findMessagesByUserName(this.userId,'Aichat',this.messageList,"user")
|
|
|
+ }
|
|
|
+ send(value: string) {
|
|
|
+ if (this.sharedService.pdlogin()){
|
|
|
+ this.messageList.push({
|
|
|
+ role: 'user',
|
|
|
+ content: value,
|
|
|
+ });
|
|
|
+ sendToParse(value,this.userId,"1")
|
|
|
+ this.completion.createCompletionByStream();
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if(value=='开始'){
|
|
|
+ this.messageList.push({
|
|
|
+ role:'assistant',
|
|
|
+ content:"请问",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ this.sharedService.isLogin()
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ this.messageList.push({
|
|
|
+ role:'user',
|
|
|
+ content:value,
|
|
|
+ }
|
|
|
+ )
|
|
|
+ this.messageList.push({
|
|
|
+ role:'assistant',
|
|
|
+ content:"对不起,您还没有登入,暂时无法使用此功能",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.userInput='';
|
|
|
+ }
|
|
|
+
|
|
|
+}
|