예제 #1
0
 public HSAModule([Import(LogNames.Session)] ILogWriter logger,
                  IWingsSessionFactoryProvider sessionFactoryProvider,
                  HospitalServiceAreaRegionStrategy entityStrategy
                  , BaseDataProvider baseDataProvider)
     : base(logger, sessionFactoryProvider, entityStrategy, baseDataProvider)
 {
 }
예제 #2
0
 public HRRModule([Import(LogNames.Session)] ILogWriter logger,
                  IWingsSessionFactoryProvider sessionFactoryProvider
                  , HealthReferralRegionStrategy entityStrategy
                  , BaseDataProvider baseDataProvider)
     : base(logger, sessionFactoryProvider, entityStrategy, baseDataProvider)
 {
 }
예제 #3
0
        public override object Do(PanelContext data)
        {
            string         tag      = data.Objects["tag"] as string;
            List <DataKey> dataKeys = data.State as List <DataKey>;

            if (!String.IsNullOrEmpty(tag) && dataKeys != null)
            {
                foreach (DataKey key in dataKeys)
                {
                    string  id = key["ID"] as string;
                    Article a  = ArticleHelper.GetArticle(id, null);
                    if (a != null)
                    {
                        a.Tags += String.Format("'{0}'", tag);
                        if (!String.IsNullOrEmpty(a.ModelXml))
                        {
                            DataSet ds = BaseDataProvider.CreateDataSet(data.Model);
                            BaseDataProvider.ReadXml(ds, a.ModelXml);

                            if (ds.Tables[data.Table.Name].Rows.Count > 0 && ds.Tables[data.Table.Name].Columns.Contains("Tags"))
                            {
                                ds.Tables[data.Table.Name].Rows[0]["Tags"] = a.Tags;
                                a.ModelXml = BaseDataProvider.GetXml(ds);
                            }
                        }

                        AddTagToSingleTable(data, id, a.Tags);
                        ArticleHelper.UpdateArticle(a, new string[] { "Tags", "ModelXml" });
                    }
                }
            }
            UIHelper.SendMessage("添加标签成功");
            CacheRecord.Create(data.ModelName).Release();
            return(false);
        }
예제 #4
0
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="dataProvider"></param>
        /// <param name="strSql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static int Update(this BaseDataProvider dataProvider, string strSql, object param)
        {
            var idbCon = dataProvider.GetIDbConnection();
            var data   = idbCon.Execute(strSql, param);

            idbCon.Close();
            return(data);
        }
예제 #5
0
        /// <summary>
        /// 获取单个
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="dataProvider"></param>
        /// <param name="strSql">查询语句</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public static T GetOne <T>(this BaseDataProvider dataProvider, string strSql, object param)
        {
            var idbCon = dataProvider.GetIDbConnection();
            var data   = idbCon.Query <T>(strSql, param);

            idbCon.Close();
            return(data.FirstOrDefault());
        }
예제 #6
0
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="dataProvider"></param>
        /// <param name="strSql">查询语句</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public static IList <T> GetList <T>(this BaseDataProvider dataProvider, string strSql, object param)
        {
            var idbCon = dataProvider.GetIDbConnection();
            var data   = idbCon.Query <T>(strSql, param);

            idbCon.Close();
            return(data.ToList());
        }
예제 #7
0
        public override object Do(PanelContext data)
        {
            try
            {
                List <DataKey> dataKeys = data.State as List <DataKey>;
                if (dataKeys != null)
                {
                    foreach (DataKey key in dataKeys)
                    {
                        string  id = key["ID"] as string;
                        Article a  = ArticleHelper.GetArticle(id, null);

                        if (a != null && a.State != 2)
                        {
                            a.State = 0;

                            if (!String.IsNullOrEmpty(a.ModelXml))
                            {
                                DataSet ds = BaseDataProvider.CreateDataSet(data.Model);
                                BaseDataProvider.ReadXml(ds, a.ModelXml);

                                if (ds.Tables[data.Table.Name].Rows.Count > 0 && ds.Tables[data.Table.Name].Columns.Contains("State"))
                                {
                                    ds.Tables[data.Table.Name].Rows[0]["State"] = 0;
                                    a.ModelXml = BaseDataProvider.GetXml(ds);
                                }
                            }
                            if (DbHelper.CheckTableExits(data.Table.Name))
                            {
                                DbHelper.ExecuteSql(String.Format("UPDATE [{0}] SET [State]=0 WHERE [ID]='{1}'", data.Table.Name, id));
                            }
                            ArticleHelper.UpdateArticle(a, new string[] { "State", "ModelXml" });
                        }
                    }
                }
                UIHelper.SendMessage("取消发布成功");
                CacheRecord.Create(data.ModelName).Release();
            }
            catch (Exception ex)
            {
                UIHelper.SendError("取消发布失败:" + ex.Message);
            }
            return(null);
        }
예제 #8
0
        static void Main(string[] args)
        {
            Game.Program.MainForm = new DummyMainForm();
            Game.DataProvider.Load();


            File.WriteAllText("drops.json", JsonConvert.SerializeObject(Game.DataProvider.Drops, Formatting.Indented));
            File.WriteAllText("items.json", JsonConvert.SerializeObject(Game.DataProvider.Items, Formatting.Indented));
            File.WriteAllText("equips.json", JsonConvert.SerializeObject(Game.DataProvider.Equips, Formatting.Indented));
            File.WriteAllText("mobs.json", JsonConvert.SerializeObject(Game.DataProvider.Mobs, Formatting.Indented));

            ExportDrops();

            // Cleanup footholds
            Game.DataProvider.Maps.ForEach(x =>
            {
                x.Value.SetFootholds(new List <Foothold>());
            });

            File.WriteAllText("maps.json", JsonConvert.SerializeObject(Game.DataProvider.Maps, Formatting.Indented, new JsonSerializerSettings
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            }));



            var categoryItemCount   = new Dictionary <ushort, int>();
            var itemCategoryMapping = new Dictionary <ushort, int>();
            Action <byte, byte, Constants.Items.Types.ItemTypes> addItemTypeMap = (cat, catSub, slot) =>
            {
                itemCategoryMapping[(ushort)slot] = (10000000 * cat) + (100000 * catSub);
                categoryItemCount[(ushort)slot]   = 0;
            };

            addItemTypeMap(2, 0, Constants.Items.Types.ItemTypes.ArmorHelm);
            addItemTypeMap(2, 1, Constants.Items.Types.ItemTypes.AccessoryFace);
            addItemTypeMap(2, 2, Constants.Items.Types.ItemTypes.AccessoryEye);
            addItemTypeMap(2, 3, Constants.Items.Types.ItemTypes.ArmorOverall);
            addItemTypeMap(2, 4, Constants.Items.Types.ItemTypes.ArmorTop);
            addItemTypeMap(2, 5, Constants.Items.Types.ItemTypes.ArmorBottom);
            addItemTypeMap(2, 6, Constants.Items.Types.ItemTypes.ArmorShoe);
            addItemTypeMap(2, 7, Constants.Items.Types.ItemTypes.ArmorGlove);

            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.Weapon1hSword);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.Weapon1hAxe);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.Weapon1hMace);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponDagger);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponWand);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponStaff);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.Weapon2hSword);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.Weapon2hAxe);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.Weapon2hMace);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponSpear);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponPolearm);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponBow);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponCrossbow);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponClaw);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.WeaponCash);
            addItemTypeMap(2, 8, Constants.Items.Types.ItemTypes.ArmorShield);

            addItemTypeMap(2, 9, Constants.Items.Types.ItemTypes.ArmorRing);
            addItemTypeMap(2, 9, Constants.Items.Types.ItemTypes.AccessoryEarring);

            // Premium
            addItemTypeMap(2, 10, Constants.Items.Types.ItemTypes.ArmorPendant);
            addItemTypeMap(2, 10, Constants.Items.Types.ItemTypes.WeaponSkillFX);

            // Cape
            addItemTypeMap(2, 11, Constants.Items.Types.ItemTypes.ArmorCape);



            // Scroll
            addItemTypeMap(3, 0, Constants.Items.Types.ItemTypes.ItemScroll);
            addItemTypeMap(3, 0, Constants.Items.Types.ItemTypes.ItemReturnScroll);
            addItemTypeMap(3, 0, Constants.Items.Types.ItemTypes.ItemAPSPReset);
            // Messenger
            addItemTypeMap(3, 1, Constants.Items.Types.ItemTypes.ItemMegaPhone);
            // Weather
            addItemTypeMap(3, 2, Constants.Items.Types.ItemTypes.ItemWeather);



            // Beauty Parlor
            addItemTypeMap(5, 0, Constants.Items.Types.ItemTypes.EtcCoupon);

            // Store
            addItemTypeMap(5, 1, Constants.Items.Types.ItemTypes.EtcStorePermit);

            // Game
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.EtcEXPCoupon);
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.EtcGachaponTicket);
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.EtcChocolate);
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.EtcSafetyCharm);
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.ItemKite);
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.ItemMesoSack);
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.ItemNote);
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.ItemJukebox);
            addItemTypeMap(5, 2, Constants.Items.Types.ItemTypes.ItemTeleportRock);

            // Facial Expression
            addItemTypeMap(5, 3, Constants.Items.Types.ItemTypes.EtcEmote);

            // Anniversary
            // nothing?

            // Pet
            addItemTypeMap(6, 0, Constants.Items.Types.ItemTypes.Pet);
            // Pet Equip
            addItemTypeMap(6, 1, Constants.Items.Types.ItemTypes.PetEquip);
            addItemTypeMap(6, 1, Constants.Items.Types.ItemTypes.PetSkills);
            // Pet Use
            addItemTypeMap(6, 2, Constants.Items.Types.ItemTypes.EtcWaterOfLife);
            addItemTypeMap(6, 2, Constants.Items.Types.ItemTypes.ItemPetTag);
            addItemTypeMap(6, 2, Constants.Items.Types.ItemTypes.ItemPetFood);

            // Package

            var nxFileKVP = BaseDataProvider.GetMergedDatafiles();
            var nxFile    = nxFileKVP.Key;

            var cashItemData = new Dictionary <int, List <(byte count, byte gender, byte onSale, byte period, int price, byte priority)> >();

            foreach (var commodityNode in nxFile.BaseNode["Etc"]["Commodity.img"])
            {
                var itemId   = commodityNode["ItemId"].ValueInt32();
                var count    = commodityNode["Count"].ValueByte();
                var gender   = commodityNode["Gender"].ValueUInt8();
                var onSale   = commodityNode["OnSale"].ValueUInt8();
                var period   = commodityNode["Period"].ValueUInt8();
                var price    = commodityNode["Price"].ValueInt32();
                var priority = commodityNode["Priority"].ValueUInt8();

                if (onSale == 0)
                {
                    onSale = 1;
                }

                if (!cashItemData.ContainsKey(itemId))
                {
                    cashItemData[itemId] = new List <(byte count, byte gender, byte onSale, byte period, int price, byte priority)>();
                }

                cashItemData[itemId].Add((count, gender, onSale, period, price, priority));
            }

            using (var fs = File.Open("Commodity.img", FileMode.Create, FileAccess.Write, FileShare.Read))
                using (var sr = new StreamWriter(fs))
                    using (var fsT = File.Open("Commodity.tsv", FileMode.Create, FileAccess.Write, FileShare.Read))
                        using (var srT = new StreamWriter(fsT))
                        {
                            sr.WriteLine("#Property");
                            var i = 0;

                            var allCashItems = Game.DataProvider.Equips.Where(x => x.Value.Cash).Select(x => x.Key)
                                               .Union(Game.DataProvider.Items.Where(x => x.Value.Cash).Select(x => x.Key))
                                               .Union(Game.DataProvider.Pets.Select(x => x.Key))
                                               .OrderBy(x => x);

                            foreach (var itemId in allCashItems)
                            {
                                var slot = (ushort)Constants.getItemType(itemId);

                                if (slot == 3 || slot == 2)
                                {
                                    continue;
                                }

                                if (!itemCategoryMapping.ContainsKey(slot))
                                {
                                    Console.WriteLine("Item {0} ({1}) is not inside mapping.", itemId, (Constants.Items.Types.ItemTypes)slot);
                                    continue;
                                }

                                void writeLine(byte count, byte gender, byte onSale, byte period, int price, byte priority)
                                {
                                    var sn = itemCategoryMapping[slot];
                                    var currentItemIndex = categoryItemCount[slot];

                                    categoryItemCount[slot] += 1;
                                    sn += currentItemIndex;

                                    sr.WriteLine(i + " = {");
                                    sr.WriteLine("\tSN = " + sn);
                                    sr.WriteLine("\tCount = " + count);
                                    sr.WriteLine("\tGender = " + gender);
                                    sr.WriteLine("\tItemId = " + itemId);
                                    sr.WriteLine("\tOnSale = " + onSale);
                                    sr.WriteLine("\tPeriod = " + period);
                                    sr.WriteLine("\tPrice = " + price);
                                    sr.WriteLine("\tPriority = " + priority);
                                    sr.WriteLine("}");
                                    sr.WriteLine("");


                                    srT.WriteLine($"{sn}\t{count}\t{gender}\t{itemId}\t{onSale}\t{period}\t{price}\t{priority}");

                                    i++;
                                }

                                if (cashItemData.TryGetValue(itemId, out var alreadyFound))
                                {
                                    foreach (var valueTuple in alreadyFound)
                                    {
                                        writeLine(valueTuple.count, valueTuple.gender, valueTuple.onSale, valueTuple.period,
                                                  valueTuple.price, valueTuple.priority);
                                    }
                                }
                                else
                                {
                                    writeLine(1, 2, 0, 90, 18000, 0);
                                }
                            }
                            Console.WriteLine("Wrote " + i + " cashitems");
                        }

            ExportItemNames(nxFile);
            ExportMobNames(nxFile);
            ExportNpcNames(nxFile);
            ExportAllStrings(nxFile);

            Console.WriteLine("Done.");
            Console.ReadLine();
        }
예제 #9
0
        /// <summary>
        /// 更新模型xml
        /// </summary>
        /// <returns></returns>
        public static void UpdataModel(IQueryCondition condition)
        {
            string ModelXml = condition.HasModelXml;  //数据模型信息

            if (!string.IsNullOrEmpty(ModelXml) && condition.OperType == Enum_operType.Update)
            {
                List <string> list = new List <string>(condition.Fields);
                list.Add(ModelXml);
                if (!list.Contains(condition.PriMaryKeyName))
                {
                    list.Add(condition.PriMaryKeyName);                                           //加上主键
                }
                MoldPanel    mp   = new MoldPanel();
                PanelContext data = mp.GetPanelContext(condition.ModelName, "list");  //设置为List类型(暂时写死)

                Criteria criteria = new Criteria(CriteriaType.None);
                criteria.Mode = CriteriaMode.Or;
                foreach (var item in condition.ID.Split(','))
                {
                    criteria.AddOr(CriteriaType.Equals, condition.PriMaryKeyName, item);
                }

                TableInfo tableinfo = new TableInfo(data.Model.Type.ToString());

                var       tablelist = getDataBase(tableinfo).IDatabase.GetDtByCondition <TableInfo>(data.Model.Type.ToString(), criteria, list.ToArray()); //获取对应字段,的table信息
                DataTable dt        = null != tablelist ? tablelist[0].Table : null;

                condition.OperType = Enum_operType.Update; //设为修改类型
                foreach (DataRow item in dt.Rows)
                {
                    if (item[ModelXml] != DBNull.Value && item != null)
                    {
                        List <FieldsDic> Fileds = new List <FieldsDic>();        // 最终字典

                        DataSet ds = BaseDataProvider.CreateDataSet(data.Model); //穿件数据集
                        BaseDataProvider.ReadXml(ds, item[ModelXml].ToString());

                        var files = condition.ConditionDic; //获取到的字典

                        if (!files.Exists(delegate(FieldsDic f) { if (string.Compare(f.Key, ModelXml, true) == 0)
                                                                  {
                                                                      return(true);
                                                                  }
                                                                  else
                                                                  {
                                                                      return(false);
                                                                  } }))                                                                                   //添加XML扩展字段
                        {
                            files.Add(new FieldsDic(ModelXml, string.Empty));
                        }
                        foreach (var file in files)
                        {
                            if (!file.Key.ToUpper().Equals(condition.PriMaryKeyName) && ds.Tables[data.Table.Name].Columns.Contains(file.Key))
                            {
                                ds.Tables[data.Table.Name].Rows[0][file.Key] = file.Value; //赋值
                                if (!Fileds.Exists(delegate(FieldsDic f) { if (string.Compare(f.Key, condition.HasModelXml, true) == 0)
                                                                           {
                                                                               return(true);
                                                                           }
                                                                           else
                                                                           {
                                                                               return(false);
                                                                           } }))
                                {
                                    files.Add(new FieldsDic(file.Key, file.Value));
                                }
                            }
                        }

                        Fileds.Find(delegate(FieldsDic f) {
                            if (string.Compare(f.Key, ModelXml, true) == 0)
                            {
                                f.Value = BaseDataProvider.GetXml(ds);    //拿到XML 赋值
                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        });

                        TableInfo ti = new TableInfo(data.Model.Type.ToString(), item[condition.PriMaryKeyName].ToString(), Fileds);
                        list.Remove(condition.PriMaryKeyName);
                        TryUpData(condition, list, ti, data.Model.Type.ToString(), true);
                    }
                }
                QueryCondition.SetMessage(condition, "模型字段:" + condition.HasModelXml, false, "修改", string.Empty, dt.Rows.Count);
            }
        }
예제 #10
0
 public BaseBusiness()
 {
     _provider = System.Activator.CreateInstance <D>();
 }
예제 #11
0
        public override object Do(PanelContext data)
        {
            string oid = data.Objects["oid"] as string;

            if (We7Helper.IsEmptyID(oid))
            {
                throw new Exception("不能移动到根栏目");
            }

            ChannelHelper chHelper = HelperFactory.GetHelper <ChannelHelper>();
            Channel       channel  = chHelper.GetChannel(oid, null);

            if (channel == null)
            {
                throw new Exception("当前栏目不存在");
            }
            if (channel.ModelName != data.ModelName)
            {
                throw new Exception("移动到的栏目类型与当前栏目类型不一致");
            }

            if (!string.IsNullOrEmpty(oid))
            {
                List <DataKey> dataKeys = data.State as List <DataKey>;
                foreach (DataKey key in dataKeys)
                {
                    string  id = key["ID"] as string;
                    Article a  = ArticleHelper.GetArticle(id);
                    if (a != null)
                    {
                        DataSet ds = BaseDataProvider.CreateDataSet(data.Model);
                        BaseDataProvider.ReadXml(ds, a.ModelXml);
                        if (ds.Tables[data.Table.Name].Rows.Count > 0)
                        {
                            DataRow row = ds.Tables[data.Table.Name].Rows[0];
                            a.OwnerID = oid;
                            if (row.Table.Columns.Contains("OwnerID"))
                            {
                                row["OwnerID"] = oid;
                            }
                            Channel ch = ChannelHelper.GetChannel(oid, null);
                            if (ch != null)
                            {
                                a.ChannelFullUrl = ch.FullUrl;
                                if (row.Table.Columns.Contains("ChannelFullUrl"))
                                {
                                    row["ChannelFullUrl"] = a.ChannelFullUrl;
                                }
                                a.ChannelName = ch.FullPath;
                                if (row.Table.Columns.Contains("ChannelName"))
                                {
                                    row["ChannelName"] = a.ChannelName;
                                }
                                a.FullChannelPath = ch.FullFolderPath;
                                if (row.Table.Columns.Contains("FullChannelPath"))
                                {
                                    row["FullChannelPath"] = a.FullChannelPath;
                                }
                            }
                            a.ModelXml = BaseDataProvider.GetXml(ds);
                        }
                    }
                    if (DbHelper.CheckTableExits(data.Table.Name))
                    {
                        DbHelper.ExecuteSql(String.Format("UPDATE [{0}] SET [OwnerID]='{2}' WHERE [ID]='{1}'", data.Table.Name, id, oid));
                    }
                    ArticleHelper.UpdateArticle(a, new string[] { "ID", "OwnerID", "ChannelFullUrl", "ChannelName", "FullChannelPath", "ModelXml" });
                    // 往全文检索里更新数据
                    ArticleIndexHelper.InsertData(id, 1);
                }
            }
            UIHelper.SendMessage("移动成功");
            CacheRecord.Create(data.ModelName).Release();
            return(null);
        }
예제 #12
0
 public void ChangeProvider(BaseDataProvider provider)
 {
     dataProvider = provider;
 }
예제 #13
0
 public IncomeService(BaseDataProvider webDataDataProvider)
 {
     dataProvider      = webDataDataProvider;
     incomeRepository  = new IncomeDataRepository();
     paymentRepository = new PaymentRepository();
 }
예제 #14
0
        protected void bttnUpgrade_Click(object sender, EventArgs e)
        {
            int            total = 0, success = 0, error = 0, jump = 0, empty = 0;
            List <Article> list = ArticleHelper.GetAllArticle();

            foreach (Article a in list)
            {
                try
                {
                    if (!String.IsNullOrEmpty(a.ModelName))
                    {
                        total++;
                        if (a.ModelName.Contains("Course."))
                        {
                            jump++;
                            Log("****************************跳过一条记录*****************************");
                            continue;
                        }
                        if (String.IsNullOrEmpty(a.ModelXml))
                        {
                            empty++;
                            ArticleHelper.DeleteArticle(a.ID);
                            Log("+++++++++++++++++++++++++++删除一条空记录+++++++++++++++++++++");
                            continue;
                        }
                        List <string> fields = new List <string>();
                        ModelInfo     model  = ModelHelper.GetModelInfo("Course." + a.ModelName);
                        DataSet       ds     = BaseDataProvider.CreateDataSet(model);
                        a.ModelName   = model.ModelName;
                        a.TableName   = model.DataSet.Tables[0].Name;
                        a.ModelConfig = File.ReadAllText(ModelHelper.GetModelPath(a.ModelName));

                        StringBuilder sb     = new StringBuilder();
                        StringWriter  writer = new StringWriter(sb);
                        ds.WriteXmlSchema(writer);
                        a.ModelSchema = sb.ToString();
                        fields.AddRange(new string[] { "ModelName", "TableName", "ModelConfig", "ModelSchema", "ModelXml" });

                        XmlDocument doc = new XmlDocument();
                        doc.LoadXml(a.ModelXml);

                        DataRow row = ds.Tables[0].NewRow();
                        ds.Tables[0].Rows.Add(row);

                        foreach (We7DataColumn dc in model.DataSet.Tables[0].Columns)
                        {
                            if (dc.Direction == ParameterDirection.ReturnValue)
                            {
                                continue;
                            }
                            List <string> exclude = new List <string>()
                            {
                                "OwnerID", "State", "IsShow", "Source", "ContentType"
                            };
                            if (exclude.Contains(dc.Mapping))
                            {
                                continue;
                            }
                            if (dc.Mapping == "ID")
                            {
                                row[dc.Name] = a.ID;
                                continue;
                            }
                            XmlElement xe = doc.SelectSingleNode("//" + dc.Name) as XmlElement;
                            if (xe != null)
                            {
                                object value = TypeConverter.StrToObjectByTypeCode(xe.InnerText.Trim(), dc.DataType);
                                if (dc.Direction == ParameterDirection.Output || dc.Direction == ParameterDirection.InputOutput)
                                {
                                    string       mapping = String.IsNullOrEmpty(dc.Mapping) ? dc.Name : dc.Mapping;
                                    PropertyInfo pro     = a.GetType().GetProperty(mapping);
                                    if (pro != null)
                                    {
                                        fields.Add(mapping);
                                        pro.SetValue(a, value, null);
                                    }
                                }
                                if (dc.Direction == ParameterDirection.InputOutput || dc.Direction == ParameterDirection.Input)
                                {
                                    row[dc.Name] = value;
                                }
                            }
                        }
                        StringBuilder sb2     = new StringBuilder();
                        StringWriter  reader2 = new StringWriter(sb2);
                        ds.WriteXml(reader2);
                        a.ModelXml = sb2.ToString();
                        ArticleHelper.UpdateArticle(a, fields.ToArray());
                        success++;
                        Log("#################################更新成功#################################");
                    }
                }
                catch (Exception ex)
                {
                    Log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!更新失败!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                    Log(ex.Source);
                    Log(ex.Message);
                    Log(ex.StackTrace);
                    error++;
                }
            }

            Log("###################################---------当前操作共" + total + "条记录,成功" + success + "条,失败" + error + "条,跳过" + jump + "条,空记录" + empty + "条------------############################");
            //IDatabase db = ArticleHelper.Assistant.GetDatabases()["We7.CMS.Common"];
            //SqlStatement sqlstatement = new SqlStatement();
            //sqlstatement.SqlClause = "SELECT * FROME [Article]";
            //sqlstatement.CommandType = CommandType.Text;
            //db.DbDriver.FormatSQL(sqlstatement);
            //DataTable dt = new DataTable();
            //using (IConnection conn = db.CreateConnection())
            //{
            //    dt = conn.Query(sqlstatement);
            //}

            //foreach (DataRow row in dt.Rows)
            //{
            //    string modelName=row["ModelName"] as string;
            //    if (!String.IsNullOrEmpty(modelName))
            //    {
            //        ModelInfo model=ModelHelper.GetModelInfo("Course." + modelName);

            //        ArticleHelper.UpdateArticle(null,null);
            //    }
            //}
        }
예제 #15
0
        public override object Do(PanelContext data)
        {
            string oid = data.Objects["oid"] as string;

            if (We7Helper.IsEmptyID(oid))
            {
                throw new Exception("不能添加到根栏目");
            }

            if (!string.IsNullOrEmpty(oid))
            {
                Channel targetChannel = HelperFactory.GetHelper <ChannelHelper>().GetChannel(oid, null);
                //if (targetChannel != null && !String.IsNullOrEmpty(targetChannel.ModelName))
                if (targetChannel != null)
                {
                    //ModelInfo modelInfo = ModelHelper.GetModelInfo(targetChannel.ModelName);
                    //We7DataTable dt = modelInfo.DataSet.Tables[0];

                    List <DataKey> dataKeys = data.State as List <DataKey>;
                    foreach (DataKey key in dataKeys)
                    {
                        string id = key["ID"] as string;

                        //SingleTableLinkTo(data, dt, id);

                        Article a = ArticleHelper.GetArticle(id);
                        if (a != null)
                        {
                            DataSet ds  = BaseDataProvider.CreateDataSet(data.Model);
                            DataRow row = ds.Tables[data.Table.Name].NewRow();
                            ds.Tables[data.Table.Name].Rows.Add(row);

                            a.OwnerID = oid;
                            if (row.Table.Columns.Contains("OwnerID"))
                            {
                                row["OwnerID"] = oid;
                            }
                            if (row.Table.Columns.Contains("Title"))
                            {
                                row["Title"] = a.Title;
                            }
                            if (row.Table.Columns.Contains("Description"))
                            {
                                row["Description"] = a.Description;
                            }
                            a.ContentType = (int)TypeOfArticle.LinkArticle;
                            if (row.Table.Columns.Contains("ContentType"))
                            {
                                row["ContentType"] = a.ContentType;
                            }
                            a.ContentUrl = GetContentUrl(a);
                            if (row.Table.Columns.Contains("ContentUrl"))
                            {
                                row["ContentUrl"] = a.ContentUrl;
                            }
                            a.Content = "";
                            if (row.Table.Columns.Contains("Content"))
                            {
                                row["Content"] = "";
                            }
                            a.SourceID = a.ID;
                            if (row.Table.Columns.Contains("SourceID"))
                            {
                                row["SourceID"] = a.ID;
                            }
                            a.Updated = DateTime.Now;
                            if (row.Table.Columns.Contains("Updated"))
                            {
                                row["Updated"] = a.Updated;
                            }

                            a.Created = DateTime.Now;
                            if (row.Table.Columns.Contains("Created"))
                            {
                                row["Created"] = a.Created;
                            }

                            a.Overdue = DateTime.Now.AddYears(2);
                            if (row.Table.Columns.Contains("Overdue"))
                            {
                                row["Overdue"] = a.Overdue;
                            }

                            Channel ch = ChannelHelper.GetChannel(oid, null);
                            if (ch != null)
                            {
                                a.ChannelFullUrl = ch.FullUrl;
                                if (row.Table.Columns.Contains("ChannelFullUrl"))
                                {
                                    row["ChannelFullUrl"] = a.ChannelFullUrl;
                                }
                                a.ChannelName = ch.FullPath;
                                if (row.Table.Columns.Contains("ChannelName"))
                                {
                                    row["ChannelName"] = a.ChannelName;
                                }
                                a.FullChannelPath = ch.FullFolderPath;
                                if (row.Table.Columns.Contains("FullChannelPath"))
                                {
                                    row["FullChannelPath"] = a.FullChannelPath;
                                }
                                a.State = ch.Process != null && ch.Process == "1" ? 2 : a.State;
                                if (row.Table.Columns.Contains("State"))
                                {
                                    row["State"] = a.State;
                                }
                            }
                            a.ID = We7Helper.CreateNewID();
                            if (row.Table.Columns.Contains("ID"))
                            {
                                row["ID"] = a.ID;
                            }
                            a.ModelXml = BaseDataProvider.GetXml(ds);
                            ArticleHelper.AddArticle(a);
                            // 往全文检索里更新数据
                            ArticleIndexHelper.InsertData(a.ID, 0);
                        }
                    }
                }
            }
            return(null);
        }