123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- import { Component, OnInit, ViewChild } from '@angular/core';
- import { CommonModule, DatePipe } from '@angular/common';
- import { FormsModule } from '@angular/forms';
- import { NavComponent } from '../../../app/components/nav/nav.component';
- import { ActivatedRoute, Router } from '@angular/router';
- import * as Parse from 'parse';
- import { ImagePreviewComponent } from '../../../app/components/image-preview/image-preview.component';
- import { AiChatService } from '../../../services/aichart.service';
- import { UploadComponent } from '../../../app/components/upload/upload.component';
- import { GiftModalComponent } from '../../../app/components/gift-modal/gift-modal.component';
- // import { MessageService } from '../../../services/message.service';
- import { ConnectTaskService } from '../../../services/connectTask.service';
- import { getBirthdatByIdNo, getConstellation } from '../../../services/utils';
- import {
- ionicStandaloneModules,
- // AlertController,
- LoadingController,
- ToastController,
- } from '../../ionic-standalone.modules';
- import { AccountService } from '../../../services/account.service';
- import { CallModalComponent } from '../../../app/components/call-modal/call-modal.component';
- import { AvatarComponent } from '../../../app/components/avatar/avatar.component';
- import { AppraiseComponent } from '../../../app/components/appraise/appraise.component';
- @Component({
- selector: 'app-profile',
- templateUrl: './profile.component.html',
- styleUrls: ['./profile.component.scss'],
- standalone: true,
- imports: [
- ...ionicStandaloneModules,
- FormsModule,
- // DatePipe,
- NavComponent,
- CommonModule,
- ImagePreviewComponent,
- UploadComponent,
- GiftModalComponent,
- CallModalComponent,
- AvatarComponent,
- AppraiseComponent
- ],
- providers: [DatePipe],
- })
- export class ProfileComponent implements OnInit {
- // @ViewChild('upload') upload!: UploadComponent;
- @ViewChild('call') call!: CallModalComponent;
- uid: string = '';
- currentUser?: Parse.Object = Parse.User.current(); //当前登录用户
- user?: Parse.Object; // 查看用户
- @ViewChild('preview') preview!: ImagePreviewComponent;
- friends?: Parse.Object; // 好友
- profile?: Parse.Object;
- active: number = 0;
- currenImg: string = '';
- numsObject: { fans: number; follow: number; gift: number } = {
- fans: 0, //粉丝量
- follow: 0, //关注量
- gift: 0, //送出礼物
- };
- isFollow: boolean = false;
- giftList: any[] = []; //礼物
- isOpen: boolean = false; //打开弹窗
- room?: Parse.Object;
- @ViewChild('gift') gift!: GiftModalComponent;
- // iscall: boolean = false;
- // isLiveing: boolean = false; // 是否在直播通话中
- userStatus: string = 'OFFLINE';
- loading: boolean = true;
- userVip:any
- commentObj:any = {
- score: 0,
- count:0,
- list: []
- }
- constructor(
- private activateRoute: ActivatedRoute,
- private router: Router,
- private toastController: ToastController,
- private loadingCtrl: LoadingController,
- public aiChatServ: AiChatService,
- // private alertController: AlertController,
- // private msgSer: MessageService,
- private connectTask: ConnectTaskService,
- public accServ: AccountService
- ) {}
- get state() {
- let map: any = {
- REFUSE: {
- val: '勿扰',
- color: '#f1ac16',
- },
- ONLINE: {
- val: '在线',
- color: '#28bb50',
- },
- OFFLINE: {
- val: '离线',
- color: '#a1a1a1',
- },
- CONNECTING: {
- val: '忙线',
- color: '#cf1b24',
- },
- '': {
- val: '离线',
- color: '#a1a1a1',
- },
- };
- return map?.[this.userStatus] || map['OFFLINE'];
- }
- birthdat?: string;
- constellation?: string;
- ngOnInit() {
- this.activateRoute.paramMap.subscribe(async (params) => {
- let id: any = params.get('id');
- this.uid = id;
- await this.refresh();
- if (this.uid !== this.currentUser?.id) {
- this.userStatus = await this.connectTask.getState(this.uid, this.uid);
- } else {
- this.userStatus = 'ONLINE';
- }
- if (this.profile?.get('isCheck') && this.userStatus == 'ONLINE') {
- this.userStatus = 'REFUSE';
- }
- });
- }
- ngOnDestroy(): void {
- // if (!this.isLiveing && this.uid !== this.currentUser?.id) {
- // console.log('断开连接');
- // this.msgSer?.unsubscribeMessage(this.uid);
- // }
- }
- async refresh() {
- const loading = await this.loadingCtrl.create({
- message: '加载中',
- });
- loading.present();
- this.userVip = await this.accServ.getVip(this.uid)
- await this.getFriends();
- await this.getProfile();
- await this.getFollwState();
- let res = await this.aiChatServ.getFansAndFollow(this.uid);
- this.numsObject.fans = res.data[0].fans;
- this.numsObject.follow = res.data[0].follow;
- let res1 = await this.aiChatServ.getGiftLogCount(this.uid);
- this.numsObject.gift = res1.data[0].gift ?? 0;
- this.giftList = await this.aiChatServ.getGiftList(this.uid, 16);
- await this.getCommentLeng()
- this.browseLog()
- // this.getRoom();
- loading.dismiss();
- this.loading = false;
- }
- async getFriends() {
- let query1 = new Parse.Query('Friends');
- query1.equalTo('user', this.currentUser?.id);
- query1.equalTo('friend', this.uid);
- let query2 = new Parse.Query('Friends');
- query2.equalTo('user', this.uid);
- query2.equalTo('friend', this.currentUser?.id);
- let query = Parse.Query.or(query1, query2);
- query.notEqualTo('isDeleted', true);
- query.select('objectId', 'isPass', 'channel');
- this.friends = await query.first();
- }
- async getProfile() {
- let queryProfile = new Parse.Query('Profile');
- queryProfile.equalTo('user', this.uid);
- queryProfile.notEqualTo('isDeleted', true);
- queryProfile.include('user');
- let p = await queryProfile.first();
- this.profile = p;
- if (this.profile?.id) {
- this.user = this.profile?.get('user');
- } else {
- let queryUser = new Parse.Query('_User');
- queryUser.equalTo('objectId', this.uid);
- this.user = await queryUser.first();
- }
- this.birthdat = getBirthdatByIdNo(this.profile?.get('idcard') || '');
- this.constellation = getConstellation(this.profile?.get('idcard') || '');
- }
- async getCommentLeng(){
- let query = new Parse.Query('Room');
- query.equalTo('user', this.uid);
- query.notEqualTo('isDeleted', true);
- query.select('objectId');
- let r = await query.first();
- if(r?.id){
- this.room = r;
- // this.commentObj.score = await this.aiChatServ.getCommentScore(r?.id);
- let queryPost = new Parse.Query('DramaPostLog');
- queryPost.equalTo('room', r.id);
- queryPost.notEqualTo('isDeleted', true);
- queryPost.include('user');
- queryPost.descending('createdAt');
- queryPost.equalTo('isVerify',true)
- this.commentObj.count = await queryPost.count();
- queryPost.limit(10);
- this.commentObj.list = await queryPost.find();
- }
- console.log(this.commentObj);
- }
- /* 关注状态 */
- async getFollwState() {
- let query = new Parse.Query('ProfileRadar');
- query.equalTo('fromUser', this.currentUser?.id);
- query.equalTo('toUser', this.uid);
- query.notEqualTo('isDeleted', true);
- query.equalTo('name', '关注');
- let r = await query.first();
- this.isFollow = r?.id ? true : false;
- }
- // 生成浏览产品的浏览记录
- async browseLog() {
- let result = await this.judgeIsBrowse();
- let ProfileRadar, tool;
- if (result) {
- return;
- } else {
- // 创建一条浏览记录
- ProfileRadar = Parse.Object.extend('ProfileRadar');
- tool = new ProfileRadar();
- tool.set('name', '查看');
- tool.set('fromUser', {
- __type: 'Pointer',
- className: '_User',
- objectId: Parse.User.current()?.id,
- });
- tool.set('toUser', {
- __type: 'Pointer',
- className: '_User',
- objectId: this.user?.id,
- });
- tool.set('company', {
- __type: 'Pointer',
- className: 'Company',
- objectId: this.aiChatServ.company,
- });
- await tool.save();
- console.log('---创建了浏览历史记录---');
- }
- }
- // 根据点击查看记录半小时内是否有此浏览记录
- async judgeIsBrowse() {
- let ProfileRadar = new Parse.Query('ProfileRadar');
- ProfileRadar.equalTo('company', this.aiChatServ.company);
- ProfileRadar.equalTo('fromUser', Parse.User.current()?.id!);
- ProfileRadar.equalTo('toUser', this.user?.id,);
- ProfileRadar.greaterThanOrEqualTo(
- 'createdAt',
- new Date(new Date().getTime() - 1000 * 60 * 30)
- );
- ProfileRadar.equalTo('name', '查看');
- ProfileRadar.select('objectId');
- let result = await ProfileRadar.first();
- if (result) {
- return true;
- } else {
- return false;
- }
- }
- // async getRoom() {
- // let query = new Parse.Query('Room');
- // query.equalTo('company', this.aiChatServ.company);
- // query.equalTo('profile', this.profile?.id);
- // // query.equalTo('state', true);
- // query.notEqualTo('isDeleted', true);
- // query.select('objectId');
- // let r = await query.first();
- // this.room = r;
- // }
- /* 关注 */
- async onCollection() {
- let query = new Parse.Query('ProfileRadar');
- query.equalTo('toUser', this.uid);
- query.equalTo('fromUser', this.currentUser?.id);
- // query.notEqualTo('isDeleted', true);
- query.equalTo('name', '关注');
- let profileRadar = await query.first();
- if (!profileRadar?.id) {
- let radar = Parse.Object.extend('ProfileRadar');
- profileRadar = new radar();
- profileRadar?.set('toUser', {
- __type: 'Pointer',
- className: '_User',
- objectId: this.uid,
- });
- profileRadar?.set('company', {
- __type: 'Pointer',
- className: 'Company',
- objectId: this.currentUser?.get('company')?.id,
- });
- profileRadar?.set('fromUser', this.currentUser?.toPointer());
- profileRadar?.set('name', '关注');
- }
- profileRadar?.set('isDeleted', this.isFollow);
- await profileRadar?.save();
- this.isFollow = !this.isFollow;
- this.isFollow ? (this.numsObject.fans = Number(this.numsObject.fans) + 1) : (this.numsObject.fans = this.numsObject.fans - 1);
- }
- onShowImg(url: string) {
- this.currenImg = url;
- this.preview.show = 'inline-flex';
- }
- onShow() {
- if (this.uid == this.currentUser?.id) this.isOpen = true;
- }
- async onFriend() {
- if (this.friends?.id && !this.friends?.get('isPass')) {
- const toast = await this.toastController.create({
- message: '已申请,等待对方同意',
- color: 'warning',
- duration: 1500,
- });
- toast.present();
- return;
- }
- if (!this.friends?.id) {
- let obj = Parse.Object.extend('Friends');
- this.friends = new obj();
- this.friends?.set('user', this.currentUser?.toPointer());
- this.friends?.set('friend', this.user?.toPointer());
- this.friends?.set('company', this.aiChatServ.company);
- this.friends?.set('channel', this.user?.id + '-' + this.currentUser?.id);
- await this.friends?.save();
- const toast = await this.toastController.create({
- message: '已申请,等待对方同意',
- color: 'warning',
- duration: 1500,
- });
- toast.present();
- }
- }
- /* 更换背景 */
- async onSaveBackGround(e: any) {
- let url = e[0]?.url;
- console.log(url);
- if (!url) {
- const toast = await this.toastController.create({
- message: '请上传背景图片',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- return;
- }
- if (!this.profile?.id) {
- let obj = Parse.Object.extend('Profile');
- this.profile = new obj();
- this.profile?.set('mobile', Parse.User.current()?.get('mobile'));
- this.profile?.set('user', Parse.User.current()?.toPointer());
- this.profile?.set('company', {
- __type: 'Pointer',
- className: 'Company',
- objectId: this.aiChatServ.company,
- });
- }
- this.profile?.set('image', url);
- await this.profile?.save();
- const toast = await this.toastController.create({
- message: '保存成功',
- color: 'success',
- duration: 1000,
- });
- toast.present();
- this.isOpen = false;
- }
- onEdit() {
- this.router.navigate(['/user/setting'], {
- queryParams: {
- id: this.uid,
- },
- });
- }
- toMsg() {
- this.router.navigate(['live/chat/' + this.friends?.get('channel')]);
- }
- tourl(url:string, params:object){
- this.router.navigate([url,params]);
- }
- onSendGift() {
- console.log('点击送出礼物');
- // this.liveService.get_duration()
- }
- }
|