tab3.page.ts 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import { Component } from '@angular/core';
  2. import { IonicModule } from '@ionic/angular';
  3. import { IonAvatar, IonButton, IonCard, IonContent, IonIcon, IonImg, IonLabel, IonSegment, IonSegmentButton, IonSegmentContent, IonSegmentView, IonText, IonTitle, ModalController } from '@ionic/angular/standalone';
  4. import { CloudUser, CloudObject, CloudQuery } from 'src/lib/ncloud';
  5. import { Router } from '@angular/router';
  6. import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-login.component';
  7. import { addIcons } from 'ionicons';
  8. import { cardOutline, chevronForwardOutline, flameOutline, personAddOutline } from 'ionicons/icons';
  9. import { CommonModule } from '@angular/common';
  10. addIcons({ personAddOutline, cardOutline, flameOutline, chevronForwardOutline })
  11. @Component({
  12. selector: 'app-tab3',
  13. templateUrl: 'tab3.page.html',
  14. styleUrls: ['tab3.page.scss'],
  15. standalone: true,
  16. imports: [IonIcon, IonContent, IonCard, IonLabel, IonSegment, IonSegmentButton, IonSegmentView,
  17. CommonModule, IonSegmentContent, IonAvatar, IonImg, IonTitle, IonButton, IonText],
  18. })
  19. export class Tab3Page {
  20. currentUser: CloudUser | undefined;
  21. constructor(private modalCtrl: ModalController, private router: Router) { }
  22. ngOnInit() {
  23. this.currentUser = new CloudUser();
  24. this.getAttentionList();
  25. this.getFanList();
  26. this.getPostList();
  27. this.getHistoryCount();
  28. this.getMyStyle();
  29. }
  30. async ionViewWillEnter() {
  31. console.warn("-------------------------\n" + "进入tab3界面,执行ionViewWillEnter\n" + "验证用户是否登录")
  32. let user: any = new CloudUser();
  33. if (user?.id == null) {
  34. console.error("用户未登录,即将跳转到登录页面")
  35. user = await openUserLoginModal(this.modalCtrl);
  36. console.log("接受到来自login模态的登录用户信息:");
  37. console.log(user);
  38. }
  39. else {
  40. console.log("用户已登录,更新用户缓存信息")
  41. console.log("当前用户信息(未更新缓存前):");
  42. console.log(user);
  43. //await user.updateCache();
  44. console.log("当前用户信息:");
  45. console.log(user);
  46. }
  47. console.log("进入到我的界面,准备实例化currentUser对象");
  48. this.currentUser = new CloudUser();
  49. this.loadPosts();
  50. }
  51. /**
  52. * @格式化为带单位的数字
  53. */
  54. formatNumber(num: number): string {
  55. if (num >= 10000) {
  56. return (num / 10000).toFixed(1) + 'w';
  57. } else if (num >= 1000) {
  58. return (num / 1000).toFixed(1) + 'k';
  59. } else {
  60. return num + '';
  61. }
  62. }
  63. /**
  64. * @跳转界面函数
  65. */
  66. goSetting() {
  67. this.router.navigate(["/settings"]);
  68. }
  69. goPostDetail(post: CloudObject) {
  70. this.router.navigate(['postDetail', post.id]);
  71. }
  72. goGenerateHistory() {
  73. this.router.navigate(["generateHistory"]);
  74. }
  75. goAttention(isFollowing: boolean) {
  76. this.router.navigate(['/attention'], { state: { currentTab: isFollowing } }); // 传递状态
  77. }
  78. goMyStyleList() {
  79. this.router.navigate(['/myStyleList']);
  80. }
  81. /**
  82. * @读取用户发布的帖子
  83. */
  84. posts: any[] | undefined;
  85. async loadPosts() {
  86. let query = new CloudQuery('post');
  87. query.equalTo('UserID', this.currentUser?.toPointer());
  88. this.posts = await query.find();
  89. console.log("获取到用户发布的帖子:");
  90. console.log(this.posts);
  91. this.posts = this.posts.reverse();
  92. }
  93. /**
  94. * @读取个人信息卡片数据
  95. */
  96. /*加载关注个数*/
  97. attentionNumber: number = 0;
  98. async getAttentionList() {
  99. const query = new CloudQuery('attention');
  100. query.equalTo('UserID', this.currentUser?.toPointer());
  101. let result = await query.find();
  102. this.attentionNumber = result.length;
  103. console.log("获取到关注个数:" + this.attentionNumber);
  104. }
  105. /*加载粉丝个数*/
  106. fanNumber: number = 0;
  107. async getFanList() {
  108. const query = new CloudQuery('attention');
  109. query.equalTo('attentionID', this.currentUser?.toPointer());
  110. let result = await query.find();
  111. this.fanNumber = result.length;
  112. console.log("获取到粉丝个数:" + this.fanNumber);
  113. }
  114. /**
  115. * @读取统计卡片数据
  116. */
  117. /*加载点赞帖子列表*/
  118. likedPostsNumber: number = 0;
  119. likedPostsImage: string = "";
  120. async getPostList() {
  121. const query = new CloudQuery('postLikesRecord');
  122. query.equalTo('UserID', this.currentUser?.toPointer());
  123. query.include('postID');
  124. let postList = await query.find();
  125. postList = postList.reverse();
  126. this.likedPostsNumber = postList.length;
  127. this.likedPostsImage = postList[0]?.get('postID')?.image[0];
  128. console.log("获取到点赞帖子个数:" + this.likedPostsNumber + "\n" + "获取到点赞帖子图像:" + this.likedPostsImage);
  129. }
  130. /*返回生成历史个数和图像*/
  131. generateHistoryCount: number = 0;
  132. generateHistoryImage: string = "";
  133. async getHistoryCount() {
  134. let query = new CloudQuery('GenerateResult');
  135. query.equalTo('UserID', this.currentUser?.toPointer());
  136. let result = await query.find();
  137. result = result.reverse();
  138. this.generateHistoryImage = result[0]?.get('image');
  139. this.generateHistoryCount = result.length;
  140. console.log("获取到生成历史个数:" + this.generateHistoryCount + "\n" + "获取到生成历史图像:" + this.generateHistoryImage);
  141. }
  142. /*返回我的风格个数和图像*/
  143. myStyleNumber: number = 0;
  144. myStyleImage: string = "";
  145. async getMyStyle() {
  146. let query = new CloudQuery('UserStyleInfo');
  147. query.equalTo('UserID', this.currentUser?.toPointer());
  148. let result = await query.find();
  149. result = result.reverse();
  150. this.myStyleImage = result[0]?.get('image') || "/assets/icon/favicon.png";
  151. this.myStyleNumber = result.length;
  152. console.log("获取到我的风格个数:" + this.myStyleNumber + "\n" + "获取到我的风格图像:" + this.myStyleImage);
  153. }
  154. }