Пример #1
0
        public static void SetFinish(this MemberTradeForRechange rechange, PrintDbContext printDbContext, ShopDbContext shopDb, DbContext db, WechatTemplateSendOptions options, ThirdConfig toptions, ILogger _logger)
        {
            if (rechange.ShopOrderId != 0)
            {
                if (rechange.OrderType == OrderType.充值订单)
                {
                    SetShopMemberRechangeFinish(rechange, shopDb);
                }
                else
                {
                    SetShopOrderFinish(printDbContext, shopDb, rechange, options, toptions, _logger);
                }
            }
            if (rechange.ConglomerationOrderId != 0)
            {
                _logger.LogInformation("进入回调,拼团订单");

                try
                {
                    SetConglomerationOrderFinish(printDbContext, shopDb, rechange, options, _logger);
                }
                catch (Exception e)
                {
                    _logger.LogInformation($"回调错误,错误信息:{ e}");

                    throw;
                }
            }
        }
Пример #2
0
        public SwiftpassPayController(ICommunityService communityService
                                      //, IOptions<SwiftpassPayOptions> options
                                      , FinanceDbContext db
                                      , IOptions <ShopConglomerationOrderOptions> shopConglomerationOrderServer
                                      , PayProxyFactory proxyFactory
                                      , WechatCoreDbContext wechatCoreDb
                                      , PrintDbContext printDbContext
                                      , ShopDbContext shopdb
                                      , MemberDbContext memberDbContext
                                      , ILoggerFactory loggerFactory
                                      , IOptions <WechatTemplateSendOptions> woptions
                                      , IOptions <ThirdConfig> toptions


                                      , IHostingEnvironment hostingEnvironment)
        {
            this.hostingEnvironment = hostingEnvironment;
            this.woptions           = woptions.Value;
            //this.options = options.Value;
            // this.db = ZRui.Web.BLL.DbContextFactory.FinanceDbContext;
            this.db               = db;
            this.shopdb           = shopdb;
            this.printDbContext   = printDbContext;
            this.wechatCoreDb     = wechatCoreDb;
            this.proxyFactory     = proxyFactory;
            this._memberDbContext = memberDbContext;

            _shopConglomerationOrderServer = shopConglomerationOrderServer.Value;
            _logger          = loggerFactory.CreateLogger <SwiftpassPayController>();
            this.thirdConfig = toptions.Value;
        }
Пример #3
0
        /// <summary>
        /// 完成订单
        /// </summary>
        /// <param name="printDbContext"></param>
        /// <param name="db"></param>
        /// <param name="options"></param>
        /// <param name="shopOrderid"></param>
        /// <param name="_logger"></param>
        static void OrderFinish(PrintDbContext printDbContext, ShopDbContext db,
                                WechatTemplateSendOptions options, ThirdConfig toptions, ShopOrder shopOrder, ILogger _logger)
        {
            shopOrder.PayTime = DateTime.Now;
            shopOrder.Status  = ShopOrderStatus.已支付;
            db.SaveChanges();

            //获取订单中商品的数量
            var commodityIdAndCounts = db.Query <ShopOrderItem>()
                                       .Where(m => m.ShopOrderId == shopOrder.Id)
                                       .Where(m => !m.IsDel)
                                       .Select(m => new
            {
                m.CommodityStock.Sku.CommodityId,
                m.Count
            })
                                       .ToList()
                                       .GroupBy(m => m.CommodityId)
                                       .ToDictionary(m => m.Key, m => m.Select(x => x.Count).Sum());

            //更新商品的销售量
            //注意,这里如果有一个品牌,多个店铺的情况,会出现销售额共享的情况
            var commodityIds = commodityIdAndCounts.Select(m => m.Key).ToList();
            var commoditys   = db.Query <ShopBrandCommodity>()
                               .Where(m => commodityIds.Contains(m.Id))
                               .ToList();

            foreach (var item in commoditys)
            {
                item.SalesForMonth += commodityIdAndCounts[item.Id];
            }
        }
Пример #4
0
        /// <summary>
        /// 订单下单后进行的操作
        /// </summary>
        static async void AfterOrderPlacing(PrintDbContext printDbContext, ShopDbContext db, ThirdConfig thirdConfig, ShopOrder shopOrder, string shopName, WechatTemplateSendOptions options, ILogger _logger)
        {
            //是否外卖单
            if (shopOrder.IsTakeOut)
            {
                //var takeOutInfo = db.Query<ShopTakeOutInfo>()
                //.Where(m => !m.IsDel)
                //.Where(m => m.ShopId == shopOrder.ShopId)
                //.FirstOrDefault();
                ////自动接单
                //if (takeOutInfo!=null && takeOutInfo.AutoTakeOrdre)
                //{
                //    shopOrder.Status = ShopOrderStatus.已确认;
                //    PrintOrder(printDbContext, db, shopOrder, shopName, _logger);
                //}
                PrintOrder(printDbContext, db, shopOrder, shopName, _logger);
            }
            else
            {
                PrintOrder(printDbContext, db, shopOrder, shopName, _logger);
            }


            if (!shopOrder.IsSend)
            {
                var receiver = db.Query <ShopOrderReceiver>()
                               .Where(m => !m.IsDel)
                               .Where(m => m.IsUsed)
                               .Where(m => m.ShopId == shopOrder.ShopId)
                               .Select(m => m.ReceiverOpenId)
                               .Distinct()
                               .ToList();
                receiver.ForEach(o =>
                                 shopOrder.SendTemplateMessage(db, options, o, _logger));
            }
            shopOrder.IsSend = true;

            if (!shopOrder.ShopPartId.HasValue && !shopOrder.ShopOrderSelfHelpId.HasValue)
            {
                var shoptakeoutinfo      = db.ShopTakeOutInfo.FirstOrDefault(r => r.ShopId == shopOrder.ShopId && !r.IsDel);
                var shopordertakeoutinfo = db.ShopOrderTakeouts.FirstOrDefault(r => r.ShopOrderId == shopOrder.Id && !r.IsDel);
                if (shoptakeoutinfo != null && shoptakeoutinfo.TakeDistributionType == TakeDistributionType.达达配送 && shopordertakeoutinfo.TakeWay == TakeWay.送货上门)
                {
                    //  await ThirdOrderFinish(db, thirdConfig, shopOrder, _logger, ExSource.支付成功);

                    ThirdAfterOrder(db, thirdConfig, shopOrder, _logger);
                }
            }



            db.SaveChanges();
            _logger.LogInformation("=================其他订单回调完成===============");
        }
Пример #5
0
        /// <summary>
        /// 直接设置订单完成
        /// </summary>
        /// <param name="shopOrder"></param>
        /// <param name="printDbContext"></param>
        /// <param name="db"></param>
        /// <param name="options"></param>
        /// <param name="_logger"></param>
        public static void SetShopOrderFinish(this ShopOrder shopOrder, PrintDbContext printDbContext,
                                              ShopDbContext db, WechatTemplateSendOptions options, ThirdConfig toptions, ILogger _logger)
        {
            OrderFinish(printDbContext, db, options, toptions, shopOrder, _logger);
            var shopName = db.Query <Shop>()
                           .Where(m => m.Id == shopOrder.ShopId)
                           .Select(m => m.Name)
                           .FirstOrDefault();

            AfterOrderPlacing(printDbContext, db, toptions, shopOrder, shopName, options, _logger);
        }
Пример #6
0
 public ShopOrderSetAPIController(ICommunityService communityService
                                  , IOptions <MemberAPIOptions> options
                                  , ShopDbContext db
                                  , PrintDbContext printDbContext
                                  , ILoggerFactory loggerFactory
                                  , IOptions <WechatTemplateSendOptions> wechatTemplateSendOptions
                                  , MemberDbContext memberDb
                                  , IMapper mapper
                                  , IHostingEnvironment hostingEnvironment)
     : base(options, db, memberDb)
 {
     this.db                        = db;
     this.printDbContext            = printDbContext;
     this.wechatTemplateSendOptions = wechatTemplateSendOptions.Value;
     this.hostingEnvironment        = hostingEnvironment;
     this._mapper                   = mapper;
     _logger                        = loggerFactory.CreateLogger <ShopOrderSetAPIController>();
 }
Пример #7
0
        static void SetShopOrderFinish(PrintDbContext printDbContext, ShopDbContext db,
                                       MemberTradeForRechange memberTradeForRechange, WechatTemplateSendOptions options, ThirdConfig toptions, ILogger _logger)
        {
            if (!memberTradeForRechange.ShopOrderId.HasValue)
            {
                throw new Exception("memberTradeForRechange.ShopOrderId is null");
            }
            var shopOrder = db.ShopOrders.FirstOrDefault(p => p.Id == memberTradeForRechange.ShopOrderId.Value);

            shopOrder.PayWay = "微信支付";
            memberTradeForRechange.Status = MemberTradeForRechangeStatus.成功;
            db.SaveChanges();
            OrderFinish(printDbContext, db, options, toptions, shopOrder, _logger);
            var shopName = db.Query <Shop>()
                           .Where(m => m.Id == shopOrder.ShopId)
                           .Select(m => m.Name)
                           .FirstOrDefault();

            AfterOrderPlacing(printDbContext, db, toptions, shopOrder, shopName, options, _logger);
        }
Пример #8
0
 public WechatPayController(ICommunityService communityService
                            , IOptions <WechatTemplateSendOptions> options
                            , IOptions <ThirdConfig> poptions
                            , PayProxyFactory proxyFactory
                            , FinanceDbContext db
                            , WechatCoreDbContext wechatCoreDb
                            , PrintDbContext printDbContext
                            , ShopDbContext shopDb
                            , ILoggerFactory loggerFactory
                            , IHostingEnvironment hostingEnvironment)
 {
     this.hostingEnvironment = hostingEnvironment;
     this.options            = options.Value;
     this.db             = db;
     this.shopDb         = shopDb;
     this.printDbContext = printDbContext;
     this.wechatCoreDb   = wechatCoreDb;
     this.proxyFactory   = proxyFactory;
     this.thirdConfig    = poptions.Value;
     _logger             = loggerFactory.CreateLogger <WechatPayController>();
 }
Пример #9
0
        public static void SetFinish(this MemberTradeForRechange rechange, PrintDbContext printDbContext, ThirdConfig toptions, ShopDbContext shopDb, DbContext db, WechatTemplateSendOptions options, PayResponseBaseHandler result, ILogger _logger)
        {
            if (result.TradeState != "NOTPAY")
            {
                if (rechange.Status == MemberTradeForRechangeStatus.未完成)
                {
                    if (rechange.TotalFee != result.TotalFee)
                    {
                        throw new Exception("指定的金额不对应");
                    }
                    rechange.OutBank          = result.Xml;
                    rechange.MechanismTradeNo = result.TransactionId;
                    switch (result.TradeState)
                    {
                    case "SUCCESS":
                        db.SetMemberTradeForRechangeSuccess(rechange);
                        if (rechange.OrderType == OrderType.充值订单)
                        {
                            SetShopMemberRechangeFinish(rechange, shopDb);
                        }
                        else
                        {
                            SetShopOrderFinish(printDbContext, shopDb, rechange, options, toptions, _logger);
                        }
                        break;

                    case "CLOSED":
                        rechange.Status = MemberTradeForRechangeStatus.取消;
                        break;

                    default:
                        db.SetMemberTradeForRechangeFail(rechange, result.TradeState);
                        break;
                    }
                }
            }
        }
Пример #10
0
        /// <summary>
        /// 设置拼团订单支付完成
        /// </summary>
        /// <param name="printDbContext"></param>
        /// <param name="shopDb"></param>
        /// <param name="rechange"></param>
        /// <param name="options"></param>
        /// <param name="logger"></param>
        static void SetConglomerationOrderFinish(PrintDbContext printDbContext, ShopDbContext db, MemberTradeForRechange memberTradeForRechange, WechatTemplateSendOptions options, ILogger _logger)
        {
            var model = db.ConglomerationOrder.Find(memberTradeForRechange.ConglomerationOrderId);

            if (model.PayTime.HasValue)
            {
                return;
            }
            model.PayTime = DateTime.Now;
            model.Status  = ShopOrderStatus.已支付;
            model.PayWay  = "微信支付";
            db.SaveChanges();
            model.Payment = (int)memberTradeForRechange.TotalFee;
            var shopName = db.Query <Shop>()
                           .Where(m => m.Id == model.ShopId)
                           .Select(m => m.Name)
                           .FirstOrDefault();

            AfterConglomerationOrderPlacing(printDbContext, db, model, shopName, options, _logger);

            memberTradeForRechange.Status = MemberTradeForRechangeStatus.成功;

            db.SaveChanges();
        }
Пример #11
0
        public static void PrintOrder(this PrintDbContext printDbContext, ShopDbContext db, ShopOrder shopOrder, string shopname)
        {
            try
            {
                if (shopOrder == null)
                {
                    throw new Exception("订单错误");
                }
                List <ShopOrderItem> items = db.Query <ShopOrderItem>()
                                             .Where(m => !m.IsDel)
                                             .Where(m => m.ShopOrderId == shopOrder.Id)
                                             .ToList();
                if (items.Count == 0)
                {
                    return;
                }
                List <OrderInfo> orderInfo = items.Select(s => new OrderInfo()
                {
                    Name  = $"{s.CommodityName}({s.SkuSummary})",
                    Price = Math.Round(s.SalePrice / 100d, 2),
                    Count = s.Count
                }).ToList();
                string stringorderlist = JsonConvert.SerializeObject(orderInfo);

                List <Printer> printers = printDbContext.Query <Printer>()
                                          .Where(s => !s.IsDel)
                                          .Where(s => s.ShopID == shopOrder.ShopId && s.IsEnable).ToList();
                if (printers.Count == 0)
                {
                    return;
                }

                PrintParameter parameter = GetPrintParameter(db, shopOrder);
                parameter.ShopName = shopname;
                parameter.List     = orderInfo;

                foreach (var item in printers)
                {
                    //StringBuilder postData = new StringBuilder("sn=" + item.SN);
                    parameter.SN    = item.SN;
                    parameter.Times = item.Times + "";
                    PrintModel model = printDbContext.Query <PrintModel>().FirstOrDefault(s => s.ID == item.ModelID);
                    if (model == null)
                    {
                        model = printDbContext.Set <PrintModel>().Find(2);
                    }
                    parameter.ModelContent = model.ModelContent;
                    PrinterBase @base = PrinterFactory.Create(item.PrinterType);//)
                    string      temp  = @base.PrinterRequest(parameter, item);
                    #region 数据库操作
                    PrintRecord record = new PrintRecord();
                    //处理接口返回数据
                    Dictionary <string, object> dic = JsonConvert.DeserializeObject <Dictionary <string, object> >(temp);
                    //实体赋值
                    record.SN         = item.SN;
                    record.OrderID    = @base.GetOrderID(temp);// dic.ContainsKey("data") && dic["msg"].Equals("ok") ? dic["data"].ToString() : "未能成功打印";
                    record.Title      = parameter.Title;
                    record.OrderList  = stringorderlist;
                    record.TotalMoney = (float)parameter.TotalMoney;
                    record.Address    = parameter.Address;
                    record.OrderName  = parameter.OrderName;
                    record.Mobile     = parameter.Mobile;
                    record.OrderTime  = Convert.ToDateTime(parameter.OrderTime);
                    record.QRAddress  = parameter.QRAddress;
                    record.Remark     = shopOrder.Remark;
                    printDbContext.AddTo(record);
                    #endregion
                }
                shopOrder.IsPrint = true;
            }
            catch (Exception e)
            {
                //_logger.LogError("打印机错误:{0}", e.Message);
            }
        }
Пример #12
0
        public static void PrintOrder(PrintDbContext printDbContext, ShopDbContext db, ShopOrder shopOrder, string shopname, ILogger _logger)
        {
            _logger.LogInformation($"Remark{shopOrder.Remark}");
            if (shopOrder.IsPrint)
            {
                return;
            }
            try
            {
                List <ShopOrderItem> items = db.Query <ShopOrderItem>()
                                             .Where(m => !m.IsDel)
                                             .Where(m => m.ShopOrderId == shopOrder.Id)
                                             .ToList();
                if (items.Count == 0)
                {
                    return;
                }
                List <OrderInfo> orderInfo = items.Select(s => new OrderInfo()
                {
                    Name        = $"{s.CommodityName}({s.SkuSummary})",
                    Price       = Math.Round(s.SalePrice / 100d, 2),
                    Count       = s.Count,
                    ComboConten = GetPrintComboContenParameter(db, s, _logger)
                }).ToList();
                string stringorderlist = JsonConvert.SerializeObject(orderInfo);

                List <Printer.Data.Printer> printers = printDbContext.Query <Printer.Data.Printer>()
                                                       .Where(s => !s.IsDel)
                                                       .Where(s => s.ShopID == shopOrder.ShopId && s.IsEnable).ToList();
                if (printers.Count == 0)
                {
                    return;
                }

                PrintParameter parameter = GetPrintParameter(db, shopOrder);
                parameter.ShopName  = shopname;
                parameter.List      = orderInfo;
                parameter.IsTakeOut = shopOrder.IsTakeOut;
                //获取优惠
                if (shopOrder.MoneyOffRuleId != null && shopOrder.MoneyOffRuleId != 0)
                {
                    var shopOrderMoneyOffRules = db.ShopOrderMoneyOffRules.Find(shopOrder.MoneyOffRuleId);
                    parameter.ShopOrderMoneyOffRule = new ShopOrderMoneyOffRuleModel()
                    {
                        Discount     = Math.Round(shopOrderMoneyOffRules.Discount / 100d, 2),
                        FullAmount   = Math.Round(shopOrderMoneyOffRules.FullAmount / 100d, 2),
                        MoneyOffId   = shopOrderMoneyOffRules.MoneyOffId,
                        MoneyOffName = db.ShopOrderMoneyOffs.Find(shopOrderMoneyOffRules.MoneyOffId).Name
                    };
                }
                //获取其他费用
                if (shopOrder.OtherFeeId != null && shopOrder.OtherFeeId != 0)
                {
                    var shopOrderMoneyOffs = db.ShopOrderOtherFees.Find(shopOrder.OtherFeeId);
                    parameter.ShopOrderOtherFee = new Dictionary <string, double>()
                    {
                        { "餐盒费", Math.Round(shopOrderMoneyOffs.BoxFee / 100d, 2) },
                        { "配送费", Math.Round(shopOrderMoneyOffs.DeliveryFee / 100d, 2) }
                    };
                    if (TakeWay.自提.ToString().Equals(parameter.TakeWay))
                    {
                        parameter.ShopOrderOtherFee.Remove("配送费");
                    }
                }
                if (shopOrder.ShopOrderSelfHelpId.HasValue)  //自助点餐
                {
                    var selfHelp = db.GetSingle <ShopOrderSelfHelp>(shopOrder.ShopOrderSelfHelpId.Value);
                    if (selfHelp != null)
                    {
                        parameter.SelfHelpPrintParameter = new SelfHelpPrintParameter()
                        {
                            SelfHelpNumber = selfHelp.Number,
                            DingingWay     = selfHelp.IsTakeOut ? "外带" : "堂食"
                        };
                    }
                }


                foreach (var item in printers)
                {
                    //StringBuilder postData = new StringBuilder("sn=" + item.SN);
                    parameter.SN    = item.SN;
                    parameter.Times = item.Times + "";
                    PrintModel model = printDbContext.Query <PrintModel>().FirstOrDefault(s => s.ID == item.ModelID);
                    if (model == null)
                    {
                        model = printDbContext.Set <PrintModel>().Find(2);
                    }
                    parameter.ModelContent = model.ModelContent;
                    PrinterBase @base = PrinterFactory.Create(item.PrinterType);//)
                    string      temp  = @base.PrinterRequest(parameter, item);
                    #region 数据库操作
                    PrintRecord record = new PrintRecord();
                    //处理接口返回数据
                    Dictionary <string, object> dic = JsonConvert.DeserializeObject <Dictionary <string, object> >(temp);
                    //实体赋值
                    record.SN         = item.SN;
                    record.OrderID    = @base.GetOrderID(temp);// dic.ContainsKey("data") && dic["msg"].Equals("ok") ? dic["data"].ToString() : "未能成功打印";
                    record.Title      = parameter.Title;
                    record.OrderList  = stringorderlist;
                    record.TotalMoney = (float)parameter.TotalMoney;
                    record.Address    = parameter.Address;
                    record.OrderName  = parameter.OrderName;
                    record.Mobile     = parameter.Mobile;
                    record.OrderTime  = Convert.ToDateTime(parameter.OrderTime);
                    record.QRAddress  = parameter.QRAddress;
                    record.Remark     = shopOrder.Remark;
                    printDbContext.AddTo(record);
                    #endregion
                }
                shopOrder.IsPrint = true;
            }
            catch (Exception e)
            {
                _logger.LogError("打印机错误:{0}", e.Message);
            }
        }
Пример #13
0
        /// <summary>
        /// 拼团支付成功之后操作
        /// </summary>
        static void AfterConglomerationOrderPlacing(PrintDbContext printDbContext, ShopDbContext db, ConglomerationOrder conglomerationOrder, string shopName, WechatTemplateSendOptions options, ILogger _logger)
        {
            _logger.LogInformation("=================拼团订单回调开始===============");

            var isExist = db.ConglomerationParticipation.FirstOrDefault(m => !m.IsDel && m.ConglomerationSetUpId.Equals(conglomerationOrder.ConglomerationSetUpId) && m.ConglomerationOrderId.Equals(conglomerationOrder.Id));

            if (isExist != null)
            {
                return;
            }
            var conglomerationSetUp = db.ConglomerationSetUp.Find(conglomerationOrder.ConglomerationSetUpId);
            var member = db.Member.Find(conglomerationOrder.MemberId);

            //添加参团信息
            ConglomerationParticipation conglomerationParticipation = new ConglomerationParticipation();

            conglomerationParticipation.CreateTime            = DateTime.Now;
            conglomerationParticipation.AvatarUrl             = member.Avatar ?? "";
            conglomerationParticipation.NickName              = member.NickName ?? "";
            conglomerationParticipation.ConglomerationSetUpId = conglomerationOrder.ConglomerationSetUpId;
            conglomerationParticipation.Role     = conglomerationSetUp.MemberId.Equals(conglomerationOrder.MemberId) ? ParticipationRole.团长 : ParticipationRole.团员;
            conglomerationParticipation.MemberId = conglomerationOrder.MemberId;
            conglomerationParticipation.ConglomerationOrderId    = conglomerationOrder.Id;
            conglomerationParticipation.ConglomerationActivityId = conglomerationOrder.ConglomerationActivityId;
            db.ConglomerationParticipation.Add(conglomerationParticipation);
            //更新已发起拼团的队伍状态
            conglomerationSetUp.CurrentMemberNumber = conglomerationSetUp.CurrentMemberNumber + 1;
            conglomerationSetUp.Status = conglomerationSetUp.CurrentMemberNumber.Equals(conglomerationSetUp.MemberNumber) ? ConglomerationSetUpStatus.已经成团 : ConglomerationSetUpStatus.未成团;
            _logger.LogInformation($"当前拼团状态 conglomerationSetUp.Status:{conglomerationSetUp.Status}");
            conglomerationOrder.Status = ShopOrderStatus.待成团;
            if (conglomerationSetUp.Status.Equals(ConglomerationSetUpStatus.已经成团))
            {
                conglomerationSetUp.SuccessfulTime = DateTime.Now;
                _logger.LogInformation("=============================已经成团修改订单状态开始========================");
                _logger.LogInformation($"团IDconglomerationOrder.ConglomerationSetUpId {conglomerationOrder.ConglomerationSetUpId}");
                conglomerationOrder.Status = conglomerationOrder.Type == ConsignmentType.自提 ? ShopOrderStatus.待自提 : ShopOrderStatus.待配送;
                var order = db.ConglomerationOrder.Where(m => !m.IsDel && m.ConglomerationSetUpId.Equals(conglomerationOrder.ConglomerationSetUpId)).ToList();
                _logger.LogInformation($"需更改订单状态数量{order.Count()}");
                foreach (var item in order)
                {
                    if (item.Type == ConsignmentType.自提)
                    {
                        _logger.LogInformation($"订单Id:{item.Id} 更改为执行待自提");
                        if (item.Status == ShopOrderStatus.待成团)
                        {
                            item.Status = ShopOrderStatus.待自提;
                        }
                    }
                    else
                    {
                        if (item.Status == ShopOrderStatus.待成团)
                        {
                            _logger.LogInformation($"订单Id:{item.Id} 更改为执行待配送");
                            item.Status = ShopOrderStatus.待配送;
                        }
                    }
                }
                _logger.LogInformation("=============================已经成团修改订单状态结束========================");
            }

            //发送推送
            if (!conglomerationOrder.IsSend)
            {
                var receiver = db.Query <ShopOrderReceiver>()
                               .Where(m => !m.IsDel)
                               .Where(m => m.IsUsed)
                               .Where(m => m.ShopId == conglomerationOrder.ShopId)
                               .Select(m => m.ReceiverOpenId)
                               .Distinct()
                               .ToList();
                receiver.ForEach(o =>
                                 conglomerationOrder.SendTemplateMessage(options, o, _logger));
            }

            conglomerationOrder.IsSend = true;
            db.SaveChanges();
            _logger.LogInformation("=================拼团订单回调结束===============");
        }
Пример #14
0
        public void TestMethod1()
        {
            using (PrintDbContext printDb = TPrintDbFactory.MarkShopDb())
            {
                var parameter = new ZRui.Web.Core.Printer.PrintAPIArgsModel.AddPrinter()
                {
                    shopId      = 4,
                    sn          = "817513721",
                    skey        = "ew64m5j4",
                    printerType = PrinterType.FEIE
                };

                using (ShopDbContext shopDb = TShopDbContxtFactory.MarkShopDb())
                {
                    if (string.IsNullOrEmpty(parameter.sn))
                    {
                        Error("SnList(打印机#KEY)参数不能为空");
                    }
                    if (!parameter.shopId.HasValue)
                    {
                        Error("商铺ID不能为空");
                    }
                    if (!parameter.printerType.HasValue)
                    {
                        Error("打印机类型不能为空");
                    }
                    Shop shop = shopDb.GetSingle <Shop>(parameter.shopId.Value);
                    if (shop == null)
                    {
                        Error("商铺不存在");
                    }
                    //表示是否已经添加过
                    Data.Printer printer = printDb.Printer.FirstOrDefault(s => !s.IsDel && s.ShopID == parameter.shopId && s.SN == parameter.sn &&
                                                                          s.SKey == parameter.skey && s.IsSuccess);
                    bool IsExists = printer != null;
                    if (IsExists)
                    {
                        Error("设备已经添加过");
                    }
                    PrinterBase @base  = PrinterFactory.Create(parameter.printerType.Value);//)
                    string      result = @base.AddPrinter(new PrintParameter()
                    {
                        SnList = $"{parameter.sn}#{parameter.skey}#"
                    });
                    //添加之后保存到数据库中
                    Dictionary <string, object> tempdic = JsonConvert.DeserializeObject <Dictionary <string, object> >(result);
                    if (!tempdic.ContainsKey("data"))
                    {
                        Error("添加失败");
                    }

                    Data.Printer _printermodel = new Data.Printer();
                    #region 实体赋值
                    _printermodel.ShopID      = parameter.shopId.Value;
                    _printermodel.SN          = parameter.sn;
                    _printermodel.SKey        = parameter.skey;
                    _printermodel.AddTime     = DateTime.Now;
                    _printermodel.PrinterType = parameter.printerType.Value;
                    _printermodel.IsEnable    = true;
                    //_printermodel.Times = string.IsNullOrEmpty(parameter.Times) || int.TryParse(parameter.Times, out int t) ? 1 : t == 0 ? 1 : t;
                    Dictionary <string, object> datadic = JsonConvert.DeserializeObject <Dictionary <string, object> >(tempdic["data"].ToString());
                    JArray ok = datadic["ok"] as JArray;
                    JArray no = datadic["no"] as JArray;
                    //验证打印机是否在接口添加成功
                    //如果之前添加失败了, 将修改原来的数据,否则重新添加
                    #endregion

                    if (ok.Count > 0)
                    {
                    }
                    else
                    {
                        Error(no[0].Value <string>());
                    }
                }
            }

            void Error(string s)
            {
            };
        }
Пример #15
0
 public PrintAPIController(PrintDbContext printDb, ShopDbContext shopDb, MemberDbContext memberDb)
 {
     this.printDb  = printDb;
     this.shopDb   = shopDb;
     this.memberDb = memberDb;
 }
Пример #16
0
 public Printer(PrintDbContext printDb, ShopDbContext shopDb)
 {
     this.printDb = printDb;
     this.shopDb  = shopDb;
 }