Пример #1
0
        public void HandleEvent(OrderShipedEventData eventData)
        {
            AsyncHelper.RunSync(async() =>
            {
                string openid = WechatUserManager.GetOpenid(new UserIdentifier(eventData.Order.TenantId, eventData.Order.UserId));

                if (String.IsNullOrEmpty(openid))
                {
                    return;
                }
                OrderShipedTemplateMessageData data = new OrderShipedTemplateMessageData()
                {
                    first    = new TemplateDataItem(eventData.Order.Title),
                    keyword1 = new TemplateDataItem(eventData.Order.Number),
                    keyword4 = new TemplateDataItem(eventData.Order.CreationTime.ToString()),
                    remark   = new TemplateDataItem(L("ThankYouForYourPatronage"))
                };

                if (eventData.ExpressInfo != null)
                {
                    ExpressCompany expressCompany = ExpressCompanyRepository.Get(eventData.ExpressInfo.ExpressCompanyId);
                    data.keyword2 = new TemplateDataItem(expressCompany.Name);
                    data.keyword3 = new TemplateDataItem(eventData.ExpressInfo.TrackingNumber);
                }
                else
                {
                    data.keyword2 = new TemplateDataItem(L("Null"));
                    data.keyword3 = new TemplateDataItem(L("Null"));
                }
                await TemplateMessageManager.SendTemplateMessageOfOrderShipedAsync(eventData.Order.TenantId, openid, OrderHelper.GetOrderDetailUrl(eventData.Order.Id), data);
            });
        }
Пример #2
0
        public async Task <WalletRecord> IncomeOfOrderRebate(UserIdentifier userIdentifier, decimal money, string remark, Order order)
        {
            WalletRecord walletRecord = BuildWalletRecord(WalletRecordType.Recharge, userIdentifier.UserId, money, remark);

            WalletRecordRepository.Insert(walletRecord);
            Wallet wallet = GetWalletOfUser(userIdentifier);

            wallet.Money += money;
            WalletRepository.Update(wallet);
            CurrentUnitOfWork.SaveChanges();

            string openid = WechatUserManager.GetOpenid(userIdentifier);

            if (!string.IsNullOrEmpty(openid))
            {
                OrderRebateTemplateMessageData data = new OrderRebateTemplateMessageData(
                    new TemplateDataItem(remark),
                    new TemplateDataItem(order.Number),
                    new TemplateDataItem(order.PayMoney.ToString()),
                    new TemplateDataItem(order.PaymentDatetime.ToString()),
                    new TemplateDataItem(money.ToString()),
                    new TemplateDataItem(L("ThankYouForYourPatronage"))
                    );
                await TemplateMessageManager.SendTemplateMessageOfOrderRebateAsync(order.TenantId, openid, null, data);
            }
            return(walletRecord);
        }
Пример #3
0
        public void HandleEvent(OrderCreatedEventData eventData)
        {
            AsyncHelper.RunSync(async() =>
            {
                string openid = WechatUserManager.GetOpenid(new UserIdentifier(eventData.Order.TenantId, eventData.Order.UserId));

                if (!string.IsNullOrEmpty(openid))
                {
                    OrderCreatedTemplateMessageData data = new OrderCreatedTemplateMessageData(
                        new TemplateDataItem(eventData.Order.Title),
                        new TemplateDataItem(eventData.Order.Number),
                        new TemplateDataItem(eventData.ProductCount.ToString()),
                        new TemplateDataItem(eventData.Order.Money.ToString()),
                        new TemplateDataItem(L("ThankYouForYourPatronage"))
                        );
                    await TemplateMessageManager.SendTemplateMessageOfOrderCreatedAsync(eventData.Order.TenantId, openid, OrderHelper.GetOrderDetailUrl(eventData.Order.Id), data);
                }
            });
        }
Пример #4
0
        public WalletRecord WithdrawNotify(WalletRecord walletRecord, bool success, string failReason = null)
        {
            using (CurrentUnitOfWork.SetTenantId(walletRecord.TenantId))
            {
                string openid = WechatUserManager.GetOpenid(walletRecord.GetUserIdentifier());
                User   user   = walletRecord.User;

                if (user == null)
                {
                    user = UserRepository.Get(walletRecord.UserId);
                }

                if (success)
                {
                    walletRecord.FetchStatus = FetchStatus.Success;
                    walletRecord.FailReason  = "";
                    WalletRecordRepository.Update(walletRecord);
                    CurrentUnitOfWork.SaveChanges();

                    if (!string.IsNullOrEmpty(openid))
                    {
                        Task.Run(async() =>
                        {
                            WalletWithdrawTemplateMessageData data = new WalletWithdrawTemplateMessageData(
                                new TemplateDataItem(L("WithdrawSuccessfully")),
                                new TemplateDataItem(user.NickName),
                                new TemplateDataItem((-walletRecord.Money).ToString()),
                                new TemplateDataItem(L("ThankYouForYourPatronage"))
                                );
                            await TemplateMessageManager.SendTemplateMessageOfWalletWithdrawAsync(walletRecord.TenantId, openid, null, data);
                        });
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(failReason))
                    {
                        failReason = L("UnKnowFail");
                    }
                    walletRecord.FetchStatus = FetchStatus.Fail;
                    walletRecord.FailReason  = failReason;
                    WalletRecordRepository.Update(walletRecord);
                    CurrentUnitOfWork.SaveChanges();

                    if (!string.IsNullOrEmpty(openid))
                    {
                        Task.Run(async() =>
                        {
                            WalletWithdrawTemplateMessageData data = new WalletWithdrawTemplateMessageData(
                                new TemplateDataItem(L("WithdrawFailed") + ":" + failReason),
                                new TemplateDataItem(user.NickName),
                                new TemplateDataItem((-walletRecord.Money).ToString()),
                                new TemplateDataItem(L("ThankYouForYourPatronage"))
                                );
                            await TemplateMessageManager.SendTemplateMessageOfWalletWithdrawAsync(walletRecord.TenantId, openid, null, data);
                        });
                    }
                }
                return(walletRecord);
            }
        }
Пример #5
0
        public void Setup()
        {
            var services = ServiceProviderInitializer.Init();

            manager = services.GetRequiredService <TemplateMessageManager>();
        }