Esempio n. 1
0
        public APIResult PreThirdAddOrder()
        {
            ThirdServer thirdServer      = new ThirdServer(shopDb, thirdConfig);
            var         model            = shopDb.ShopOrders.FirstOrDefault(r => r.Id == 2651);
            var         shopordertakeout = shopDb.ShopOrderTakeouts.FirstOrDefault(r => r.ShopOrderId == model.Id && !r.IsDel);
            var         tradeno          = DateTime.Now.Ticks + CommonUtil.CreateNoncestr(5);
            //处理达达配送
            var thirddshopaddmodel = new BLL.Servers.ThirdShopAddOrderModel()
            {
                ShopId    = 11,
                origin_id = tradeno, //
                                     //shop_no = "11047059",//测试
                shop_no          = "9896-126130",
                cargo_type       = -1,
                cargo_price      = 0.01,
                city_code        = "0769",
                is_prepay        = 0,
                origin_mark      = "HCHH",
                origin_mark_no   = tradeno,
                receiver_lng     = 113.76031219944932,
                receiver_lat     = 23.012808108215836,
                receiver_phone   = "13266274421",
                receiver_address = "第一国际百安中心A1006",
                receiver_name    = "t",
                callback         = "callback",
            };
            var result = thirdServer.PreThirdAddOrder(thirddshopaddmodel);

            return(Success(result));
        }
Esempio n. 2
0
        public async Task <APIResult> ThirdFormalCancel()
        {
            ThirdServer thirdServer = new ThirdServer(_db, thirdConfig);
            var         result      = await thirdServer.ThirdFormalCancel();

            return(Success(result));
        }
Esempio n. 3
0
        public async Task <APIResult> ThirdOrderQuery([FromBody] COrderInfoQueryModel model)
        {
            ThirdServer thirdServer = new ThirdServer(_db, thirdConfig);
            var         thirdorder  = await thirdServer.ThirdOrderQuery(model);

            return(Success(thirdServer));
        }
Esempio n. 4
0
        public APIResult TestOfx()
        {
            var OpenOfx            = BaiduMapUtil.GetBdToGd(113.76031219944932, 23.012808108215836);
            var thirddshopaddmodel = new ThirdShopAddOrderModel()
            {
                ShopId    = 11,
                origin_id = DateTime.Now.Ticks + CommonUtil.CreateNoncestr(5),//
                //shop_no = "11047059",//测试
                shop_no          = "9896-126130",
                cargo_type       = -1,
                cargo_price      = 10,
                city_code        = "0769",
                is_prepay        = 0,
                origin_mark      = "HCHH",
                origin_mark_no   = DateTime.Now.Ticks + CommonUtil.CreateNoncestr(5),
                receiver_lng     = 113.7538969583704,
                receiver_lat     = 23.00648851131533,
                receiver_phone   = "15812808736",
                receiver_address = "百安中心",
                receiver_name    = "万",
                callback         = thirdConfig.CallBackUrl,
            };
            var result = DbExtention.ThirdAmountFinish(shopDb, thirdConfig, new BLL.Third.CThirdShopRechargeQueryModel()
            {
                ShopId = 11, category = 1
            }).Result;
            var preresult = new ThirdServer(shopDb, thirdConfig).PreThirdAddOrder(thirddshopaddmodel);

            return(Success());
        }
Esempio n. 5
0
        public async Task <APIResult> CTestThird([FromBody] ThirdOrderAPIModels model)
        {
            var order = new ShopOrder()
            {
                AddTime     = DateTime.Now,
                MemberId    = 0,
                ShopId      = model.ShopId,
                Remark      = "达达配送",
                AddUser     = $"member",
                AddIp       = GetIp(),
                Flag        = Guid.NewGuid().ToString(),
                IsTakeOut   = true,
                Status      = ShopOrderStatus.待支付,
                OrderNumber = model.OrderId
                              //TakeDistributionType = args.TakeDistributionType
            };

            db.Add(order);

            //处理达达配送
            ThirdServer thirdServer     = new ThirdServer(db, thirdConfig);
            var         shoptakeoutinfo = db.ShopTakeOutInfo.FirstOrDefault(r => r.ShopId == model.ShopId && !r.IsDel);

            if (shoptakeoutinfo.TakeDistributionType == TakeDistributionType.达达配送)
            {
                var merchant = db.Merchant.FirstOrDefault(r => r.ShopId == model.ShopId);
                if (merchant == null)
                {
                    throw new Exception("商户未在达达开户");
                }
                var thirdshop = db.ThirdShop.FirstOrDefault(r => r.ShopId == model.ShopId);
                if (thirdshop == null)
                {
                    throw new Exception("商户门店不存在");
                }
                model.thirdShopAddOrderModel.origin_id = model.OrderId;
                var result = await thirdServer.ThirdAddOrder(model.thirdShopAddOrderModel, null);

                if (result.errorCode == 0 || result.status == "success")
                {
                    db.ThirdMoneyReport.Add(new Data.ThirdMoneyReport()
                    {
                        OrderNumber = model.OrderId,
                        Amount      = result.result.fee,
                        AddTime     = DateTime.Now,
                        ProduceType = Data.ProduceType.发起订单
                    });
                }
                db.SaveChanges();
                return(Success(result));
            }
            return(Error("error"));
        }
Esempio n. 6
0
        /// <summary>
        /// 处理达达预发单信息发起订单
        /// </summary>
        /// <param name="db"></param>
        /// <param name="thirdConfig"></param>
        /// <param name="model"></param>
        /// <param name="_logger"></param>
        public static void ThirdAfterOrder(ShopDbContext db, ThirdConfig thirdConfig, ShopOrder model, ILogger _logger)
        {
            try
            {
                var queryfee = db.ThirdApiData.FirstOrDefault(r => r.OrderId == model.OrderNumber && r.JsonData == "QueryFee");
                if (queryfee != null)
                {
                    var         queryfeedata = JsonConvert.DeserializeObject <CallbackAfterOrder>(queryfee.ResultData);
                    ThirdServer thirdServer  = new ThirdServer(db, thirdConfig);
                    var         result       = thirdServer.CallbackAfter(new AddAfterQuery()
                    {
                        deliveryNo = queryfeedata.result.deliveryNo
                        ,
                        Fee         = queryfeedata.result.fee,
                        OrderNumber = model.OrderNumber,
                        ShopId      = model.ShopId
                    });
                    if (result.errorCode == 0 || result.status == "success")
                    {
                        _logger.LogInformation($"===========回调达达发单成功 更改订单状态为待接单=============");

                        model.Status = ShopOrderStatus.待接单;
                    }
                    else
                    {
                        _logger.LogInformation($"===========回调达达发单失败 原因{result.msg}=============");
                    }
                }
                else
                {
                    _logger.LogInformation($"===========回调达达发单失败 未找到订单预发单信息=============");
                }
            }
            catch (Exception ex)
            {
                _logger.LogInformation($"=========== ThirdAfterOrder Exception {ex.Message}=============");
            }
        }
Esempio n. 7
0
        public async Task <APIResult> GetOrderInfo([FromBody] GetOrderInfoArgsModel args)
        {
            if (!args.shopOrderId.HasValue)
            {
                throw new Exception("shopOrderId不能为空");
            }
            ShopOrder shopOrder = db.Query <ShopOrder>()
                                  .Where(m => m.Id == args.shopOrderId.Value)
                                  .Include(m => m.ShopOrderOtherFee)
                                  .Include(m => m.ShopOrderSelfHelp)
                                  .Include(m => m.ShopOrderMoneyOffRule)
                                  .Include(m => m.ShopPart)
                                  .FirstOrDefault();

            if (shopOrder == null)
            {
                throw new Exception("订单记录不存在");
            }

            ShopOrderServer shopOrderServer = new ShopOrderServer(shopOrder);



            GetOrderInfoResultModel rtn = new GetOrderInfoResultModel()
            {
                Code        = shopOrder.OrderNumber,
                CreateTime  = shopOrder.AddTime.ToString("yyyy-MM-dd HH:mm:ss"),
                PayTime     = shopOrder.PayTime?.ToString("yyyy-MM-dd HH:mm:ss"),
                PayMent     = shopOrder.Payment / 100m,
                PayStatus   = shopOrderServer.GetPayStatus(),
                OrderStatus = shopOrder.Status.ToString(),
                Remark      = shopOrder.Remark ?? "",
                IsTakeOut   = shopOrder.IsTakeOut,
                PayWay      = shopOrder.PayWay
            };

            if (shopOrder.ShopOrderMoneyOffRule != null)
            {
                rtn.MoneyOffRule = new MoneyOffRule()
                {
                    Discount   = shopOrder.ShopOrderMoneyOffRule.Discount / 100m,
                    FullAmount = shopOrder.ShopOrderMoneyOffRule.FullAmount / 100m
                };
            }
            if (shopOrder.ShopOrderOtherFee != null)
            {
                rtn.OtherFee = new OtherFee()
                {
                    BoxFee      = shopOrder.ShopOrderOtherFee.BoxFee / 100m,
                    DeliveryFee = shopOrder.ShopOrderOtherFee.DeliveryFee / 100m
                };
            }
            if (shopOrder.ShopOrderSelfHelp != null)
            {
                rtn.SelfHelp = new SelfHelpInfo()
                {
                    SelfHelpCode = shopOrder.ShopOrderSelfHelp.Number,
                    TakeWay      = shopOrder.ShopOrderSelfHelp.IsTakeOut ? "外带" : "堂食"
                };
            }
            if (shopOrder.ShopPart != null)
            {
                rtn.ShopPartName = shopOrder.ShopPart.Title;
            }
            if (shopOrder.IsTakeOut)
            {
                var takeOut = db.Query <ShopOrderTakeout>()
                              .Where(m => m.ShopOrderId == shopOrder.Id)
                              .FirstOrDefault();
                if (takeOut != null)
                {
                    rtn.TakeOutInfo = new TakeOutInfo()
                    {
                        DiningWay  = takeOut.TakeWay.ToString(),
                        PickTile   = takeOut.TakeWay == TakeWay.自提 ? "预计自提时间" : "期望配送时间",
                        PickUpTime = takeOut.PickupTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        Address    = takeOut.Address,
                        Person     = takeOut.Name,
                        Phone      = takeOut.Phone
                    };
                }
            }

            var orderItems = db.Query <ShopOrderItem>()
                             .Where(m => !m.IsDel && m.ShopOrderId == args.shopOrderId.Value)
                             .Select(m => new CommodityInfo()
            {
                Cover      = m.CommodityStock.Sku.Commodity.Cover,
                Count      = m.Count,
                VipPrice   = (m.CommodityStock.Sku.Commodity.CategoryId != 0 && m.CommodityStock.Sku.Commodity.UseMemberPrice),
                PrimePrice = m.PrimePrice * m.Count / 100m,
                Name       = $"{m.CommodityName}({m.SkuSummary})",
                SalePrice  = m.SalePrice * m.Count / 100m
            }).ToList();

            rtn.Items = orderItems;
            if (shopOrder.takeDistributionType == TakeDistributionType.达达配送)
            {
                ThirdServer thirdServer      = new ThirdServer(db, thirdConfig);
                var         thirdqueryresult = await thirdServer.ThirdOrderQuery(new BLL.Third.COrderInfoQueryModel()
                {
                    ShopId = shopOrder.ShopId, order_id = shopOrder.OrderNumber
                });

                rtn.cThirdInfoQuery = thirdqueryresult;
            }
            return(Success(rtn));
        }
Esempio n. 8
0
        public static async Task <CThirdRechargeQueryResult> ThirdAmountFinish(ShopDbContext db, ThirdConfig thirdConfig, CThirdShopRechargeQueryModel model)
        {
            ThirdServer thirdServer = new ThirdServer(db, thirdConfig);

            return(await thirdServer.ThirdShopRechargeQuery(model));
        }
Esempio n. 9
0
        /// <summary>
        /// 达达配送
        /// </summary>
        /// <param name="db"></param>
        /// <param name="shopOrderid"></param>
        /// <param name="_logger"></param>
        public static async Task <ThirdAddOrderResult> ThirdOrderFinish(ShopDbContext db, ThirdConfig toptions, ShopOrder model, ILogger _logger, ExSource exSource)
        {
            var result = new ThirdAddOrderResult();

            try
            {
                _logger.LogInformation("===========开始OrderFinish=============");

                if (model == null)
                {
                    _logger.LogInformation($"============订单不存在============");
                }
                var shoptakeoutinfo = db.ShopTakeOutInfo.FirstOrDefault(r => r.ShopId == model.ShopId && !r.IsDel);
                if (shoptakeoutinfo != null && shoptakeoutinfo.TakeDistributionType == TakeDistributionType.达达配送 && model.IsTakeOut)
                {
                    _logger.LogInformation($"===========开始处理达达配送业务=============");
                    _logger.LogInformation($"===========订单信息:{JsonConvert.SerializeObject(model)}=============");
                    double fee = 0;
                    model.Status = exSource == ExSource.发起支付 ? ShopOrderStatus.待支付 : ShopOrderStatus.待接单;
                    ThirdServer thirdServer = new ThirdServer(db, toptions);
                    var         merchant    = db.Merchant.FirstOrDefault(r => r.ShopId == model.ShopId);
                    if (merchant == null)
                    {
                        _logger.LogInformation($"============商户ID{model.ShopId}未在达达开户============");
                    }
                    var thirdshop = db.ThirdShop.FirstOrDefault(r => r.ShopId == model.ShopId && r.Status == Data.ThirdShop.ShopStatus.门店激活);
                    if (thirdshop == null)
                    {
                        _logger.LogInformation($"============商户ID{model.ShopId}商户门店不存在============");
                    }
                    var shopordertakeout = db.ShopOrderTakeouts.FirstOrDefault(r => r.ShopOrderId == model.Id && !r.IsDel);
                    if (shoptakeoutinfo == null)
                    {
                        _logger.LogInformation($"============商户ID{model.ShopId}订单外卖信息不存在============");
                    }
                    //处理达达配送
                    var thirddshopaddmodel = new ThirdShopAddOrderModel()
                    {
                        ShopId    = model.ShopId,
                        origin_id = model.OrderNumber,//DateTime.Now.Ticks + CommonUtil.CreateNoncestr(5),//
                        //shop_no = "11047059",//测试
                        shop_no          = thirdshop.OriginShopId,
                        cargo_type       = -1,
                        cargo_price      = model.Amount,
                        city_code        = "0769",
                        is_prepay        = 0,
                        origin_mark      = "HCHH",
                        origin_mark_no   = model.OrderNumber,
                        receiver_lng     = shopordertakeout.Longitude.Value,
                        receiver_lat     = shopordertakeout.Latitude.Value,
                        receiver_phone   = shopordertakeout.Phone,
                        receiver_address = shopordertakeout.Address,
                        receiver_name    = shopordertakeout.Name,
                        callback         = toptions.CallBackUrl,
                    };
                    _logger.LogInformation($"============商户ID{model.ShopId}达达配送信息:{JsonConvert.SerializeObject(thirddshopaddmodel)}============");
                    result = await thirdServer.ThirdAddOrder(thirddshopaddmodel, model);

                    _logger.LogInformation($"============商户ID{model.ShopId}达达发单返回信息:{JsonConvert.SerializeObject(result)}============");
                    if (result.errorCode != 0 || result.status != "success")
                    {
                        _logger.LogInformation($"============商户ID{model.ShopId}达达发单失败。原因:{result.msg}============");
                        return(result);
                    }
                    // db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                _logger.LogInformation($"===========OrderFinish出现异常==============");
                _logger.LogInformation($"============{ex.Message} {ex.StackTrace}============");
            }
            return(result);
        }
Esempio n. 10
0
        private APIResult CheckThird(ShopOrder shopOrder, int ShopId)
        {
            try
            {
                if (shopOrder.ShopPartId.HasValue || shopOrder.ShopOrderSelfHelpId.HasValue)
                {
                    return(Success());
                }
                var shopordertakeoutinfo = shopDb.ShopOrderTakeouts.FirstOrDefault(r => r.ShopOrderId == shopOrder.Id && !r.IsDel);
                if (shopordertakeoutinfo.TakeWay != TakeWay.送货上门)
                {
                    return(Success());
                }

                var shoptakeoutinfo = shopDb.ShopTakeOutInfo.FirstOrDefault(r => r.ShopId == ShopId && !r.IsDel);
                if (shoptakeoutinfo.TakeDistributionType == TakeDistributionType.商家配送)
                {
                    return(Success());
                }

                var thirdshop = shopDb.ThirdShop.FirstOrDefault(r => r.ShopId == ShopId);
                if (thirdshop == null || thirdshop.Status != Data.ThirdShop.ShopStatus.门店激活)
                {
                    return(Error("配送门店状态不正常"));
                }
                var converResult       = BaiduMapUtil.GetBdToGd(shopordertakeoutinfo.Longitude.Value, shopordertakeoutinfo.Latitude.Value);
                var thirddshopaddmodel = new ThirdShopAddOrderModel()
                {
                    ShopId    = shopOrder.ShopId,
                    origin_id = shopOrder.OrderNumber, //DateTime.Now.Ticks + CommonUtil.CreateNoncestr(5),//
                                                       //shop_no = "11047059",//测试
                    shop_no          = thirdshop.OriginShopId,
                    cargo_type       = -1,
                    cargo_price      = shopOrder.Amount,
                    city_code        = "0769",
                    is_prepay        = 0,
                    origin_mark      = "HCHH",
                    origin_mark_no   = shopOrder.OrderNumber,
                    receiver_lng     = converResult.x,
                    receiver_lat     = converResult.y,
                    receiver_phone   = shopordertakeoutinfo.Phone,
                    receiver_address = shopordertakeoutinfo.Address,
                    receiver_name    = shopordertakeoutinfo.Name,
                    callback         = thirdConfig.CallBackUrl,
                };
                var result = DbExtention.ThirdAmountFinish(shopDb, thirdConfig, new BLL.Third.CThirdShopRechargeQueryModel()
                {
                    ShopId = shopOrder.ShopId, category = 1
                }).Result;
                var preresult = new ThirdServer(shopDb, thirdConfig).PreThirdAddOrder(thirddshopaddmodel);
                if (result.result.deliverBalance < preresult.result.fee)
                {
                    return(Error("商家配送帐号余额不足"));
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"出现错误:{ex.Message}{ex.StackTrace}");
            }


            return(Success());
        }