Browse Source

update:chatevaluate

cainiao-hue 4 months ago
parent
commit
3b4881f98e

+ 9 - 15
docs-prod/schema.md

@@ -3,20 +3,7 @@
 ```plantuml
 ' 聊天项目类图英文版
 @startuml
-class ChatAdvice {
-    + objectId: String//建议标识符
-    + title:String//建议标题
-    + contnet:String//建议内容
-    + admin: Pointer<_Admin> // 关联的管理员
-}
 
-class ChatAdmin {
-    + objectId: String // 管理员唯一标识符
-    + password: String // 管理员密码
-    + email: String // 管理员邮箱
-    + realname: String // 管理员真实姓名
-    + manageUser(user: Pointer<_User>): void // 管理用户的方法
-}
 class _User { 
     + objectId: String //用户唯一标识符
     + username: String //用户名
@@ -63,12 +50,19 @@ class Report {
     - analysisResult: String //分析结果
     + generateReport(): String //生成报告的方法
 }
+class ChatEvaluate{
+    + objectId:String//评论唯一标识符
+    + avater:String//用户头像
+    + content:String//评论内容
+    + rating:Number//评论星星数
+    + user: Pointer<User> //关联的用户对象
+}
 
+_User "*" --> "*" ChatEvaluate
 _User "1" --> "*" ChatRecord     
 ChatPartner "1" --> "*" ChatRecord 
 ChatCompanion "1" --> "*" ChatRecord 
-ChatRecord "1" -- "1" Report
-ChatAdmin "1" --> "*" ChatAdvice      
+ChatRecord "1" -- "1" Report      
 @enduml
 ```
 # 时序图

+ 5 - 6
soul-app/src/app/tab1/tab1.page.html

@@ -24,7 +24,7 @@
         <ion-item *ngFor="let topic of topics">
           <ion-label>
             <h2>{{ topic.title }}</h2>
-            <p>{{ topic.description }}</p>
+            <p style="font-size: 16px;">{{ topic.description }}</p>
           </ion-label>
           <ion-buttons slot="end">
           <ion-button color="primary" fill="solid" (click)="viewDetails(topic.id)">
@@ -60,14 +60,13 @@
     </ion-card-header>
     <ion-card-content>
       <ion-list>
-        <ion-item *ngFor="let review of reviews">
+        <ion-item *ngFor="let chatevaluate of chatevaluateList">
           <ion-avatar slot="start">
-            <img [src]="review.avatar" alt="用户头像"/>
+            <img [src]="chatevaluate.get('avatar') || '/assets/img/2.png'"/>
           </ion-avatar>
           <ion-label>
-            <p>{{ review.content }}</p>
-            <!--<ion-icon name="star" *ngFor="let star of [].constructor(review.rating); let i = index" [attr.aria-hidden]="true"></ion-icon>-->
-            <ion-icon name="star" *ngFor="let star of createFilledArray(review.rating); let i = index" [attr.aria-hidden]="true"></ion-icon>
+            <p style="font-size: 16px;">{{ chatevaluate.get('content') }}</p>
+            <ion-icon name="star" *ngFor="let star of createFilledArray(chatevaluate.get('rating')); let i = index" [attr.aria-hidden]="true"></ion-icon>
           </ion-label>
         </ion-item>
       </ion-list>

+ 31 - 24
soul-app/src/app/tab1/tab1.page.ts

@@ -7,6 +7,9 @@ import {  TopicDetailComponent } from '../topic-detail/topic-detail.component';
 import { Router } from '@angular/router';
 import { TopicDetail2Component } from '../topic-detail2/topic-detail2.component';
 import { TopicDetail3Component } from '../topic-detail3/topic-detail3.component';
+import { CloudObject, CloudQuery, CloudUser } from 'src/lib/ncloud';
+import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-login.component';
+import { ModalController } from '@ionic/angular/standalone';
 @Component({
   selector: 'app-tab1',
   templateUrl: 'tab1.page.html',
@@ -48,27 +51,6 @@ export class Tab1Page {
       detailRoute: 'topic-detail2'
     }
   ];
-  reviews = [
-    {
-      avatar: '/assets/img/4.png',
-      content: '这款APP真的帮助了我,感谢陪聊师!',
-      rating: 4
-    },
-    {
-      avatar: '/assets/img/5.png',
-      content: '非常实用的心理咨询平台!',
-      rating: 5
-    },
-    {
-      avatar: '/assets/img/6.png',
-      content: '我喜欢这里的热门话题!',
-      rating: 5
-    }
-  ];
-
-  constructor(private router: Router) {
-    // 其他构造函数代码
-  }
   
   goPsysurvey() {
     this.router.navigate(['tabs/page-psysurvey'])
@@ -92,8 +74,26 @@ export class Tab1Page {
     // 导航到指定的路由,并可以传递参数
     this.router.navigate([`tabs/${route}`, { id: topicId }]);
   }
-
-  evaluate() {
+  private modalCtrl: ModalController;
+  constructor(private router: Router,modalCtrl: ModalController) {
+    this.modalCtrl = modalCtrl;
+    // 其他构造函数代码
+  }
+  matchedCounselor: { content: string; rating: number } | null = null;
+  async evaluate() {
+    // 验证用户登录
+    let currentUser = new CloudUser();
+    if(!currentUser?.id){
+      console.log("用户未登录,请登录后重试")
+      let user = await openUserLoginModal(this.modalCtrl)
+      if(!user?.id){
+        console.log("用户登录失败");
+        return
+      } 
+      else {
+        console.log("当前用户ID:", currentUser.id);
+      }    
+    }
     // 处理点击评价的逻辑
     console.log('用户点击了“进入评价”按钮');
     // 您可以导航到一个新的页面来让用户填写评价,或者显示一个模态框等。
@@ -104,5 +104,12 @@ export class Tab1Page {
   createFilledArray(length: number): any[] {
     return Array(length).fill(null);
   }
-  ngOnInit() {}
+  ngOnInit() {
+    this.loadChatEvaluateList()
+  }
+  chatevaluateList:Array<CloudObject>=[]
+  async loadChatEvaluateList(){
+    let query = new CloudQuery("ChatEvaluate");
+    this.chatevaluateList = await query.find()
+  }
 }

+ 1 - 1
soul-app/src/app/tab2/tab2.page.html

@@ -29,7 +29,7 @@
             </ion-avatar>
             <ion-label>
               <h2>{{ chatpartner.get('name') }}</h2>
-              <p style="font-size: 15px;">专业领域:{{ chatpartner.get('expertise') }}</p>
+              <p style="font-size: 16px;">专业领域:{{ chatpartner.get('expertise') }}</p>
             </ion-label>
             <ion-button slot="end" (click)="clickToConsult(chatpartner)" style="margin-left: 10px;">开始陪聊</ion-button>
           </ion-item>