/// <summary> /// 根据唯一ID获取对象,返回实体,如果有多个则报错 /// </summary> /// <param name="id">ID</param> /// <returns>返回实体类</returns> public async Task <T> GetModelByIdAsync <T, TId>(TId id) where T : IId <TId>, new() { if (CommOp.IsDefault(id)) { return(default(T)); } var pid = CreateParameter("ID", id); Type type = typeof(T); string sql = $"SELECT COUNT(1) FROM {AddFix(type.Name)} where ID=@ID"; int cnt = CommOp.ToInt(await this.ExecGetObjectAsync(sql, pid)); if (cnt == 0) { return(default(T)); } if (cnt > 1) { throw new Exception("根据唯一的ID查到不止一条记录"); } sql = $"SELECT * FROM {AddFix(type.Name)} where ID=@ID"; List <IDataParameter> list = new List <IDataParameter>(); DataTable dt = await this.ExecDataTableAsync(sql, pid); if (dt.Rows.Count == 1) { return(RowToModel <T>(dt.Rows[0])); } return(default(T)); }
//保存扩展属性 private void SaveExts(Base_Catalog cat, NameValueCollection form) { cat.Exts.Clear(); var ids = form["ExtId"].Split(','); var names = form["ExtName"].Split(','); var defaultValues = form["DefaultValue"].Split(','); var dataTypes = form["DataType"].Split(','); var maxLengths = form["MaxLength"].Split(','); //var allownulls = form["AllowNull"].Split(','); var states = form["ExtState"].Split(','); var dataSourceTypes = form["DataSourceType"].Split(','); var dataSources = form["DataSource"].Split(','); for (int i = 1; i < names.Length; i++) { if (!string.IsNullOrEmpty(names[i])) { Base_CatalogExt ext = new Base_CatalogExt { Id = CommOp.ToInt(ids[i]), CatalogId = cat.Id, Name = names[i], DefaultValue = defaultValues[i], DataType = CommOp.ToEnum <ExtDataType>(dataTypes[i]), State = states[i] == "" ? ArticleState.Published : CommOp.ToInt(states[i]), Ord = i, //AllowNull = CommOp.ToBool(allownulls[i] == "on" ? true : false), MaxLength = CommOp.ToInt(maxLengths[i]), DataSourceType = CommOp.ToEnum <ExtDataSourceType>(dataSourceTypes[i]), DataSource = dataSources[i] }; cat.Exts.Add(ext); } } }
// --查询条件也有子表 //select u.*, r.*, ur.* from app_user u left join app_user_role ur on u.id = ur.user_id //left join app_role r on r.id = ur.role_id where u.id in //(select id from //(select id, failed_try, rownum r from ( //select distinct(u.id), u.failed_try from app_user u left join app_user_role ur on u.id = ur.user_id //left join app_role r on r.id = ur.role_id // where u.name like '测试用户%' and r.name like '%管理员%' // order by u.failed_try)g //)h where r between 1 and 3) // order by u.failed_try; async Task <IDataReader> ExecMasterDetailPageReaderAsync(MasterDetailPagerInfo pager, params IDataParameter[] sp) { var tp = GetSortFieldFromOrderBy(pager.OrderBy, pager.KeyId); string sortFields = tp[1]; string innerSorts = tp[2]; string orderby = tp[0]; string innerId = pager.KeyId.Split('.').Last(); string filter = pager.Filter.IsEmpty() ? "" : " where " + pager.Filter; string sql = $"select COUNT(distinct({pager.KeyId})) from " + $"{pager.TablesAndJoins}{filter}"; if (!innerSorts.IsEmpty()) { innerSorts = "," + innerSorts; } if (!sortFields.IsEmpty()) { sortFields = "," + sortFields; } pager.RecordCount = CommOp.ToInt(await Helper.ExecGetObjectAsync(sql, sp)); sql = $"select {pager.Fields} from {pager.TablesAndJoins} where{Environment.NewLine}" + $" {pager.KeyId} in{Environment.NewLine}" + $"(select {innerId} from" + $"(select {innerId}{innerSorts},rownum r from({Environment.NewLine}" + $"select distinct({pager.KeyId}){sortFields} from {pager.TablesAndJoins}{filter}{Environment.NewLine}" + $"order by {orderby})g__{Environment.NewLine}" + $")h__ where r between {pager.StartIndex + 1} and {pager.StartIndex + pager.PageSize}){Environment.NewLine}" + $"order by {orderby}"; return(await Helper.ExecReaderAsync(sql, sp)); }
public JsonResult Delete(string ids) { int[] idArr = CommOp.ToIntArray(ids, ','); LogManager.DeleteByKeys(idArr); return(JsonTips("success", "Log_Delete_Success")); }
public virtual LoginState ResetPassword(PasswordResetModel model) { var _context = new ModelContext(); // var user = _context.UserProfiles.Find(2); MemberShip member = _context.Set <MemberShip>().FirstOrDefault(m => m.UserName.Equals(model.UserName, StringComparison.OrdinalIgnoreCase)); if (member == null) { return(LoginState.UserNotExist); } if (model.Password != model.ConfirmPassword && model.IsResetPass != 1) { return(LoginState.PasswordError); } if (model.ConfirmToken != member.ConfirmationToken && model.IsResetPass != 1) { return(LoginState.TokenError); } member.PasswordSalt = CommOp.NewId(); member.Password = Encryption.MD5(model.Password + member.PasswordSalt); member.PasswordChangedDate = DateTime.Now; //对于系统重置的密码,强制吧修改密码日期移除让用户登陆重新修改面貌 if (model.IsResetPass == 1) { member.PasswordChangedDate = null; } _context.SaveChanges(); return(LoginState.OK); }
/// <summary> /// 根据表名获取与表相关的约束(主外键关系) /// </summary> /// <param name="tableName"></param> /// <returns></returns> private IEnumerable <DBRelation> GetTableRelation() { List <DBRelation> tableRelas = new List <DBRelation>(); const string sqlstr = @"SELECT ConstrName=OBJECT_NAME(b.constid) ,ForeignTableId=b.fkeyid ,ForeignTableName=object_name(b.fkeyid) ,ForeignKey=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid) ,PrimaryTableId=b.rkeyid ,PrimaryTableName=object_name(b.rkeyid) ,PrimaryKey=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) ,IsUpdateCascade=ObjectProperty(a.id,'CnstIsUpdateCascade') ,IsDeleteCascade=ObjectProperty(a.id,'CnstIsDeleteCascade') FROM sysobjects a join sysforeignkeys b on a.id=b.constid join sysobjects c on a.parent_obj=c.id where a.xtype='f' AND c.xtype='U'" ; var tb = _helper.ExecDataTable(sqlstr); for (int i = 0; i < tb.Rows.Count; i++) { DBRelation tableRela = new DBRelation { Id = i + 1, ConstrName = CommOp.ToStr(tb.Rows[i]["ConstrName"]),//约束名 PrimaryTable = CommOp.ToStr(tb.Rows[i]["PrimaryTableName"]), ForeignTable = CommOp.ToStr(tb.Rows[i]["ForeignTableName"]), PrimaryKey = CommOp.ToStr(tb.Rows[i]["PrimaryKey"]), ForeignKey = CommOp.ToStr(tb.Rows[i]["ForeignKey"]), IsUpdateCascade = CommOp.ToStr(tb.Rows[i]["IsUpdateCascade"]) == "1", IsDeleteCascade = CommOp.ToStr(tb.Rows[i]["IsDeleteCascade"]) == "1", }; tableRelas.Add(tableRela); } return(tableRelas); }
//构造分页主从表查询分页对象 private IPager BuildMasterDetailPager(DataGateKey gkey, IDictionary <string, object> parameters) { var mainModel = gkey.TableJoins[0].Table; var tableMetas = gkey.TableJoins.Select(m => { return(m.Table); }); int pageSize = CommOp.ToInt(GetValueRemoveKey(parameters, "pageSize")); if (pageSize <= 0) { pageSize = Consts.DefaultPageSize; } return(new MasterDetailPagerInfo { TablesAndJoins = gkey.JoinSubTerm, Fields = gkey.QueryFieldsTerm, OrderBy = gkey.OrderBy, Filter = FormatFilter(gkey.Filter, tableMetas.ToArray()), KeyId = $"{gkey.TableJoins[0].Alias ?? mainModel.FixDbName}.{mainModel.PrimaryKey.FixDbName}", PageIndex = Math.Max(1, CommOp.ToInt(GetValueRemoveKey(parameters, "pageIndex"))) - 1, PageSize = pageSize, }); }
/// <summary> /// 如果有Sql语句,直接根据Sql生成分页 /// </summary> /// <param name="gkey"></param> /// <param name="parameters"></param> /// <returns></returns> private IPager BuildSqlPager(DataGateKey gkey, IDictionary <string, object> parameters) { var mainModel = GetMainTable(gkey); string filter = FormatFilter(gkey.Filter, mainModel); if (!filter.IsEmpty()) { filter = " where " + filter; } string sql = $"{gkey.Sql}{filter}"; int pageSize = CommOp.ToInt(GetValueRemoveKey(parameters, "pageSize")); if (pageSize <= 0) { pageSize = Consts.DefaultPageSize; } DBPagerInfo pager = new DBPagerInfo { Query = sql, KeyId = mainModel.PrimaryKey.FixDbName, PageIndex = Math.Max(1, CommOp.ToInt(GetValueRemoveKey(parameters, "pageIndex"))) - 1, PageSize = pageSize, OrderBy = gkey.OrderBy, }; return(pager); }
/// <summary> /// 合并所有来自其他程序集的资源到主资源,前提是资源文件在对应项目的App_Data文件夹下 /// </summary> /// <param name="resNamespaces">资源所在的命名空间名称列表</param> /// <param name="overwriteExists">是否覆盖已经定义的资源</param> public static void CombinAssemblyResx(IEnumerable <Assembly> assemblys, bool overwriteExists = false) { foreach (var ns in assemblys) { foreach (string cultureName in GetUsedCultureNames()) { string resName = "app_data/customstrings." + cultureName.ToLower() + ".resx"; Stream stream = GetGResources(ns, resName) as Stream; if (stream == null) { continue; } ResXResourceReader reader = new ResXResourceReader(stream); var coll = GetCollection(cultureName); foreach (DictionaryEntry d in reader) { if ((coll[CommOp.ToStr(d.Key)].IsEmpty() || overwriteExists) && !CommOp.ToStr(d.Value).IsEmpty()) { coll[CommOp.ToStr(d.Key)] = CommOp.ToStr(d.Value); } } reader.Close(); } } }
public static object GetExt(this Base_Article article, Base_CatalogExt catExt) { if (catExt == null) { return(null); } var artExt = article.Exts.FirstOrDefault(ext => ext.CatlogExtId == catExt.Id); if (artExt == null) { return(null); } switch ((ExtDataType)catExt.DataType) { case ExtDataType.Currency: return(CommOp.ToDecimalNull(artExt.Value)); case ExtDataType.DateAndTime: case ExtDataType.Date: return(CommOp.ToDateTimeNull(artExt.Value)); case ExtDataType.SingleNumber: return(CommOp.ToIntNull(artExt.Value)); case ExtDataType.Bool: return(CommOp.ToBool(artExt.Value)); default: return(artExt.Value); } }
/// <summary> /// 获取用户所有落在某个时间段的日程表事件,只要是起始时间或结束时间在指定范围都算 /// </summary> /// <param name="userId">用户ID</param> /// <param name="startTime">起始时间</param> /// <param name="endTime">结束时间</param> /// <returns></returns> public IEnumerable <EventModel> GetEvents(int userId, DateTime startTime, DateTime endTime) { //转为yyyy-MM-dd HH:mm:ss标准格式以便在数据库中以字符串数据规则进行比对 string starts = CommOp.ToTimeStr(startTime); string ends = CommOp.ToTimeStr(endTime); int startTimeId = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.StartTime); int endTimeId = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.EndTime); int alertBeforeId = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.AlertBefore); int urlId = SiteManager.Catalog.GetExtId(ScheduleEvent.Root.Id, ScheduleEvent.Root.ProcessUrl); return(_article.GetAllInCatalog(ScheduleEvent.Root.Id) .Where(ca => ca.Article.EditorId == userId //不是属于通知 && ca.Article.Options < ScheduleEvent.OptionNotice) .Select(ca => new EventModel { start = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == startTimeId).Value, end = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == endTimeId).Value, caId = ca.Id, title = ca.Article.Title, alertBefore = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == alertBeforeId).Value, editable = ca.Article.Options == ScheduleEvent.OptionReadOnly, finished = ca.Article.State == ScheduleEvent.EventFinished, url = ca.Article.Exts.FirstOrDefault(ext => ext.CatlogExtId == urlId).Value, }) .Where(r => (r.start != null && starts.CompareTo(r.start) <= 0 && ends.CompareTo(r.start) >= 0) || (r.end != null && starts.CompareTo(r.end) <= 0 && ends.CompareTo(r.end) >= 0)) .ToList()); }
public IDataParameter CreateImageParameter(string parameterName, byte[] value) { var p = new SQLiteParameter(parameterName, DbType.Object); p.Value = CommOp.TestNull(value); return(p); }
/// <summary> /// 将本对象的用户配置值保存到内存中或持久化的配置文件中 /// </summary> public void Save(bool persistent = false) { if (CurrentContextDict != null) { foreach (string propertyName in CurrentContextDict.Keys.ToList()) { string[] propertyNames = propertyName.Split('.'); object obj = propertyNames.Length == 1 ? ContextObject : FindObject(propertyNames); obj = RefHelper.GetValue(obj, propertyNames[propertyNames.Length - 1]); if (obj == null) { CurrentContextDict.Remove(propertyName); } else if (obj.GetType() == typeof(String) || !obj.GetType().IsClass) { CurrentContextDict[propertyName] = new TypeAndValue { TypeName = obj.GetType().AssemblyQualifiedName, Value = CommOp.ToFullStr(obj) }; } else { CurrentContextDict[propertyName] = new TypeAndValue { TypeName = obj.GetType().AssemblyQualifiedName, Value = JsonHelper.ToJson(obj) }; } } } if (persistent) { SaveAllToPersistent(); } }
private void SetCellValue(ICell cell, object obj) { if (obj == null) { cell.SetCellValue(""); return; } Type type = obj.GetType(); if (type == typeof(bool) || type == typeof(bool?)) { cell.SetCellValue(CommOp.ToBool(obj)); } else if (CommOp.ToDecimal(obj).ToString() == obj.ToString()) { cell.SetCellValue(CommOp.ToDouble(obj)); } else if (type == typeof(DateTime)) { cell.SetCellValue(CommOp.ToDateTime(obj)); } else { cell.SetCellValue(CommOp.ToStr(obj)); } }
/// <summary> /// 生成二进制参数SqlParameter /// </summary> /// <param name="parameterName"></param> /// <param name="value"></param> /// <returns></returns> public IDataParameter CreateImageParameter(string parameterName, byte[] value) { IDataParameter param = new SqlParameter(parameterName, SqlDbType.Image); param.Value = CommOp.TestNull(value); return(param); }
/// <summary> /// 根据指定的类型名称和属性名称获取对应的属性配置项 /// </summary> /// <param name="className">类型名称</param> /// <param name="propName">属性名称</param> /// <param name="attr">标签属性</param> /// <returns>属性配置项</returns> public static AdvDataConfigItem GetPropertyConfig(CatalogExtAttribute attr, string className, string propName) { AdvDataConfigItem foundItem = null; var classConfig = _configCache.FirstOrDefault(cfg => cfg.ClassName.Equals(className)); if (classConfig == null) { classConfig = new AdvDataConfig() { ClassName = className }; _configCache.Add(classConfig); _modified = true; } foundItem = classConfig.Items.FirstOrDefault(c => c.PropertyName == propName); if (foundItem == null) { foundItem = new AdvDataConfigItem { OverWrite = true, FormOrder = 1, PropertyName = propName, GridOrder = 1, AllowNull = attr.AllowNull, DataSource = attr.DataSource.ToStr(), DataSourceType = CommOp.ToStr(attr.DataSourceType), DataType = attr.DataType.ToString(), MaxLength = attr.MaxLength, MinLength = attr.MinLength, MaxValue = CommOp.ToStr(attr.MaxValue), MinValue = CommOp.ToStr(attr.MinValue), RegExpr = attr.RegExpr, DefaultValue = attr.DefaultValue, InputFormat = attr.InputFormat, DisplayFormat = attr.DisplayFormat, Browsable = attr.Browsable, }; classConfig.Items.Add(foundItem); _modified = true; } else if (foundItem.OverWrite) { attr.DefaultValue = foundItem.DefaultValue; attr.DataType = CommOp.ToEnum <ExtDataType>(foundItem.DataType); attr.AllowNull = foundItem.AllowNull; attr.DataSource = foundItem.DataSource; attr.DataSourceType = CommOp.ToEnum <ExtDataSourceType>(foundItem.DataSourceType); attr.MaxLength = foundItem.MaxLength; attr.MinLength = foundItem.MinLength; attr.MaxValue = foundItem.MaxValue; attr.MinValue = foundItem.MinValue; attr.RegExpr = foundItem.RegExpr; attr.InputFormat = foundItem.InputFormat; attr.DisplayFormat = foundItem.DisplayFormat; attr.Browsable = foundItem.Browsable; } return(foundItem); }
/// <summary> /// 获取数据库的大小 /// </summary> /// <returns></returns> public virtual double GetDBSize() { DataSet ds = Helper.RunProcedureDs("sp_spaceused"); string r = (string)ds.Tables[0].Rows[0]["database_size"]; return(CommOp.ToDouble(r.Split(' ')[0])); }
/// <summary> /// 获取所有用户的分页json数据 /// </summary> /// <param name="page">查询分页信息,包括当前页、页大小、关键词等</param> /// <returns></returns> public JsonResult GetAll(PageModel page) { //mini-ui的分页是从0开始的 page.PageIndex++; //因userMgr.GetAll()不是IQueryable对象,所以不能直接用在分页API中 //需要一个转换 var users = mUserMgr.GetAll().AsQueryable(); if (!page.Key.IsEmpty()) { page.Key = page.Key.ToLower(); users = users.Where(u => u.Name.ToLower().Contains(page.Key) || u.Id.Equals(page.Key) || (u.Email != null && u.Email.Contains(page.Key)) || (u.PhoneNumber != null && u.PhoneNumber.Contains(page.Key)) || u.RoleNames.ToLower().Contains(page.Key)); } var pager = new Pager <AppUser>(users.OrderByDescending(u => CommOp.ToInt(u.Id)), page.PageIndex, page.PageSize); //多重排序: //ViewBag.Pager = Pager.GetPagedList(ref users, us => // us.OrderByDescending(u => u.IsOnline) // .ThenByDescending(u => u.Id), page); // var vre = this.ViewEngineCollection[1].FindView(this.ControllerContext., "Index_Spc", "_AdminPartial", false); //MVC3不支持 return(Json(new { data = pager, total = pager.RecordCount }, JsonRequestBehavior.AllowGet)); }
//单表的分页 private IPager BuildPager(DataGateKey gkey, IDictionary <string, object> parameters) { var tableMeta = gkey.MainTable; string filter = FormatFilter(gkey.Filter, tableMeta); if (!filter.IsEmpty()) { filter = " where " + filter; } string sql = gkey.Sql; if (sql.IsEmpty()) { sql = $"select {gkey.QueryFieldsTerm} from {tableMeta.FixDbName}{filter}"; } int pageSize = CommOp.ToInt(GetValueRemoveKey(parameters, "pageSize")); if (pageSize <= 0) { pageSize = Consts.DefaultPageSize; } DBPagerInfo pager = new DBPagerInfo { Query = sql, KeyId = $"{gkey.TableJoins[0].Alias ?? tableMeta.FixDbName}.{tableMeta.PrimaryKey.FixDbName}", PageIndex = Math.Max(1, CommOp.ToInt(GetValueRemoveKey(parameters, "pageIndex"))) - 1, PageSize = pageSize, OrderBy = gkey.OrderBy, }; return(pager); }
/// <summary> /// 生成二进制参数 /// </summary> /// <param name="parameterName"></param> /// <param name="value"></param> /// <returns></returns> public IDataParameter CreateImageParameter(string parameterName, byte[] value) { OleDbParameter param = new OleDbParameter(parameterName, OleDbType.Binary); param.Value = CommOp.TestNull(value); return(param); }
/// <summary> /// 获取分页的数据 /// </summary> /// <param name="gkey">查询Key名称</param> /// <param name="parameters">查询参数</param> /// <returns>{ total: 总数, data:DataTable}</returns> private async Task <PageResult> GetPageAsync(DataGateKey gkey, object obj) { if (!(obj is IDictionary <string, object> parameters)) { parameters = CommOp.ToStrObjDict(obj); } if (gkey.TableJoins.Count > 1) { return(await GetMasterDetailPageAsync(gkey, parameters)); } var tableMeta = gkey.MainTable; CreateFilterStr(gkey, tableMeta, parameters); CreateOrderStr(gkey, tableMeta, parameters); var ps = DB.GetParameter(parameters); IPager pager = BuildPager(gkey, parameters); using (var dr = await DB.DBComm.ExecPageReaderAsync(pager, ps.ToArray())) { DataTable dt = new DataTable(); dt.Load(dr); ReNameColumns(tableMeta, dt); return(new PageResult { Total = pager.RecordCount, Data = dt }); } }
public JsonResult GetDeptUsers(string deptIds) { int[] deptIdArr = CommOp.ToIntArray(deptIds, ','); var list = OrgManager.mOrganizationManager.GetDepUserQuery(); if (!deptIdArr.IsEmpty()) { list = list .Where(u => u.DepId != null && deptIdArr.Contains(u.DepId.Value)); } var result = list .GroupBy(u => u.UserId) .Select(g => g.FirstOrDefault()) // 在不需要高级查询,只需要模糊查询的情况下,也可以返回一个匿名对象查询 // 这里只返回三个字段,是为了减少返回前台的json数据量 .Select(u => new { Id = u.UserId.Value, UserName = u.UserName, DepName = u.DepName, }); return(Json(result, JsonRequestBehavior.AllowGet)); }
public int Add(AppUser user) { //WebSecurity.CreateUserAndAccount(user.Name, "123456", new { Email = ((AppUserEx)user).Email }); MemberShip member = new MemberShip() { UserName = user.Name, CreateDate = DateTime.Now, IsConfirmed = true, Email = user.Email, PhoneNumber = user.PhoneNumber, PasswordSalt = CommOp.NewId(), }; member.Password = MyStateProvider.EncryptPassword("123456", member.PasswordSalt); foreach (string roleId in user.RoleIds) { UserInRole uir = new UserInRole { RoleId = roleId.ToInt(), }; member.UserInRoles.Add(uir); } using (var _context = new ModelContext()) { _context.Set <MemberShip>().Add(member); _context.SaveChanges(); } user.Id = member.UserId.ToString(); return(1); }
[ValidateInput(false)] //因为要传递带html标签的art.Text,所以此处不能验证输入 public ActionResult Edit(Base_Article art, int caId = 0) { art.EditorId = CommOp.ToInt(CurrentUserId); art.State = ArticleState.Published; Base_CatalogArticle ca; if (caId == 0) { ca = new Base_CatalogArticle { CatalogId = CatalogId }; } else { ca = _resourceFileService.Article.GetById(caId); _innerCatalogId = ca.CatalogId; } ca.Article = art; if (art.Id > 0 && caId == 0) { var oldCaId = _resourceFileService.Article.GetByArticleId(art.Id, CatalogId).Id; ca.Id = oldCaId; } if (true) { _resourceFileService.Article.Save(ca); } return(JsonTips("success", "", JStr.SuccessSaved0, (object)null, ca.Article.Title)); }
public virtual LoginState ChangePassword(PasswordChangeModel model) { var _context = new ModelContext(); // var user = _context.UserProfiles.Find(2); MemberShip member = _context.Set <MemberShip>().FirstOrDefault(m => m.UserName.Equals( Thread.CurrentPrincipal.Identity.Name, StringComparison.OrdinalIgnoreCase)); if (member == null) { return(LoginState.UserNotExist); } if (model.Password != model.ConfirmPassword) { return(LoginState.PasswordError); } if (EncryptPassword(model.OldPassword, member.PasswordSalt) != member.Password) { return(LoginState.OldPasswordError); } member.PasswordSalt = CommOp.NewId(); member.Password = Encryption.MD5(model.Password + member.PasswordSalt); member.PasswordChangedDate = DateTime.Now; _context.SaveChanges(); return(LoginState.OK); }
public ActionResult Drag(int caId, int delta, DateTime?end) { Base_CatalogArticle ca = _schedule.Article.GetById(caId); if (ca.Article.State == ScheduleEvent.OptionReadOnly) { return(JsonTips("error", SStr.CantChangeReadonlySchedule)); } DateTime startTime = CommOp.ToDateTime(ca.GetExt(ScheduleEvent.Root.StartTime)); DateTime endTime = CommOp.ToDateTime(ca.GetExt(ScheduleEvent.Root.EndTime)); if (end.IsEmpty()) { //表示是拖动整个日程,同时改变起止时间 startTime = startTime.AddMinutes(delta); ca.SetExt(ScheduleEvent.Root.StartTime, startTime); if (endTime != default(DateTime)) { endTime = endTime.AddMinutes(delta); ca.SetExt(ScheduleEvent.Root.EndTime, endTime); } } else { ca.SetExt(ScheduleEvent.Root.EndTime, end); } ca.Article.EditorId = CurrentUserId.ToInt(); ca.Article.State = ArticleState.Published; _schedule.Article.Save(ca); return(JsonTips()); }
[ValidateInput(false)] //因为要传递带html标签的art.Text,所以此处不能验证输入 public ActionResult Edit(Base_Article art, int caId = 0) { art.EditorId = CommOp.ToInt(CurrentUserId); art.State = ArticleState.Published; Base_CatalogArticle ca; if (caId == 0) { ca = new Base_CatalogArticle { CatalogId = CatalogId }; } else { ca = _article.GetById(caId); _innerCatalogId = ca.CatalogId; } ca.Article = art; if (art.Id > 0 && caId == 0) { var oldCaId = _article.GetByArticleId(art.Id, CatalogId).Id; ca.Id = oldCaId; } if (BeforeSaving(ca)) { _article.Save(ca); } return(AfterSaved(ca)); }
public ActionResult DeleteAlerts(string ids) { int[] idArr = CommOp.ToIntArray(ids, ','); // Manager.Delete(id); _schedule.DeleteAlerts(CurrentUserId.ToInt(), idArr); return(JsonTips("success", JStr.SuccessDeleted)); }
/// <summary> /// 判断用户访问的地址的格式是否与指定AppFunction定义的相同 /// </summary> /// <param name="userLoc">用户的地址</param> /// <returns>是/否</returns> public bool MatchLocation(string userLoc) { string funcLoc = Location ?? ""; string regTail = RegTail; if (regTail.IsEmpty()) { userLoc = CommOp.CutStr(userLoc, '?', '#'); if (!funcLoc.EndsWith("/")) { funcLoc += "/"; } if (!userLoc.EndsWith("/")) { userLoc += "/"; } if (funcLoc.Equals(userLoc, StringComparison.OrdinalIgnoreCase)) { return(true); } } else { string pattern = "^" + funcLoc + "(" + regTail + ")"; if (Regex.IsMatch(userLoc, pattern, RegexOptions.IgnoreCase)) { return(true); } } return(false); }
/// <summary> /// 数据分页查询 异步版本 /// </summary> /// <param name="pager"></param> /// <param name="sp"></param> /// <returns></returns> public async Task <IDataReader> ExecPageReaderAsync(IPager p, params IDataParameter[] sp) { if (p is DBPagerInfo) { DBPagerInfo pager = p as DBPagerInfo; var tp = GetSortFieldFromOrderBy(pager.OrderBy, pager.KeyId); string orderby = tp[0]; string sql = "SELECT COUNT(1) FROM (" + pager.Query + ")c"; pager.RecordCount = CommOp.ToInt(await Helper.ExecGetObjectAsync(sql, sp)); sql = $@"WITH PAGED AS ( SELECT ROW_NUMBER() OVER(ORDER BY {pager.OrderBy}) AS rowNum, * FROM ({pager.Query})a) SELECT TT.* FROM PAGED P INNER JOIN ({pager.Query})TT ON P.{pager.KeyId} = TT.{pager.KeyId} WHERE ROWNUM BETWEEN {pager.StartIndex + 1} AND {pager.StartIndex + pager.PageSize} ORDER BY {pager.OrderBy}"; //pager.OrderBy, pager.Query, pager.KeyId, pager.StartIndex + 1, pager.StartIndex + pager.PageSize); return(await Helper.ExecReaderAsync(sql, sp)); } else if (p is MasterDetailPagerInfo) { return(await ExecMasterDetailPageReaderAsync((MasterDetailPagerInfo)p, sp)); } else { throw new ArgumentException($"请传入{nameof(DBPagerInfo)}或{nameof(MasterDetailPagerInfo)}"); } }