private int GetSortNumber(Logistics_Area area)
        {
            var queryable = db.Logistics_Areas.AsQueryable();
            var sort      = queryable.Max(p => p.SortNumber);

            sort++;
            return(sort);
        }
        public async Task <ActionResult> Edit(
            [Bind(
                 Include =
                     "Id,AreaName,AreaLevel,ParentId,Pinyinma,PostCode,SortNumber,CreateTime,UpdateTime,CreateBy,UpdateBy,TenantId"
                 )] Logistics_Area logistics_Areas)
        {
            if (ModelState.IsValid)
            {
                logistics_Areas.CreateTime = DateTime.Now;
                logistics_Areas.CreateBy   = UserId;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(logistics_Areas));
        }
        public async Task <ActionResult> Create(
            [Bind(
                 Include =
                     "Id,AreaName,AreaLevel,ParentId,Pinyinma,PostCode,SortNumber,CreateTime,UpdateTime,CreateBy,UpdateBy"
                 )] Logistics_Area logistics_Areas)
        {
            if (ModelState.IsValid)
            {
                logistics_Areas.CreateTime = DateTime.Now;
                logistics_Areas.CreateBy   = UserId;
                //id和排序序号要后台生成..
                var id = GetPrimaryKey(logistics_Areas);
                logistics_Areas.SortNumber = GetSortNumber(logistics_Areas);
                logistics_Areas.Id         = id;
                db.Logistics_Areas.Add(logistics_Areas);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(logistics_Areas));
        }
        private string GetPrimaryKey(Logistics_Area area)
        {
            var result    = "";
            var queryable = db.Logistics_Areas.AsQueryable();
            var maxId     =
                queryable.Where(p => (p.AreaLevel == area.AreaLevel) && (p.ParentId == area.ParentId)).Max(p => p.Id);
            var headValue = 0;

            switch (area.AreaLevel)
            {
            case Logistics_AreaLevel.Country:
                headValue = int.Parse(maxId.Substring(0, maxId.Length - 5));
                headValue++;
                result = headValue + "00000";
                break;

            case Logistics_AreaLevel.Province:
                headValue = int.Parse(maxId.Substring(0, maxId.Length - 4));
                headValue++;
                result = headValue + "0000";     //maxId.Substring(headValue.ToString().Length - 1);
                break;

            case Logistics_AreaLevel.City:
                headValue = int.Parse(maxId.Substring(0, maxId.Length - 2));
                headValue++;
                result = headValue + "00";     //maxId.Substring(3) + headValue.ToString();
                break;

            default:
                headValue = int.Parse(maxId) + 1;
                result    = headValue.ToString();
                break;
            }

            return(result);
        }