Example #1
0
    void addDataRemain(StatIncomeExpensesItemBase item, DateTime time, Dictionary <int, IncomeExInfo> incomeInfo)
    {
        IMongoQuery imq = Query.EQ("genTime", BsonValue.Create(time));

        Dictionary <string, object> data = new Dictionary <string, object>();

        data.Add("goldRemain", item.m_goldRemain);
        data.Add("gemRemain", item.m_gemRemain);
        data.Add("dbRemain", item.m_dbRemain);
        data.Add("chipRemain", item.m_chipRemain);

        IncomeExInfo info = incomeInfo[1];

        data.Add("dayGoldStart", info.m_start);
        data.Add("dayGoldRemain", info.m_end);

        info = incomeInfo[2];
        data.Add("dayGemStart", info.m_start);
        data.Add("dayGemRemain", info.m_end);

        info = incomeInfo[11];
        data.Add("dayChipStart", info.m_start);
        data.Add("dayChipRemain", info.m_end);

        info = incomeInfo[14];
        data.Add("dayDbStart", info.m_start);
        data.Add("dayDbRemain", info.m_end);

        info = incomeInfo[-1];
        data.Add("dayPlayerCount", info.m_start);

        MongodbLog.Instance.ExecuteUpdateByQuery(TableName.STAT_INCOME_EXPENSES_REMAIN, imq, data);
    }
Example #2
0
    void stat()
    {
        DateTime    startTime = m_statDay.AddDays(-1);
        DateTime    endTime   = m_statDay;
        IMongoQuery imq1      = Query.LT("genTime", BsonValue.Create(endTime));
        IMongoQuery imq2      = Query.GTE("genTime", BsonValue.Create(startTime));
        IMongoQuery imq       = Query.And(imq1, imq2);

        beginStat("StatPlayerTotalIncomeExpensesNew MapReduce开始统计");

        MapReduceResult mapResult = MongodbLog.Instance.executeMapReduce(TableName.PUMP_PLAYER_MONEY,
                                                                         imq,
                                                                         MapReduceTable.getMap("incomeExpensesNew"),
                                                                         MapReduceTable.getReduce("incomeExpensesNew"));

        endStat("StatPlayerTotalIncomeExpensesNew MapReduce结束统计");

        if (mapResult != null)
        {
            beginStat("StatPlayerTotalIncomeExpensesNew 开始写入数据");
            IEnumerable <BsonDocument> bson = mapResult.GetResults();
            StatIncomeExpensesItemBase item = new StatIncomeExpensesItemBase();
            foreach (BsonDocument d in bson)
            {
                BsonValue    resValue = d["value"];
                BsonDocument bd       = (BsonDocument)resValue;
                foreach (var gameName in bd.Names)
                {
                    int gameId = Convert.ToInt32(gameName);

                    BsonDocument gameData = (BsonDocument)bd[gameName];
                    foreach (var itemId in gameData.Names)
                    {
                        Dictionary <string, object> upData = new Dictionary <string, object>();
                        upData.Add("genTime", startTime);
                        upData.Add("gameId", gameId);
                        upData.Add("itemId", Convert.ToInt32(itemId));

                        BsonDocument itemData = (BsonDocument)gameData[itemId];

                        bool isAdd = false;
                        foreach (var ulkey in itemData.Names)
                        {
                            BsonDocument uldate = (BsonDocument)itemData[ulkey];
                            long         income = uldate["income"].ToInt64();
                            long         outlay = uldate["outlay"].ToInt64();
                            if (income > 0)
                            {
                                upData.Add(ulkey + "z", income);
                                isAdd = true;
                            }
                            if (outlay > 0)
                            {
                                upData.Add(ulkey + "f", outlay);
                                isAdd = true;
                            }
                        }

                        if (isAdd)
                        {
                            MongodbLog.Instance.ExecuteInsert(TableName.STAT_INCOME_EXPENSES_NEW, upData);
                        }
                    }
                }
            }

            endStat("StatPlayerTotalIncomeExpensesNew 结束写入数据");
        }

        IMongoQuery imq3 = Query.EQ("is_robot", false);

        MapReduceResult mapResult1 = MongodbPlayer.Instance.executeMapReduce(TableName.PLAYER_INFO,
                                                                             imq3,
                                                                             MapReduceTable.getMap("incomeExpensesRemain"),
                                                                             MapReduceTable.getReduce("incomeExpensesRemain"));

        if (mapResult1 != null)
        {
            IEnumerable <BsonDocument> bson = mapResult1.GetResults();
            StatIncomeExpensesItemBase item = new StatIncomeExpensesItemBase();
            foreach (BsonDocument d in bson)
            {
                BsonValue resValue = d["value"];

                item.m_goldRemain = resValue["goldRemain"].ToInt64();
                item.m_gemRemain  = resValue["gemRemain"].ToInt64();
                item.m_dbRemain   = resValue["dbRemain"].ToInt64();
                item.m_chipRemain = resValue["chipRemain"].ToInt64();

                Dictionary <int, IncomeExInfo> incomeInfo = calStartRemain(imq);

                addDataRemain(item, startTime, incomeInfo);
            }
        }
    }