-海深不蓝森浓不绿 2019-08-28 11:57 采纳率: 0%
浏览 326

.NET Web API 实现小程序产品加入购物车功能 判断是否有重复的 累加

请大佬帮忙看下 写法是否有问题 参数

postman测试可以的 小程序调用时还是重复添加

[HttpPost]
public async Task<IActionResult> Create(string productid,int quantity, WsUserCartViewModel model)
{
 var predicate = PredicateBuilder.True<WsUserCart>();
 predicate = predicate.And(a => a.Deleted == false);
    if (!string.IsNullOrEmpty(productid))
    {
            predicate = predicate.And(a => a.ProductId == productid);
    }
    var page = _wsUserCartService.GetPagedList(predicate, 1, 10000).Result;
    //查询是否有数据  条件ProductId(唯一的)
    if (page.Count==0)
    { //添加数据   
            if (ModelState.IsValid)
            {
                model.CreatedOn = DateTime.Now;
                model.UpdatedOn = DateTime.Now;
                await _wsUserCartService.AddViewModel(model);
            }
            return Ok(model);
    }
    else
    { //查询当前购物车列表 上面if里添加的这条数据 的数量  在下面 修改的时候 加上修改的数量 总数量=page1[0].Quantity+quantity
            var page1 = _wsUserCartService.GetPagedList(predicate, 1, 10000).Result;
            var id = page[0].Id;
            var ucmodel = await _wsUserCartService.GetViewModel(id);
            ucmodel.Quantity = page1[0].Quantity+quantity;
            await _wsUserCartService.UpdateViewModel(ucmodel);
            return Ok(ucmodel);
    }

}

图片说明

  • 写回答

1条回答

  • Json-Huang 2019-08-28 12:16
    关注

    考虑下是不是并发导致,数据库或者代码层面加锁,比如数据库乐观锁,根据数据版本(Version)记录机制实现;代码也可以通过redis原子操作实现等

    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型