好友:初步申请到查看链
This commit is contained in:
+54
-5
@@ -1,5 +1,6 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { getFriendLvByExp } from '../pubUtils/data';
|
||||
|
||||
/**
|
||||
* 好友直接的亲密值
|
||||
@@ -28,15 +29,63 @@ export default class FriendShip extends BaseModel {
|
||||
refTime: Date;
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
frdValue: number; // 两人之间的亲密值
|
||||
friendValue: number; // 两人之间的亲密值
|
||||
|
||||
public get frdLv() { // 亲密等级
|
||||
return this.frdValue;
|
||||
public get friendLv() { // 亲密等级
|
||||
return getFriendLvByExp(this.friendValue);
|
||||
}
|
||||
|
||||
private static getRoleIds(roleIds: string[]) {
|
||||
roleIds.sort();
|
||||
return {
|
||||
roleIdA: roleIds[0],
|
||||
roleIdB: roleIds[1],
|
||||
roleIds: roleIds.join('|')
|
||||
}
|
||||
}
|
||||
|
||||
public static getRoleSendAndReceive(myRoleId: string, roleIds: string[], friendShip: FriendShipType) {
|
||||
let { roleIdA, roleIdB } = this.getRoleIds(roleIds);
|
||||
if (roleIdA == myRoleId) {
|
||||
return {
|
||||
sendHeart: friendShip.sendHeartCntA,
|
||||
beSentHeart: friendShip.sendHeartCntB,
|
||||
recieveHeart: friendShip.receiveHeartCntA,
|
||||
beReceivedHeart: friendShip.receiveHeartCntB
|
||||
}
|
||||
} else if (roleIdB == myRoleId) {
|
||||
return {
|
||||
sendHeart: friendShip.sendHeartCntB,
|
||||
beSentHeart: friendShip.sendHeartCntA,
|
||||
receiveHeart: friendShip.receiveHeartCntB,
|
||||
beReceivedHeart: friendShip.receiveHeartCntA
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// 创建
|
||||
public static async createFriendShip(roleIdList: string[]) {
|
||||
if (roleIdList.length != 2) return false;
|
||||
let { roleIdA, roleIdB, roleIds } = this.getRoleIds(roleIdList);
|
||||
console.log(roleIdA, roleIdB, roleIds)
|
||||
|
||||
const doc = new FriendShipModel();
|
||||
const update = Object.assign(doc.toJSON(), { roleIdA, roleIdB, roleIds });
|
||||
|
||||
const result: FriendShipType = await FriendShipModel.findOneAndUpdate({ roleIds }, update, { upsert: true, new: true }).lean();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async deleteAccount(roleId: string) {
|
||||
let result = await FriendShipModel.deleteMany({ $or: [{ roleIdA: roleId }, { roleIdB: roleId }] });
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
export const FriendShipModel = getModelForClass(FriendShip);
|
||||
|
||||
export interface FriendShipType extends Pick<DocumentType<FriendShip>, keyof FriendShip>{};
|
||||
export interface FriendShipType extends Pick<DocumentType<FriendShip>, keyof FriendShip> { };
|
||||
Reference in New Issue
Block a user