lzy 1 rok temu
rodzic
commit
9bceb4ba09

+ 1 - 1
FilmDraw-app/src/app/tab3/tab3.page.html

@@ -19,7 +19,7 @@
               </ion-thumbnail>
               <div class="filmpartner-info">
                 <h3>{{ filmpartner.get('name') }}({{ filmpartner.get('age') }}岁)</h3>
-                <p>{{ filmpartner.get('desc') }},{{ filmpartner.get('depart')?.name }}</p>
+                <p>{{ filmpartner.get('desc') }}</p>
                 <p>欢迎与我聊天,分享你追剧体验。</p>
               </div>
               <ion-button (click)="opendazi(filmpartner)">开始聊天</ion-button>

+ 29 - 14
FilmDraw-app/src/app/tab3/tab3.page.ts

@@ -10,7 +10,8 @@ import { ExploreContainerComponent } from '../explore-container/explore-containe
 import { ChatPanelOptions, FmChatModalInput, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
 // import { ModalAudioMessageComponent } from 'fmode-ng/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component';
 // 引用设计的对象类和查询类
-import { CloudObject, CloudQuery,CloudUser } from 'src/lib/ncloud';
+import { CloudObject, CloudQuery, CloudUser } from 'src/lib/ncloud';
+import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-login.component';
 
 @Component({
   selector: 'app-tab3',
@@ -53,19 +54,31 @@ export class Tab3Page {
   }
 
 
-  /** 示例:问诊ChatPanel面板 */
-  opendazi(filmpartner:CloudObject){
+  /** 示例:搭子聊天面板 */
+  async opendazi(filmpartner:CloudObject){
+    //验证用户登录
+    let currentUser = new CloudUser();
+    if(!currentUser?.id){
+      console.log("用户未登录,请登录后重试");
+      let user = await openUserLoginModal(this.modalCtrl);
+      if(!user?.id){
+        return
+      }
+    }
+    
     localStorage.setItem("company","E4KpGvTEto")
-    let user = new CloudUser
-    let filmchat = new CloudObject("FilmChat")
+    
+    let filmchat = new CloudObject("FilmChat");
     let now = new Date();
     let dateStr = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()}`
     filmchat.set({
-      title:`${user?.get("name") || ""}与${filmpartner?.get("name")}的聊天记录${dateStr}`,
+      title:`${currentUser?.get("username")}与${filmpartner?.get("name")}的聊天记录${dateStr}`,
       filmpartner:filmpartner.toPointer(),
-      user:user.toPointer(),
+      user:currentUser.toPointer(),
     })
     
+    // let chatMessages: string[] = []; // 用于保存所有聊天记录
+
     let options:ChatPanelOptions = {
       roleId:"2DXJkRsjXK",
       onChatInit:(chat:FmodeChat)=>{
@@ -101,15 +114,17 @@ export class Tab3Page {
         console.log("onMessage",message)
         let content:any = message?.content
         if(typeof content == "string"){
-          if(content?.indexOf("[完成]")>-1){
-            console.log("陪聊已完成")
+          // if(content?.indexOf("[完成]")>-1){
+          //   console.log("陪聊已完成")
+
+             filmchat.set({
+                 dialogue: content // 保存聊天内容
+             });
+
 
-            filmchat.set({
-              dialogue:content // 处方内容
-            })
-            filmchat.save();
+             filmchat.save()
 
-          }
+          // }
         }
       },
       onChatSaved:(chat:FmodeChat)=>{

+ 31 - 34
FilmDraw-app/src/app/tab4/tab4.page.html

@@ -2,43 +2,40 @@
     <ion-toolbar>
       <ion-title size="large">个人中心</ion-title>
     </ion-toolbar>
-  </ion-header>
+</ion-header>
   
-  <ion-content [fullscreen]="true">
+<ion-content [fullscreen]="true">
 
-      <!-- 用户信息区 -->
-  <section>
-<!-- 用户登录状态 -->
-<ion-card>
-  <!-- 未登录 -->
-   @if(!currentUser?.id){
-     <ion-card-header>
-       <ion-card-title>请登录</ion-card-title>
-       <ion-card-subtitle>暂无信息</ion-card-subtitle>
+<!-- 用户信息区 -->
+<section>
+  <!-- 用户登录状态 -->
+  <ion-card>
+    <!-- 未登录 -->
+     @if(!currentUser?.id){
+       <ion-card-header>
+         <ion-card-title>请登录</ion-card-title>
+         <ion-card-subtitle>暂无信息</ion-card-subtitle>
+        </ion-card-header>
+      }
+        <!-- 已登录 -->
+     @if(currentUser?.id){
+      <ion-card-header>
+        <ion-card-title>{{currentUser?.get("username")}} {{currentUser?.get("realname")}}</ion-card-title>
+        <ion-card-subtitle>性别:{{currentUser?.get("gender")||"-"}} 年龄:{{currentUser?.get("age")||"-"}}</ion-card-subtitle>
       </ion-card-header>
+      }
+      <ion-card-content>
+      @if(!currentUser?.id){
+        <ion-button expand="block" (click)="signup()">注册</ion-button>
+        <ion-button expand="block" (click)="login()">登录</ion-button>
+      }
+     @if(currentUser?.id){
+      <ion-button expand="block" (click)="editUser()">编辑资料</ion-button>
+      <ion-button expand="block" (click)="logout()" color="light">登出</ion-button>
     }
-      <!-- 未登录 -->
-   @if(currentUser?.id){
-    <ion-card-header>
-      <ion-card-title>{{currentUser?.get("username")}} {{currentUser?.get("realname")}}</ion-card-title>
-      <ion-card-subtitle>性别:{{currentUser?.get("gender")||"-"}} 年龄:{{currentUser?.get("age")||"-"}}</ion-card-subtitle>
-    </ion-card-header>
-    }
-    <ion-card-content>
-    @if(!currentUser?.id){
-      <ion-button expand="block" (click)="login()">登录</ion-button>
-      <ion-button expand="block" (click)="signup()">注册</ion-button>
-      
-    }
-   @if(currentUser?.id){
-    <ion-button expand="block" (click)="editUser()">编辑资料</ion-button>
-    <ion-button expand="block" (click)="logout()" color="light">登出</ion-button>
-  }
-  </ion-card-content>
-</ion-card>
-
-  </section>
-
+    </ion-card-content>
+  </ion-card>
+</section>
   
-  </ion-content>
+</ion-content>
   

+ 42 - 30
FilmDraw-app/src/lib/ncloud.ts

@@ -1,5 +1,4 @@
-
-//CloudObject.ts
+// CloudObject.ts
 export class CloudObject {
     className: string;
     id: string | null = null;
@@ -30,7 +29,7 @@ export class CloudObject {
 
     async save() {
         let method = "POST";
-        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}`;
+        let url = `https://dev.fmode.cn/parse/classes/${this.className}`;
 
         // 更新
         if (this.id) {
@@ -62,7 +61,7 @@ export class CloudObject {
 
     async destroy() {
         if (!this.id) return;
-        const response = await fetch(`http://dev.fmode.cn:1337/parse/classes/${this.className}/${this.id}`, {
+        const response = await fetch(`https://dev.fmode.cn/parse/classes/${this.className}/${this.id}`, {
             headers: {
                 "x-parse-application-id": "dev"
             },
@@ -83,38 +82,41 @@ export class CloudObject {
 // CloudQuery.ts
 export class CloudQuery {
     className: string;
-    whereOptions: Record<string, any> = {};
+    queryParams: Record<string, any> = {};
 
     constructor(className: string) {
         this.className = className;
     }
 
+    include(...fileds:string[]) {
+        this.queryParams["include"] = fileds;
+    }
     greaterThan(key: string, value: any) {
-        if (!this.whereOptions[key]) this.whereOptions[key] = {};
-        this.whereOptions[key]["$gt"] = value;
+        if (!this.queryParams["where"][key]) this.queryParams["where"][key] = {};
+        this.queryParams["where"][key]["$gt"] = value;
     }
 
     greaterThanAndEqualTo(key: string, value: any) {
-        if (!this.whereOptions[key]) this.whereOptions[key] = {};
-        this.whereOptions[key]["$gte"] = value;
+        if (!this.queryParams["where"][key]) this.queryParams["where"][key] = {};
+        this.queryParams["where"][key]["$gte"] = value;
     }
 
     lessThan(key: string, value: any) {
-        if (!this.whereOptions[key]) this.whereOptions[key] = {};
-        this.whereOptions[key]["$lt"] = value;
+        if (!this.queryParams["where"][key]) this.queryParams["where"][key] = {};
+        this.queryParams["where"][key]["$lt"] = value;
     }
 
     lessThanAndEqualTo(key: string, value: any) {
-        if (!this.whereOptions[key]) this.whereOptions[key] = {};
-        this.whereOptions[key]["$lte"] = value;
+        if (!this.queryParams["where"][key]) this.queryParams["where"][key] = {};
+        this.queryParams["where"][key]["$lte"] = value;
     }
 
     equalTo(key: string, value: any) {
-        this.whereOptions[key] = value;
+        this.queryParams["where"][key] = value;
     }
 
     async get(id: string) {
-        const url = `http://dev.fmode.cn:1337/parse/classes/${this.className}/${id}?`;
+        const url = `https://dev.fmode.cn/parse/classes/${this.className}/${id}?`;
 
         const response = await fetch(url, {
             headers: {
@@ -132,12 +134,23 @@ export class CloudQuery {
     }
 
     async find() {
-        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?`;
+        let url = `https://dev.fmode.cn/parse/classes/${this.className}?`;
 
-        if (Object.keys(this.whereOptions).length) {
-            const whereStr = JSON.stringify(this.whereOptions);
-            url += `where=${whereStr}`;
-        }
+        let queryStr = ``
+        Object.keys(this.queryParams).forEach(key=>{
+            let paramStr = JSON.stringify(this.queryParams[key]);
+            if(key=="include"){
+                paramStr = this.queryParams[key]?.join(",")
+            }
+            if(queryStr) {
+                url += `${key}=${paramStr}`;
+            }else{
+                url += `&${key}=${paramStr}`;
+            }
+        })
+        // if (Object.keys(this.queryParams["where"]).length) {
+            
+        // }
 
         const response = await fetch(url, {
             headers: {
@@ -157,10 +170,10 @@ export class CloudQuery {
     }
 
     async first() {
-        let url = `http://dev.fmode.cn:1337/parse/classes/${this.className}?`;
+        let url = `https://dev.fmode.cn/parse/classes/${this.className}?`;
 
-        if (Object.keys(this.whereOptions).length) {
-            const whereStr = JSON.stringify(this.whereOptions);
+        if (Object.keys(this.queryParams["where"]).length) {
+            const whereStr = JSON.stringify(this.queryParams["where"]);
             url += `where=${whereStr}`;
         }
 
@@ -197,9 +210,9 @@ export class CloudQuery {
 // CloudUser.ts
 export class CloudUser extends CloudObject {
     constructor() {
-        super("Users"); // 用户类在Parse中是"Users"
+        super("_User"); // 假设用户类在Parse中是"_User"
         // 读取用户缓存信息
-        let userCacheStr = localStorage.getItem("NCloud/dev/Users")
+        let userCacheStr = localStorage.getItem("NCloud/dev/User")
         if(userCacheStr){
             let userData = JSON.parse(userCacheStr)
             // 设置用户信息
@@ -210,7 +223,6 @@ export class CloudUser extends CloudObject {
     }
 
     sessionToken:string|null = ""
-
     /** 获取当前用户信息 */
     async current() {
         if (!this.sessionToken) {
@@ -218,7 +230,7 @@ export class CloudUser extends CloudObject {
             return null;
         }
         return this;
-        // const response = await fetch(`http://dev.fmode.cn:1337/parse/users/me`, {
+        // const response = await fetch(`https://dev.fmode.cn/parse/users/me`, {
         //     headers: {
         //         "x-parse-application-id": "dev",
         //         "x-parse-session-token": this.sessionToken // 使用sessionToken进行身份验证
@@ -236,7 +248,7 @@ export class CloudUser extends CloudObject {
 
     /** 登录 */
     async login(username: string, password: string):Promise<CloudUser|null> {
-        const response = await fetch(`http://dev.fmode.cn:1337/parse/login`, {
+        const response = await fetch(`https://dev.fmode.cn/parse/login`, {
             headers: {
                 "x-parse-application-id": "dev",
                 "Content-Type": "application/json"
@@ -268,7 +280,7 @@ export class CloudUser extends CloudObject {
             return;
         }
 
-        const response = await fetch(`http://dev.fmode.cn:1337/parse/logout`, {
+        const response = await fetch(`https://dev.fmode.cn/parse/logout`, {
             headers: {
                 "x-parse-application-id": "dev",
                 "x-parse-session-token": this.sessionToken
@@ -298,7 +310,7 @@ export class CloudUser extends CloudObject {
             ...additionalData // 合并额外的用户数据
         };
 
-        const response = await fetch(`http://dev.fmode.cn:1337/parse/users`, {
+        const response = await fetch(`https://dev.fmode.cn/parse/users`, {
             headers: {
                 "x-parse-application-id": "dev",
                 "Content-Type": "application/json"