修改信息,一些对于不需要改的字段处理

如:我们编辑好一条数据,然后进行发布操作,这样在商城就能进行购买。

修改:编辑资源保存的时候进行逻辑判断

是否发布和资源状态两个字段不需要改变。

 

如下面方法:

        /// <summary>
        ///     编辑资源信息
        /// </summary>
        [AbpAuthorize(ResourceAppPermissions.Resource_EditResource)]
        public virtual async Task UpdateResourceAsync(ResourceEditDto input)
        {
            if (input.PlaceOfDeliveryIds.Count < 1)
            {
                throw new UserFriendlyException("提货点地址不可为空");

            }
            if (input.BidEndTime <= DateTime.Now)
            {
                throw new UserFriendlyException("竞价结束时间不能小于当前时间");
            }
            if (!input.Id.HasValue)
                throw new UserFriendlyException("编辑资源的标识Id不存在");

    // 查询一遍数据库

            var entity = await _resourceRepository.FirstOrDefaultAsync(input.Id.Value);
            if (input.ResourceImgIdForALi <= 0)
            {
                input.ResourceImgIdForALi = entity.ResourceImgIdForALi;
            }

            if (DateTime.Now >= entity.BidStartTime)
            {
                throw new UserFriendlyException("该资源正在竞价中,不能编辑!");
            }
            //if (entity.IsPublish)
            //    throw new UserFriendlyException("该资源已发布不能对其进行编辑操作");


            entity.ResourceAddresses = new List<ResourceAddress>();
            var address = await GetResourceAddresses(input.PlaceOfDeliveryIds);

            await _resourceAddressRepository.DeleteAsync(a => a.ResourceId == entity.Id);
            address.ForEach(a => entity.ResourceAddresses.Add(a));


            if (!input.UploadDataId.HasValue)
            {
                await _resourceItemsRepository.DeleteAsync(a => a.ResourceId == entity.Id);
            }
            else
            {
                if (input.UploadDataId != entity.UploadDataId)
                {
                    await _resourceItemsRepository.DeleteAsync(a => a.ResourceId == entity.Id);

                    //判断用户上传的附件表模板
                    TestingExcel(input.UploadDataId.Value);

                    //生成资源子表
                    var items = CreateExcelResourceItems(input.UploadDataId.Value);

                    entity.ResourceItems = items;

                    entity.UploadDataId = input.UploadDataId;
                }

            }
            //时间
            //input.BidStartTime = DateTime.Now;
            input.ResourceState = entity.ResourceState;
            input.IsPublish = entity.IsPublish;
            input.MapTo(entity);

            //todo:删除旧资源分类之前,判断本次传进来的资源分类与原来的资源分类
            //是否存在变动,存在变动则 删除原来的资源分类,否则直接跳过删除,不对已有
            //的资源分类做处理

            //获取当前资源拥有的资源分类Ids
            //var currentCategories = await _categoryManage.GetResourceInCategoriesAsync(entity);
            var currentCategories = await _resourceCategoryRepository.GetAll().Where(a => a.ResourceId == input.Id).Select(b => b.CategoryId).ToListAsync();


            await _resourceRepository.UpdateAsync(entity);
        }

我之前就错误的认为,这个两个字段也需要前端传递过来,解决办法就是修改之前查询一遍数据库,把不需要改变的字段重新赋值就可以了!!!

 

posted @ 2017-04-20 09:30  begrateful  阅读(393)  评论(0编辑  收藏  举报