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

本文详细介绍了资源编辑过程中涉及的关键逻辑判断,包括提货点地址、竞价结束时间等字段的有效性验证,以及资源状态和是否发布字段的保留策略。此外还讨论了如何处理资源分类的变化。

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

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

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

 

如下面方法:

        /// <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);
        }

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

 

转载于:https://www.cnblogs.com/wendj/p/6737033.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值