public HSAModule([Import(LogNames.Session)] ILogWriter logger, IWingsSessionFactoryProvider sessionFactoryProvider, HospitalServiceAreaRegionStrategy entityStrategy , BaseDataProvider baseDataProvider) : base(logger, sessionFactoryProvider, entityStrategy, baseDataProvider) { }
public HRRModule([Import(LogNames.Session)] ILogWriter logger, IWingsSessionFactoryProvider sessionFactoryProvider , HealthReferralRegionStrategy entityStrategy , BaseDataProvider baseDataProvider) : base(logger, sessionFactoryProvider, entityStrategy, baseDataProvider) { }
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); }
/// <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); }
/// <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()); }
/// <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()); }
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); }
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(); }
/// <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); } }
public BaseBusiness() { _provider = System.Activator.CreateInstance <D>(); }
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); }
public void ChangeProvider(BaseDataProvider provider) { dataProvider = provider; }
public IncomeService(BaseDataProvider webDataDataProvider) { dataProvider = webDataDataProvider; incomeRepository = new IncomeDataRepository(); paymentRepository = new PaymentRepository(); }
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); // } //} }
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); }