Example #1
0
 investTab.update({id: invest.id}, {$set: {status: investStatus.bid_success}}, [], function (err) {
     if (err) {
         cb(err);
     } else {
         //判断项目是否满额
         if (all) {
             //满额则更新项目状态
             var loanTab = dc.main.get('loan');
             loanTab.update({id: loan.id}, {
                 $set: {
                     status: loanStatus.recheck,
                     loan_money: loan.money
                 }
             }, [], function (err) {
                 cb(err, invest);
             })
         } else {
             //继续
             var loanTab = dc.main.get('loan');
             loanTab.update({id: loan.id}, {$set: {loan_money: loan.loan_money + invest.money}}, [], function (err) {
                 cb(err, invest);
             });
         }
     }
 });
Example #2
0
 //出票角度统计中奖数目
 function(customers, indexes, cb)
 {
     var conn = dc.main.getConn();
     var reportTypeKey = "report_" + termReportType.PRINT;
     var sql = "select printId as customerId,count(*) as hitCount,sum(amount) as hitAmount,sum(bonus) as bonus,sum(bonusBeforeTax) as bonusBeforeTax from tticket where status=1200 and " + cond + " group by printId";
     conn.execute(sql, [], function(err, data){
         if(err)
         {
             cb(err, "出票角度统计中奖数目失败.");
         }
         else
         {
             self._info("出票角度统计中奖数目成功.");
             for(var key in data)
             {
                 var set = data[key];
                 var report = customers[indexes[set.customerId]][reportTypeKey];
                 report.hitCount = set.hitCount;
                 report.hitAmount = set.hitAmount;
                 report.bonus = set.bonus;
                 report.bonusBeforeTax = set.bonusBeforeTax;
             }
             cb(null, customers, indexes);
         }
     });
 },
Example #3
0
CheckFileJob.prototype._writeFile = function(cb)
{
    var self = this;
    var writeData = fs.createWriteStream(self.file, {
        flags:'a+',
        encoding:'utf8'
    });
    var hitTable = dc.mg.getConn().collection(self.hitColName);
    var curCount = 0;
    var hasNext = true;
    var split = "@";
    var conn = dc.main.getConn();
    async.whilst(
        function () { return hasNext;},
        function (callback) {
            hitTable.findAndRemove({}, {}, [], function(err, ticket){
                if(err)
                {
                    callback(err);
                    return;
                }
                if(ticket)
                {
                    curCount++;
                    var bonusDetailStr = JSON.stringify(ticket.bonusDetail);

                    //将中奖的写入文件 后续使用buffer实现
                    var strB = new strBuffer();
                    strB.append(ticket._id).append(split).append(ticket.outerId).append(split).append(ticket.bonus);
                    strB.append(split).append(bonusDetailStr).append(split).append(ticket.bonusBeforeTax).append(split);
                    strB.append(ticket.auditTermCode).append(split).append(ticket.dNumber).append(split).append(ticketStatus.HIT).append(split).append(ticket.customerId);
                    strB.append(split).append(ticket.bonusStatus).append(split).append(ticket.taxStatus);
                    strB.append("\r\n");
                    writeData.write(strB.toString());

                    var sql = 'insert into ' + self.tmpHitTable + '(id,outerId,bonus,bonusDetail,bonusBeforeTax,auditTermCode,dNumber,status,customerId,bonusStatus,taxStatus) values(';
                    sql += ticket._id + ",'" + ticket.outerId + "'," + ticket.bonus + ",'" + bonusDetailStr + "',";
                    sql += ticket.bonusBeforeTax + ",'" + ticket.auditTermCode + "','" + ticket.dNumber + "'," + ticketStatus.HIT + ",'"+ticket.customerId+"',"+ticket.bonusStatus+","+ticket.taxStatus+")";
                    log.info(sql);
                    conn.execute(sql, [], function(err ,data){
                        if(err)
                        {
                            log.error(err);
                        }
                        callback(err);
                    });
                }
                else
                {
                    callback();
                    hasNext = false;
                }
            });
        },
        function (err) {
            writeData.end();    //关闭流
            cb(err, curCount);
        }
    );
}
Example #4
0
		function(cb){
			var conn = dc.main.getConn();
			var sql = "select id,termCode,gameCode from tticket where orderId = (select id from torder where outerId = '"+ bodyNode.outerId + "')";
			log.info(sql);
			conn.execute(sql, [],function(err, data){
				if(err){
				   log.error(err);
				   cb(err);
				}else{
				 	async.eachSeries(data, function(ticket,callback){
                        log.info("删除的id:"+ticket.id);
                        var seq = [0,1,2,3,4,5];
    	                async.eachSeries(seq , function(seqId, call){
							var colName = ticket.gameCode+"_"+ticket.termCode+"_"+seqId;
							var conn = dc.mg.getConn();
                            var table = conn.collection(colName);
                            log.info(colName);
							table.findAndRemove({"_id":ticket.id},{},function(err,data){
                                if(err){
                                    log.error(err);
                                }
                                log.info(data);
								call(err);
							});
						},function(err){
							callback(null);
						});
					},function(err){
						cb(err);
					});
				}
			});	
		}	
Example #5
0
 function (cb) {
     var conn = dc.main.getConn();
     var sql = "select  sum(amount) as 'totalsalemoney' from tticket where "+ cond +" and customerId = '" +customerId+ "'  group by customerId";
     log.info(sql);
     conn.execute(sql, [], function (err , data) {
         if(err){
             cb(err);
         }else{
             if(data && data.length == 0){
                 var writeData = fs.createWriteStream(path.join(self.baseDir, customerId+"_"+self.fileName), {
                     flags: 'w',
                     encoding:'UTF-8'
                 });
                 //生成空文件
                 var head = {};
                 head.userId = customerId;
                 head.gameCode = self.dTerm.gameCode;
                 head.termCode = self.dTerm.code;
                 head.lotTotalAmount = 0;
                 var xmlJson = {file:{head:head, body: {record:[]}}};
                 writeData.write(xmlUtil.jsonToXml(xmlJson));
                 cb(null,null);
             }else{
                 //生成数据文件
                cb(null, data[0].totalsalemoney);
             }
         }
     });
 },
Example #6
0
InvestControl.prototype.checkIC01 = function (headNode, bodyNode, cb) {
    var loanTab = dc.main.get('loan');
    loanTab.findOne({id: bodyNode.loan_id}, {
        status: 1,
        money: 1,
        loan_money: 1,
        rate: 1,
        st_rate: 1
    }, [], function (err, data) {
        if (data.status != loanStatus.raising) {
            cb(ec.E4010);
            return;
        }
        if (data.money - data.loan_money < bodyNode.money) {
            cb(ec.E4020);
            return;
        }
        bodyNode.rate = data.rate;
        if (data.st_rate > 0) {
            bodyNode.st_rate = data.st_rate;
        }
        bodyNode.channel = headNode.userId;
        cb(null);
    });
};
Example #7
0
 //查看是否有奖级信息
 function(term, cb)
 {
     var table = dc.main.get("gamegrade");
     var cond = {gameCode:term.gameCode, termCode:term.code};
     var gameData = game.getInfo(term.gameCode);
     if(gameData.type != gameType.Jingcai) {
         var cursor = table.find(cond, {}, []);
         cursor.count(function (err, count) {
             var grades = gameGrade.getInfoById(term.gameCode).grades;
             async.each(grades, function (grade, callback) {
                 var gg = {name: grade.des, gameCode: term.gameCode, termCode: term.code,
                     level: grade.id, bonus: grade.bonus, count: 0};
                 gg.id = gg.gameCode + "_" + gg.termCode + "_" + gg.level;
                 table.save(gg, {}, function (err, data) {
                     if (err) {
                         log.info(err);
                     }
                     callback();
                 });
             }, function (err) {
                 cb(err, term);
             });
         });
     }else{
         cb(null, term);
     }
 },
Example #8
0
SalePageControl.prototype.term = function (headNode, bodyNode, cb) {
    var self = this;
    var backBodyNode = {title: "view terms"};
    backBodyNode.sort = {id: -1};
    pageUtil.parse(bodyNode, backBodyNode);
    var table = dc.main.get("termreport");
    backBodyNode.cond.customerId = headNode.userId;
    backBodyNode.game = game.getInfo();
    var add = backBodyNode.add;
    if (add.startDate != null && add.endDate != null && add.startDate != "" && add.endDate != "") {
        add.startDate = dateMathUtil.getEarlyTime(add.startDate);
        add.endDate =  dateMathUtil.getLaterTime(add.endDate);
        backBodyNode.cond.createTime = {$gte: add.startDate, $lte: add.endDate};
        //页面显示时间格式
        add.startDate = moment(add.startDate).format("YYYY-MM-DD");
        add.endDate =  moment(add.endDate).format("YYYY-MM-DD");
    }
    backBodyNode.cond.type = termReportType['SALE'];
    var cursor = table.find(backBodyNode.cond, {}, []).sort(backBodyNode.sort).limit(backBodyNode.skip, backBodyNode.limit);
    cursor.toArray(function (err, data) {
        for (var key in data) {
            var set = data[key];
            set.createTime = dateUtil.toString(set.createTime);
        }
        backBodyNode.rst = data;
        backBodyNode.count = cursor.count(function (err, count) {
            backBodyNode.count = count;
            cb(null, backBodyNode);
        });
    });
}
Example #9
0
 function(cb)
 {
     var table = dc.main.get("tticket");
     table.create(function(err, data){
         cb(err);
     });
 }
Example #10
0
CustomerPageControl.prototype.select = function(headNode, bodyNode, cb)
{
    var self = this;
    var backBodyNode = {title:"投注站选择"};
    if(bodyNode.sort == undefined)
    {
        backBodyNode.sort = {id:1};
    }
    backBodyNode.select = bodyNode.select;
    pageUtil.parse(bodyNode, backBodyNode);
    var table = dc.main.get("customer");
    var cursor = table.find(backBodyNode.cond, {}, []).sort(backBodyNode.sort).limit(backBodyNode.skip, backBodyNode.limit);
    cursor.dateToString();
    cursor.toArray(function(err, data){
        for(var key in data)
        {
            var set = data[key];
        }
        backBodyNode.rst = data;
        backBodyNode.count = cursor.count(function(err, count){
            backBodyNode.count = count;
            cb(null, backBodyNode);
        });
    });
};
Example #11
0
PrintPageControl.prototype.detail = function (headNode, bodyNode, cb) {
    var self = this;
    var backBodyNode = {title: "出票队列"};
    log.info(bodyNode);
    backBodyNode.printQueenStatus = ticketPrintQueenStatus.getInfoById();
    backBodyNode.ticketPrintStatus = ticketPrintStatus.getInfoById();
    var table = dc.mg.get("printqueen");
    var ticketTable = dc.main.get("tticket");
    var id = parseInt(bodyNode.id, 10);
    table.findOne({"_id":id}, {}, [], function(err, data){
        if(data == null){
            ticketTable.findOne({"id": id},{},[], function(err, ticket){
                var pTicket = {_id:ticket.id, gameCode:ticket.gameCode, termCode:ticket.termCode, customerId:ticket.customerId,
                    pType:ticket.pType, bType:ticket.bType, printId:ticket.printId, multiple:ticket.multiple,
                    amount:ticket.amount, number:ticket.number, outerId:ticket.outerId, status:ticketStatus.UN_OPEN,
                    printStatus:ticket.printStatus, printQueenStatus:ticketPrintQueenStatus.WAITING_GET, createTime:ticket.createTime};
                /*table.save(pTicket, [], function(err, data){

                });*/
                pTicket.game = game.getInfo(pTicket.gameCode);
                backBodyNode.ticket = pTicket;
                cb(null, backBodyNode);
            });
        }else{
            data.game = game.getInfo(data.gameCode);
            backBodyNode.ticket = data;
            cb(null, backBodyNode);
        }
    },{dateToString:true});
};
Example #12
0
InvestControl.prototype.handleIC03 = function (headNode, bodyNode, cb) {
    var conn = dc.main.getConn();
    var sql = "SELECT ";
    var condition = "loan.name,invest.id,invest.create_time,invest.money," +
        "(select sum(invest_repay.money)+sum(invest_repay.interest)+sum(invest_repay.st_interest) " +
        "from  invest_repay where invest_repay.status=0 and invest.id=invest_repay.invest_id)   as sumWaitMoney  ";
    var whCondition = " from invest LEFT JOIN loan  on invest.loan_id=loan.id where invest.status=1200 and (loan.status=1400 or loan.status=1500 or loan.status=1600)  and invest.user_id='" + bodyNode.id + "'";
    var exSql = sql + condition + whCondition;
    exSql += '  order by invest.create_time desc';
    exSql += '  limit ' + bodyNode.skip;
    exSql += ',' + bodyNode.limit;
    console.log(exSql);
    conn.execute(exSql, [], function (err, data) {
        for(var key in data)
        {
            var set = data[key];
            set.create_time = dateUtil.toString(set.create_time);
        }
        var backNode = {};
        backNode.rst = data;
        var countSql=sql+" count(*)  as num "+whCondition;
        conn.execute(countSql, [], function (err, countData) {
            backNode.count = countData[0].num;
            cb(null,backNode)
        });
    });
};
Example #13
0
IssueModel.prototype.Jcinit = function(table, cursor, check, sep, cb){
    var JcCache = dc.mg.get("jcDrawNumberCache");
    var termTable = dc.main.get("term");
    var conn = dc.mg.getConn();
    var cacheObj = {};
    //遍历将要算奖的ticket
    cursor.toArray(function(err, data){
        async.eachSeries(data, function(row, callback){
            if(row.rNumber != undefined && row.rNumber != null){
                var matchArray = row.rNumber.split(";");
                async.eachSeries(matchArray , function(match , callbackMath){
                    var termCode = match.split("|")[1];
                    var gameCode = row.gameCode;
                    if(cacheObj[termCode] == undefined || cacheObj[termCode] == null)
                    {
                        JcCache.findOne({"_id":termCode},{},[],function(err, result){
                            if(result != null && result != undefined){
                                cacheObj[termCode] = {code:termCode, number:result.drawNumber};
                                check.setDrawNumber({code:termCode, number:result.drawNumber});
                                callbackMath(null);
                            }else{
                                termTable.findOne({"id":gameCode + "_" + termCode},{wNum:1, status:1},[],function(err, result){
                                    if(result.status < termStatus.DRAW){
                                        //如果扫描到了需要开奖的数据但是还有没开奖的期次 则拷贝到这期表下面
                                        //log.info(row);
                                        table.findAndRemove({"_id": row._id}, {}, [], function(err, resultRow){
                                            log.error("由于期次没有结果移动到"+termCode+"算奖");
                                            log.info(resultRow);
                                            var colName = gameCode + "_" + termCode + "_" + sep;
                                            var tempTable = conn.collection(colName);
                                            tempTable.save(resultRow, [],function(){
                                                callbackMath(null);
                                            });
                                        });
                                    }else{
                                        cacheObj[termCode] = {code:termCode, number:result.wNum};
                                        check.setDrawNumber({code:termCode, number:result.wNum});
                                        callbackMath(null);
                                    }
                                })
                            }
                        });
                    }else{
                        callbackMath(null);
                    }
                },function(err){
                    callback(null);
                });
            }else {
                callback(null);
            }
        }, function (err){
            cursor.count(function(err, count){
                cursor.close();
                cb(err, check, count);
            })
        });
    });
}
Example #14
0
AdminControl.prototype.handleAD15 = function (user, headNode, bodyNode, cb) {
    var backBodyNode = {};
    var name = bodyNode.cond.name;
    var table = dc.main.get(name);
    table.remove({}, {}, function (err, data) {
        cb(err, backBodyNode);
    });
}
Example #15
0
 //查询当前投资者信息
 function (cb) {
     log.info('查询当前投资者信息');
     var bodyNode = JSON.parse(msg.content.toString());
     var investTab = dc.main.get('invest');
     investTab.findOne(bodyNode, {}, [], function (err, invest) {
         cb(err, invest);
     });
 },
Example #16
0
 //查询当前投资项目信息
 function (invest, cb) {
     log.info('查询当前投资项目信息');
     var loan_id = invest.loan_id;
     var loanTab = dc.main.get('loan');
     loanTab.findOne({id: loan_id}, {}, [], function (err, loan) {
         cb(err, loan, invest);
     });
 },
Example #17
0
 //更新期次状态
 function (cb) {
     var table = dc.main.get("term");
     var cond = {id: ""};
     table.findOne(cond, {}, [], function(err,term){
         term.status = "";
         cb(err, term);
     });
 },
Example #18
0
 function(cb)
 {
     var table = dc.main.get("term");
     table.findOne({id:bodyNode.id}, {}, [], function(err, data){
         data.game = game.getInfo(data.gameCode);
         backBodyNode.term = data;
         cb(err, data);
     }, {dateToString:true});
 },
Example #19
0
AdminControl.prototype.handleAD13 = function (user, headNode, bodyNode, cb) {
    var backBodyNode = {};
    var table = dc.main.get("gamegrade");
    var cond = bodyNode.cond;
    var data = bodyNode.data;
    table.update(cond, data, {}, function (err, data) {
        cb(err, backBodyNode);
    });
}
Example #20
0
 //更新数据库状态
 function(cb)
 {
     var table = dc.main.get("tticket");
     var cond = {id:ticket.id};
     var data = {$set:{status:ticketStatus.HITED,cashAmount:ticket.cashAmount,cashTerminal:ticket.cashTerminal,cashTime:ticket.cashTime}};
     table.update(cond, data, [], function(err, data){
         cb(err);
     });
 }
Example #21
0
 function (backBodyNode , cb) {
     var table = dc.main.get("gamegrade");
     var cursor = table.find({gameCode:bodyNode.gameCode, termCode: bodyNode.code}, {level:1,bonus:1,name:1,count:1}, []);
     cursor.dateToString();
     cursor.toArray(function(err, data){
         backBodyNode.bonusInfos = data;
         cb(err, backBodyNode);
     });
 }
Example #22
0
CheckFileJob.prototype._deleteTempTable = function(cb)
{
    var self = this;
    log.info(self.logStart + "删除临时表:" + self.tmpHitTable);
    var sql = "drop table " + self.tmpHitTable;
    var conn = dc.main.getConn();
    conn.execute(sql, {}, function (err, data) {
        cb(null, null);
    });
}
Example #23
0
AdminControl.prototype.handleAD12 = function (user, headNode, bodyNode, cb) {
    var backBodyNode = {};
    var table = dc.main.get("term");
    var term = bodyNode.term;
    term.id = term.gameCode + '_' + term.code;
    term.wNum = "09,12,22,32,34|02,04";
    table.save(term, [], function (err, data) {
        log.info(err);
        cb(err, backBodyNode);
    });
}
Example #24
0
AdminControl.prototype.handleAD04 = function (headNode, bodyNode, cb) {
    var table = dc.main.get('role_menu');
    table.remove({role_id: bodyNode.role_id, menu_id: bodyNode.menu_id}, [], function (err) {
        if (err) {
            log.error(headNode.messageid + '删除记录出错');
            cb(ec.E9999);
        } else {
            cb(null);
        }
    });
};
Example #25
0
 //插入数据
 function (id, cb) {
     var investTab = dc.main.get('invest');
     bodyNode.create_time = new Date();
     bodyNode.status = investStatus.init;
     bodyNode.id = id;
     var userTab = dc.main.get('user');
     userTab.findOne({username: bodyNode.username}, {}, [], function (err, userObj) {
         delete bodyNode.username;
         bodyNode.user_id = userObj.id;
         investTab.save(bodyNode, [], function (err) {
             if (err) {
                 cb(ec.E9050);
             } else {
                 var backNode = {};
                 backNode.id = id;
                 cb(null, backNode);
             }
         });
     });
 }
Example #26
0
 function(term, cb)
 {
     var table = dc.main.get("gamegrade");
     var cond = {gameCode:term.gameCode, termCode:term.code};
     var sort = {level:1};
     var cursor = table.find(cond, {}, []).sort(sort);
     cursor.dateToString();
     cursor.toArray(function(err, data){
         backBodyNode.rst = data;
         cb(err, data);
     });
 }
Example #27
0
 function(cb)
 {
     var table = dc.main.get("customer");
     var cond = {id:bodyNode.id};
     table.findOne(cond, {}, [], function(err, data){
         if(data)
         {
             backBodyNode.customer = data;
         }
         cb(err, data);
     });
 },
Example #28
0
TermPageControl.prototype.detail = function(headNode, bodyNode, cb)
{
    var self = this;
    var backBodyNode = {title:"期次详情"};
    backBodyNode.termStatus = termStatus.getInfoById();
    backBodyNode.game = game.getInfo();
    var table = dc.main.get("term");
    table.findOne({id:bodyNode.id}, {}, [], function(err, data){
        data.game = game.getInfo(data.gameCode);
        backBodyNode.term = data;
        cb(null, backBodyNode);
    }, {dateToString:true});
};
Example #29
0
TicketService.prototype.notHit = function(ticket, cb)
{
    var table = dc.main.get("tticket");
    var cond = {id:ticket.id};
    var data = {$set:{status:ticketStatus.NOT_HIT,
        dNumber:ticket.dNumber, auditTermCode:ticket.auditTermCode}};
    table.update(cond, data, {}, function(err, data){
        if(cb)
        {
            cb(err, data);
        }
    });
}
Example #30
0
 //查找所有的渠道
 function(cb)
 {
     var table = dc.main.get("customer");
     var cond = {type:userType.CHANNEL};
     table.find(cond, {}).toArray(function(err, data){
         if(err)
         {
             cb(ec.E0999);
             return;
         }
         cb(null, data);
     });
 },