| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765 |
- 'use strict';
- var quick = require('quick-pomelo');
- var P = quick.Promise;
- var _ = require('lodash');
- var url = require('url');
- var md5 = require('md5');
- var http = require('http');
- var uuid = require('node-uuid');
- var qs = require('querystring');
- var conf = require('./conf.json');
- var C = require('../share/constant');
- var configCommon = require('../share/configCommon');//////TL++配置相关的公共方法
- var logger = quick.logger.getLogger('fhmj', __filename);
- // 构造方法
- var Controller = function (app) {
- this.app = app;
- this.uptime = Date.now();
- this.port = app.getCurServer().httpPort;
- this.server = http.createServer((req, res) => this.handleAsync(req, res));
- this.server.listen(this.port);
- this.lconfigCommon = new configCommon(this.app);
- };
- // 导出方法
- module.exports = function (app) {
- return new Controller(app);
- };
- // 原型对象
- var proto = Controller.prototype;
- // 路由函数
- proto.route = function (pathname) {
- switch (pathname) {
- case '/setmyurl.nd': return (query, method, res) => this.setMyUrlAsync(query, method, res);//设置Grade url
- case '/setAllAgenterMyurl.nd': return (query, method, res) => this.setAllAgenterMyurlAsync(query, method, res);//设置所有推广的地址
- case '/setAgenterMyurl.nd': return (query, method, res) => this.setAgenterMyurlAsync(query, method, res);//设置单个推广的地址
- case '/setAgentOther.nd': return (query, method, res) => this.setAgentOtherAsync(query, method, res);//设置单个推广的其他信息
- case '/adddiamond.nd': return (query, method, res) => this.addDiamondAsync(query, method, res);//后台加钻石
- case '/clearUser.nd': return (query, method, res) => this.clearUserAsync(query, method, res);//删除用户
- case '/freetable.nd': return (query, method, res) => this.freeTableAsync(query, method, res);//清空房间
- case '/setPlayerPayTop.nd': return (query, method, res) => this.setPlayerPayTopAsync(query, method, res);//设置玩家充值上限
- case '/setWeiHu.nd': return (query, method, res) => this.setWeiHuAsync(query, method, res);//设置维护
- case '/setPlayerEnable.nd': return (query, method, res) => this.setPlayerEnableAsync(query, method, res);//设置用户是否冻结
- case '/setAgentInfo.nd': return (query, method, res) => this.setAgentInfoAsync(query, method, res);//设置推广信息(java后台用)
- case '/addMail.nd': return (query, method, res) => this.addMailAsync(query, method, res);//后台给玩家发邮件
- case '/sidAridChange.nd': return (query, method, res) => this.sidAridChangeAsync(query, method, res);//显示uid和实际uid互相转换
- case '/addRaceTime.nd': return (query, method, res) => this.addRaceTimeAsync(query, method, res);//后台增加比赛的开始和结束时间
- case '/setRaceTimeOut.nd': return (query, method, res) => this.setRaceTimeOutAsync(query, method, res);//后台设置比赛是否过期
- case '/setNotGameTogther.nd': return (query, method, res) => this.setNotGameTogtherAsync(query, method, res);//后台增设置不能在同一桌游戏的玩家
- case '/setJinSai.nd': return (query, method, res) => this.setJinSaiAsync(query, method, res);//设置禁赛玩家
- case '/setSGJiangChi.nd': return (query, method, res) => this.setSGJiangChiAsync(query, method, res);//设置水果机奖池信息
- case '/getSGATypeAll.nd': return (query, method, res) => this.getSGATypeAllAsync(query, method, res);//得到水果机某个字段的总和
- case '/sgjRWFJOver.nd': return (query, method, res) => this.sgjRWFJOverAsync(query, method, res);//水果机任务发奖完成
- }
- };
- // 写出数据
- proto.writeOut = function (query, res) {
- if (typeof query != 'object') {
- return res.end(String(query));
- }
- return res.end(JSON.stringify(query));
- };
- // 跨域选项
- const ACCESS = {
- "Content-Type": "text/plain;charset=utf-8",
- "Access-Control-Allow-Origin": "*",
- "Access-Control-Allow-Headers": "X-Requested-With",
- "Access-Control-Allow-Methods": "PUT,POST,GET,DELETE,OPTIONS"
- };
- // 入口函数
- proto.handleAsync = P.coroutine(function* (req, res) {
- var pathname = url.parse(req.url).pathname;
- var phandler = this.route(pathname);
- if (!phandler) {
- res.writeHead(404, ACCESS);
- return res.end('WARNING: Not Found!');
- }
- else {
- res.writeHead(200, ACCESS);
- if (req.method.toLowerCase() == 'get') {
- let query = url.parse(req.url, true).query;
- return phandler(query, req.method, res);
- }
- else if (req.method.toLowerCase() == 'post') {
- let data = '';
- req.on('data', (d) => { data += d; });
- req.on('end', () => {
- let query = { __post__: data };
- let regexp = /^\s*{(\s*?".*?":.*\s*)*}\s*$/;
- if (regexp.test(data)) try { query = JSON.parse(data); } catch (e) { }
- else if (data.indexOf('=') != -1) query = qs.parse(data);
- return phandler(query, req.method, res);
- });
- }
- }
- });
- //ts++ 设置 grade myurl
- proto.setMyUrlAsync = P.coroutine(function* (query, method, res) {
- var playerId = query['playerid'];
- if (!playerId) {
- return this.writeOut('fail: userid error!', res);
- }
- var grade = Number(query['grade']);
- if (!grade) {
- return this.writeOut('fail: grade error!', res);
- }
- var myurl = query['myurl'];
- if (!myurl) {
- return this.writeOut('fail: myurl error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- var player = yield app.models.Player.findByIdAsync(playerId, 'grade myurl');
- if (player) {
- player.grade = grade;
- player.myurl = myurl;
- yield player.saveAsync();
- console.warn("设置设置 grade -------------------修改");
- }
- return self.writeOut('vvvvvv', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //设置所有推广的地址
- proto.setAllAgenterMyurlAsync = P.coroutine(function* (query, method, res) {
- console.warn("设置所有推广的地址 ");
- var playerId = query['mid'];
- if (!playerId) {
- return this.writeOut('fail: userid error!', res);
- }
- var myurl = query['myurl'];
- if (!myurl) {
- return this.writeOut('fail: myurl error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- console.warn("设置所有推广的地址222 "+" playerId "+playerId+" myurl "+myurl);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- let msg = '999999'
- console.warn("设置所有推广的地址222 ")
- // //yield app.models.Agenter.updateMany({update: {$set: {myGrade:2}}, upsert:true})
- // let agentArr = yield app.models.Agenter.findMongoAsync({"myGrade" :{$ne :1}});
- // console.warn("设置所有推广的地址3 "+JSON.stringify(agentArr));
- // console.warn("设置所有推广的地址333 "+agentArr.length);
- let agentArr = yield app.models.Agenter.findMongoAsync({"myUrl" :{$ne :myurl}});
- // console.warn("设置所有推广的地址31 "+JSON.stringify(agentArr));
- // console.warn("设置所有推广的地址3331 "+agentArr.length);
- for (var i = 0; i < agentArr.length; i++) {
- let agenter = agentArr[i];
- if (agenter) {
- // agenter.grade = grade;
- let isChange = (agenter.myUrl != myurl)
- if(isChange){
- agenter.myUrl = myurl;
- yield agenter.saveAsync();
- }
- console.warn("设置所有推广的地址444 isChange "+isChange+" agenter.myUrl "+agenter.myUrl);
- }
- }
- if(agentArr.length == 0) msg = 'no need change';
- console.warn("设置所有推广的地址555 ");
- return self.writeOut(msg, res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //设置单个推广的地址
- proto.setAgenterMyurlAsync = P.coroutine(function* (query, method, res) {
- // console.warn("设置单个推广的地址 ");
- var playerId = query['aid'];
- if (!playerId) {
- return this.writeOut('fail: userid error!', res);
- }
- var type = Number(query['type']);
- if (!type) {
- return this.writeOut('fail: type error!', res);
- }
- var myurl = query['myurl'];
- if (type == 1 && !myurl) {
- return this.writeOut('fail: myurl error!', res);
- }
- var level = query['level'];
- if (type == 2 && !level) {
- return this.writeOut('fail: level error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- // console.warn("设置单个推广的地址222 "+" playerId "+playerId+" type "+type+" myurl "+myurl+" level "+level);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- let msg = ''
- // console.warn("设置单个推广的地址333 ");//Agenter
- var player = yield app.models.Agenter.findByIdAsync(playerId, 'myUrl');
- if (player) {
- // player.grade = grade;
- let isChange = false;
- if(type == 1) {
- isChange = (player.myUrl != myurl)
- player.myUrl = myurl;
- }
- if(isChange) yield player.saveAsync();
- msg = '999999'
- // console.warn("设置单个推广的地址444 isChange "+isChange+" player.myUrl "+player.myUrl);
- }
- else msg = 'agent not find'
- // console.warn("设置单个推广的地址555 ");
- return self.writeOut(msg, res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //设置单个推广的其他信息
- proto.setAgentOtherAsync = P.coroutine(function* (query, method, res) {
- // console.warn("设置单个推广的信息 ",query);
- var playerId = query['aid'];
- if (!playerId) {
- return this.writeOut('fail: userid error!', res);
- }
- var change = query['change'];
- if (!change) {
- return this.writeOut('fail: change error!', res);
- }
- var value = query['value'];
- if(change != "parentAgenterId" && change != "playerId"){
- value = Number(value);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- // console.warn("设置单个推广的地址222 "+" playerId "+playerId+" change "+change+" value "+value);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- let msg = ''
- // console.warn("设置单个推广的地址333 ");//Agenter
- var player = yield app.models.Agenter.findByIdAsync(playerId, 'levelFlag');
- if (player) {
- let isChange = false;
- if(change == "levelFlag" && player.levelFlag != value)
- {
- isChange=true;
- player.levelFlag = value;
- }
- if(change == "enabled" && (value == 0 || value == 1 ) && player.enabled!=value)
- {
- isChange=true;
- player.enabled = value;
- }
- if(change == "parentAgenterId")
- {
- if(!value){
- if(player.parentAgenterId != ""){
- player.parentAgenterId = "";
- yield player.saveAsync();
- return self.writeOut('999999', res);
- }
- else{
- return self.writeOut('no need change.', res);
- }
- }
- let agenterList = yield app.models.Agenter.findMongoAsync({agentNo:value}, '_id agenterNo levelFlag enabled parentAgenterId');
- if (agenterList.length == 1) {
- if(agenterList[0].levelFlag != 2 || agenterList[0].enabled == 0){
- return self.writeOut('cant add the agent because unenable or level error!', res);
- }
- if(player.parentAgenterId != agenterList[0]._id){
- isChange=true;
- player.parentAgenterId = agenterList[0]._id;
- }
- else{
- return self.writeOut('parent no change !', res);
- }
- }
- else{
- return self.writeOut('agentNo Error!', res);
- }
- }
- if(isChange) yield player.saveAsync();
- msg = '999999'
- // console.warn("设置单个推广的地址444 isChange "+isChange+" player.myUrl "+player.myUrl);
- }
- else msg = 'agent not find'
- // console.warn("设置单个推广的地址555 ");
- return self.writeOut(msg, res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //ts++ 删除玩家
- proto.clearUserAsync = P.coroutine(function* (query, method, res) {
- console.warn("删除玩家-------------------");
- var playerId = query['playerid'];
- if (!playerId) {
- return this.writeOut('', res);//fail: userid error!
- }
- //console.warn("删除玩家-------------------playerId:",playerId);
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- var player = yield app.models.Player.findByIdAsync(playerId);
- if (player) {
- yield player.removeAsync();
- console.warn("删除玩家-------------------成功");
- return self.writeOut('999999', res);
- }
- return self.writeOut('fail: no object !', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //ts++ 清空房间
- proto.freeTableAsync = P.coroutine(function* (query, method, res) {
- // console.warn("清空房间-------------------");
- var playerId = query['playerId'];
- if (!playerId) {
- return this.writeOut('fail: playerId error!', res);//fail: userid error!
- }
- var change = query['change'];
- if (!change) {
- return this.writeOut('fail: change error!', res);
- }
- console.warn("清空房间-------------------playerId:",playerId,change);
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- //console.warn("清空房间-------------------sign:",sign);
- if (!checkSign(sign)) {
- return this.writeOut('', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- var player = yield app.models.Player.findByIdAsync(playerId, 'tableId rTableId gameId gameServerId tel pwd');
- if (player) {
- if(change == "freeTable"){
- player.rTableId = 0;
- player.tableId = "";
- player.gameId = 0;
- player.gameServerId = "";
- }
- else if(change == "unbindTel"){
- player.tel = '';
- player.pwd = '';
- }
- yield player.saveAsync();
- console.warn("清空房间-------------------修改成功");
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //////TL++,设置玩家充值上限
- proto.setPlayerPayTopAsync = P.coroutine(function* (query, method, res) {
- console.warn("设置玩家充值上限-------------------",query);
- var uppid = query['uppid'];
- if (!uppid) {
- return this.writeOut('fail: uppid error!', res);
- }
- var value = Number(query['value']) || -10;
- if(query['value'] == "0") value = 0;
- if (value < -1) {
- return this.writeOut('fail: value error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!!!', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- let wjsx = yield app.models.PayLimit.findByIdAsync(uppid, 'paytop registerTime');
- if (wjsx) {
- wjsx.paytop = value;
- wjsx.registerTime = Date.now();
- yield wjsx.saveAsync();
- console.warn("设置玩家充值上限成功-------------------uppid:",uppid,value);
- }
- else
- {
- var player = yield app.models.Player.findByIdAsync(uppid, 'userId name');
- if (!player) {
- return this.writeOut('fail: no object !', res);
- }
- let startTime = self.getzdLDSJC(Date.now());
- let jrzcz = 0;
- var endTime = startTime + 86400000;
- var opts = { time: { $gte: startTime, $lt: endTime },playerId: uppid, paystate: { $gte: 1 }};
- var list = yield app.models.PayRecord.findMongoAsync(opts, 'total_fee');
- for (let i = 0; i < list.length; ++i) {
- jrzcz += list[i].total_fee;
- }
- var newwjsx = new app.models.PayLimit({
- _id: uppid,
- userId: player.userId,
- name: player.name,
- paytop: value,
- paytotal: jrzcz,
- dataTime: startTime,
- });
- yield newwjsx.saveAsync();
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //////TL++,设置维护
- proto.setWeiHuAsync = P.coroutine(function* (query, method, res) {
- console.warn("设置维护-------------------",query);
- // var playerId = query['playerid'];
- // if (!playerId) {
- // return this.writeOut('fail: userid error!', res);
- // }
- var updid = Number(query['updid']);
- var value = query['value'];
- if (!value) {
- return this.writeOut('fail: value error!', res);
- }
- if(updid==1)
- {
- let stateWH = Number(value)||0;
- if (stateWH!=0 && stateWH!=1 && stateWH!=2) {
- return this.writeOut('fail: stateWH error!!!', res);
- }
- }
- else if(updid==2)
- {
- }
- else if(updid==3)
- {
- let rebaterate = Number(value)||0
- if (rebaterate < 0 || rebaterate > 100) {
- return this.writeOut('fail: rebaterate error!', res);
- }
- }
- else if(updid==4){
- }
- else if(updid==5){
- let yxndlbTime = Number(value)||0
- if (yxndlbTime <= 0) {
- return this.writeOut('fail: yxndlbTime error!', res);
- }
- }
- else if(updid==6){
- }
- else
- {
- return this.writeOut('fail: updid error!!!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- //console.warn("清空房间-------------------sign:",sign);
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!!!', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- var dataSystemConfig = yield app.models.WHstate.findByIdAsync('wh', 'stateWH whTip rebaterate shareGive yxndlbTime yxndlbTip');
- //console.warn("系统配置",dataSystemConfig);
- if (dataSystemConfig) {
- if(updid==1)
- {
- let stateWH = Number(value)||0;
- dataSystemConfig.stateWH = stateWH;
- }
- else if(updid==2)
- {
- dataSystemConfig.whTip = value;
- }
- else if(updid==3)
- {
- let rebaterate = Number(value)||0
- dataSystemConfig.rebaterate = rebaterate;
- }
- else if(updid==4)
- {
- let shareGive = Number(value)||0
- dataSystemConfig.shareGive = shareGive;
- }
- else if(updid==5)
- {
- let yxndlbTime = Number(value)||0
- dataSystemConfig.yxndlbTime = yxndlbTime;
- }
- else if(updid==6)
- {
- dataSystemConfig.yxndlbTip = value;
- }
- // else if(updid==7)
- // {
- // dataSystemConfig.linkhall = value;
- // }
- // else if(updid==8)
- // {
- // var regDiamond = Number(value) ||100;
- // if (regDiamond<0) {
- // data.msg='注册赠送值为错误';
- // return self.writeOut(data, res);
- // }
- // dataSystemConfig.regDiamond = regDiamond;
- // }
- //console.warn("修改系统配置",updid,value);
- yield dataSystemConfig.saveAsync();
- }
- else
- {
- return this.writeOut('fail: no object !', res);
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- // 后台增加钻石
- proto.addDiamondAsync = P.coroutine(function* (query, method, res) {
- console.warn("590 query:",query)
- var playerId = query['playerid'];
- if (!playerId) {
- return this.writeOut('fail: userid error!', res);
- }
- // console.warn("后台增加钻石-------------------playerId:",playerId);
- var managerId = query['managerid'];
- var diamond = Number(query['diamond']);
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- console.warn("query:",query)
- // console.warn("后台增加钻石-------------------diamond:",diamond);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- //后台增加钻石的话给用户发邮件通知,用户在邮件里领取之后修改玩家钻石,后台扣钻则不发邮件
- if(diamond < 0){
- var player = yield app.models.Player.findByIdAsync(playerId, 'diamond');
- if (player) {
- let dSource=player.diamond;
- let dNow=player.diamond+diamond;
- player.diamond += diamond;
- yield player.saveAsync();
- // 钻石记录
- var diamondrecord = new app.models.DiamondRecord({
- _id: uuid.v1(),
- playerId: playerId,
- dType: 7,//后台
- dSource: dSource,
- dSwap: diamond,
- dNow: dNow,
- tableId: managerId
- });
- yield diamondrecord.saveAsync();
- }
- var SGJUserTongjis = yield app.models.SGJUserTongji.findMongoAsync({todaytime:self.getTodaySJC()})
- var SGJUserTongji = null
- if (SGJUserTongjis.length == 0) {
- SGJUserTongji = app.models.SGJUserTongji({
- _id: uuid.v1(),
- //userId: player.userId,
- houtaiU: diamond,
- todaytime: self.getTodaySJC()
- });
- yield SGJUserTongji.saveAsync()
- }else {
- SGJUserTongji = SGJUserTongjis[0]
- console.warn("SGJUserTongji:",SGJUserTongji)
- //SGJUserTongji.usdt = afterusdt
- SGJUserTongji.houtaiU = (Number(SGJUserTongji.houtaiU) +Number(diamond)).toFixed(2)//下注
- yield SGJUserTongji.saveAsync()
- }
- }
- else if(diamond > 0){
- console.warn("playerId:",playerId)
- var player = yield app.models.Player.findByIdAsync(playerId, 'userId');
- if (player) {
- var mail = yield app.models.Mails.findByIdAsync(playerId, 'mailInfos');
- if (mail) {
- console.warn("638")
- let item = {
- _id: "",
- index: mail.mailInfos.length, // 邮件下标
- tittleT: 3, // 邮件标题类型 0:未定义 1:普通通知 2:有奖励通知 3:补偿通知 4:版本更新通知
- descT: 3, // 邮件内容类型 0:未定义 1:普通通知 2:有奖励通知 3:补偿通知 4:版本更新通知
- reward: 1, // 有无奖励 0:无奖励 1:有奖励
- rewardT: 1, // 奖励类型 0:未定义 1:钻石,
- rewardC: diamond, // 奖励数量
- receive: 0, // 是否领取 0:未领取 1:已领取
- read: 0, // 是否已读 0:未读 1:已读
- form:managerId, //邮件来源
- sendTime: Date.now() // 发送日期
- }
- let newItem = _.clone(mail.mailInfos);
- let newItem2 = [0].concat(newItem);
- newItem2[0] = item;
- if(newItem2.length > 60){
- newItem2 = newItem2.slice(0,60)
- }
- mail.mailInfos = [];
- mail.mailInfos = _.clone(newItem2);
- yield mail.saveAsync();
- }
- else{
- let item = {
- _id: "",
- index: 0, // 邮件下标
- tittleT: 3, // 邮件标题类型 0:未定义 1:普通通知 2:有奖励通知 3:补偿通知 4:版本更新通知
- descT: 3, // 邮件内容类型 0:未定义 1:普通通知 2:有奖励通知 3:补偿通知 4:版本更新通知
- reward: 1, // 有无奖励 0:无奖励 1:有奖励
- rewardT: 1, // 奖励类型 0:未定义 1:钻石,
- rewardC: diamond, // 奖励数量
- receive: 0, // 是否领取 0:未领取 1:已领取
- read: 0, // 是否已读 0:未读 1:已读
- form:managerId, //邮件来源
- sendTime: Date.now() // 发送日期
- }
- let newItem = [];
- newItem[0] = item;
- var newMail = new app.models.Mails({
- _id: playerId, // 用户id(player表的主键)
- userId: player.userId, // 用户的userId
- mailInfos: newItem // 该活动的达成条件和奖励信息列表
- });
- yield newMail.saveAsync();
- }
- }
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- // 设置用户是否禁用
- proto.setPlayerEnableAsync = P.coroutine(function* (query, method, res) {
- var playerId = query['playerId'];
- if (!playerId) {
- return this.writeOut('fail: userid error!', res);
- }
- var enable = parseInt(query.enable);
- if (enable != 0 && enable != 1) return this.writeOut('enable value error', res);
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- console.warn("设置用户是否禁用------- playerId: "+playerId +" enable: "+enable);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- var player = yield app.models.Player.findByIdAsync(playerId, 'enable');
- if (player) {
- player.enable = enable;
- yield player.saveAsync();
- }
- else {
- let msg = 'player not find';
- return self.writeOut(msg, res);
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //ts++ 设置代理
- proto.setAgentInfoAsync = P.coroutine(function* (query, method, res) {
- // console.warn("设置代理-------------------");
- logger.warn("setAgentInfoAsync000");////cssj
- var agentId = query['agentId'];
- if (!agentId) {
- return this.writeOut('fail: agentId error!', res);
- }
- var agentName = query['agentName'];
- var contact = query['contact'];
- if (!contact) {
- return this.writeOut('fail: contact error!', res);
- }
- var tel = query['tel'];
- if (!tel) {
- return this.writeOut('fail: tel error!', res);
- }
- var rewardRate = query['rewardRate'];
- var parentRate = query['parentRate'];
- var levelFlag = query['levelFlag'];
- var enabled = Number(query['enabled']) || 1;
- var pwd = query['pwd'];
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- //console.warn("设置代理-------------------sign:",sign);
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- // console.warn("设置代理-------------------222 agentId "+agentId);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- var agenter = yield app.models.Agenter.findByIdAsync(agentId, 'agentName myUrl rewardRate contact tel parentAgenterId parentRate levelFlag enabled pwd');
- if (agenter) {
- let str0s = "setAgentInfoAsync old "+ JSON.stringify(agenter)
- logger.warn(str0s);////cssj
- var upd=false;
- if(agentName!='' && agenter.agentName!=agentName)
- {
- upd=true;
- agenter.agentName = agentName;
- }
- if(contact!='' && agenter.contact!=contact)
- {
- upd=true;
- agenter.contact = contact;
- }
- if(tel!='' && agenter.tel!=tel)
- {
- upd=true;
- agenter.tel = tel;
- }
- if(rewardRate || rewardRate == 0)
- {
- upd=true;
- agenter.rewardRate = parseInt(rewardRate);
- }
- if(parentRate || parentRate == 0)
- {
- upd=true;
- agenter.parentRate = parseInt(parentRate);
- }
- if((levelFlag || levelFlag == 0) && agenter.levelFlag != levelFlag){
- if(levelFlag == 2){
- if(agenter.parentAgenterId.length == 0 ){
- upd=true;
- agenter.levelFlag = levelFlag;
- }
- }
- else{
- upd=true;
- agenter.levelFlag = levelFlag;
- }
- }
- if((enabled == 0 || enabled == 1 ) && agenter.enabled!=enabled)
- {
- upd=true;
- agenter.enabled = enabled;
- }
- if(pwd!='' && agenter.pwd!=pwd)
- {
- upd=true;
- agenter.pwd = pwd;
- }
- // console.warn("设置代理-------------------333 upd "+upd+" agenter "+JSON.stringify(agenter));
- if(upd)
- {
- let str1s = "setAgentInfoAsync new "+ JSON.stringify(agenter)
- logger.warn(str1s);////cssj
- yield agenter.saveAsync();
- // console.warn("设置代理-------------------成功");
- }
- else
- {
- // console.warn("设置代理-------------------无修改");
- }
- }
- // console.warn("设置代理-------------------444 ");
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //ts++ 设置水果机奖池信息,设置水果机配置
- proto.setSGJiangChiAsync = P.coroutine(function* (query, method, res) {
- console.warn("manage设置水果机奖池信息-------------------",query);
- var type = Number(query['type']) || 0;
- if (!type) {
- return this.writeOut('fail: type error!', res);
- }
- var index = Number(query['index']) || 0;
- if (!index || index <= 0 || index > 3) {
- return this.writeOut('fail: index error!', res);
- }
- var dw = Number(query['dw']) || 0;
- if (!dw || dw <= 0 || dw > 3) {
- return this.writeOut('fail: dw error!', res);
- }
- var key = Number(query['key']) || 0;
- if (!key) {
- return this.writeOut('fail: key error!', res);
- }
- var value = Number(query['value']) || 0;
- if (value < 0) {
- return this.writeOut('fail: value error!'+value, res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- console.warn("manage设置水果机奖池信息-------------------",type,index,dw,key,value);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- let jcPools = yield app.models.SGJJC.findByIdAsync('sgjjcs');
- if (jcPools) {
- console.warn("修改之前",jcPools);
- let isUp = false;
- if(type == 1){//游戏奖池
- if(key >= 1 && key <= 3){
- let list = [jcPools.pools,jcPools.levels,jcPools.cspools]
- console.warn("list:",list)
- console.warn(" index:",index," key:",key)
- if(index > 0 && index <= list[key-1].length && list[key-1][index-1] != value){
- list[key-1][index-1] = value;
- // ✅ 关键:告诉模型数组变了
- console.warn("list:",list)
- console.warn("value:",value)
- console.warn("jcPools.pools:",jcPools.pools)
- isUp = true;
- }
- }
- else if((key >= 4 && key <= 9) && dw > 0 && dw <= 3){
- let list = [jcPools.topLimits1,jcPools.topLimits2,jcPools.topLimits3];
- if(key == 5) list = [jcPools.lowLimits1,jcPools.lowLimits2,jcPools.lowLimits3];
- else if(key == 6) list = [jcPools.paiTopRate1,jcPools.paiTopRate2,jcPools.paiTopRate3];
- else if(key == 7) list = [jcPools.paiLowRate1,jcPools.paiLowRate2,jcPools.paiLowRate3];
- else if(key == 8) list = [jcPools.bsTopRate1,jcPools.bsTopRate2,jcPools.bsTopRate3];
- else if(key == 9) list = [jcPools.bsLowRate1,jcPools.bsLowRate2,jcPools.bsLowRate3];
- if(index > 0 && index <= list[dw-1].length && list[dw-1][index-1] != value){
- list[dw-1][index-1] = value;
- isUp = true;
- }
- }
- }
- else if(type == 2){//押大小奖池
- if(key >= 1 && key <= 3){
- let list = [jcPools.ydxpools,jcPools.ydxlevels,jcPools.ydxcspools]
- if(index > 0 && index <= list[key-1].length && list[key-1][index-1] != value){
- list[key-1][index-1] = value;
- isUp = true;
- }
- }
- else if((key >= 4 && key <= 11) && dw > 0 && dw <= 3){
- if(key >= 6 && key <= 9) return self.writeOut('can not set '+key, res);
- let list = [jcPools.ydxtopLimits1,jcPools.ydxtopLimits2,jcPools.ydxtopLimits3];
- if(key == 5) list = [jcPools.ydxlowLimits1,jcPools.ydxlowLimits2,jcPools.ydxlowLimits3];
- else if(key == 10) list = [jcPools.ydxTopRate1,jcPools.ydxTopRate2,jcPools.ydxTopRate3];
- else if(key == 11) list = [jcPools.ydxLowRate1,jcPools.ydxLowRate2,jcPools.ydxLowRate3];
- if(index > 0 && index <= list[dw-1].length && list[dw-1][index-1] != value){
- list[dw-1][index-1] = value;
- isUp = true;
- }
- }
- }
- if(isUp){
- // jcPools.levels = _.cloneDeep(jcPools.levels)//这样写也不行
- // yield jcPools.saveAsync();
- let jcPools2 = yield app.models.SGJJC.findByIdAsync('sgjjcs');
- if(type == 1){//游戏奖池
- if(key >= 1 && key <= 3){
- console.warn("935 jcpools.pools:",jcPools.pools)
- jcPools2.pools = _.cloneDeep(jcPools.pools);
- console.warn("jcPools:",jcPools)
- jcPools2.levels = _.cloneDeep(jcPools.levels);
- jcPools2.cspools = _.cloneDeep(jcPools.cspools);
- }
- else if(key >= 4 && key <= 9){
- jcPools2.topLimits1 = _.cloneDeep(jcPools.topLimits1);
- jcPools2.topLimits2 = _.cloneDeep(jcPools.topLimits2);
- jcPools2.topLimits3 = _.cloneDeep(jcPools.topLimits3);
- jcPools2.lowLimits1 = _.cloneDeep(jcPools.lowLimits1);
- jcPools2.lowLimits2 = _.cloneDeep(jcPools.lowLimits2);
- jcPools2.lowLimits3 = _.cloneDeep(jcPools.lowLimits3);
- jcPools2.paiTopRate1 = _.cloneDeep(jcPools.paiTopRate1);
- jcPools2.paiTopRate2 = _.cloneDeep(jcPools.paiTopRate2);
- jcPools2.paiTopRate3 = _.cloneDeep(jcPools.paiTopRate3);
- jcPools2.paiLowRate1 = _.cloneDeep(jcPools.paiLowRate1);
- jcPools2.paiLowRate2 = _.cloneDeep(jcPools.paiLowRate2);
- jcPools2.paiLowRate3 = _.cloneDeep(jcPools.paiLowRate3);
- jcPools2.bsTopRate1 = _.cloneDeep(jcPools.bsTopRate1);
- jcPools2.bsTopRate2 = _.cloneDeep(jcPools.bsTopRate2);
- jcPools2.bsTopRate3 = _.cloneDeep(jcPools.bsTopRate3);
- jcPools2.bsLowRate1 = _.cloneDeep(jcPools.bsLowRate1);
- jcPools2.bsLowRate2 = _.cloneDeep(jcPools.bsLowRate2);
- jcPools2.bsLowRate3 = _.cloneDeep(jcPools.bsLowRate3);
- }
- }
- else if(type == 2){//押大小奖池
- if(key >= 1 && key <= 3){
- jcPools2.ydxpools = _.cloneDeep(jcPools.ydxpools);
- jcPools2.ydxlevels = _.cloneDeep(jcPools.ydxlevels);
- jcPools2.ydxcspools = _.cloneDeep(jcPools.ydxcspools);
- }
- else if(key >= 4 && key <= 11){
- jcPools2.ydxtopLimits1 = _.cloneDeep(jcPools.ydxtopLimits1);
- jcPools2.ydxtopLimits2 = _.cloneDeep(jcPools.ydxtopLimits2);
- jcPools2.ydxtopLimits3 = _.cloneDeep(jcPools.ydxtopLimits3);
- jcPools2.ydxlowLimits1 = _.cloneDeep(jcPools.ydxlowLimits1);
- jcPools2.ydxlowLimits2 = _.cloneDeep(jcPools.ydxlowLimits2);
- jcPools2.ydxlowLimits3 = _.cloneDeep(jcPools.ydxlowLimits3);
- jcPools2.ydxTopRate1 = _.cloneDeep(jcPools.ydxTopRate1);
- jcPools2.ydxTopRate2 = _.cloneDeep(jcPools.ydxTopRate2);
- jcPools2.ydxTopRate3 = _.cloneDeep(jcPools.ydxTopRate3);
- jcPools2.ydxLowRate1 = _.cloneDeep(jcPools.ydxLowRate1);
- jcPools2.ydxLowRate2 = _.cloneDeep(jcPools.ydxLowRate2);
- jcPools2.ydxLowRate3 = _.cloneDeep(jcPools.ydxLowRate3);
- }
- }
- console.warn("修改之后 jcPools2:",jcPools2)
- yield jcPools2.saveAsync();
- // console.warn("奖池更新了",jcPools);
- // console.warn("奖池更新了222 ",jcPools2);
- jcPools = null;
- }
- else{
- return self.writeOut('value no change ', res);
- }
- }
- else{
- return self.writeOut('no jcPools! ', res);
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //ts++ //得到水果机某个字段的总和
- proto.getSGATypeAllAsync = P.coroutine(function* (query, method, res) {
- console.warn("manage得到水果机某个字段的总和-------------------");
- var type = query['type'];
- if (!type) {
- return this.writeOut('fail: type error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- // let sjk = "SGJUser";
- // var sgjUsers = yield this.app.models[sjk].aggregateAsync([
- //像上面这样动态查询数据库也是可以的
- var sgjUsers = yield this.app.models.SGJUser.aggregateAsync([
- { $group: { _id: type, count: { $sum: '$'+type } } }
- ]);
- console.warn("聚合之后 ",type,JSON.stringify(sgjUsers));
- let result = "error: nofind";
- if(sgjUsers.length > 0) result = sgjUsers[0].count;
- return this.writeOut(result, res);
- // var startTime = 1710866910000;
- // var endTime = 1711007310000;
- // var opts = { registerTime: { $gte: startTime, $lt: endTime } };
- // opts.playerId = "0ab@my2019";//new RegExp('.+@' + '0ab' + '$');
- // var list = yield this.app.models.DiamondRecord.aggregateAsync([
- // { $match: opts },
- // { $group: { _id: opts.playerId, count: { $sum: '$dSwap' } } },
- // { $sort: { registerTime: 1 } }
- // ]);
- // console.warn("聚合之后111 ",list.length,JSON.stringify(list));
- // var startTime = 1710866910000;
- // var endTime = 1711007310000;
- // var opts = { registerTime: { $gte: startTime, $lt: endTime } };
- // // opts.playerId = "0ab@my2019";//new RegExp('.+@' + '0ab' + '$');
- // var list = yield this.app.models.SGJUser.aggregateAsync([
- // { $match: opts },
- // { $group: { _id: "xxxxx", count: { $sum: '$cost' } } },
- // { $sort: { registerTime: 1 } }
- // ]);
- // console.warn("聚合之后111 ",list.length,JSON.stringify(list));
- });
- //ts++ 水果机任务发奖完成
- proto.sgjRWFJOverAsync = P.coroutine(function* (query, method, res) {
- console.warn("manage水果机任务发奖完成-------------------");
- // var fjinfo = query['fjinfo'] || "";
- // console.warn("manage水果机任务发奖完成------------------- ",fjinfo);
- var pid = query['pid'];
- if (!pid) {
- return this.writeOut('fail: pid error!', res);
- }
- var type = Number(query['type']) || 0;
- if (!type) {
- return this.writeOut('fail: type error!', res);
- }
- var rwid = query['rwid'];
- if (type == 2 && !rwid) {
- return this.writeOut('fail: rwid error!', res);
- }
- var fqs = Number(query['fqs']) || 0;
- if (type == 2 && !fqs) {
- return this.writeOut('fail: fqs error!', res);
- }
- var fqtime = Number(query['fqtime']) || 0;
- if (!fqtime) {
- return this.writeOut('fail: fqtime error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- console.warn("manage水果机任务发奖完成-------------------",pid,type,rwid,fqs,fqtime);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- if(type == 1){
- var sgjUser = yield app.models.SGJUser.findByIdAsync(pid, 'zfbAcc zfbName zfbBindTime');
- if (sgjUser) {
- if(Date.now() - sgjUser.zfbBindTime < 86400000 ) return self.writeOut('one day no more once! ', res);
- console.warn("?????找到用户了 ",fqs,fqtime);
- if(fqs){
- sgjUser.zfbBindTime = fqtime;
- }
- else{
- sgjUser.zfbAcc = "";
- sgjUser.zfbName = "";
- }
- yield sgjUser.saveAsync();
- }
- else{
- return self.writeOut('pid value error! ', res);
- }
- }
- else if(type == 2){
- var taskInfo = yield app.models.SGJTask.findByIdAsync(rwid, 'playerId rewards state fjTime');
- if (taskInfo) {
- if(fqs != taskInfo.rewards){
- return self.writeOut('fail: fqs value error!', res);
- }
- if(pid != taskInfo.playerId){
- return self.writeOut('fail: pid value error!', res);
- }
- if(taskInfo.state != 2 || taskInfo.fjTime != 0){
- return self.writeOut('fail: Cannot be claimed repeatedly!', res);
- }
- taskInfo.state = 3; //任务状态0:未完成,1:已完成,2:发奖中,3:已发奖
- taskInfo.fjTime = fqtime; //发奖时间
- console.warn("发奖成功之后更新任务状态 ");
- yield taskInfo.saveAsync();
- var sgjUser = yield app.models.SGJUser.findByIdAsync(pid, 'taskReward jxzReward');
- if (sgjUser) {
- sgjUser.jxzReward -= fqs;
- sgjUser.taskReward += fqs;
- yield sgjUser.saveAsync();
- }
- }
- else{
- logger.warn("rwjlzj(rwid) error");////cssj
- return self.writeOut('rwjlzj(rwid) error! :', res);
- }
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //ts++ 后台给玩家发邮件
- proto.addMailAsync = P.coroutine(function* (query, method, res) {
- // console.warn("后台给玩家发邮件-------------------");
- var playerId = query['playerid'];
- if (!playerId) {
- return this.writeOut('fail: playerid error!', res);
- }
- var userId = query['userid'];
- if (!userId) {
- return this.writeOut('fail: userid error!', res);
- }
- var tittleT = Number(query['tittleT']) || 0;;
- if (!tittleT) {
- return this.writeOut('fail: tittleT error!', res);
- }
- var descT = Number(query['descT']) || 0;;
- if (!descT) {
- return this.writeOut('fail: descT error!', res);
- }
- var reward = Number(query['reward']) || 0;;
- var rewardT = Number(query['rewardT']) || 0;
- var rewardC = Number(query['rewardC']) || 0;
- if (reward) {
- if(!rewardT || !rewardC){
- return this.writeOut('fail: rewardT or rewardC error!', res);
- }
- }
- else{
- if(rewardT){
- return this.writeOut('fail: rewardT error!', res);
- }
- if(rewardC){
- return this.writeOut('fail: rewardC error!', res);
- }
- }
- var form = query['form'];
- if (!form) {
- return this.writeOut('fail: form error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- let receive = 1;
- if(reward) receive = 0;
- var mail = yield app.models.Mails.findByIdAsync(playerId, 'mailInfos');
- if (mail) {
- let item = {
- _id: "",
- index: mail.mailInfos.length, // 邮件下标
- tittleT: tittleT, // 邮件标题类型 0:未定义 1:普通通知 2:有奖励通知 3:补偿通知 4:版本更新通知
- descT: descT, // 邮件内容类型 0:未定义 1:普通通知 2:有奖励通知 3:补偿通知 4:版本更新通知
- reward: reward, // 有无奖励 0:无奖励 1:有奖励
- rewardT: rewardT, // 奖励类型 0:未定义 1:钻石,
- rewardC: rewardC, // 奖励数量
- receive: receive, // 是否领取 0:未领取 1:已领取
- read: 0, // 是否已读 0:未读 1:已读
- form:form, //邮件来源
- sendTime: Date.now() // 发送日期
- }
- let newItem = _.clone(mail.mailInfos);
- let newItem2 = [0].concat(newItem);
- newItem2[0] = item;
- if(newItem2.length > 60){
- newItem2 = newItem2.slice(0,60)
- }
- mail.mailInfos = [];
- mail.mailInfos = _.clone(newItem2);
- yield mail.saveAsync();
- }
- else{
- let item = {
- _id: "",
- index: 0, // 邮件下标
- tittleT: tittleT, // 邮件标题类型 0:未定义 1:普通通知 2:有奖励通知 3:补偿通知 4:版本更新通知
- descT: descT, // 邮件内容类型 0:未定义 1:普通通知 2:有奖励通知 3:补偿通知 4:版本更新通知
- reward: reward, // 有无奖励 0:无奖励 1:有奖励
- rewardT: rewardT, // 奖励类型 0:未定义 1:钻石,
- rewardC: rewardC, // 奖励数量
- receive: receive, // 是否领取 0:未领取 1:已领取
- read: 0, // 是否已读 0:未读 1:已读
- form:form, //邮件来源
- sendTime: Date.now() // 发送日期
- }
- let newItem = [];
- newItem[0] = item;
- var newMail = new app.models.Mails({
- _id: playerId, // 用户id(player表的主键)
- userId: userId, // 用户的userId
- mailInfos: newItem // 该活动的达成条件和奖励信息列表
- });
- yield newMail.saveAsync();
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- ////// ts++ 显示uid和实际uid互相转换
- proto.sidAridChangeAsync = P.coroutine(function* (query, method, res) {
- // console.warn("显示uid和实际uid互相转换-------------------");
- var type = Number(query['type']) || 0;;
- if (type != 1 && type != 2) {
- return this.writeOut('fail: type error!', res);
- }
- var id = Number(query['id']) || 0;;
- if (id < 100000 && id > 999999) {
- return this.writeOut('fail: id error!', res);
- }
- // console.warn("显示uid和实际uid互相转换 type "+type+" id "+id);
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- let result = "";
- if(type == 1) result = this.jiami(id);
- else if(type == 2) result = ""+this.jiemi(id);
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- let data = {
- code:201,
- newId:0
- }
- if(result.length == 6){
- data.code = 200;
- data.newId = result;
- }
- let dataStr = JSON.stringify(data)
- return self.writeOut(dataStr, res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- proto.jiami = function (_oldid) {
- let oldid = String(_oldid);
- // console.warn("111 加密参数 oldid "+oldid);
- let numList = [];
- for (var i = 0; i < oldid.length; i++) {
- // numList[i] = (parseInt(oldid[i])+i+1)%10;
- numList[i] = (parseInt(oldid[i])+i)%10;
- // console.warn("222 numList[i] "+numList[i]);
- }
- // console.warn("333 "+JSON.stringify(numList));
- //这种交换方式会使加密后结果转换成数字之后是个小于6位数的数字,其中987654这个加密之后是0
- // let jh1 = numList[0];
- // numList[0] = numList[4];
- // numList[4] = jh1;
- let jh1 = numList[1];
- numList[1] = numList[3];
- numList[3] = jh1;
- // console.warn("444 [0]和[4]交换 "+JSON.stringify(numList));
- let jh2 = numList[2];
- numList[2] = numList[5];
- numList[5] = jh2;
- let newid = "";
- // console.warn("555 [2]和[5]交换 "+JSON.stringify(numList));
- for (var i = 0; i < numList.length; i++) {
- newid+=numList[i];
- }
- // console.warn("666 加密最终的 "+newid);
- return newid;
- // return parseInt(newid);
- };
- proto.jiemi = function (_oldid) {
- let oldid = String(_oldid);
- // console.warn("111 解密参数 oldid "+oldid);
- let numList = [];
- for (var i = 0; i < oldid.length; i++) {
- numList[i] = parseInt(oldid[i]);
- // console.warn("222 numList[i] "+numList[i]);
- }
- // console.warn("333 "+JSON.stringify(numList));
- // let jh1 = numList[0];
- // numList[0] = numList[4];
- // numList[4] = jh1;
- let jh1 = numList[1];
- numList[1] = numList[3];
- numList[3] = jh1;
- // console.warn("444 [0]和[4]交换 "+JSON.stringify(numList));
- let jh2 = numList[2];
- numList[2] = numList[5];
- numList[5] = jh2;
- let numList2 = []
- for (var i = 0; i < oldid.length; i++) {
- // numList2[i] = (numList[i]+9-i)%10;
- numList2[i] = (numList[i]+10-i)%10;
- // console.warn("2 numList[i] "+numList[i]);
- }
- // console.warn("555 [2]和[5]交换 "+JSON.stringify(numList));
- let newid = "";
- for (var i = 0; i < numList2.length; i++) {
- newid+=numList2[i];
- }
- // console.warn("666 解密最终的 "+newid);
- return parseInt(newid);
- };
- //后台增加比赛的开始和结束时间
- proto.addRaceTimeAsync = P.coroutine(function* (query, method, res) {
- console.warn("addRaceTimeAsync 后台增加比赛的开始和结束时间");
- var aid = query['aid'];
- if (!aid) {
- return this.writeOut('fail: aid error!', res);
- }
- var anumber = parseInt(query['anumber']) || 0;
- if (!anumber) {
- return this.writeOut('fail: anumber error!', res);
- }
- var stime = Number(query['stime']) || 0;;
- if (!stime) {
- return this.writeOut('fail: stime error!', res);
- }
- var etime = Number(query['etime']) || 0;;
- if (!etime) {
- return this.writeOut('fail: etime error!', res);
- }
- if(stime >= etime) return this.writeOut('fail: stime or etime error!', res);
- var outTime = Number(query['outTime']) || (etime+90*60000);//默认90分钟之后过期
- if (!outTime) {
- return this.writeOut('fail: outTime error!', res);
- }
- if (outTime < etime+40*60000) {
- return this.writeOut('过期时间必须为结束时间40分钟之后', res);
- }
- var bigRound = Number(query['bigRound']) || 3;
- if (!bigRound) {
- return this.writeOut('fail: bigRound error!', res);
- }
- var gameid = Number(query['gameid']) || 10008;
- if (!gameid) {
- return this.writeOut('fail: gameid error!', res);
- }
- var round = Number(query['round']) || 10;
- if (!round) {
- return this.writeOut('fail: round error!', res);
- }
- var player = Number(query['player']) || 3;
- if (!player) {
- return this.writeOut('fail: player error!', res);
- }
- var other = Number(query['other']) || 74;
- if (!other) {
- return this.writeOut('fail: other error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- let stimeSJC = self.getzdLDSJC(stime);
- var opts = {
- stime: { $gte: stimeSJC, $lt: stimeSJC+86400000},
- };
- opts['aid'] = aid;
- let timelist = yield app.models.RaceTimeInfos.findMongoAsync(opts, 'aid agentNo stime etime bigRound gameId round playerCount other outTime', { sort: { stime: 1 } });
- for (var i = 0; i < timelist.length; i++) {
- if(timelist[i].outTime >= stime){
- return self.writeOut('新开比赛场次开始时间不能小于现有场次的过期时间', res);//一个群推广目前一天只能开一场比赛
- }
- }
- var newRaceTime = new app.models.RaceTimeInfos({
- _id: uuid.v1(), // UUID 标识
- aid: aid, // 比赛代理的标识
- agentNo: anumber,// 比赛代理编号
- stime: stime, // 该次比赛的开始时间
- etime: etime, // 该次比赛的结束时间
- bigRound: bigRound,// 该次比赛的大局数量,统计战绩时使用
- gameId: gameid, // 该次比赛的游戏id 10006为长沙麻将,10007为红中麻将,10008为跑得快
- round: round, // 该次比赛的游戏局数
- playerCount: player, // 该次比赛的游戏人数
- other: other, // 该次比赛的游戏规则
- outTime: outTime, //1:未过期,2已过期
- yljList: [] // 该次比赛已领奖人员id数组
- });
- yield newRaceTime.saveAsync();
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- ////后台设置比赛是否过期
- proto.setRaceTimeOutAsync = P.coroutine(function* (query, method, res) {
- // console.warn("setRaceTimeOutAsync 后台设置比赛是否过期");
- var id = query['id'] || "";//需要修改的比赛场次的id(主键)
- if (!id) {
- return this.writeOut('fail: id error!', res);
- }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- var raceTime = yield app.models.RaceTimeInfos.findByIdAsync(id, '_id aid outTime stime etime yljList');
- if (raceTime) {
- let outTime = Number(query['outTime']) || (raceTime.etime + 6000000);//默认60分钟之后过期
- // console.warn("后台设置比赛是否过期 id "+id+" etime "+raceTime.etime+" outTime "+raceTime.outTime+" type "+type);
- if(raceTime.etime + 2400000 >= outTime){//结束40分钟之后才能设置为过期
- return self.writeOut('过期时间必须为结束时间40分钟之后', res);
- }
- if(self.getzdLDSJC(raceTime.stime) != self.getzdLDSJC(outTime)){//结束40分钟之后才能设置为过期
- return self.writeOut('过期时间和开始时间必须是同一天', res);
- }
- let stimeSJC = self.getzdLDSJC(raceTime.stime);
- var opts = {
- stime: { $gte: stimeSJC, $lt: stimeSJC+86400000},
- };
- opts['aid'] = raceTime.aid;
- let timelist = yield app.models.RaceTimeInfos.findMongoAsync(opts, '_id aid stime etime outTime', { sort: { stime: 1 } });
- // console.warn(">>>>>>>>>>>>>>>.. "+timelist.length);
- for (var i = 0; i < timelist.length; i++) {
- if(raceTime.stime > timelist[i].stime) continue;
- if(raceTime._id == timelist[i]._id) continue;
- if(timelist[i].stime <= outTime){
- return self.writeOut('本场过期时间不能和现有比赛场次的时间重合', res);//一个群推广目前一天只能开一场比赛
- }
- }
- if(raceTime.outTime != outTime){
- raceTime.outTime = outTime;
- yield raceTime.saveAsync();
- // console.warn("设置设置 grade -------------------修改");
- }
- return self.writeOut('999999', res);
- }
- else{
- return self.writeOut('not fid raceTime by id : '+id, res);
- }
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //////后台增设置不能在同一桌游戏的玩家
- proto.setNotGameTogtherAsync = P.coroutine(function* (query, method, res) {
- // console.warn("setNotGameTogtherAsync 后台增设置不能在同一桌游戏的玩家");
- var type = Number(query['type']) || 0;//操作类型
- var id = query['id'] || "";
- var uid1 = Number(query['uid1']) || 0;
- var uid2 = Number(query['uid2']) || 0;//删除整条的时候此值可不传
- // console.warn("后台增设置不能在同一桌游戏的玩家 type "+type+" id "+id+" uid1 "+uid1+" uid2 "+uid2);
- if (type == 1) {//1:增加,2:删除整条,3:删除某条中某一个
- if (!uid1) return this.writeOut('fail: no uid1 !', res);
- if (!uid2) return this.writeOut('fail: no uid2 !', res);
- if (uid1 == uid2) return this.writeOut('fail: uid1 和 uid2 不能相同', res);
- }
- else if (type == 2) {//1:增加,2:删除整条,3:删除某条中某一个
- if (!id) return this.writeOut('fail: no id !', res);
- }
- else if (type == 3) {//1:增加,2:删除整条,3:删除某条中某一个
- if (!id) return this.writeOut('fail: no id。', res);
- if (!uid1) return this.writeOut('fail: no uid1。', res);
- }
- else return this.writeOut('fail: no type !', res);
- var sign = query['sign']||"";
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- if(type == 1){
- let pid1 = "";
- var players1 = yield app.models.Player.findMongoAsync({ userId: uid1 },'_id userId name');
- if (players1.length == 1) {
- pid1 = players1[0]._id;
- }
- else {
- return self.writeOut('fail: uid1 error!', res);
- }
- let pid2 = "";
- var players2 = yield app.models.Player.findMongoAsync({ userId: uid2 },'_id userId name');
- if (players2.length == 1) {
- pid2 = players2[0]._id;
- }
- else{
- return self.writeOut('fail: uid2 error!', res);
- }
- let newList = [];
- let newPList = [];
- var notTogthers1 = yield app.models.NotGameTogther.findMongoAsync({ uidList: uid1 },'_id uidList pidList');
- if(notTogthers1.length == 0) {
- newList[newList.length] = uid1;
- newPList[newPList.length] = pid1;
- }
- for (var i = 0; i < notTogthers1.length; i++) {
- // console.warn("包含uid1的数组 111 "+i+" "+JSON.stringify(notTogthers1[i].uidList));
- for (var j = 0; j < notTogthers1[i].uidList.length; j++) {
- let item = notTogthers1[i].uidList[j];
- let itemP = notTogthers1[i].pidList[j];
- if(newList.indexOf(item) == -1){
- newList[newList.length] = item;
- newPList[newPList.length] = itemP;
- }
- }
- yield notTogthers1[i].removeAsync();
- }
- // console.warn("处理完uid1之后的newlist 111 "+JSON.stringify(newList));
- var notTogthers2 = yield app.models.NotGameTogther.findMongoAsync({ uidList: uid2 },'_id uidList pidList');
- if(notTogthers2.length == 0) {
- newList[newList.length] = uid2;
- newPList[newPList.length] = pid2;
- }
- for (var i = 0; i < notTogthers2.length; i++) {
- // console.warn("包含uid1的数组 111 "+i+" "+JSON.stringify(notTogthers2[i].uidList));
- for (var j = 0; j < notTogthers2[i].uidList.length; j++) {
- let item = notTogthers2[i].uidList[j];
- let itemP = notTogthers2[i].pidList[j];
- if(newList.indexOf(item) == -1){
- newList[newList.length] = item;
- newPList[newPList.length] = itemP;
- }
- }
- yield notTogthers2[i].removeAsync();
- }
- // console.warn("处理完uid2之后的newlist 111 "+JSON.stringify(newList));
- if(newList.length == 0) {
- newList = [uid1,uid2];
- newPList = [pid1,pid2];
- }
- var newNotTogther = new app.models.NotGameTogther({
- _id: uuid.v1(), // UUID 标识
- uidList: _.cloneDeep(newList), // 不能在同一桌游戏的玩家userid
- pidList: _.cloneDeep(newPList) // 不能在同一桌游戏的玩家_id
- });
- yield newNotTogther.saveAsync();
- // console.warn("?????????555 ");
- }
- else if(type == 2){
- var notTogther = yield app.models.NotGameTogther.findByIdAsync(id, '_id uidList');
- if (notTogther) {
- // console.warn("找到了");
- yield notTogther.removeAsync();
- }
- else{
- return self.writeOut('fail: id error!', res);
- }
- }
- else if(type == 3){
- var notTogther = yield app.models.NotGameTogther.findByIdAsync(id, '_id uidList pidList');
- if (notTogther) {
- let newuidList = [];
- let newpidList = [];
- for (var i = 0; i < notTogther.uidList.length; i++) {
- if(notTogther.uidList[i] != uid1){
- newuidList[newuidList.length] = notTogther.uidList[i];
- newpidList[newpidList.length] = notTogther.pidList[i];
- }
- }
- if(newuidList.length == notTogther.uidList.length){
- return self.writeOut('fail: uid1 not find!', res);
- }
- else{
- if(newuidList.length > 1){
- notTogther.uidList = _.cloneDeep(newuidList);
- notTogther.pidList = _.cloneDeep(newpidList);
- yield notTogther.saveAsync();
- }
- else{
- yield notTogther.removeAsync();
- }
- }
- }
- else{
- return self.writeOut('fail: id error!', res);
- }
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //后台设置玩家禁赛
- proto.setJinSaiAsync = P.coroutine(function* (query, method, res) {
- console.warn("setJinSaiAsync 后台设置玩家禁赛");
- var pid = query['id'];
- if (!pid) {
- return this.writeOut('fail: pid error!', res);
- }
- var uid = parseInt(query['uid']) || 0;
- if (!uid) {
- return this.writeOut('fail: uid error!', res);
- }
- // var stime = Number(query['stime']) || 0;;
- // if (!stime) {
- // return this.writeOut('fail: stime error!', res);
- // }
- var sign = query['sign'];
- if (!sign) {
- return this.writeOut('fail: sign error!', res);
- }
- if (!checkSign(sign)) {
- return this.writeOut('fail: sign error!', res);
- }
- var self = this;
- var app = this.app;
- return app.memdb.goose.transactionAsync(P.coroutine(function* () {
- var jinsai = yield app.models.JinSaiInfo.findByIdAsync(pid, '_id userId');
- if (jinsai) {
- yield jinsai.removeAsync();
- }
- else{
- var jinsaiinfo = new app.models.JinSaiInfo({
- _id: pid, // UUID 标识
- userId: uid // 比赛代理的标识
- });
- yield jinsaiinfo.saveAsync();
- }
- return self.writeOut('999999', res);
- }), app.getServerId())
- .then(() => app.event.emit('transactionSuccess'), () => app.event.emit('transactionFail'));
- });
- //TL++,得到指定时间戳(_time)当日0点的时间戳
- proto.getzdLDSJC = function (_time){
- var today = new Date(_time);
- today.setHours(0);
- today.setMinutes(0);
- today.setSeconds(0);
- today.setMilliseconds(0);
- let jrsjc = today.getTime();
- // console.warn("111得到今日0点的时间戳 ",jrsjc, typeof jrsjc);
- return jrsjc;
- };
- //ts++签名验证
- function checkSign(sign) {
- var signKey = 'defe6d21422c8b770767f74fcea95';
- if (sign!=signKey) return false;
- return true;
- };
- proto.getTodaySJC = function (){
- var today = new Date();
- today.setHours(0);
- today.setMinutes(0);
- today.setSeconds(0);
- today.setMilliseconds(0);
- let jrsjc = today.getTime();
- // console.warn("111得到今日0点的时间戳 ",jrsjc, typeof jrsjc);
- return jrsjc;
- };
|