public APIResult CreateConglomeration([FromBody] ConglomerationSetUpModel input) { var conglomerationActivityType = db.ConglomerationActivityType.Find(input.ConglomerationActivityTypeId); var conglomerationActivity = db.ConglomerationActivity.Find(input.ConglomerationActivityId); if (conglomerationActivityType.IsDel || conglomerationActivity.IsDel) { return(Error("记录不存在")); } if (conglomerationActivity.ActivityEndTime <= DateTime.Now) { return(Error("活动已经结束")); } var nowDate = DateTime.Now; var strat = new DateTime(nowDate.Year, nowDate.Month, nowDate.Day, 22, 00, 00); var end = new DateTime(nowDate.Year, nowDate.Month, nowDate.Day, 00, 00, 00); if (!(nowDate < strat && nowDate > end)) { return(Error("参团时间必须为0点-22点")); } input.CurrentMemberNumber = 0; input.MemberNumber = conglomerationActivityType.ConglomerationMembers; input.Status = ConglomerationSetUpStatus.未支付; input.EndTime = DateTime.Now.AddMinutes(conglomerationActivity.ConglomerationCountdown); input.MemberId = GetMemberId(); //input.MemberId = 70; var conglomerationSetUp = _mapper.Map <ConglomerationSetUp>(input); conglomerationSetUp = db.ConglomerationSetUp.Add(conglomerationSetUp).Entity; db.SaveChanges(); //生成订单 ShopConglomerationOrderDto shopConglomerationOrderDto = new ShopConglomerationOrderDto() { AddIp = GetIp(), ConglomerationSetUpId = conglomerationSetUp.Id, ConglomerationSetUp = conglomerationSetUp, Delivery = input.Delivery, MemberAddressId = input.MemberAddressId, //MemberId = 70, MemberId = GetMemberId(), ShopId = input.ShopId, Type = input.Type, FormId = input.FormId }; var order = _shopConglomerationOrderServer.Create(db, shopConglomerationOrderDto); return(Success(new { ConglomerationOrderId = order.Id, ConglomerationSetUpId = conglomerationSetUp.Id })); }
/// <summary> /// 初始化订单 /// </summary> /// <param name="shopConglomerationOrderDto"></param> /// <param name="conglomerationOrder"></param> private ConglomerationOrder InitOrderData(ShopDbContext db, ShopConglomerationOrderDto shopConglomerationOrderDto) { ConglomerationOrder conglomerationOrder = new ConglomerationOrder(); conglomerationOrder.CreateTime = DateTime.Now; conglomerationOrder.FormId = shopConglomerationOrderDto.FormId; conglomerationOrder.OrderNumber = OrderCodeGenerator.Generate(OrderCategory.Conglomeration, shopConglomerationOrderDto.ShopId); conglomerationOrder.ShopId = shopConglomerationOrderDto.ShopId; conglomerationOrder.Type = shopConglomerationOrderDto.Type; conglomerationOrder.ConglomerationSetUpId = shopConglomerationOrderDto.ConglomerationSetUpId; conglomerationOrder.ShopId = shopConglomerationOrderDto.ShopId; conglomerationOrder.MemberId = shopConglomerationOrderDto.MemberId; conglomerationOrder.AddUser = $"member{shopConglomerationOrderDto.MemberId}"; conglomerationOrder.AddIp = shopConglomerationOrderDto.AddIp; //conglomerationOrder.Amount = shopConglomerationOrderDto.ConglomerationSetUp.ConglomerationActivityType.ConglomerationPrice; conglomerationOrder.ConglomerationActivityId = shopConglomerationOrderDto.ConglomerationSetUp.ConglomerationActivityId; conglomerationOrder.Status = ShopOrderStatus.未处理; conglomerationOrder.Delivery = shopConglomerationOrderDto.Delivery; conglomerationOrder = db.ConglomerationOrder.Add(conglomerationOrder).Entity; db.SaveChanges(); return(conglomerationOrder); }
/// <summary> /// 创建订单 /// </summary> /// <returns></returns> public ConglomerationOrder Create(ShopDbContext db, ShopConglomerationOrderDto shopConglomerationOrderDto) { if (shopConglomerationOrderDto.Type.Equals(ConsignmentType.快递)) { var memberAddress = db.Query <MemberAddress>() .FirstOrDefault(m => !m.IsDel && m.Id.Equals(shopConglomerationOrderDto.MemberAddressId)); if (memberAddress == null) { throw new Exception("请先设置配送地址"); } } var conglomerationActivity = db.ConglomerationActivity.Find(shopConglomerationOrderDto.ConglomerationSetUp.ConglomerationActivityId); //活动结束时间校验 if (conglomerationActivity.ActivityEndTime <= DateTime.Now) { throw new Exception("活动已经结束了"); } DateTime dateBeginTime = new DateTime(DateTime.Now.Year, conglomerationActivity.DeliveryTakeTheirBeginTimeMD.Month, conglomerationActivity.DeliveryTakeTheirBeginTimeMD.Day, conglomerationActivity.DeliveryTakeTheirBeginTimeHM.Hour, conglomerationActivity.DeliveryTakeTheirBeginTimeHM.Minute, conglomerationActivity.DeliveryTakeTheirBeginTimeHM.Second); DateTime dateEndTime = new DateTime(DateTime.Now.Year, conglomerationActivity.DeliveryTakeTheirEndTimeMD.Month, conglomerationActivity.DeliveryTakeTheirEndTimeMD.Day, conglomerationActivity.DeliveryTakeTheirEndTimeHM.Hour, conglomerationActivity.DeliveryTakeTheirEndTimeHM.Minute, conglomerationActivity.DeliveryTakeTheirEndTimeHM.Second); ////自提时间校验 //if (shopConglomerationOrderDto.Type.Equals(ConsignmentType.自提)) //{ // if (!(dateBeginTime <= shopConglomerationOrderDto.Delivery && shopConglomerationOrderDto.Delivery <= dateEndTime)) // { // throw new Exception("时间超出范围"); // } //} var conglomerationOrder = InitOrderData(db, shopConglomerationOrderDto); conglomerationOrder = TakeOutSetting(db, conglomerationOrder, shopConglomerationOrderDto, conglomerationActivity); conglomerationOrder = SelfSetting(db, conglomerationOrder); conglomerationOrder = SetAmount(db, conglomerationOrder); db.SaveChanges(); return(conglomerationOrder); }
/// <summary> /// 快递配置(配送) /// </summary> /// <param name="db"></param> /// <param name="conglomerationOrder"></param> /// <returns></returns> private ConglomerationOrder TakeOutSetting(ShopDbContext db, ConglomerationOrder conglomerationOrder, ShopConglomerationOrderDto shopConglomerationOrderDto, ConglomerationActivity conglomerationActivity) { if (conglomerationOrder.Type.Equals(ConsignmentType.快递)) { ConglomerationExpress conglomerationExpress = new ConglomerationExpress(); conglomerationExpress.CreateTime = DateTime.Now; conglomerationExpress.Delivery = conglomerationOrder.Delivery.Value; conglomerationExpress.ExpressSingle = "未发货"; conglomerationExpress.MemberAddressId = shopConglomerationOrderDto.MemberAddressId; conglomerationExpress.ShopConglomerationOrderId = conglomerationOrder.Id; var memberAddress = db.Query <MemberAddress>() .FirstOrDefault(m => !m.IsDel && m.Id.Equals(conglomerationExpress.MemberAddressId)); if (memberAddress == null) { throw new Exception("请先设置配送地址"); } conglomerationExpress.Address = $"{ memberAddress.Province}{ memberAddress.City}{ memberAddress.Area}{ memberAddress.Detail}"; conglomerationExpress.Phone = memberAddress.Phone; conglomerationExpress.Name = memberAddress.Name; conglomerationExpress.Sex = memberAddress.Sex; conglomerationExpress.ActivityDeliveryFee = conglomerationActivity.ActivityDeliveryFee; conglomerationExpress = db.ConglomerationExpress.Add(conglomerationExpress).Entity; db.SaveChanges(); conglomerationOrder.ConglomerationExpressId = conglomerationExpress.Id; } return(conglomerationOrder); }
public APIResult Participation([FromBody] ParticipationModel input) { var conglomerationSetUp = db.ConglomerationSetUp.Find(input.ConglomerationSetUpId); if (conglomerationSetUp == null || conglomerationSetUp.IsDel) { return(Error("记录不存在")); } if (conglomerationSetUp.MemberId.Equals(GetMemberId())) { return(Error("不能参加自己的拼团")); } var conglomerationActivity = db.ConglomerationActivity.Find(conglomerationSetUp.ConglomerationActivityId); if (conglomerationActivity.ActivityEndTime <= DateTime.Now) { return(Error("活动已经结束")); } //开始执行逻辑 if (conglomerationSetUp.EndTime <= DateTime.Now || conglomerationSetUp.CurrentMemberNumber.Equals(conglomerationSetUp.MemberNumber) || conglomerationSetUp.Status.Equals(ConglomerationSetUpStatus.已经成团)) { return(Error("该拼团已经结束")); } var conglomerationParticipations = db.ConglomerationParticipation.Where(m => !m.IsDel && m.ConglomerationSetUpId.Equals(input.ConglomerationSetUpId)); if (conglomerationParticipations.Count() >= conglomerationSetUp.MemberNumber) { return(Error("该拼团已经结束")); } //获取请求集合 var list = ShopConglomerationActivityOptions.GetSetupIdAndMemberId(conglomerationSetUp.Id, _logger); if ((conglomerationSetUp.MemberNumber - conglomerationSetUp.CurrentMemberNumber) <= list.Count()) { //判断是否还可以加入集合,如果不可以则提示稍后重试 return(Error("请稍后再试")); } //否则加入集合 ShopConglomerationActivityOptions.AddList(list, new ShopConglomerationActivityOptions.RequestModel() { CreateTime = DateTime.Now, MmeberId = GetMemberId() }); _logger.LogInformation($"==============================添加到请求集合用户ID{GetMemberId()}==============="); var conglomerationActivityType = db.ConglomerationActivityType.Find(conglomerationSetUp.ConglomerationActivityTypeId); //生成订单 var memberId = GetMemberId(); var memberAddress = db.Query <MemberAddress>().FirstOrDefault(m => m.Id.Equals(input.MemberAddressId)); if (memberAddress == null) { memberAddress = db.Query <MemberAddress>().FirstOrDefault(m => m.IsUsed); } ShopConglomerationOrderDto shopConglomerationOrderDto = new ShopConglomerationOrderDto() { AddIp = GetIp(), ConglomerationSetUpId = conglomerationSetUp.Id, ConglomerationSetUp = conglomerationSetUp, MemberAddressId = input.MemberAddressId, //MemberId = 70, MemberId = memberId, ShopId = input.ShopId, Type = input.Type, Name = memberAddress.Name, Phone = memberAddress.Phone, Delivery = input.Delivery, FormId = input.FormId }; var order = _shopConglomerationOrderServer.Create(db, shopConglomerationOrderDto); return(Success(new { ConglomerationOrderId = order.Id })); }