equip去redis化

This commit is contained in:
ciniao 2023-12-18 15:27:10 +08:00
parent 327f9c9b5a
commit dd34a1c3a4
8 changed files with 42 additions and 30 deletions

View File

@ -4,7 +4,7 @@ import { ReqGetList, ResGetList } from "../../shared/protocols/equip/PtlGetList"
export default async function (call: ApiCall<ReqGetList, ResGetList>) { export default async function (call: ApiCall<ReqGetList, ResGetList>) {
let list: ResGetList['list'] = {}; let list: ResGetList['list'] = {};
let kvList: k_v<RedisCollections2['equip']> = {}; //let kvList: k_v<RedisCollections2['equip']> = {};
let arrList = await G.mongodb.collection('equip').find({ uid: call.uid }).toArray(); let arrList = await G.mongodb.collection('equip').find({ uid: call.uid }).toArray();
let equipCon = G.gc.equip let equipCon = G.gc.equip
@ -12,7 +12,7 @@ export default async function (call: ApiCall<ReqGetList, ResGetList>) {
let maxequiplv = 0 let maxequiplv = 0
arrList.forEach(v => { arrList.forEach(v => {
let d = G.mongodb.conversionIdObj(v); let d = G.mongodb.conversionIdObj(v);
kvList[G.formatRedisKey(d._id)] = d; //kvList[G.formatRedisKey(d._id)] = d;
list[d._id] = d; list[d._id] = d;
if (v.lv > maxequiplv) maxequiplv = v.lv if (v.lv > maxequiplv) maxequiplv = v.lv
@ -24,7 +24,7 @@ export default async function (call: ApiCall<ReqGetList, ResGetList>) {
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({ uid: call.conn.uid, type: 'usertasklog' }, await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({ uid: call.conn.uid, type: 'usertasklog' },
{ $set: { maxequiplv: maxequiplv, equipcolor: color } }, { upsert: true }) { $set: { maxequiplv: maxequiplv, equipcolor: color } }, { upsert: true })
G.redis.set('equip', call.uid, kvList); //G.redis.set('equip', call.uid, kvList);
let recLshd = await G.mongodb.collection('playerInfo', 'lshd_equip').findOne({ uid: call.conn.uid, type: 'lshd_equip' }); let recLshd = await G.mongodb.collection('playerInfo', 'lshd_equip').findOne({ uid: call.conn.uid, type: 'lshd_equip' });
let { uid, _id, type, ...equips } = (recLshd || {}); let { uid, _id, type, ...equips } = (recLshd || {});

View File

@ -14,7 +14,7 @@ export default async function (call: ApiCall<ReqOneKeyWear, ResOneKeyWear, Servi
let wearNum = 0; let wearNum = 0;
let wearData = hero.equip || {}; let wearData = hero.equip || {};
let equipList = await G.redis.get('equip', call.conn.uid) || {}; let equipList = await EquipFun.getAllEquips(call);
let allEquip = Object.values(equipList); let allEquip = Object.values(equipList);
let heroIds = Object.values(call.conn.gud.heroPos).filter(i => !!i) let heroIds = Object.values(call.conn.gud.heroPos).filter(i => !!i)

View File

@ -11,7 +11,7 @@ import { PublicShared } from "../../shared/public/public";
export default async function (call: ApiCall<ReqStarUp, ResStarUp, ServiceType>) { export default async function (call: ApiCall<ReqStarUp, ResStarUp, ServiceType>) {
let equip = await G.redis.get('equip', call.uid, call.req.equipId); let equip = await EquipFun.getEquip(call, call.req.equipId);
if (!equip) return call.error(globalThis.lng.equip_1); if (!equip) return call.error(globalThis.lng.equip_1);
if (!G.gc.equipstar[equip.equipId]) return call.error(globalThis.lng.equip_4); if (!G.gc.equipstar[equip.equipId]) return call.error(globalThis.lng.equip_4);
@ -28,7 +28,7 @@ export default async function (call: ApiCall<ReqStarUp, ResStarUp, ServiceType>)
for (let _id of call.req.equipArr) { for (let _id of call.req.equipArr) {
//遍历客户端传过来的所有装备,如果不存在或处于穿戴中,则报错 //遍历客户端传过来的所有装备,如果不存在或处于穿戴中,则报错
let equip = await G.redis.get('equip', call.conn.uid, _id); let equip = await EquipFun.getEquip(call, _id);
if (!equip) return call.error(globalThis.lng.equip_6); if (!equip) return call.error(globalThis.lng.equip_6);
if (equip.wearaId) return call.error(globalThis.lng.equip_7); if (equip.wearaId) return call.error(globalThis.lng.equip_7);
equipArr.push(equip); equipArr.push(equip);

View File

@ -5,7 +5,7 @@ import { ServiceType } from '../../shared/protocols/serviceProto';
import kfjsFun from "../../public/kaifujingsai"; import kfjsFun from "../../public/kaifujingsai";
export default async function (call: ApiCall<ReqTakeOff, ResTakeOff, ServiceType>) { export default async function (call: ApiCall<ReqTakeOff, ResTakeOff, ServiceType>) {
let equip = await G.redis.get('equip', call.conn.uid, call.req.equipId); let equip = await EquipFun.getEquip(call, call.req.equipId);
if (!equip) return call.error(globalThis.lng.equip_1); if (!equip) return call.error(globalThis.lng.equip_1);
if (!equip.wearaId) return call.error(globalThis.lng.equip_9); if (!equip.wearaId) return call.error(globalThis.lng.equip_9);

View File

@ -12,7 +12,7 @@ export default async function (call: ApiCall<ReqWear, ResWear, ServiceType>) {
if (!hero) return call.error(globalThis.lng.equip_10); if (!hero) return call.error(globalThis.lng.equip_10);
if (hero.lv < G.gc.herocom.equipOpenLv) return call.error(`英雄${G.gc.herocom.equipOpenLv}级开启`); if (hero.lv < G.gc.herocom.equipOpenLv) return call.error(`英雄${G.gc.herocom.equipOpenLv}级开启`);
let equip = await G.redis.get('equip', call.conn.uid, call.req.equipId); let equip = await EquipFun.getEquip(call, call.req.equipId);
if (!equip) return call.error(globalThis.lng.equip_1); if (!equip) return call.error(globalThis.lng.equip_1);
if (equip.wearaId == hero._id) return call.error(globalThis.lng.equip_11); if (equip.wearaId == hero._id) return call.error(globalThis.lng.equip_11);

View File

@ -27,9 +27,9 @@ export class EquipFun {
Object.assign(equip, change); Object.assign(equip, change);
for (let k in change) { // for (let k in change) {
G.redis.set('equip', call.uid, equip._id, k as keyof CollectionEquip, change[k]); // G.redis.set('equip', call.uid, equip._id, k as keyof CollectionEquip, change[k]);
} // }
G.mongodb.collection('equip').updateOne({uid: call.uid, _id: new ObjectId(equip._id)}, {$set: {...change}}); G.mongodb.collection('equip').updateOne({uid: call.uid, _id: new ObjectId(equip._id)}, {$set: {...change}});
call.addEventMsg('msg_s2c/EquipChange', equip._id, change); call.addEventMsg('msg_s2c/EquipChange', equip._id, change);
} }
@ -37,24 +37,37 @@ export class EquipFun {
/** /**
* *
*/ */
static async getEquip(call: ApiCall, oid: string): Promise<CollectionEquip>; static async getEquip(call: ApiCall, oid?: string): Promise<CollectionEquip>;
static async getEquip(call: ApiCall, oid: string[]): Promise<CollectionEquip[]>; static async getEquip(call: ApiCall, oid?: string[]): Promise<CollectionEquip[]>;
static async getEquip(call: ApiCall, oid: string | string[]) { static async getEquip(call: ApiCall, oid?: string | string[]) {
if (typeof oid == 'string') { if (typeof oid == 'string') {
let data = await G.redis.get('equip', call.uid, oid);
if (!data) {
let {_id, ...info} = await G.mongodb.collection('equip').findOne({ let {_id, ...info} = await G.mongodb.collection('equip').findOne({
_id: G.mongodb.conversionId(oid) _id: G.mongodb.conversionId(oid)
}) })
data = Object.assign({_id: _id.toHexString()}, info) let data = Object.assign({_id: _id.toHexString()}, info)
}
return data return data
} else { } else {
let equips = await G.mongodb.collection('equip').find({ let filter = {
uid: call.uid, uid: call.uid,
_id: {$in: oid.map(v => G.mongodb.conversionId(v))} }
}).toArray(); if(oid && oid.length > 0){
filter['_id'] = {$in: oid.map(v => G.mongodb.conversionId(v))}
}
let equips = await G.mongodb.collection('equip').find(filter).toArray();
return equips.map(v => G.mongodb.conversionIdObj(v)); return equips.map(v => G.mongodb.conversionIdObj(v));
} }
} }
/**
*
* redis返回的格式
*/
static async getAllEquips(call: ApiCall):Promise<k_v<CollectionEquip>>{
let res = {};
let equips:CollectionEquip[] = await this.getEquip(call,[]);
equips.map(v => {
res['_'+v._id] = v;
});
return res;
}
} }

View File

@ -350,10 +350,10 @@ export class PlayerFun {
let id = result.insertedIds[key].toHexString(); let id = result.insertedIds[key].toHexString();
let {_id, ...ops} = v; let {_id, ...ops} = v;
G.redis.set('equip', call.uid, id, { // G.redis.set('equip', call.uid, id, {
_id: id, // _id: id,
...ops // ...ops
}); // });
Wjjl.setVal(call.uid, `has_equip_color_${G.gc.equip[ops.equipId].colour}`, 1, false); Wjjl.setVal(call.uid, `has_equip_color_${G.gc.equip[ops.equipId].colour}`, 1, false);

View File

@ -76,8 +76,7 @@ async function clearRedis() {
G.redis.fromatKey('user'), G.redis.fromatKey('user'),
G.redis.fromatKey('item'), G.redis.fromatKey('item'),
G.redis.fromatKey('hero'), G.redis.fromatKey('hero'),
G.redis.fromatKey('equip'),
//G.redis.fromatKey('equip'),
//G.redis.fromatKey('shiwu'), //G.redis.fromatKey('shiwu'),
//G.redis.fromatKey('gbtx'), //G.redis.fromatKey('gbtx'),
//G.redis.fromatKey('dxlt'), //G.redis.fromatKey('dxlt'),