init
This commit is contained in:
parent
6ea5b82629
commit
d8f8aaa8d1
@ -1,20 +0,0 @@
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {ReqOpen, ResOpen} from "../../../shared/protocols/event/zhoumolibao/PtlOpen";
|
||||
import {PayFun} from "../../../public/pay";
|
||||
import {HuoDongFun} from "../../../public/huodongfun";
|
||||
|
||||
|
||||
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
|
||||
let data = await G.mongodb.cEvent('zhoumolibao').findOne({uid: call.uid, type: 'zhoumolibao'})
|
||||
|
||||
let _hd = (await HuoDongFun.gethdList(call, 9))[0]
|
||||
|
||||
let payIds = _hd?.data?.gift?.filter(i => i.payId)?.map(i => i.payId)
|
||||
|
||||
call.succ({
|
||||
record: data?.record || {},
|
||||
buyLog: await PayFun.getPayLogs(call.uid, payIds)
|
||||
})
|
||||
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
import {ApiCall} from "tsrpc";
|
||||
import {ReqReceive, ResReceive} from "../../../shared/protocols/event/zhoumolibao/PtlReceive";
|
||||
import {HuoDongFun} from "../../../public/huodongfun";
|
||||
import {PlayerFun} from "../../../public/player";
|
||||
|
||||
export default async function (call: ApiCall<ReqReceive, ResReceive>) {
|
||||
// 查询活动是否有当前领奖的免费选项
|
||||
let _hd = (await HuoDongFun.gethdList(call, 9))[0]
|
||||
let gift = _hd?.data?.gift?.find(i => i.free && i.id == call.req.id)
|
||||
if (!gift) return call.errorCode(-1)
|
||||
|
||||
// 取奖励列表,判断是否有可领取奖励
|
||||
let data = await G.mongodb.cEvent('zhoumolibao').findOne({uid: call.uid, type: 'zhoumolibao'})
|
||||
let rec = data.record[call.req.id]
|
||||
if (rec && rec >= gift?.buyNum) return call.errorCode(-2)
|
||||
|
||||
await PlayerFun.sendPrize(call, gift.prize);
|
||||
|
||||
await G.mongodb.cEvent('zhoumolibao').updateOne({uid: call.uid, type: 'zhoumolibao'}, {
|
||||
$inc: {[`record.${gift.id}`]: 1}
|
||||
},{ upsert: true })
|
||||
|
||||
call.succ({})
|
||||
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqDazao, ResDazao } from "../../shared/protocols/weixiuchang/PtlDazao";
|
||||
import { PlayerFun } from "../../public/player";
|
||||
import { PublicShared } from '../../shared/public/public';
|
||||
|
||||
export default async function (call: ApiCall<ReqDazao, ResDazao>) {
|
||||
let [id, num] = [call.req.id, call.req.num];
|
||||
|
||||
let dzConf = G.gc.weixiuchang_dz[id];
|
||||
if (!dzConf) {
|
||||
return call.error(globalThis.lng.weixiuchang_1);
|
||||
}
|
||||
let need = [].concat(dzConf.item).map(v => { return { ...v, n: v.n * num }; });
|
||||
await PlayerFun.checkNeedIsMeet(call, need);
|
||||
let prize = [];
|
||||
for (let i = 0; i < num; i++) {
|
||||
prize = prize.concat(PublicShared.randomDropGroup(PublicShared.randomNum(0, 1) < dzConf.success ? dzConf.target : dzConf.lose));
|
||||
}
|
||||
prize = PublicShared.mergePrize(prize);
|
||||
await PlayerFun.cutNeed(call, need);
|
||||
await PlayerFun.addItem(call, prize);
|
||||
call.succ({ prize: prize });
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
import { ApiCall } from "tsrpc";
|
||||
import { ReqZuzhuang, ResZuzhuang } from "../../shared/protocols/weixiuchang/PtlZuzhuang";
|
||||
import { PlayerFun } from "../../public/player";
|
||||
|
||||
export default async function (call: ApiCall<ReqZuzhuang, ResZuzhuang>) {
|
||||
let data = call.conn.gud.wxcLv;
|
||||
let conf = G.gc.weixiuchang_zz[data.lv + 1];
|
||||
let req = call.req;
|
||||
let newdata = { ...data };
|
||||
|
||||
if (req.type == 'sx') {
|
||||
// 安装零部件
|
||||
if (data.ids.length == conf.need.length) return call.error('', { code: -1, message: globalThis.lng.shiwu_6 });
|
||||
if (typeof req.idx != 'number') return call.error('', { code: -2, message: globalThis.lng.shiwu_6 });
|
||||
if (data.ids.includes(req.idx)) return call.error('', { code: -3, message: globalThis.lng.weixiuchang_2 });
|
||||
let need = req.cutneed == 0 ? [conf.need[req.idx]] : [].concat(conf.need2[req.idx] || conf.need2[0]).map(v => { return { ...v, n: v.n * conf.need[req.idx].n }; });
|
||||
let isMeet = await PlayerFun.checkNeedIsMeet(call, need);
|
||||
if (!isMeet.isOk) return call.error('', { code: -4, message: '材料不足' });
|
||||
await PlayerFun.cutNeed(call, need);
|
||||
newdata.ids.push(req.idx);
|
||||
} else {
|
||||
// 升星 or 进阶
|
||||
if (data.ids.length != conf.need.length) return call.error('', { code: -1, message: globalThis.lng.shiwu_6 });
|
||||
newdata.ids.length = 0;
|
||||
newdata.lv += 1;
|
||||
}
|
||||
await PlayerFun.addAttr(call, { wxcLv: newdata });
|
||||
call.succ({});
|
||||
}
|
@ -9,7 +9,7 @@ async function connGameLogDB() {
|
||||
}else{
|
||||
logDBUrl = "mongodb://root:lyMaple525458@10.0.1.20:27017/heijiao_gamelog?authSource=admin";
|
||||
}
|
||||
let client = await MongoClient.connect(logDBUrl,{maxPoolSize:10});
|
||||
let client = await MongoClient.connect(logDBUrl);
|
||||
logDB = client.db(`gameLog${G.config.serverId}`);
|
||||
return logDB;
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ import {ResOpen as ResOpenZhanLing} from '../shared/protocols/event/zhanling/Ptl
|
||||
import {ResOpen as ResOpenZhoulibao} from '../shared/protocols/event/zhoulibao/PtlOpen';
|
||||
import {ResOpen as ResOpenZixuanlibao} from '../shared/protocols/event/zixuanlibao/PtlOpen';
|
||||
import {ResOpen as ResOpenKaifujingsai} from '../shared/protocols/kaifujingsai/PtlOpen';
|
||||
import {ResOpen as ResOpenZhoumolibao} from '../shared/protocols/event/zhoumolibao/PtlOpen';
|
||||
|
||||
export type eventType = {
|
||||
shouchong: {
|
||||
@ -46,8 +45,7 @@ export type eventType = {
|
||||
xianshizhaomu: ResOpenXianshizhaomu & { refreshTime: number; };
|
||||
qirichongzhi: Omit<ResOpenQirichongzhi, 'finished'>;
|
||||
jierihuodong: Omit<ResOpenJierihuodong, 'taskFinish'> & { refreshTime: number; };
|
||||
kaifujingsai: ResOpenKaifujingsai;
|
||||
zhoumolibao: ResOpenZhoumolibao;
|
||||
kaifujingsai: ResOpenKaifujingsai
|
||||
} & {
|
||||
[k: `${number}jijin`]: ResOpenYuedujijin;
|
||||
[k: `yangchengmubiao${number}`]: yangchengmubiao;
|
||||
|
@ -37,7 +37,6 @@ export class HuoDongFun {
|
||||
let openTime = PublicShared.getToDayZeroTime(G.openTime)
|
||||
let _sDay = Number((G.time - openTime) / 86400)
|
||||
|
||||
// ttype为0 根据开服时间计算,ttype为1,根据用户注册时间计算
|
||||
let _where = {
|
||||
$or: [
|
||||
{
|
||||
|
@ -5,7 +5,6 @@ import {
|
||||
IndexDescription,
|
||||
IndexSpecification,
|
||||
MongoClient,
|
||||
MongoClientOptions,
|
||||
ObjectId,
|
||||
OptionalId
|
||||
} from 'mongodb';
|
||||
@ -17,7 +16,6 @@ import {MongodbCollections} from './module/mongodb';
|
||||
import {HuoDongFun} from './public/huodongfun';
|
||||
import {zbsGroup} from './api_s2c/hbzb/zbs/fun';
|
||||
import {clusterRunOnce} from './clusterUtils';
|
||||
import { PublicShared } from './shared/public/public';
|
||||
|
||||
const indexs: Partial<{ [k in keyof MongodbCollections]: IndexDescription[] }> = {
|
||||
item: [
|
||||
@ -351,37 +349,9 @@ const indexs: Partial<{ [k in keyof MongodbCollections]: IndexDescription[] }> =
|
||||
};
|
||||
|
||||
const crossIndexs: Partial<{ [k in keyof MongodbCollections]: IndexDescription[] }> = {
|
||||
email: [
|
||||
{
|
||||
key: {sid: 1}
|
||||
},
|
||||
{
|
||||
key: {uid: 1}
|
||||
}
|
||||
],
|
||||
fightLog: [
|
||||
{
|
||||
key: {uid: 1, type: 1}
|
||||
},
|
||||
{
|
||||
key: {uid: 1}
|
||||
},
|
||||
{
|
||||
key: {ttl: 1}, expireAfterSeconds: 7 * 24 * 3600
|
||||
}
|
||||
],
|
||||
hbzb_user_cross: [
|
||||
{
|
||||
key: {uid: 1}, unique: true
|
||||
},
|
||||
{
|
||||
key: {jifen: 1}
|
||||
},
|
||||
{
|
||||
key: {rank: 1}
|
||||
},
|
||||
{
|
||||
key: {zbsgroup: 1}
|
||||
}
|
||||
],
|
||||
hbzb_user_zbs: [
|
||||
@ -407,52 +377,13 @@ const crossIndexs: Partial<{ [k in keyof MongodbCollections]: IndexDescription[]
|
||||
rankList: [
|
||||
{
|
||||
key: {type: 1, idKey: 1}, unique: true
|
||||
},
|
||||
{
|
||||
key: {valArr: -1}
|
||||
},
|
||||
],
|
||||
wzry_fight: [
|
||||
{
|
||||
key: {jifen: 1}
|
||||
},
|
||||
{
|
||||
key: {uid: 1}
|
||||
},
|
||||
{
|
||||
key: {zkey: 1}
|
||||
},
|
||||
],
|
||||
wzry_user_cross: [
|
||||
{
|
||||
key: {jifen: 1}
|
||||
},
|
||||
{
|
||||
key: {uid: 1}
|
||||
},
|
||||
{
|
||||
key: {zkey: 1}
|
||||
},
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
export async function initMongoDB() {
|
||||
//mongodb连接数说明:https://blog.csdn.net/for_cxc/article/details/116859714
|
||||
//可结合查看:node_modules\mongodb\lib\connection_string.js
|
||||
//maxPoolSize默认值:100
|
||||
|
||||
let option:MongoClientOptions;
|
||||
//跨服只有1个,直接采用默认配置就行
|
||||
if(G.argv.serverType != 'cross'){
|
||||
if(PublicShared.getOpenServerDay() > 3){
|
||||
option = {
|
||||
maxPoolSize: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log('connect mongodb ......');
|
||||
let client = await MongoClient.connect(G.argv.serverType == 'cross' ? G.config.crossMongodbUrl : G.config.mongodbUrl, option);
|
||||
let client = await MongoClient.connect(G.argv.serverType == 'cross' ? G.config.crossMongodbUrl : G.config.mongodbUrl);
|
||||
G.mongodb = new _mongodb(client.db(G.config.dbName || ''));
|
||||
console.log('connect mongodb succ');
|
||||
|
||||
@ -460,9 +391,7 @@ export async function initMongoDB() {
|
||||
if (G.argv.serverType != 'cross') {
|
||||
console.log('connect crossmongodb ......');
|
||||
//本服里,维持住跟跨服数据库的链接
|
||||
let crossClient = await MongoClient.connect(G.config.crossMongodbUrl,{
|
||||
maxPoolSize:10
|
||||
});
|
||||
let crossClient = await MongoClient.connect(G.config.crossMongodbUrl);
|
||||
G.crossmongodb = new _mongodb(crossClient.db(G.config.corssDBName || ""));
|
||||
console.log('connect crossmongodb succ');
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
|
||||
/**
|
||||
* 周末礼包
|
||||
*/
|
||||
export type ReqOpen = {
|
||||
|
||||
};
|
||||
|
||||
export type ResOpen = {
|
||||
record:{
|
||||
[k: string]: number;
|
||||
}
|
||||
buyLog:{
|
||||
[k: string]: number;
|
||||
}
|
||||
};
|
@ -1,10 +0,0 @@
|
||||
/**
|
||||
* 周末礼包领奖
|
||||
*/
|
||||
export interface ReqReceive {
|
||||
id: string
|
||||
}
|
||||
|
||||
export interface ResReceive {
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,9 +0,0 @@
|
||||
import { prizeType } from "../type";
|
||||
|
||||
export type ReqDazao = {
|
||||
id: number,
|
||||
num: number
|
||||
}
|
||||
export type ResDazao = {
|
||||
prize: prizeType[];
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
export type ReqZuzhuang = {
|
||||
/**sx:安装零部件 jj:进阶or升星 */
|
||||
type: 'sx' | 'jj';
|
||||
/**0 材料消耗 1 购买消耗 */
|
||||
cutneed?: 0 | 1;
|
||||
idx?: number;
|
||||
};
|
||||
|
||||
export type ResZuzhuang = {
|
||||
|
||||
};
|
Loading…
Reference in New Issue
Block a user