feedback.page.ts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. // import { Component, OnInit } from '@angular/core';
  2. // @Component({
  3. // selector: 'app-feedback',
  4. // templateUrl: './feedback.page.html',
  5. // styleUrls: ['./feedback.page.scss'],
  6. // })
  7. // export class FeedbackPage implements OnInit {
  8. // chatMessages: { text: string, sender: string, avatar: string }[] = [];
  9. // newMessage: string = '';
  10. // constructor() {}
  11. // ngOnInit() {
  12. // // 模拟一些聊天消息
  13. // this.chatMessages = [
  14. // { text: '你好,请问有什么可以帮助您的吗?', sender: 'customer', avatar: 'https://img-bsy.txrpic.com/preview/Element/00/00/89/11/E-891182-2418FE26A.png?imageMogr2/quality/90/thumbnail/320x%3E' },
  15. // { text: '您好,我想咨询一下关于产品的信息。', sender: 'support', avatar: 'https://tse3-mm.cn.bing.net/th/id/OIP-C.c43kVbudRWN3-pJYtmfugAAAAA?rs=1&pid=ImgDetMain' }
  16. // ];
  17. // }
  18. // sendMessage() {
  19. // if (this.newMessage.trim() !== '') {
  20. // this.chatMessages.push({ text: this.newMessage, sender: 'customer', avatar: 'https://tse3-mm.cn.bing.net/th/id/OIP-C.c43kVbudRWN3-pJYtmfugAAAAA?rs=1&pid=ImgDetMain' });
  21. // // 在这里可以添加客服回复的逻辑
  22. // this.newMessage = '';
  23. // }
  24. // }
  25. // }
  26. import { Component, OnInit } from '@angular/core';
  27. import { NavController } from '@ionic/angular';
  28. import { Router } from '@angular/router';
  29. import { ActivatedRoute } from '@angular/router';
  30. import { FormsModule } from '@angular/forms';
  31. import Parse from "parse";
  32. @Component({
  33. selector: 'app-feedback',
  34. templateUrl: './feedback.page.html',
  35. styleUrls: ['./feedback.page.scss'],
  36. })
  37. export class FeedbackPage implements OnInit {
  38. userid: string;
  39. messageList:any = []
  40. messages = [
  41. { type: 'received', avatar: '/assets/img/support-avatar.png', time: '10:30 AM', text: 'Hi there!' },
  42. { type: 'sent', avatar: '/assets/img/b.png', time: '10:31 AM', text: 'Hey! How are you?' },
  43. // Add more messages as needed
  44. ];
  45. newMessage: string = '';
  46. constructor(private route: ActivatedRoute) {
  47. this.userid = this.route.snapshot.paramMap.get('userid') as string;
  48. this.targetId = this.userid
  49. }
  50. contact:Parse.Object|undefined
  51. user:Parse.User|undefined
  52. targetId:string |undefined
  53. async ngOnInit() {
  54. this.user = Parse.User.current()
  55. let fromId = Parse.User.current()?.id
  56. if(this.userid && fromId){
  57. let query = new Parse.Query("Contact");
  58. query.include("to")
  59. query.equalTo("from",fromId);
  60. query.equalTo("to",this.userid);
  61. this.contact = await query.first();
  62. }
  63. this.loadHistory();
  64. return
  65. }
  66. async sendMessage() {
  67. if (this.newMessage.trim() === '') {
  68. return;
  69. }
  70. let sendUser = Parse.User?.current()?.toPointer()
  71. let receiveUser = {__type:"Pointer",className:"_User",objectId:this.userid}
  72. let Message = Parse.Object.extend("Message");
  73. let message = new Message();
  74. message.set("sendUser",sendUser)
  75. message.set("receiveUser",receiveUser)
  76. message.set("contentJson",{
  77. role:"user",
  78. content: this.newMessage
  79. })
  80. message = await message.save()
  81. if(message?.id){
  82. this.messageList.push(message)
  83. this.syncSession(message,sendUser,receiveUser);
  84. }
  85. this.newMessage = '';
  86. this.loadHistory();
  87. }
  88. async syncSession(message:any,sendUser:any,receiveUser:any){
  89. // 根据当前聊天,更新最新的会话状态表 MessageSession 记录最新的会话
  90. let session = await this.checkSessionExists();
  91. if(!session?.id){
  92. let MessageSession = Parse.Object.extend("MessageSession")
  93. session = new MessageSession()
  94. }
  95. session?.set("message",message?.toPointer())
  96. session?.set("sendUser",sendUser)
  97. session?.set("receiveUser",receiveUser)
  98. session?.save();
  99. }
  100. async checkSessionExists(){
  101. let query = Parse.Query.fromJSON('MessageSession',{where: {
  102. $or: [
  103. {
  104. sendUser: this.user?.id,
  105. receiveUser: this.targetId
  106. },
  107. {
  108. sendUser: this.targetId,
  109. receiveUser: this.user?.id
  110. }
  111. ]
  112. }})
  113. return await query.first()
  114. }
  115. getCurrentTime() {
  116. const now = new Date();
  117. return now.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
  118. }
  119. async loadHistory(){
  120. let query = Parse.Query.fromJSON('Message',{where: {
  121. $or: [
  122. {
  123. sendUser: this.user?.id,
  124. receiveUser: this.targetId
  125. },
  126. {
  127. sendUser: this.targetId,
  128. receiveUser: this.user?.id
  129. }
  130. ]
  131. }})
  132. let list = await query.find();
  133. if(list?.length){
  134. this.messageList = list
  135. }
  136. }
  137. }