public void UpdateAsync()
        {
            RacingEvent newData, oldData;

            if (DataSerializer.Deserialize(out oldData))
            {
                newData = oldData.DeepCopy();
                if (DataChecker.IsUpToDate(newData))
                {
                    if (DataChangeValidator.HasChanged(oldData, newData))
                    {
                        DataSerializer.Serialize(newData);
                        DataComplete(newData, CompletionStatus.Completed);
                    }
                    else
                    {
                        DataComplete(newData, CompletionStatus.NoChange);
                    }

                    return;
                }
            }

            NextEventDataDownloader nextEvent = new NextEventDataDownloader();

            nextEvent.OnDownloadCompleted += nextEvent_OnDownloadCompleted;
            nextEvent.DownloadEventDataAsync();
        }
Exemple #2
0
 public void Add(DatasList DatasList, Data Data, DataChecker DataChecker)
 {
     if (DataChecker.DataCheck(Data))
     {
         DatasList.Add(Data);
     }
 }
Exemple #3
0
 public Value GetValue(DatasList DatasList, Key Key, DataChecker DataChecker)
 {
     if (DataChecker.KeyCheck(Key))
     {
         return(DatasList.GetValue(Key));
     }
     return(new NullValue());
 }
Exemple #4
0
 public static DataChecker GetInstance()
 {
     if (mInstance == null)
     {
         mInstance = new DataChecker();
     }
     return(mInstance);
 }
Exemple #5
0
 public bool Reduce(DatasList DatasList, Key Key, Value Value, DataChecker DataChecker)
 {
     if (DataChecker.KeyCheck(Key))
     {
         return(DatasList.Reduce(Key, Value));
     }
     return(false);
 }
        private string CheckData(string columnName)
        {
            string errorInfo = null;

            if (columnName == "Name")
            {
                if (_checker == null)
                {
                    _checker = new DataChecker(VMGlobal.DistributionQuery.LinqOP);
                }
                errorInfo = _checker.CheckDataName <VIPUpTactic>(this);
            }
            else if (columnName == "BrandID")
            {
                if (BrandID == default(int))
                {
                    errorInfo = "不能为空";
                }
            }
            else if (columnName == "FormerKindID")
            {
                if (FormerKindID == default(int))
                {
                    errorInfo = "不能为空";
                }
            }
            else if (columnName == "AfterKindID")
            {
                if (AfterKindID == default(int))
                {
                    errorInfo = "不能为空";
                }
            }
            else if (columnName == "OnceConsume")
            {
                if (OnceConsume < 0)
                {
                    errorInfo = "不能小于0";
                }
            }
            else if (columnName == "DateSpan")
            {
                if (DateSpan < 0)
                {
                    errorInfo = "不能小于0";
                }
            }
            else if (columnName == "SpanConsume")
            {
                if (SpanConsume < 0)
                {
                    errorInfo = "不能小于0";
                }
            }
            return(errorInfo);
        }
Exemple #7
0
 protected void CheckSqlInject(params string[] values)
 {
     foreach (var key in values)
     {
         if (DataChecker.SqlIsInject(key))
         {
             throw new ArgumentException("SQL INCORRENT");
         }
     }
 }
Exemple #8
0
 public string RegisterPhone([FromBody] PhoneRegistrationModel value)
 {
     if (DataChecker.CheckPhoneRegistration(value))
     {
         string connectionString = ConfigurationManager.ConnectionStrings["SilentConnection"].ConnectionString;
         return(Base64Helper.Encode(SqlHelper.RegisterPhone(connectionString, Base64Helper.Decode(value.IMEI), Base64Helper.Decode(value.Manufacturer),
                                                            Base64Helper.Decode(value.Model), Base64Helper.Decode(value.Username), Base64Helper.Decode(value.Number))));
     }
     else
     {
         return(Base64Helper.Encode("fail"));
     }
 }
Exemple #9
0
    private void AddLoader <T>(DataType dataType, string filename, int keyIdx = 0, bool isXML = false)
    {
        LoadHandler handle = new LoadHandler();

        handle.dataType = dataType;
        handle.path     = filename;
        handle.type     = typeof(T);
        handle.isXML    = isXML;
        handle.keyIdx   = keyIdx;
        mLoadHandles.Add(filename, handle);

        DataChecker.GetInstance().Append(dataType, filename);
        ResourceManager.Instance.LoadBytes(filename, OnLoadTextCallback);
    }
Exemple #10
0
        private string CheckData(string columnName)
        {
            string errorInfo = null;

            if (columnName == "Name" || columnName == "Code")
            {
                if (_checker == null)
                {
                    _checker = new DataChecker(VMGlobal.ManufacturingQuery.LinqOP);
                }
                errorInfo = _checker.CheckDataCodeName <Factory>(this, columnName);
            }

            return(errorInfo);
        }
Exemple #11
0
        private string CheckData(string columnName)
        {
            string errorInfo = null;

            if (columnName == "Name")
            {
                if (_checker == null)
                {
                    _checker = new DataChecker(VMGlobal.DistributionQuery.LinqOP);
                }
                errorInfo = _checker.CheckDataName <ShopExpenseKind>(this);
            }

            return(errorInfo);
        }
        public void Test_Check()
        {
            var context = GetMockGitDB ();

            var checker = new DataChecker (context.Settings, context.Reader);

            var exampleArticle = new ExampleArticle ();

            var json = exampleArticle.ToJson ();

            var filePath = context.Saver.Namer.CreateFilePath (exampleArticle.TypeName, exampleArticle.Id);

            File.WriteAllText (filePath, json);

            var exists = checker.Exists (exampleArticle);

            Assert.IsTrue (exists);
        }
Exemple #13
0
 public string AuthentificateUserFromPhone([FromBody] UserAuthenticationModel value)
 {
     if (DataChecker.CheckUserCredentials(value))
     {
         string connectionString = ConfigurationManager.ConnectionStrings["SilentConnection"].ConnectionString;
         if (SqlHelper.LogInUser(connectionString, Base64Helper.Decode(value.Username), Base64Helper.Decode(value.Password)))
         {
             return(Base64Helper.Encode("success"));
         }
         else
         {
             return(Base64Helper.Encode("fail"));
         }
     }
     else
     {
         return(Base64Helper.Encode("fail"));
     }
 }
        public ActionResult SignUpPost(Models.User user)
        {
            if (DataChecker.IsLoginCorrect(user.Login) &&
                DataChecker.IsPasswordCorrect(user.Password) &&
                DataChecker.IsEmailCorrect(user.Email) &&
                DataChecker.IsPhoneNumberCorrect(user.Phone, '7'))
            {
                user.Password = Hashing.HashPassword(user.Password);

                using (var context = new UserContext())
                {
                    context.Users.Add(user);
                    context.SaveChanges();

                    return(RedirectToAction("SignIn", user));
                }
            }

            return(RedirectToAction("SignUp", user));
        }
        public void Test_Check()
        {
            var context = GetTestContext ();

            var checker = new DataChecker (context.Reader, context.Settings);

            var exampleArticle = new ExampleArticle ();

            context.Saver.Save (exampleArticle);

            // TODO: Make this test fully isolated instead of using the Save function above

            // TODO: clean up
            //var key = Context.Settings.Prefix + "-" + exampleArticle.GetType ().FullName + "-" + exampleArticle.Id;

            //Context.DataClient.Data [key] = exampleArticle.ToJson ();

            var exists = checker.Exists (exampleArticle);

            Assert.IsTrue (exists);
        }
Exemple #16
0
 public DataTable GetDataTableBySql(string sql)
 {
     try
     {
         Database  db        = GetDatabaseInstance();
         DbCommand dbCommand = db.GetSqlStringCommand(sql);
         dbCommand.CommandTimeout = 600;
         DataSet ds = db.ExecuteDataSet(dbCommand);
         if (DataChecker.IsNotEmpty(ds))
         {
             return(ds.Tables[0]);
         }
         else
         {
             return(null);
         }
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            //step1: find the aim object def
            string aimDGObjectType = "Borehole";

            //load standard
            IDSImporter     importer = new StandardImport_Exl();
            DataStandardDef standard = importer.Import(null);

            //StandardLoader loader = new StandardLoader();
            //DataStandardDef standard = loader.getStandard(null);

            // excel templete for data input
            IDataExporter dexporter = new DataExporter_Excel();

            dexporter.Export(standard);

            //generate data model according standard(write cs file ,need to be added manually)
            //ClassGenerator classGenerator = new ClassGenerator();
            //classGenerator.GenerateClass(standard);

            ////IDSExporter dsexporter = new Exporter_For_JSON();//export data standard
            //DGObjectDef aimDGObjectDef = standard.getDGObjectDefByCode(aimDGObjectType);

            //Import Data from excel
            IDataImporter dimporter = new DataImporter_Excel();
            string        path      = @"C:\Users\litao\Desktop\Geology.xls";
            DataSet       ds        = dimporter.Import(path, standard);

            DataChecker checker = new DataChecker(ds, standard);

            checker.Check();
            //store data to database
            IDataBaseManager dataManager = new DataBaseManager_EF();

            dataManager.Data2DB(ds, standard);

            //step8 : exporter the data
        }
        public TestContext()
        {
            DataClient = new MockRedisClientWrapper ();

            Settings = new DataManagerSettings ();
            Settings.IsVerbose = true;

            Keys = new DataKeys (Settings);

            IdManager = new DataIdManager (Keys, DataClient);
            TypeManager = new DataTypeManager (Keys, DataClient);

            EntityLinker = new EntityLinker ();

            var preparer = new DataPreparer (DataClient);
            Preparer = preparer;

            var reader = new DataReader (TypeManager, IdManager, Keys, DataClient);
            Reader = reader;

            var checker = new DataChecker (reader, Settings);
            Checker = checker;

            var saver = new DataSaver (Settings, TypeManager, IdManager, Keys, preparer, null, checker, DataClient); // The linker argument is null because it needs to be set after it's created below
            Saver = saver;

            var updater = new DataUpdater (Settings, Keys, null, preparer, checker, DataClient); // The linker argument is null because it needs to be set after it's created below
            Updater = updater;

            var linker = new DataLinker (Settings, reader, saver, updater, checker, EntityLinker);
            Linker = linker;

            // TODO: Is there a way to avoid this messy hack?
            // Make sure the linker is set to the saver and updater
            saver.Linker = linker;
            updater.Linker = linker;
        }
Exemple #19
0
 public ItemLibrary()
 {
     itemLibrary = new ItemDatasList();
     DataChecker = new ItemLibraryChecker();
 }
 public MockDataLinker(DataManagerSettings settings, DataReader reader, DataSaver saver, DataUpdater updater, DataChecker checker, EntityLinker entityLinker)
     : base(settings, reader, saver, updater, checker, entityLinker)
 {
 }
Exemple #21
0
    private void OnAllLoad()
    {
        //ulong start = TimeUtilities.GetNow();

        if (!DataChecker.GetInstance().Run())
        {
            GameDebug.LogError("数据填写错误, 需要修正后才可以正常运行!");
            return;
        }

        DataChecker.DestroyInstance();

        DataTable dataTable = DataManager.Instance.GetTable(DataType.DATA_SCENE_CITY);

        UpdateSceneTable(dataTable, true, false);

        dataTable = DataManager.instance.GetTable(DataType.DATA_SCENE_QIANGLINDANYU);
        UpdateSceneTable(dataTable, true, false);

        dataTable = DataManager.instance.GetTable(DataType.DATA_SCENE_QIANGLINDANYU);
        UpdateSceneTable(dataTable, true, false);

        dataTable = DataManager.instance.GetTable(DataType.DATA_SCENE_MONSTERFLOOD);
        UpdateSceneTable(dataTable, true, true);

        dataTable = DataManager.instance.GetTable(DataType.DATA_SCENE_STAGESCENE);
        UpdateSceneTable(dataTable, true, true);

        dataTable = DataManager.instance.GetTable(DataType.DATA_SCENE_TOWER_STAGE);
        UpdateSceneTable(dataTable, true, true);

        dataTable = DataManager.instance.GetTable(DataType.DATA_SCENE_ZOMBIES_STAGE);
        UpdateSceneTable(dataTable, true, true);

        dataTable = DataManager.instance.GetTable(DataType.DATA_SCENE_GOLD);
        UpdateSceneTable(dataTable, true, true);

        dataTable = DataManager.instance.GetTable(DataType.DATA_SCENE_HUNNENG);
        UpdateSceneTable(dataTable, true, true);


        dataTable = DataManager.Instance.GetTable(DataType.DATA_SCENE_ARENA);
        UpdateSceneTable(dataTable, true, false);

        dataTable = DataManager.Instance.GetTable(DataType.DATA_SCENE_QUALIFYING);
        UpdateSceneTable(dataTable, true, false);

        dataTable = DataManager.Instance.GetTable(DataType.DATA_SCENE_WANTED);
        UpdateSceneTable(dataTable, true, true);

        dataTable = DataManager.Instance.GetTable(DataType.DATA_SCENE_TD);
        UpdateSceneTable(dataTable, true, true);

        dataTable = DataManager.Instance.GetTable(DataType.DATA_SCENE_YAZHIXIEE);
        UpdateSceneTable(dataTable, true, false);

        dataTable = DataManager.Instance.GetTable(DataType.DATA_SCENE_ZHAOCAIMAO);
        UpdateSceneTable(dataTable, true, false);

        //SoundManager Init里需要SceneTable
        DataTable table = DataManager.Instance.GetTable(DataType.DATA_SOUND);

        SoundManager.Instance.Init(table);

        GameDebug.Log("load file successfully, time cost = " + (TimeUtilities.GetNow() - mReadFileStartTime) + "ms.");



        if (mCallback != null)
        {
            mCallback();
        }
    }
 public void CheckForCorrectTest()
 {
     Assert.AreEqual(true, DataChecker.CheckForCorrect("abc def hij", DataType.StringEnglish, " "));
 }
Exemple #23
0
        /// <summary>
        /// 文档列表Json数据
        /// </summary>
        public void PagerJsonData_POST()
        {
            HttpRequest request = HttpContext.Current.Request;


            int pageSize,
                pageIndex,
                recordCount,
                pages;

            int?categoryId = null,
               moduleId    = null;

            string _categoryId = request["category_id"],
                   _pageIndex  = request["page_index"] ?? "1",
                   _pageSize   = request["page_size"] ?? "10",
                   _visible    = request["lb_visible"] ?? "-1",
                   _special    = request["lb_special"] ?? "-1",
                   _system     = request["lb_system"] ?? "-1",
                   _aspage     = request["lb_page"] ?? "-1";

            int publisherId;

            int.TryParse(request["publisher_id"], out publisherId);

            bool   includeChild = request["include_child"] == "true";
            String keyword      = Request.Form["keyword"];

            if (!String.IsNullOrEmpty(keyword) && DataChecker.SqlIsInject(keyword))
            {
                throw new ArgumentException("Sql  inject?", keyword);
            }

            if (_categoryId != null)
            {
                int __categoryId;
                int.TryParse(_categoryId, out __categoryId);
                if (__categoryId > 0)
                {
                    categoryId = __categoryId;
                }
            }


            //处理页码大小并保存

            if (!Regex.IsMatch(_pageIndex, "^(?!0)\\d+$"))
            {
                pageIndex = 1;   //If pageindex start with zero or lower
            }
            else
            {
                pageIndex = int.Parse(_pageIndex);
            }

            //分页尺寸
            int.TryParse(_pageSize, out pageSize);


            string[,] flags = new string[, ] {
                { ArchiveFlag.GetInternalFlagKey(BuiltInArchiveFlags.IsSystem), _system },
                { ArchiveFlag.GetInternalFlagKey(BuiltInArchiveFlags.IsSpecial), _special },
                { ArchiveFlag.GetInternalFlagKey(BuiltInArchiveFlags.Visible), _visible },
                { ArchiveFlag.GetInternalFlagKey(BuiltInArchiveFlags.AsPage), _aspage }
            };



            //文档数据表,并生成Html
            DataTable dt = ServiceCall.Instance.ArchiveService.GetPagedArchives(this.SiteId, categoryId,
                                                                                publisherId, includeChild, flags, keyword, null, false, pageSize, pageIndex, out recordCount, out pages);

            foreach (DataRow dr in dt.Rows)
            {
                dr["content"] = "";
            }

            //  CmsLogic.Archive.GetPagedArchives(this.SiteId, moduleID, categoryID, _publisher_id, flags, null, false, pageSize, pageIndex, out recordCount, out pages);
            //moduleID == null ? CmsLogic.Archive.GetPagedArchives(categoryID, _publisher_id,flags, null, false, pageSize, pageIndex, out recordCount, out pages)
            //: CmsLogic.Archive.GetPagedArchives((SysModuleType)(moduleID ?? 1), _publisher_id, flags,null, false, pageSize, pageIndex, out recordCount, out pages);


            string pagerHtml = Helper.BuildJsonPagerInfo("javascript:window.toPage(1);", "javascript:window.toPage({0});", pageIndex, recordCount, pages);

            base.PagerJson(dt, pagerHtml);
        }
Exemple #24
0
 public InventoryCounter()
 {
     inventoryList = new InventoryList();
     DataChecker   = new InvenrtoryDataChecker();
 }
Exemple #25
0
 public static void DestroyInstance()
 {
     mInstance = null;
 }
Exemple #26
0
        public DataResult Forder_delivery(List <Forder_delivery_Input> input)
        {
            string sql = "";

            string where = "WHERE Fjde_sono=:Fjde_sono AND FsoentryID=:FsoentryID";
            int        count  = 0;
            DataResult result = new DataResult()
            {
                errCode = 0
            };

            System.Data.OracleClient.OracleCommand cmd = null;
            try
            {
                if (input == null || input.Count == 0)
                {
                    throw new Exception("传入参数不能为空");
                }

                TB_Dzsrcdel model = null;
                cmd = DbUtils.GetCommand(model, Operate.Insert);

                input.ForEach(p =>
                {
                    DataChecker.CheckObj(p);
                    //根据Fjde_sono和FsoentryID获取底表记录FID
                    var manuscript = GetManuscript_By_SonoAnd_EntryID(p.Fjde_sono, p.FsoentryID, cmd);

                    model = GetDzsrcdel(p.Fjde_sono, p.FsoentryID, cmd);
                    Operate insertOrupdate = Operate.Update;
                    if (model == null)
                    {
                        insertOrupdate      = Operate.Insert;
                        model               = new TB_Dzsrcdel();
                        model.FmanuscriptID = manuscript.FID;
                        model.Fjde_sono     = p.Fjde_sono;
                        model.FsoentryID    = p.FsoentryID;
                        model.Fsrcbillno    = p.Fsrcbillno;
                        model.fsrcdelno     = p.Fsrcdelno;
                        model.fdeldate      = p.Fdeldate;
                        model.Fproductcode  = p.Fproductcode;
                    }

                    model.fdelqty      = p.Fdelqty;
                    model.Fcasecode    = p.Fcasecode;
                    model.Fisdelover   = p.Fisdelover;
                    model.Fbuttstatus3 = p.Fbuttstatus3;
                    model.Fremark1     = p.Fremark2;
                    model.FTime        = DateTime.Now;


                    //插入或更新子表记录
                    sql = DbUtils.GetSqlWithObject(model, insertOrupdate);
                    sql = insertOrupdate == Operate.Update ? sql += where:sql;

                    cmd.CommandText = sql;
                    DbUtils.GetParams(model, cmd);
                    count += cmd.ExecuteNonQuery();
                });

                //按销售单号,行号进行汇总求和发货数量
                var group = input.GroupBy(p => new { p.Fjde_sono, p.FsoentryID })
                            .Select(p => new { Fjde_sono = p.Key.Fjde_sono, FsoentryID = p.Key.FsoentryID, Fdelqty_total = p.Sum(item => item.Fdelqty) })
                            .ToList();

                //更新WHERE语句,根据销售单号和行号更新发货数量
                where = "WHERE Fjde_sono=:Fjde_sono AND FsoentryID=:FsoentryID";
                group.ForEach(p => {
                    // 更新底表发货数量
                    sql = string.Format("UPDATE TB_DZmanuscript SET Fdelqty_total={0} WHERE Fjde_sono={1} AND FsoentryID={2}", p.Fdelqty_total, p.Fjde_sono, p.FsoentryID);

                    cmd             = DbUtils.GetCommand(new TB_DZmanuscript(), Operate.Update);
                    cmd.CommandText = sql;

                    count += cmd.ExecuteNonQuery();
                });

                cmd.Transaction.Commit();
                cmd.Connection.Close();

                if (count == 0)
                {
                    throw new Exception("同步失败,插入了0条数据");
                }
                return(result);
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(ex);
                LogHelper.WriteLog("Input: " + JsonHelper.ToJson(input));
                LogHelper.WriteLog("SQL: " + sql);
                result.errMsg  = ex.Message;
                result.errCode = -1;
                if (cmd != null)
                {
                    cmd.Transaction.Rollback();
                    cmd.Connection.Close();
                }

                return(result);
            }
        }
Exemple #27
0
        public DataResult Forder_confirm(Forder_confirm_Input input)
        {
            string sql = "";

            string where = " WHERE Fjde_sono=:Fjde_sono AND FsoentryID=:FsoentryID";
            DataResult result = new DataResult()
            {
                errCode = 0
            };

            try
            {
                DataChecker.CheckObj(input);


                TB_DZmanuscript model = new TB_DZmanuscript();

                model.Fjde_sono    = input.Fjde_sono;
                model.Fsrcbillno   = input.Fsrcbillno;
                model.Fproductcode = input.Fproductcode;
                //model.forderunit = input.Forderunit;
                model.Forderamount = input.Forderamount;
                model.FsoentryID   = input.FsoentryID;
                model.Forderprice  = input.Forderprice;
                model.Fisrejected  = input.Fisrejected;


                var cmd = DbUtils.GetCommand(model, Operate.Select);

                cmd.Parameters.AddWithValue("Fjde_sono", model.Fjde_sono);
                cmd.Parameters.AddWithValue("FsoentryID", model.FsoentryID);
                sql             = "SELECT COUNT(*) FROM TB_DZmanuscript" + where;
                cmd.CommandText = sql;
                var count = Convert.ToInt32(cmd.ExecuteScalar());

                if (count == -1)
                {
                    throw new Exception(string.Format("【{0}】销售订单号,行号【{1}】的记录不存在", input.Fjde_sono, input.FsoentryID));
                }

                sql = DbUtils.GetSqlWithObject(model, Operate.Update);

                DbUtils.GetParams(model, cmd);
                sql            += where;
                cmd.CommandText = sql;
                count           = cmd.ExecuteNonQuery();
                if (count > 0)
                {
                    cmd.Transaction.Commit();
                    cmd.Connection.Close();
                    return(result);
                }
                else
                {
                    throw new Exception("更新记录为0,未找到相关记录");
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(ex);
                LogHelper.WriteLog("Input: " + JsonHelper.ToJson(input));
                result.errMsg  = ex.Message;
                result.errCode = -1;
                return(result);
            }
        }
        public ActionResult DataUpload([FromQuery] string token, MilvanethProtocol data)
        {
            if (!_token.TryDecode(token, out var payload))
            {
                return(StatusCode(401));
            }

            if (!(data?.Context).Check() || !(data?.Data is PackedResult result) || !result.Check())
            {
                return(StatusCode(400));
            }

            try
            {
                if (payload.ValidTo < _time.UtcNow)
                {
                    return(StatusCode(511));
                }

                _auth.EnsureToken(payload, TokenPurpose.AccessToken, GlobalOperation.DATA_UPLOAD, 0, out var account);

                // virtual deduction for token validation operation
                var karmaBefore = account.Karma;
                account.Karma -= 20;

                switch (result.Type)
                {
                case PackedResultType.Inventory:
                    var inventory = (InventoryResult)result.Result;

                    if (inventory.Context != data.Context.CharacterId)
                    {
                        break;
                    }

                    _repo.Character.Commit(account.AccountId, new CharacterData
                    {
                        CharacterId = inventory.Context,
                        ServiceId   = data.Context.ServiceId,
                        AccountId   = account.AccountId,
                        Inventory   = LZ4MessagePackSerializer.Serialize(data.Data)
                    }, false);

                    account.Karma += 20;
                    break;

                case PackedResultType.InventoryNetwork:
                    var inventoryNetwork = (InventoryResult)result.Result;
                    _repo.Retainer.Commit(account.AccountId, new RetainerData
                    {
                        RetainerId = inventoryNetwork.Context,
                        Character  = data.Context.CharacterId,
                        World      = data.Context.World,
                        Inventory  = LZ4MessagePackSerializer.Serialize(data.Data)
                    }, false);

                    account.Karma += 20;
                    break;

                case PackedResultType.Artisan:
                    var artisan = (ArtisanResult)result.Result;
                    _repo.Character.CommitRange(account.AccountId, artisan.ArtisanList.Select(x => new CharacterData
                    {
                        CharacterId   = x.CharacterId,
                        CharacterName = x.IsValid ? x.CharacterName : null,
                        HomeWorld     = x.IsValid && !x.FromMemory ? data.Context.World : 0,
                    }), false);

                    account.Karma += 20 + artisan.ArtisanList.Count(x => x.IsValid) * 10 + artisan.ArtisanList.Count(x => !x.IsValid) * 3;
                    break;

                case PackedResultType.MarketHistory:
                    var marketHistory = (MarketHistoryResult)result.Result;
                    _repo.History.CommitRange(data.Context.CharacterId,
                                              marketHistory.HistoryItems.Select(x => x.ToDb(result.ReportTime, data.Context.World)),
                                              false);

                    account.Karma += 20 + 30;
                    break;

                case PackedResultType.MarketListing:
                    var marketListing = (MarketListingResult)result.Result;

                    var artisanFk = marketListing.ListingItems.Select(x => x.ArtisanId);
                    var ownerFk   = marketListing.ListingItems.Select(x => new { x.OwnerId, x.PlayerName }).ToImmutableList();

                    _repo.Character.CommitRange(account.AccountId,
                                                ownerFk.Where(x => x.OwnerId != 0).GroupBy(x => x.OwnerId).Select(y =>
                    {
                        var x = y.First();
                        return(new CharacterData
                        {
                            CharacterId = x.OwnerId,
                            HomeWorld = data.Context.World,
                            CharacterName = x.PlayerName
                        });
                    }),
                                                false);

                    _repo.Character.CommitRange(account.AccountId,
                                                artisanFk.Where(x => x > 0 && ownerFk.All(y => y.OwnerId != x)).Distinct().Select(x => new CharacterData {
                        CharacterId = x
                    }),
                                                true);

                    _repo.Retainer.CommitRange(account.AccountId,
                                               marketListing.ListingItems.GroupBy(x => x.RetainerId).Select(y =>
                    {
                        var x = y.First();
                        return(new RetainerData
                        {
                            RetainerId = x.RetainerId, Character = x.OwnerId, RetainerName = x.RetainerName, Location = x.RetainerLocation, World = data.Context.World
                        });
                    }),
                                               true);

                    _repo.Listing.CommitRange(data.Context.CharacterId,
                                              marketListing.ListingItems.Select(x => x.ToDb(result.ReportTime, data.Context.World)),
                                              false);

                    foreach (var x in marketListing.ListingItems.GroupBy(x => x.ItemId))
                    {
                        _repo.Overview.Commit(data.Context.CharacterId,
                                              new OverviewData
                        {
                            ReportTime  = result.ReportTime,
                            World       = data.Context.World,
                            ItemId      = x.Key,
                            OpenListing = (short)x.Count(),
                        }, false);
                    }


                    account.Karma += 20 + 100;
                    break;

                case PackedResultType.MarketOverview:
                    var marketOverview = (MarketOverviewResult)result.Result;
                    _repo.Overview.CommitRange(data.Context.CharacterId,
                                               marketOverview.ResultItems.Select(x => x.ToDb(result.ReportTime, data.Context.World)),
                                               false);

                    account.Karma += 20 + 30 + marketOverview.ResultItems.Count;
                    break;

                case PackedResultType.RetainerHistory:
                    // todo
                    break;

                case PackedResultType.RetainerList:
                    var retainerList = (RetainerInfoResult)result.Result;
                    _repo.Retainer.CommitRange(account.AccountId,
                                               retainerList.RetainerInfo.Select(x => x.ToDb(data.Context.CharacterId, data.Context.World)), false);

                    account.Karma += 20 + retainerList.RetainerInfo.Count * 4;
                    break;

                case PackedResultType.RetainerUpdate:
                    #region NotFinishedCode
                    // todo

                    // 目前有两种方案,直接更新和Copy-on-Update,前者的主要问题在于并发条件下Time-Bucket体系可能会出现问题,后者则在于性能开销,故目前暂不对此数据进行处理

                    //var retainerUpdate = (RetainerUpdateResult)result.Result;

                    //foreach (var item in retainerUpdate.UpdateItems)
                    //{
                    //    var record = _context.ListingData
                    //        .Where(x => x.RetainerId == item.RetainerId && x.ContainerId == (short)item.ContainerId && x.SlotId == item.ContainerSlot)
                    //        .OrderByDescending(x => x.ReportTime).Take(1);

                    //    if (!record.Any())
                    //    {
                    //        var retInfo =
                    //            _context.RetainerData.SingleOrDefault(x => x.RetainerId == item.RetainerId);

                    //        var record2 = _context.ListingData.Where(x =>
                    //                x.World == data.Context.World && x.ItemId == item.ItemInfo.ItemId &&
                    //                x.ReportTime <= result.ReportTime)
                    //            .OrderByDescending(x => x.ReportTime).Take(1);

                    //        _repo.Commit(data.Context.CharacterId, new ListingData
                    //        {
                    //            BucketId = record2.Any() ? record2.First().BucketId : Guid.Empty,
                    //            ReportTime = result.ReportTime,
                    //            World = data.Context.World,
                    //            ReporterId = data.Context.CharacterId,
                    //            ListingId = 0,
                    //            RetainerId = item.RetainerId,
                    //            OwnerId = data.Context.CharacterId,
                    //            ArtisanId = item.ItemInfo.ArtisanId,
                    //            UnitPrice = item.NewPrice,
                    //            TotalTax = 0,
                    //            Quantity = item.ItemInfo.Amount,
                    //            ItemId = item.ItemInfo.ItemId,
                    //            UpdateTime = Helper.DateTimeToUnixTimeStamp(result.ReportTime),
                    //            ContainerId = (short)item.ContainerId,
                    //            SlotId = (short)item.ContainerSlot,
                    //            Condition = (short)item.ItemInfo.Durability,
                    //            SpiritBond = (short)item.ItemInfo.SpiritBond,
                    //            Materia1 = item.ItemInfo.Materia1,
                    //            Materia2 = item.ItemInfo.Materia2,
                    //            Materia3 = item.ItemInfo.Materia3,
                    //            Materia4 = item.ItemInfo.Materia4,
                    //            Materia5 = item.ItemInfo.Materia5,
                    //            RetainerName = retInfo?.RetainerName,
                    //            PlayerName = item.ContainerId == InventoryContainerId.HIRE_LISTING ? null : _context.CharacterData.SingleOrDefault(x => x.CharacterId == data.Context.CharacterId)?.CharacterName,
                    //            IsHq = item.ItemInfo.IsHq,
                    //            MateriaCount = 0, //todo
                    //            OnMannequin = item.ContainerId != InventoryContainerId.HIRE_LISTING,
                    //            RetainerLoc = 0,//todo
                    //            DyeId = item.ItemInfo.DyeId
                    //        }, true);

                    //        account.Karma += 25;
                    //        continue;
                    //    }

                    //    var recordEntity = record.First();

                    //    if (recordEntity.ReportTime >= result.ReportTime)
                    //    {
                    //        account.Karma -= 25;
                    //        continue;
                    //    }

                    //    recordEntity.
                    //}

                    //account.Karma += 20 + retainerUpdate.UpdateItems.Count * 25;

                    #endregion

                    account.Karma += 20;
                    break;

                case PackedResultType.Status:
                    var status = (StatusResult)result.Result;

                    if (status.CharacterId != data.Context.CharacterId)
                    {
                        break;
                    }

                    if (account.PlayedCharacter == null)
                    {
                        account.PlayedCharacter = new long[0];
                    }

                    if (!account.PlayedCharacter.Contains(status.CharacterId))
                    {
                        var temp = new long[account.PlayedCharacter.Length + 1];
                        Array.Copy(account.PlayedCharacter, temp, account.PlayedCharacter.Length);
                        temp[temp.Length - 1]   = status.CharacterId;
                        account.PlayedCharacter = temp;
                    }

                    _repo.Character.Commit(account.AccountId, new CharacterData
                    {
                        CharacterId   = status.CharacterId,
                        CharacterName = status.CharacterName,
                        ServiceId     = data.Context.ServiceId,
                        AccountId     = account.AccountId,
                        HomeWorld     = status.CharacterHomeWorld,
                        JobLevels     = status.LevelInfo.ToDb(),
                        GilHold       = status.CharaInfo.GilHold
                    }, false);

                    account.Karma += 20 + 40;

                    break;

                case PackedResultType.LobbyService:
                    var lobbyService = (LobbyServiceResult)result.Result;

                    if (lobbyService.ServiceId != data.Context.ServiceId)
                    {
                        break;
                    }

                    if (account.RelatedService == null)
                    {
                        account.RelatedService = new long[0];
                    }

                    if (!account.RelatedService.Contains(lobbyService.ServiceId))
                    {
                        var temp = new long[account.RelatedService.Length + 1];
                        Array.Copy(account.RelatedService, temp, account.RelatedService.Length);
                        temp[temp.Length - 1]  = lobbyService.ServiceId;
                        account.RelatedService = temp;
                    }

                    account.Karma += 20;
                    break;

                case PackedResultType.LobbyCharacter:
                    var lobbyCharacter = (LobbyCharacterResult)result.Result;
                    if (!DataChecker.CheckOnlineCharacterBinding(data.Context.ServiceId,
                                                                 lobbyCharacter.CharacterItems))
                    {
#warning api availability is not checked.
                        account.Karma -= 180;
                        break;
                    }

                    if (account.RelatedService == null)
                    {
                        account.RelatedService = new long[0];
                    }

                    if (!account.RelatedService.Contains(data.Context.ServiceId))
                    {
                        var temp = new long[account.RelatedService.Length + 1];
                        Array.Copy(account.RelatedService, temp, account.RelatedService.Length);
                        temp[temp.Length - 1]  = data.Context.ServiceId;
                        account.RelatedService = temp;
                    }

                    _repo.Character.CommitRange(account.AccountId, lobbyCharacter.CharacterItems.Select(x => x.ToDb(data.Context.ServiceId)), false);

                    account.Karma += 20 + 20 * lobbyCharacter.CharacterItems.Count;
                    break;

                default:
                    // do nothing
                    break;
                }

                _context.KarmaLog.Add(new KarmaLog
                {
                    ReportTime = _time.UtcNow,
                    AccountId  = account.AccountId,
                    Reason     = GlobalOperation.DATA_UPLOAD + (int)result.Type,
                    Before     = karmaBefore,
                    After      = account.Karma
                });

                _context.AccountData.Update(account);
                _context.SaveChanges();

                return(StatusCode(200));
            }
            catch (Exception e)
            {
                Log.Error(e, "Error in DATA/UPLOAD");
                return(StatusCode(500));
            }
        }
Exemple #29
0
        public ActionResult <MilvanethProtocol> AccountRecoveryGame(MilvanethProtocol data)
        {
            if (!(data?.Data is RecoveryGame game) || !game.Check())
            {
                return(new MilvanethProtocol
                {
                    Context = null,
                    Data = new ServerResponse
                    {
                        Message = GlobalMessage.DATA_INVALID_INPUT,
                        ReportTime = _time.SafeNow,
                    }
                });
            }

            if (!_pow.Verify(game.ProofOfWork))
            {
                return(new MilvanethProtocol
                {
                    Context = null,
                    Data = new ServerResponse
                    {
                        Message = GlobalMessage.RATE_POW_REQUIRED,
                        AuthToken = _pow.Generate((byte)Math.Max(GlobalConfig.POW_SENSITIVE_OPERATION, _pow.Difficulty)),
                        ReportTime = _time.SafeNow,
                    }
                });
            }

            try
            {
                var user = _context.AccountData.Include(x => x.PrivilegeLevelNavigation).Single(x => x.AccountName == game.Username);

                _auth.EnsureAccount(user, new PrivilegeConfig {
                    AccountOperation = true
                }, GlobalOperation.ACCOUNT_RECOVERY_GAME, 0, "Recovery account via account/recovery with game", _accessor.GetIp());

                var success = game.Trace.Count(t => user.Trace.Contains(t));

                if (!DataChecker.WeightedSuccess(success, game.Trace.Length, user.Trace.Length))
                {
                    return(new MilvanethProtocol
                    {
                        Context = null,
                        Data = new ServerResponse
                        {
                            Message = GlobalMessage.DATA_TRACE_MISMATCH,
                            ReportTime = _time.SafeNow,
                        }
                    });
                }

                if (user.RegisterService != game.Service.ServiceId)
                {
                    return(new MilvanethProtocol
                    {
                        Context = null,
                        Data = new ServerResponse
                        {
                            Message = GlobalMessage.DATA_RECORD_MISMATCH,
                            ReportTime = _time.SafeNow,
                        }
                    });
                }

                var recovery = _api.Sign(_changeToken, 1, user, _time.UtcNow, _time.UtcNow.AddSeconds(GlobalConfig.TOKEN_ACCOUNT_LIFE_TIME));

                return(new MilvanethProtocol
                {
                    Context = null,
                    Data = new ServerResponse
                    {
                        Message = GlobalMessage.OK_SUCCESS,
                        ReportTime = _time.SafeNow,
                        AuthToken = recovery.Key,
                    }
                });
            }
            catch (Exception e)
            {
                Log.Error(e, "Error in ACCOUNT/RECOVERYGAME");
                return(new MilvanethProtocol
                {
                    Context = null,
                    Data = new ServerResponse
                    {
                        Message = GlobalMessage.OP_INVALID,
                        ReportTime = _time.SafeNow,
                    }
                });
            }
        }
Exemple #30
0
        /// <summary>
        /// 文档列表Json数据
        /// </summary>
        public void PagerJsonData_POST()
        {
            int
                pageIndex,
                recordCount,
                pages;

            int?categoryId = null,
               moduleId    = null;

            int.TryParse(Request.Form("page_size"), out var pageSize);
            if (pageSize == 0)
            {
                pageSize = 10;
            }


            string _categoryId = Request.Form("category_id"),
                   _pageIndex  = Request.Form("page_index");
            //   _pageSize = Request.Form("page_size")[0] ?? "10",
            //  _visible = Request.Form("lb_visible")[0] ?? "-1",
            //  _special = Request.Form("lb_special")[0] ?? "-1",
            //  _system = Request.Form("lb_system")[0] ?? "-1",
            //  _aspage = Request.Form("lb_page")[0] ?? "-1";

            int publisherId;

            int.TryParse(Request.Query("author_id"), out publisherId);

            var    includeChild = Request.Query("include_child") == "true";
            string keyword      = Request.Form("keyword");

            if (!string.IsNullOrEmpty(keyword) && DataChecker.SqlIsInject(keyword))
            {
                throw new ArgumentException("sql inject?", keyword);
            }

            if (_categoryId != null)
            {
                int __categoryId;
                int.TryParse(_categoryId, out __categoryId);
                if (__categoryId > 0)
                {
                    categoryId = __categoryId;
                }
            }


            //处理页码大小并保存

            if (!Regex.IsMatch(_pageIndex, "^(?!0)\\d+$"))
            {
                pageIndex = 1; //If pageindex start with zero or lower
            }
            else
            {
                pageIndex = int.Parse(_pageIndex);
            }


            //文档数据表,并生成Html
            var dt = ServiceCall.Instance.ArchiveService.GetPagedArchives(SiteId, categoryId,
                                                                          publisherId, includeChild, 0, keyword, null, false, pageSize, pageIndex, out recordCount, out pages);

            foreach (DataRow dr in dt.Rows)
            {
                dr["content"] = "";
            }

            //  CmsLogic.Archive.GetPagedArchives(this.SiteId, moduleID, categoryID, _author_id, flags, null, false, pageSize, pageIndex, out recordCount, out pages);
            //moduleID == null ? CmsLogic.Archive.GetPagedArchives(categoryID, _author_id,flags, null, false, pageSize, pageIndex, out recordCount, out pages)
            //: CmsLogic.Archive.GetPagedArchives((SysModuleType)(moduleID ?? 1), _author_id, flags,null, false, pageSize, pageIndex, out recordCount, out pages);


            var pagerHtml = Helper.BuildJsonPagerInfo("javascript:window.toPage(1);", "javascript:window.toPage({0});",
                                                      pageIndex, recordCount, pages);

            PagerJson(dt, pagerHtml);
        }
        public static BulkDataModel DecodeBulk(BulkDataModel bulkData)
        {
            if (bulkData != null)
            {
                if (DataChecker.CheckAuthentication(bulkData.Authentication))
                {
                    bulkData.Authentication.IMEI     = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Authentication.IMEI)));
                    bulkData.Authentication.SecToken = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlSafe(bulkData.Authentication.SecToken)));
                }

                if (DataChecker.CheckKeylogger(bulkData.Keylogger))
                {
                    bulkData.Keylogger.Info = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlSafe(bulkData.Keylogger.Info)));
                    bulkData.Keylogger.Hash = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlSafe(bulkData.Keylogger.Hash)));
                }

                if (DataChecker.CheckLocation(bulkData.Location))
                {
                    for (int i = 0; i < bulkData.Location.Locations.Count; i++)
                    {
                        bulkData.Location.Locations[i].Latitude  = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Location.Locations[i].Latitude)));
                        bulkData.Location.Locations[i].Longitude = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Location.Locations[i].Longitude)));
                        bulkData.Location.Locations[i].Date      = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Location.Locations[i].Date)));
                    }
                    if (bulkData.Location.Hash != null)
                    {
                        bulkData.Location.Hash = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Location.Hash)));
                    }
                }

                if (DataChecker.CheckCalls(bulkData.CallHistory))
                {
                    for (int i = 0; i < bulkData.CallHistory.Calls.Count; i++)
                    {
                        bulkData.CallHistory.Calls[i].Date      = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.CallHistory.Calls[i].Date)));
                        bulkData.CallHistory.Calls[i].Direction = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.CallHistory.Calls[i].Direction)));
                        bulkData.CallHistory.Calls[i].Duration  = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.CallHistory.Calls[i].Duration)));
                        bulkData.CallHistory.Calls[i].Number    = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.CallHistory.Calls[i].Number)));
                    }
                }

                if (DataChecker.CheckContacts(bulkData.Contacts))
                {
                    for (int i = 0; i < bulkData.Contacts.ContactList.Count; i++)
                    {
                        bulkData.Contacts.ContactList[i].Name   = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Contacts.ContactList[i].Name)));
                        bulkData.Contacts.ContactList[i].Number = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Contacts.ContactList[i].Number)));
                    }
                }

                if (DataChecker.CheckMessages(bulkData.Messages))
                {
                    for (int i = 0; i < bulkData.Messages.Messages.Count; i++)
                    {
                        bulkData.Messages.Messages[i].Address = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Messages.Messages[i].Address)));
                        bulkData.Messages.Messages[i].State   = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Messages.Messages[i].State)));
                        bulkData.Messages.Messages[i].Date    = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Messages.Messages[i].Date)));
                        bulkData.Messages.Messages[i].Type    = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Messages.Messages[i].Type)));
                        bulkData.Messages.Messages[i].Body    = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Messages.Messages[i].Body)));
                    }
                }

                if (DataChecker.CheckTrafic(bulkData.Trafic))
                {
                    bulkData.Trafic.Trafic = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Trafic.Trafic)));
                    bulkData.Trafic.Hash   = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Trafic.Hash)));
                }

                if (DataChecker.CheckApplications(bulkData.Applications))
                {
                    for (int i = 0; i < bulkData.Applications.Applications.Count; i++)
                    {
                        bulkData.Applications.Applications[i].Name = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Applications.Applications[i].Name)));
                    }
                }

                if (DataChecker.CheckPhotos(bulkData.Photos))
                {
                    for (int i = 0; i < bulkData.Photos.Photos.Count; i++)
                    {
                        bulkData.Photos.Photos[i].Date      = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Photos.Photos[i].Date)));
                        bulkData.Photos.Photos[i].Latitude  = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Photos.Photos[i].Latitude)));
                        bulkData.Photos.Photos[i].Longitude = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Photos.Photos[i].Longitude)));
                    }
                }

                if (DataChecker.CheckMetadata(bulkData.Metadata))
                {
                    for (int i = 0; i < bulkData.Metadata.Metadata.Count; i++)
                    {
                        bulkData.Metadata.Metadata[i] = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(MakeUrlUnsafe(bulkData.Metadata.Metadata[i])));
                    }
                }
                return(bulkData);
            }
            return(null);
        }