Exemplo n.º 1
0
        public override int Update <TEntity>(TEntity entity, string table)
        {
            PublicHelper.CheckNull(entity);

            TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity));

            PublicHelper.EnsureHasPrimaryKey(typeDescriptor);

            Dictionary <PropertyDescriptor, object> keyValueMap = PrimaryKeyHelper.CreateKeyValueMap(typeDescriptor);

            IEntityState entityState = this.TryGetTrackedEntityState(entity);
            Dictionary <PropertyDescriptor, DbExpression> updateColumns = new Dictionary <PropertyDescriptor, DbExpression>();

            foreach (PropertyDescriptor propertyDescriptor in typeDescriptor.PropertyDescriptors)
            {
                if (keyValueMap.ContainsKey(propertyDescriptor))
                {
                    keyValueMap[propertyDescriptor] = propertyDescriptor.GetValue(entity);
                    continue;
                }

                bool hasSequence = propertyDescriptor.HasSequence();
                if (hasSequence)
                {
                    continue;
                }

                object val = propertyDescriptor.GetValue(entity);

                if (entityState != null && !entityState.HasChanged(propertyDescriptor, val))
                {
                    continue;
                }

                DbExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType);
                updateColumns.Add(propertyDescriptor, valExp);
            }

            if (updateColumns.Count == 0)
            {
                return(0);
            }

            DbTable            dbTable      = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema);
            DbExpression       conditionExp = PrimaryKeyHelper.MakeCondition(keyValueMap, dbTable);
            DbUpdateExpression e            = new DbUpdateExpression(dbTable, conditionExp);

            foreach (var item in updateColumns)
            {
                e.UpdateColumns.Add(item.Key.Column, item.Value);
            }

            int ret = this.ExecuteNonQuery(e);

            if (entityState != null)
            {
                entityState.Refresh();
            }
            return(ret);
        }
Exemplo n.º 2
0
 public bool SaveArtice(Ld_Info_Artice entity)
 {
     try
     {
         int    systemId  = entity.SystemID;
         string companyId = entity.CompanyID;
         string articeId  = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.InfoArtice);
         if (IsExists(systemId, companyId, articeId))
         {
             throw new Exception("主建ID重复!");
         }
         entity.Hits         = entity.Hits.ToInt();
         entity.Sort         = entity.Sort.ToInt();
         entity.UpNum        = entity.UpNum.ToInt();
         entity.DownNum      = entity.DownNum.ToInt();
         entity.AllowComment = entity.AllowComment.ToBool();
         entity.IsTop        = entity.IsTop.ToBool();
         entity.IsPush       = entity.IsPush.ToBool();
         entity.IsVip        = entity.IsVip.ToBool();
         entity.IsDraft      = entity.IsDraft.ToBool();
         entity.IsDel        = entity.IsDel.ToBool();
         entity.ArticeID     = articeId;
         entity.CreateDate   = DateTime.Now;
         return(Add(entity));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 3
0
 public JsonResult SaveFileSingle()
 {
     try
     {
         var  files = Request.Form.Files;
         int  count = files.Count;
         long size  = files.Sum(f => f.Length);
         if (count == 0)
         {
             return(Error("上传文件不能为空!"));
         }
         if (size == 0)
         {
             return(Error("上传文件大小不能为0字节!"));
         }
         var    formFile    = files.FirstOrDefault();
         var    name        = formFile.Name;
         var    fileSize    = formFile.Length;
         var    fileName    = formFile.FileName;
         string uploadPath  = CreateUploadPath(SystemID, CompanyID, fileName);
         string newFileName = CreateFileName(fileName);
         var    filePath    = string.Format("{0}\\{1}", uploadPath, newFileName);
         string src         = ToRelativePath(filePath);
         string url         = ToAbsoluteUri(filePath);
         string mediaId     = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.BasicsMedia);
         var    media       = new Basics_Media()
         {
             SystemID      = SystemID,
             CompanyID     = CompanyID,
             MediaID       = mediaId,
             FileName      = fileName,
             FileExtension = Path.GetExtension(fileName).ToLower(),
             FileSize      = fileSize,
             Url           = url,
             Src           = src,
         };
         var data = new { mediaid = mediaId, name = fileName, size = fileSize, url, src };
         if (formFile.Length > 0)
         {
             using (var stream = new FileStream(filePath, FileMode.Create))
             {
                 formFile.CopyTo(stream);
                 stream.Flush();
             }
         }
         bool result = MediaService.SaveMedia(media);
         if (result)
         {
             return(Success("ok", new { count, size, file = data }));
         }
         else
         {
             return(Error("upload fail!"));
         }
     }
     catch (Exception ex)
     {
         return(Error(ex.Message));
     }
 }
Exemplo n.º 4
0
 public bool SaveBlock(Info_Block entity)
 {
     try
     {
         var    infoBlock     = PrimaryKeyHelper.PrimaryKeyType.InfoBlock;
         var    primaryKeyLen = PrimaryKeyHelper.PrimaryKeyLen.V1;
         int    systemId      = entity.SystemID;
         string companyId     = entity.CompanyID;
         string blockId       = PrimaryKeyHelper.MakePrimaryKey(infoBlock, primaryKeyLen);
         string tags          = entity.Tags;
         bool   state         = entity.State.ToBool();
         if (string.IsNullOrEmpty(tags))
         {
             throw new Exception("块标签不能为空!");
         }
         bool verifyTags = IsExists(m => m.SystemID == systemId && m.CompanyID == companyId && m.Tags == tags);
         if (verifyTags)
         {
             throw new Exception("块标签不能重复!");
         }
         entity.BlockID    = blockId;
         entity.State      = state;
         entity.CreateDate = DateTime.Now;
         return(Add(entity));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
 public bool SaveNoticeCategory(Ld_Info_NoticeCategory entity)
 {
     try
     {
         var    infoNoticeCategory = PrimaryKeyHelper.PrimaryKeyType.InfoNoticeCategory;
         var    version            = PrimaryKeyHelper.PrimaryKeyLen.V1;
         int    systemId           = entity.SystemID;
         string companyId          = entity.CompanyID;
         string categoryId         = PrimaryKeyHelper.MakePrimaryKey(infoNoticeCategory, version);
         string categoryName       = entity.CategoryName;
         if (IsExists(m => m.SystemID == systemId && m.CompanyID == companyId && m.CategoryID == categoryId))
         {
             throw new Exception("主建ID重复!");
         }
         if (IsExists(m => m.SystemID == systemId && m.CompanyID == companyId && m.CategoryName == categoryName))
         {
             throw new Exception("类别名称已存在!");
         }
         entity.CategoryID = categoryId;
         entity.CreateDate = DateTime.Now;
         return(Add(entity));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 6
0
        public IActionResult Register(string uuid, [FromBody]JObject fromValue)
        {
            long logId = 0;
            try
            {
                int systemId = SystemID;
                logId = BaseApiManager.SaveLogs(uuid, fromValue);
                if (!IsUuid(uuid)) { return Error(logId, "verify uuid fail!"); }
                bool isParams = IsRegisterParams(fromValue);
                var entity = GetInterfaceAccountByUuid(uuid);
                string companyId = entity.CompanyID;
                string memberId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.MemberAccount);
                string phone = GetJObjectValue(fromValue, "phone");
                string password = GetJObjectValue(fromValue, "password");
                string ipAddress = Net.Ip;
                if (!Utility.IsMobilePhone(phone))
                    return Error(logId, "verify phone fail!");

                var result = AccountService.SaveAccountRegisterPro(systemId, companyId, memberId, AlgorithmHelper.MD5(password), phone, ipAddress);
                if (result)
                    return Success(logId, "ok");
                else
                    return Error(logId, "fail");
            }
            catch (Exception ex)
            {
                return Error(logId, ex.Message);
            }
        }
Exemplo n.º 7
0
        public override int Delete <TEntity>(TEntity entity, string table)
        {
            PublicHelper.CheckNull(entity);

            TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity));

            PublicHelper.EnsureHasPrimaryKey(typeDescriptor);

            Dictionary <PropertyDescriptor, object> keyValueMap = new Dictionary <PropertyDescriptor, object>(typeDescriptor.PrimaryKeys.Count);

            foreach (PropertyDescriptor keyPropertyDescriptor in typeDescriptor.PrimaryKeys)
            {
                object keyVal = keyPropertyDescriptor.GetValue(entity);
                keyValueMap.Add(keyPropertyDescriptor, keyVal);
            }

            DbTable dbTable = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema);

            PropertyDescriptor timestampProperty = typeDescriptor.PropertyDescriptors.Where(a => a.IsTimestamp()).FirstOrDefault();

            if (timestampProperty != null)
            {
                object timestampValue = timestampProperty.GetValue(entity);
                if (timestampValue != null)
                {
                    keyValueMap[timestampProperty] = timestampValue;
                }
            }

            DbExpression       conditionExp = PrimaryKeyHelper.MakeCondition(keyValueMap, dbTable);
            DbDeleteExpression e            = new DbDeleteExpression(dbTable, conditionExp);

            return(this.ExecuteNonQuery(e));
        }
Exemplo n.º 8
0
        public bool SaveAdvertisement(Ld_Extend_Advertisement entity, List <Ld_Extend_AdvertisementDetails> lists)
        {
            try
            {
                var    advertisement        = PrimaryKeyHelper.PrimaryKeyType.ExtendAdvertisement;
                var    advertisementDetails = PrimaryKeyHelper.PrimaryKeyType.ExtendAdvertisementDetails;
                var    version         = PrimaryKeyHelper.PrimaryKeyLen.V1;
                string advertisementId = PrimaryKeyHelper.MakePrimaryKey(advertisement, version);

                entity.AdvertisementID = advertisementId;
                entity.Sort            = entity.Sort.ToInt();
                entity.State           = entity.State.ToBool();
                entity.CreateDate      = DateTime.Now;

                if (lists == null)
                {
                    throw new Exception("广告列表不能为空!");
                }
                List <Ld_Extend_AdvertisementDetails> details = new List <Ld_Extend_AdvertisementDetails>();
                foreach (var m in lists)
                {
                    string advertisementDetailsId = PrimaryKeyHelper.MakePrimaryKey(advertisementDetails, version);
                    m.SystemID        = entity.SystemID;
                    m.CompanyID       = entity.CompanyID;
                    m.DetailsID       = advertisementDetailsId;
                    m.AdvertisementID = advertisementId;
                    m.Sort            = m.Sort.ToInt();
                    m.State           = m.State.ToBool();
                    m.CreateDate      = DateTime.Now;
                    details.Add(m);
                }

                int intnum    = 0;
                var dbContext = new DAL.BaseDAL(LdCmsDbEntitiesContext);
                using (var db = dbContext.DbEntities())
                {
                    using (var trans = db.Database.BeginTransaction())
                    {
                        try
                        {
                            dbContext.Add(entity);
                            dbContext.Add(details);
                            intnum = db.SaveChanges();
                            trans.Commit();
                        }
                        catch (Exception)
                        {
                            trans.Rollback();
                        }
                        return(intnum > 0);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 9
0
        public DeserializeHelper(string tableName, string fields)
        {
            this.Highlight  = null;
            this._TableName = tableName;
            if (fields == "*" || string.IsNullOrWhiteSpace(fields))
            {
                fields = "";
            }
            this._Fields = fields;
            string[] source = fields.ToLower().Split(new char[]
            {
                ','
            }, StringSplitOptions.RemoveEmptyEntries);
            Type typeFromHandle = typeof(T);

            PropertyInfo[] properties = typeFromHandle.GetProperties();
            for (int i = 0; i < properties.Length; i++)
            {
                PropertyInfo        propertyInfo        = properties[i];
                PrimaryKeyAttribute primaryKeyAttribute = PrimaryKeyHelper.GetPrimaryKeyAttribute(propertyInfo);
                if (primaryKeyAttribute != null)
                {
                    this.PrimaryKey = primaryKeyAttribute;
                }
                if (string.IsNullOrWhiteSpace(fields) || source.Contains(propertyInfo.Name.ToLower()))
                {
                    this._PropertyList.Add(propertyInfo);
                }
            }
            if (!string.IsNullOrWhiteSpace(this._TableName))
            {
                this._DataTableSchema = new DataTable(this._TableName);
            }
            else
            {
                this._DataTableSchema = new DataTable("QueryData");
            }
            foreach (PropertyInfo current in this.PropertyList)
            {
                DataColumn column = new DataColumn(current.Name, current.PropertyType);
                this._DataTableSchema.Columns.Add(column);
            }
            if (!string.IsNullOrWhiteSpace(this._Fields))
            {
                if (source.Contains("score"))
                {
                    DataColumn column2 = new DataColumn("score", typeof(double));
                    this._DataTableSchema.Columns.Add(column2);
                }
                if (source.Contains("_version_"))
                {
                    DataColumn column3 = new DataColumn("_version_", typeof(string));
                    this._DataTableSchema.Columns.Add(column3);
                }
            }
        }
Exemplo n.º 10
0
 private string CreateTableID()
 {
     try
     {
         return(PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.Table, PrimaryKeyHelper.PrimaryKeyLen.V1));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 11
0
        public virtual TEntity QueryByKey <TEntity>(object key, string table, LockType @lock, bool tracking = false)
        {
            Expression <Func <TEntity, bool> > condition = PrimaryKeyHelper.BuildCondition <TEntity>(key);
            var q = this.Query <TEntity>(table, @lock).Where(condition);

            if (tracking)
            {
                q = q.AsTracking();
            }

            return(q.FirstOrDefault());
        }
Exemplo n.º 12
0
 public bool SaveMessageBoard(Ld_Service_MessageBoard entity)
 {
     try
     {
         string messageId = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.ServiceMessageBoard);
         entity.MessageID  = messageId;
         entity.IsTop      = false;
         entity.State      = false;
         entity.CreateDate = DateTime.Now;
         return(Add(entity));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 13
0
        protected virtual async Task <TEntity> QueryByKey <TEntity>(object key, string table, LockType @lock, bool tracking, bool @async)
        {
            Expression <Func <TEntity, bool> > condition = PrimaryKeyHelper.BuildCondition <TEntity>(key);
            var q = this.Query <TEntity>(table, @lock).Where(condition);

            if (tracking)
            {
                q = q.AsTracking();
            }

            if (@async)
            {
                return(await q.FirstOrDefaultAsync());
            }

            return(q.FirstOrDefault());
        }
Exemplo n.º 14
0
        public void CreateTable <T>(T t) where T : class
        {
            try
            {
                string tableID    = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.Table, PrimaryKeyHelper.PrimaryKeyLen.V1);
                string tableName  = typeof(T).Name;
                string primaryKey = "SystemID";
                string Account    = "sys";
                string NickName   = "系统生成";

                Log_Table entity = new Log_Table();
                entity.TableID    = tableID;
                entity.TableName  = tableName;
                entity.PrimaryKey = primaryKey;
                entity.Account    = Account;
                entity.NickName   = NickName;

                List <Log_TableDetails> lists = new List <Log_TableDetails>();
                PropertyInfo[]          pi    = typeof(T).GetProperties();
                foreach (PropertyInfo p in pi)
                {
                    string columnName = p.Name.ToString();  //得到属性的名称
                    Type   columnType = p.PropertyType;     //得到属性的类型
                    if (p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(Nullable <>))
                    {
                        columnType = p.PropertyType.GetGenericArguments()[0];
                    }
                    lists.Add(new Log_TableDetails()
                    {
                        TableID        = tableID,
                        TableName      = tableName,
                        ColumnName     = columnName,
                        ColumnDataType = columnType.Name,
                        Account        = Account,
                        NickName       = NickName,
                    });
                }
                TableService.SaveTable(entity);
                TableDetailsService.SaveTableDetails(lists);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 15
0
 public bool SavePage(Info_Page entity)
 {
     try
     {
         var    infoPage      = PrimaryKeyHelper.PrimaryKeyType.InfoPage;
         var    primaryKeyLen = PrimaryKeyHelper.PrimaryKeyLen.V1;
         string pageId        = PrimaryKeyHelper.MakePrimaryKey(infoPage, primaryKeyLen);
         int    sort          = entity.Sort.ToInt();
         entity.PageID     = pageId;
         entity.Sort       = sort;
         entity.CreateDate = DateTime.Now;
         return(Add(entity));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
 public bool SaveAdvertisementDetails(Ld_Extend_AdvertisementDetails entity)
 {
     try
     {
         var    advertisementDetails = PrimaryKeyHelper.PrimaryKeyType.ExtendAdvertisementDetails;
         var    version = PrimaryKeyHelper.PrimaryKeyLen.V1;
         string advertisementDetailsId = PrimaryKeyHelper.MakePrimaryKey(advertisementDetails, version);
         entity.DetailsID  = advertisementDetailsId;
         entity.Sort       = entity.Sort.ToInt();
         entity.State      = entity.State.ToBool();
         entity.CreateDate = DateTime.Now;
         return(Add(entity));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 17
0
 public bool SaveLinkGroup(Ld_Extend_LinkGroup entity)
 {
     try
     {
         var    linkGroup   = PrimaryKeyHelper.PrimaryKeyType.ExtendLinkGroup;
         var    version     = PrimaryKeyHelper.PrimaryKeyLen.V1;
         string linkGroupId = PrimaryKeyHelper.MakePrimaryKey(linkGroup, version);
         entity.GroupID    = linkGroupId;
         entity.Sort       = entity.Sort.ToInt();
         entity.IsExternal = entity.IsExternal.ToBool();
         entity.State      = entity.State.ToBool();
         entity.CreateDate = DateTime.Now;
         return(Add(entity));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 18
0
 public bool SaveNotice(Ld_Info_Notice entity)
 {
     try
     {
         int    systemId  = entity.SystemID;
         string companyId = entity.CompanyID;
         string noticeId  = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.InfoNotice);
         if (IsExists(systemId, companyId, noticeId))
         {
             throw new Exception("主建ID重复!");
         }
         entity.NoticeID   = noticeId;
         entity.CreateDate = DateTime.Now;
         return(Add(entity));
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
Exemplo n.º 19
0
        protected override async Task <int> Delete <TEntity>(TEntity entity, string table, bool @async)
        {
            PublicHelper.CheckNull(entity);

            TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity));

            PublicHelper.EnsureHasPrimaryKey(typeDescriptor);

            PairList <PrimitivePropertyDescriptor, object> keyValues = new PairList <PrimitivePropertyDescriptor, object>(typeDescriptor.PrimaryKeys.Count);

            foreach (PrimitivePropertyDescriptor keyPropertyDescriptor in typeDescriptor.PrimaryKeys)
            {
                object keyValue = keyPropertyDescriptor.GetValue(entity);
                PrimaryKeyHelper.KeyValueNotNull(keyPropertyDescriptor, keyValue);
                keyValues.Add(keyPropertyDescriptor, keyValue);
            }

            PrimitivePropertyDescriptor rowVersionDescriptor = null;

            if (typeDescriptor.HasRowVersion())
            {
                rowVersionDescriptor = typeDescriptor.RowVersion;
                var rowVersionValue = typeDescriptor.RowVersion.GetValue(entity);
                this.EnsureRowVersionValueIsNotNull(rowVersionValue);
                keyValues.Add(typeDescriptor.RowVersion, rowVersionValue);
            }

            DbTable            dbTable      = PublicHelper.CreateDbTable(typeDescriptor, table);
            DbExpression       conditionExp = PublicHelper.MakeCondition(keyValues, dbTable);
            DbDeleteExpression e            = new DbDeleteExpression(dbTable, conditionExp);

            int rowsAffected = await this.ExecuteNonQuery(e, @async);

            if (rowVersionDescriptor != null)
            {
                PublicHelper.CauseErrorIfOptimisticUpdateFailed(rowsAffected);
            }

            return(rowsAffected);
        }
Exemplo n.º 20
0
        public virtual int Delete <TEntity>(TEntity entity, string table)
        {
            PublicHelper.CheckNull(entity);

            TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity));

            PublicHelper.EnsureHasPrimaryKey(typeDescriptor);

            Dictionary <PropertyDescriptor, object> keyValueMap = new Dictionary <PropertyDescriptor, object>(typeDescriptor.PrimaryKeys.Count);

            foreach (PropertyDescriptor keyPropertyDescriptor in typeDescriptor.PrimaryKeys)
            {
                object keyVal = keyPropertyDescriptor.GetValue(entity);
                keyValueMap.Add(keyPropertyDescriptor, keyVal);
            }

            DbTable            dbTable      = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema);
            DbExpression       conditionExp = PrimaryKeyHelper.MakeCondition(keyValueMap, dbTable);
            DbDeleteExpression e            = new DbDeleteExpression(dbTable, conditionExp);

            return(this.ExecuteNonQuery(e));
        }
Exemplo n.º 21
0
        public bool SaveLink(Extend_Link entity)
        {
            try
            {
                var    link     = PrimaryKeyHelper.PrimaryKeyType.ExtendLink;
                var    version  = PrimaryKeyHelper.PrimaryKeyLen.V1;
                string linkId   = PrimaryKeyHelper.MakePrimaryKey(link, version);
                string logo     = entity.Logo;
                int    typeId   = string.IsNullOrEmpty(logo) ? 1 : 2;
                string typeName = string.IsNullOrEmpty(logo) ? "文字" : "LOGO";

                entity.LinkID     = linkId;
                entity.TypeID     = typeId.ToByte();
                entity.TypeName   = typeName;
                entity.Sort       = entity.Sort.ToInt();
                entity.State      = entity.State.ToBool();
                entity.CreateDate = DateTime.Now;
                return(Add(entity));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 22
0
        public bool SaveAccount(Ld_Member_Account entity)
        {
            try
            {
                int      systemId   = entity.SystemID;
                string   companyId  = entity.CompanyID;
                string   memberId   = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.MemberAccount, PrimaryKeyHelper.PrimaryKeyLen.V2);
                DateTime CreateDate = DateTime.Now;
                if (IsAccount(systemId, companyId, memberId))
                {
                    throw new Exception("会员ID已存在!");
                }
                entity.MemberID   = memberId;
                entity.State      = true;
                entity.IsDel      = false;
                entity.CreateDate = CreateDate;

                return(Add(entity));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Exemplo n.º 23
0
        protected virtual async Task <int> DeleteByKey <TEntity>(object key, string table, bool @async)
        {
            Expression <Func <TEntity, bool> > condition = PrimaryKeyHelper.BuildCondition <TEntity>(key);

            return(await this.Delete <TEntity>(condition, table, @async));
        }
Exemplo n.º 24
0
        protected virtual async Task <int> Update <TEntity>(TEntity entity, string table, bool @async)
        {
            PublicHelper.CheckNull(entity);

            TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity));

            PublicHelper.EnsureHasPrimaryKey(typeDescriptor);

            PairList <PrimitivePropertyDescriptor, object> keyValues = new PairList <PrimitivePropertyDescriptor, object>(typeDescriptor.PrimaryKeys.Count);

            IEntityState entityState = this.TryGetTrackedEntityState(entity);
            Dictionary <PrimitivePropertyDescriptor, DbExpression> updateColumns = new Dictionary <PrimitivePropertyDescriptor, DbExpression>();

            foreach (PrimitivePropertyDescriptor propertyDescriptor in typeDescriptor.PrimitivePropertyDescriptors)
            {
                if (propertyDescriptor.IsPrimaryKey)
                {
                    var keyValue = propertyDescriptor.GetValue(entity);
                    PrimaryKeyHelper.KeyValueNotNull(propertyDescriptor, keyValue);
                    keyValues.Add(propertyDescriptor, keyValue);
                    continue;
                }

                if (propertyDescriptor.IsAutoIncrement || propertyDescriptor.HasSequence() || propertyDescriptor.IsRowVersion)
                {
                    continue;
                }

                object val = propertyDescriptor.GetValue(entity);
                PublicHelper.NotNullCheck(propertyDescriptor, val);

                if (entityState != null && !entityState.HasChanged(propertyDescriptor, val))
                {
                    continue;
                }

                DbExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType);
                updateColumns.Add(propertyDescriptor, valExp);
            }

            object rowVersionNewValue = null;

            if (typeDescriptor.HasRowVersion())
            {
                var rowVersionDescriptor = typeDescriptor.RowVersion;
                var rowVersionOldValue   = rowVersionDescriptor.GetValue(entity);
                rowVersionNewValue = PublicHelper.IncreaseRowVersionNumber(rowVersionOldValue);
                updateColumns.Add(rowVersionDescriptor, DbExpression.Parameter(rowVersionNewValue, rowVersionDescriptor.PropertyType, rowVersionDescriptor.Column.DbType));
                keyValues.Add(rowVersionDescriptor, rowVersionOldValue);
            }

            if (updateColumns.Count == 0)
            {
                return(0);
            }

            DbTable            dbTable      = PublicHelper.CreateDbTable(typeDescriptor, table);
            DbExpression       conditionExp = PublicHelper.MakeCondition(keyValues, dbTable);
            DbUpdateExpression e            = new DbUpdateExpression(dbTable, conditionExp);

            foreach (var item in updateColumns)
            {
                e.UpdateColumns.Add(item.Key.Column, item.Value);
            }

            int rowsAffected = await this.ExecuteNonQuery(e, @async);

            if (typeDescriptor.HasRowVersion())
            {
                PublicHelper.CauseErrorIfOptimisticUpdateFailed(rowsAffected);
                typeDescriptor.RowVersion.SetValue(entity, rowVersionNewValue);
            }

            if (entityState != null)
            {
                entityState.Refresh();
            }

            return(rowsAffected);
        }
Exemplo n.º 25
0
        protected virtual async Task <TEntity> Insert <TEntity>(TEntity entity, string table, bool @async)
        {
            PublicHelper.CheckNull(entity);

            TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity));

            Dictionary <PrimitivePropertyDescriptor, object> keyValueMap = PrimaryKeyHelper.CreateKeyValueMap(typeDescriptor);

            Dictionary <PrimitivePropertyDescriptor, DbExpression> insertColumns = new Dictionary <PrimitivePropertyDescriptor, DbExpression>();

            foreach (PrimitivePropertyDescriptor propertyDescriptor in typeDescriptor.PrimitivePropertyDescriptors)
            {
                if (propertyDescriptor.IsAutoIncrement)
                {
                    continue;
                }

                object val = propertyDescriptor.GetValue(entity);

                if (propertyDescriptor.IsPrimaryKey)
                {
                    keyValueMap[propertyDescriptor] = val;
                }

                PublicHelper.NotNullCheck(propertyDescriptor, val);

                DbParameterExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType);
                insertColumns.Add(propertyDescriptor, valExp);
            }

            PrimitivePropertyDescriptor nullValueKey = keyValueMap.Where(a => a.Value == null && !a.Key.IsAutoIncrement).Select(a => a.Key).FirstOrDefault();

            if (nullValueKey != null)
            {
                /* 主键为空并且主键又不是自增列 */
                throw new ChloeException(string.Format("The primary key '{0}' could not be null.", nullValueKey.Property.Name));
            }

            DbTable            dbTable = PublicHelper.CreateDbTable(typeDescriptor, table);
            DbInsertExpression e       = new DbInsertExpression(dbTable);

            foreach (var kv in insertColumns)
            {
                e.InsertColumns.Add(kv.Key.Column, kv.Value);
            }

            PrimitivePropertyDescriptor autoIncrementPropertyDescriptor = typeDescriptor.AutoIncrement;

            if (autoIncrementPropertyDescriptor == null)
            {
                await this.ExecuteNonQuery(e, @async);

                return(entity);
            }

            IDbExpressionTranslator translator    = this.DatabaseProvider.CreateDbExpressionTranslator();
            DbCommandInfo           dbCommandInfo = translator.Translate(e);

            dbCommandInfo.CommandText = string.Concat(dbCommandInfo.CommandText, ";", this.GetSelectLastInsertIdClause());

            //SELECT @@IDENTITY 返回的是 decimal 类型
            object retIdentity = await this.ExecuteScalar(dbCommandInfo, @async);

            if (retIdentity == null || retIdentity == DBNull.Value)
            {
                throw new ChloeException("Unable to get the identity value.");
            }

            retIdentity = PublicHelper.ConvertObjectType(retIdentity, autoIncrementPropertyDescriptor.PropertyType);
            autoIncrementPropertyDescriptor.SetValue(entity, retIdentity);
            return(entity);
        }
        public JsonResult Save(string memberId)
        {
            try
            {
                if (!IsSavePermission(memberId))
                {
                    return(Error("您没有操作权限,请联系系统管理员!"));
                }

                string fRankId      = GetFormValue("fRankId");
                string fRankName    = GetFormValue("fRankName");
                string fCompanyName = GetFormValue("CompanyName");
                string fName        = GetFormValue("fName");
                string fSex         = GetFormValue("fSex");
                string fPhone       = GetFormValue("fPhone");
                string fEmail       = GetFormValue("fEmail");
                string fAddress     = GetFormValue("fAddress");
                string fRemark      = GetFormValue("fRemark");
                string fState       = GetFormValue("fState");
                string fMemberId    = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.MemberAccount);

                if (!Utility.IsMobilePhone(fPhone))
                {
                    return(Error("手机号码格式错误!"));
                }

                string password = AlgorithmHelper.MD5(fPhone.Right(8));

                Ld_Member_Account entity = new Ld_Member_Account()
                {
                    SystemID          = SystemID,
                    CompanyID         = CompanyID,
                    MemberID          = fMemberId,
                    RankID            = fRankId,
                    RankName          = fRankName,
                    UserName          = fPhone,
                    Password          = password,
                    CompanyName       = fCompanyName,
                    Name              = fName,
                    NickName          = fName,
                    Sex               = fSex.ToByte(),
                    Phone             = fPhone,
                    Email             = fEmail,
                    Address           = fAddress,
                    Remark            = fRemark,
                    State             = fState.ToBool(),
                    TotalPoints       = 0,
                    TotalAmount       = 0.00.ToDecimal(),
                    TotalConsumption  = 0.00.ToDecimal(),
                    RegisterIpAddress = Net.Ip,
                    RegisterTime      = DateTime.Now,
                    IsDel             = false,
                    CreateDate        = DateTime.Now
                };

                bool result = false;
                if (string.IsNullOrEmpty(memberId))
                {
                    result = AccountService.SaveAccount(entity);
                }
                else
                {
                    var m = AccountService.GetAccount(SystemID, CompanyID, memberId);
                    m.RankID      = fRankId;
                    m.RankName    = fRankName;
                    m.UserName    = fPhone;
                    m.CompanyName = fCompanyName;
                    m.Name        = fName;
                    m.NickName    = fName;
                    m.Sex         = fSex.ToByte();
                    m.Phone       = fPhone;
                    m.Email       = fEmail;
                    m.Address     = fAddress;
                    m.Remark      = fRemark;
                    m.State       = fState.ToBool();
                    result        = AccountService.UpdateAccount(m);
                }
                if (result)
                {
                    return(Success("ok"));
                }
                else
                {
                    return(Error("fail"));
                }
            }
            catch (Exception ex)
            {
                return(Error(ex.Message));
            }
        }
Exemplo n.º 27
0
        public IActionResult SaveFileSingle(string access_token)
        {
            try
            {
                int systemId = SystemID;
                if (!IsAccessToken(access_token))
                {
                    return(Error("验证token失败!"));
                }
                var entity = AccountService.GetAccountByAccessTokenPro(systemId, access_token);
                if (entity == null)
                {
                    return(Error("验证会员资料失败!"));
                }
                if (string.IsNullOrEmpty(entity.CompanyID))
                {
                    return(Error("验证会员资料失败!"));
                }
                string companyId = entity.CompanyID;
                string memberId  = entity.MemberID;

                var  files = Request.Form.Files;
                int  count = files.Count;
                long size  = files.Sum(f => f.Length);
                if (count == 0)
                {
                    return(Error("上传文件不能为空!"));
                }
                if (size == 0)
                {
                    return(Error("上传文件大小不能为0字节!"));
                }

                var formFile = files.FirstOrDefault();

                var    name        = formFile.Name;
                var    fileSize    = formFile.Length;
                var    fileName    = formFile.FileName;
                string uploadPath  = CreateUploadPath(systemId, companyId, fileName);
                string newFileName = CreateFileName(fileName);
                var    filePath    = string.Format("{0}\\{1}", uploadPath, newFileName);
                string src         = ToRelativePath(filePath);
                string url         = ToAbsoluteUri(filePath);
                string mediaId     = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.BasicsMedia);
                var    media       = new Ld_Basics_Media()
                {
                    SystemID      = systemId,
                    CompanyID     = companyId,
                    MediaID       = mediaId,
                    FileName      = fileName,
                    FileExtension = Path.GetExtension(fileName).ToLower(),
                    FileSize      = fileSize,
                    Url           = url,
                    Src           = src,
                };
                var data = new { mediaid = mediaId, name = fileName, size = fileSize, url, src };
                if (formFile.Length > 0)
                {
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        formFile.CopyTo(stream);
                        stream.Flush();
                    }
                }
                int result = MediaService.SaveMediaMember(memberId, media);
                if (result > 0)
                {
                    return(Success("ok", new { count, size, file = data }));
                }
                else
                {
                    return(Error("upload fail!"));
                }
            }
            catch (Exception ex)
            {
                return(Error(ex.Message));
            }
        }
Exemplo n.º 28
0
        public IActionResult SaveImageCode(string access_token)
        {
            try
            {
                int systemId = SystemID;
                if (!IsAccessToken(access_token))
                {
                    return(Error("验证token失败!"));
                }
                var entity = AccountService.GetAccountByAccessTokenPro(systemId, access_token);
                if (entity == null)
                {
                    return(Error("验证会员资料失败!"));
                }
                if (string.IsNullOrEmpty(entity.CompanyID))
                {
                    return(Error("验证会员资料失败!"));
                }
                string companyId = entity.CompanyID;
                string memberId  = entity.MemberID;

                string base64String = Accessor.HttpContext.Request.GetInputStream();
                string imageCode    = ImageHelper.GetImageCode(base64String);
                long   fileSize     = imageCode.Length;
                string fileName     = string.Format("{0}.{1}", GeneralCodeHelper.GetRandomInt(8), ImageHelper.GetImageExtension(base64String));
                string uploadPath   = CreateUploadPath(systemId, companyId, fileName);
                string newFileName  = CreateFileName(fileName);
                var    filePath     = string.Format("{0}\\{1}", uploadPath, newFileName);
                string src          = ToRelativePath(filePath);
                string url          = ToAbsoluteUri(filePath);
                string mediaId      = PrimaryKeyHelper.MakePrimaryKey(PrimaryKeyHelper.PrimaryKeyType.BasicsMedia);
                var    media        = new Ld_Basics_Media()
                {
                    SystemID      = systemId,
                    CompanyID     = companyId,
                    MediaID       = mediaId,
                    FileName      = fileName,
                    FileExtension = Path.GetExtension(fileName).ToLower(),
                    FileSize      = fileSize,
                    Url           = url,
                    Src           = src,
                };
                var data = new { mediaid = mediaId, name = fileName, size = fileSize, url, src };
                if (fileSize > 0)
                {
                    string savePath = ImageHelper.Base64StringToImage(filePath, base64String);
                }
                int result = MediaService.SaveMediaMember(memberId, media);
                if (result > 0)
                {
                    return(Success("ok", new { count = 1, size = fileSize, file = data }));
                }
                else
                {
                    return(Error("upload fail!"));
                }
            }
            catch (Exception ex)
            {
                return(Error(ex.Message));
            }
        }
Exemplo n.º 29
0
        public override int Update <TEntity>(TEntity entity, string table)
        {
            PublicHelper.CheckNull(entity);

            TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity));

            PublicHelper.EnsureHasPrimaryKey(typeDescriptor);

            Dictionary <PropertyDescriptor, object> keyValueMap = PrimaryKeyHelper.CreateKeyValueMap(typeDescriptor);

            IEntityState entityState = this.TryGetTrackedEntityState(entity);
            Dictionary <PropertyDescriptor, DbExpression> updateColumns = new Dictionary <PropertyDescriptor, DbExpression>();
            PropertyDescriptor timestampProperty = null;
            object             timestampValue    = null;

            foreach (PropertyDescriptor propertyDescriptor in typeDescriptor.PropertyDescriptors)
            {
                if (propertyDescriptor.IsPrimaryKey)
                {
                    keyValueMap[propertyDescriptor] = propertyDescriptor.GetValue(entity);
                    continue;
                }

                if (propertyDescriptor.IsAutoIncrement)
                {
                    continue;
                }

                if (propertyDescriptor.IsTimestamp())
                {
                    timestampProperty = propertyDescriptor;
                    timestampValue    = propertyDescriptor.GetValue(entity);
                    continue;
                }

                object val = propertyDescriptor.GetValue(entity);

                if (entityState != null && !entityState.HasChanged(propertyDescriptor, val))
                {
                    continue;
                }

                DbExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType);
                updateColumns.Add(propertyDescriptor, valExp);
            }

            if (updateColumns.Count == 0)
            {
                return(0);
            }

            DbTable dbTable = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema);

            if (timestampValue != null)
            {
                keyValueMap[timestampProperty] = timestampValue;
            }

            DbExpression       conditionExp = PrimaryKeyHelper.MakeCondition(keyValueMap, dbTable);
            DbUpdateExpression e            = new DbUpdateExpression(dbTable, conditionExp);

            foreach (var item in updateColumns)
            {
                e.UpdateColumns.Add(item.Key.Column, item.Value);
            }

            int rowsAffected = 0;

            if (timestampValue == null)
            {
                rowsAffected = this.ExecuteNonQuery(e);
                if (entityState != null)
                {
                    entityState.Refresh();
                }
                return(rowsAffected);
            }

            List <Action <TEntity, IDataReader> > mappers = new List <Action <TEntity, IDataReader> >();

            mappers.Add(GetMapper <TEntity>(timestampProperty, e.Returns.Count));
            e.Returns.Add(timestampProperty.Column);

            IDataReader dataReader = this.ExecuteReader(e);

            using (dataReader)
            {
                while (dataReader.Read())
                {
                    rowsAffected++;
                    foreach (var mapper in mappers)
                    {
                        mapper(entity, dataReader);
                    }
                }
            }

            return(rowsAffected);
        }
Exemplo n.º 30
0
        public override TEntity Insert <TEntity>(TEntity entity, string table)
        {
            PublicHelper.CheckNull(entity);

            TypeDescriptor typeDescriptor = EntityTypeContainer.GetDescriptor(typeof(TEntity));

            Dictionary <PropertyDescriptor, object> keyValueMap = PrimaryKeyHelper.CreateKeyValueMap(typeDescriptor);

            Dictionary <PropertyDescriptor, DbExpression> insertColumns = new Dictionary <PropertyDescriptor, DbExpression>();

            foreach (PropertyDescriptor propertyDescriptor in typeDescriptor.PropertyDescriptors)
            {
                if (propertyDescriptor.IsAutoIncrement)
                {
                    continue;
                }

                if (propertyDescriptor.HasSequence())
                {
                    DbMethodCallExpression getNextValueForSequenceExp = PublicHelper.MakeNextValueForSequenceDbExpression(propertyDescriptor);
                    insertColumns.Add(propertyDescriptor, getNextValueForSequenceExp);
                    continue;
                }

                object val = propertyDescriptor.GetValue(entity);

                if (propertyDescriptor.IsPrimaryKey)
                {
                    keyValueMap[propertyDescriptor] = val;
                }

                DbParameterExpression valExp = DbExpression.Parameter(val, propertyDescriptor.PropertyType, propertyDescriptor.Column.DbType);
                insertColumns.Add(propertyDescriptor, valExp);
            }

            PropertyDescriptor nullValueKey = keyValueMap.Where(a => a.Value == null && !a.Key.IsAutoIncrement).Select(a => a.Key).FirstOrDefault();

            if (nullValueKey != null)
            {
                /* 主键为空并且主键又不是自增列 */
                throw new ChloeException(string.Format("The primary key '{0}' could not be null.", nullValueKey.Property.Name));
            }

            DbTable            dbTable   = table == null ? typeDescriptor.Table : new DbTable(table, typeDescriptor.Table.Schema);
            DbInsertExpression insertExp = new DbInsertExpression(dbTable);

            foreach (var kv in insertColumns)
            {
                insertExp.InsertColumns.Add(kv.Key.Column, kv.Value);
            }

            List <Action <TEntity, IDataReader> > mappers = new List <Action <TEntity, IDataReader> >();

            foreach (var item in typeDescriptor.PropertyDescriptors.Where(a => a.IsAutoIncrement || a.HasSequence()))
            {
                mappers.Add(GetMapper <TEntity>(item, insertExp.Returns.Count));
                insertExp.Returns.Add(item.Column);
            }

            if (mappers.Count == 0)
            {
                this.ExecuteNonQuery(insertExp);
                return(entity);
            }

            IDbExpressionTranslator translator = this.DatabaseProvider.CreateDbExpressionTranslator();
            List <DbParam>          parameters;
            string sql = translator.Translate(insertExp, out parameters);

            IDataReader dataReader = this.Session.ExecuteReader(sql, parameters.ToArray());

            using (dataReader)
            {
                dataReader.Read();
                foreach (var mapper in mappers)
                {
                    mapper(entity, dataReader);
                }
            }

            return(entity);
        }