public CommunicationObject AddNotify(string xml)
        {
            try
            {
                CommunicationObject notifyInfo   = XmlAnalyzer.AnalyseXmlToCommunicationObject <CommunicationObject>(xml);
                NoticeEntity        noticeEntity = new NoticeEntity();
                noticeEntity.NoticeId      = notifyInfo.Id;
                noticeEntity.NoticeVersion = notifyInfo.Version;
                noticeEntity.MessengerId   = notifyInfo.MessengerId;
                noticeEntity.Timestamp     = notifyInfo.Timestamp;
                noticeEntity.TranType      = (int)notifyInfo.TransactionType;
                noticeEntity.Digest        = notifyInfo.Digest;
                noticeEntity.ResponseText  = xml;
                noticeEntity.NotifyTime    = DateTime.Now;
                noticeEntity.XmlHeader     = notifyInfo.XmlHeader;
                NoticeManager noticeManager = new NoticeManager(DbAccess);
                noticeManager.AddNotice(noticeEntity);

                return(notifyInfo);
            }
            catch (Exception ex)
            {
                string errMsg = "添加通知XML到数据库失败!" + xml;
                throw HandleException(LogCategory.Notice, errMsg, ex);
            }
        }
        public CommunicationObject HandleNotice(string response)
        {
            try
            {
                Dictionary <string, string> parameters = XmlAnalyzer.GetParameters(response);
                CommunicationObject         notice     = AddNotify(parameters["transMessage"]);
                TranType type = (TranType)Enum.Parse(typeof(TranType), parameters["transType"]);
                switch (type)
                {
                case TranType.Request101:       // 奖期通知请求
                    AddIssuseNotify(parameters["transMessage"]);
                    break;

                case TranType.Request108:       // 返奖通知请求
                    // 添加返奖通知
                    BonusNoticeInfo bonusNotice = AddBonusNotify(parameters["transMessage"]);
                    // 派奖
                    string gameName    = bonusNotice._Body._BonusInfo._Issue.GameName;
                    string issueNumber = bonusNotice._Body._BonusInfo._Issue.Number;
                    DistributeBonus(gameName, issueNumber);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("不支持的通知类型 - " + type);
                }
                return(notice);
            }
            catch (Exception ex)
            {
                string errMsg = "处理通知失败!" + response;
                throw HandleException(LogCategory.Notice, errMsg, ex);
            }
        }
        public IssueNoticeInfo AddIssuseNotify(string xml)
        {
            IssueNoticeInfo info = XmlAnalyzer.AnalyseXmlToCommunicationObject <IssueNoticeInfo>(xml);

            try
            {
                IssueEntity issueEntity = new IssueEntity();
                issueEntity.GameName     = info.GameName;
                issueEntity.IssuseNumber = info.Number;
                issueEntity.StartTime    = info.StartTime;
                issueEntity.StopTime     = info.StopTime;
                issueEntity.Status       = (int)info.Status;
                issueEntity.BonusCode    = info.BonusCode;
                issueEntity.SalesMoney   = info.SalesMoney;
                issueEntity.BonusMoney   = info.BonusMoney;
                issueEntity.NoticeId     = info.Id;
                IssuseManager issuseManager = new IssuseManager(DbAccess);
                issuseManager.SaveIssue(issueEntity);

                if (info.Status == IssueStatus.Started)
                {
                    TicketFacade ticketFacade = new TicketFacade();
                    ticketFacade.AutoBuyChaseTicket(issueEntity.GameName, issueEntity.IssuseNumber);
                }
                //Thread thread = new Thread(AutoChaseTicket);
                //thread.Start(issueEntity);

                return(info);
            }
            catch (Exception ex)
            {
                string errMsg = "添加奖期通知失败!" + xml;
                throw HandleException(LogCategory.Notice, errMsg, ex);
            }
        }
        protected virtual void AnnotateFile(BoundSourceFileBuilder binder)
        {
            var text = binder.SourceFile.Content;

            if (XmlAnalyzer.IsXml(text))
            {
                XmlAnalyzer.Analyze(binder);
            }
        }
Beispiel #5
0
        public void XmlCompareConstrainsEqualsWithDifferentOrder()
        {
            var expected = XmlSamples.GetContent("elements");
            var actual   = XmlSamples.GetContent("elements-with-different-order");

            Assert.That(
                expected,
                IsXml.Equals(actual).UseAnalizer(XmlAnalyzer.Custom().SetEqual(XmlComparisonType.NodeListSequence)));
        }
Beispiel #6
0
        public void XmlCompareConstrainWithXsdReference()
        {
            var actual   = XmlSamples.GetContent("with-xsd-reference");
            var expected = XmlSamples.GetContent("with-xsd-another-reference");

            Assert.That(
                expected,
                IsXml.Equals(actual)
                .UseAnalizer(XmlAnalyzer.Custom().SetEqual(XmlComparisonType.SchemaLocation)));
        }
        public HPResponseInfo DoBuy(UserInfo user, string gameName, string issueNumber
                                    , BuyType buyType, List <string> anteCodes, decimal money, int multiple)
        {
            try
            {
                HPBuyRequestInfo requestInfo  = new HPBuyRequestInfo();
                string           messengerId  = GetAgenceAccountUserName();
                string           userPassword = GetAgenceAccountPassword();
                string           messageId    = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
                string           timestamp    = DateTime.Now.ToString("yyyyMMddHHmmss");

                IssueMappingInfo issueInfo = new IssueMappingInfo();
                issueInfo.GameName = gameName;
                issueInfo.Number   = issueNumber;

                TicketMappingInfo ticket = new TicketMappingInfo();
                ticket.TicketId    = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
                ticket.BuyType     = buyType;
                ticket.Money       = money;
                ticket.Amount      = multiple;
                ticket.AnteCodes   = anteCodes;
                ticket.IssueInfo   = issueInfo;
                ticket.UserProfile = GetAgencyUserProfileInfo();

                HPBuyRequestInfo.Body requestBody = new HPBuyRequestInfo.Body();
                requestBody._Request            = new HPBuyRequestInfo.Body.Request();
                requestBody._Request.TicketList = new XmlMappingList <TicketMappingInfo>();
                requestBody._Request.TicketList.Add(ticket);

                string bodyXml = requestBody.ToXmlString("body");

                CommunicationObject.RequestHeaderObject requestHeader = new CommunicationObject.RequestHeaderObject();
                requestHeader.MessengerId     = GetAgenceAccountUserName();
                requestHeader.Timestamp       = timestamp;
                requestHeader.TransactionType = TranType.Request103;
                requestHeader.Digest          = PostManager.MD5(messageId + timestamp + userPassword + bodyXml, "gb2312");

                string headerXml   = requestHeader.ToXmlString("header");
                string requestXml  = "<?xml version=\"1.0\" encoding=\"GBK\"?><message version=\"1.0\" id=\"" + messageId + "\">" + headerXml + bodyXml + "</message>";
                string requestText = "transType=" + (int)TranType.Request103 + "&transMessage=" + requestXml;

                BuyTicket(ticket, user);
                string         xml  = PostManager.Post(GateWayManager.HPIssueQuery_GateWay, requestText, 1200);
                HPResponseInfo info = XmlAnalyzer.AnalyseResponse <HPResponseInfo>(xml);
                UpdateTicketStatus(ticket, user, info);

                return(info);
            }
            catch (Exception ex)
            {
                throw HandleException(LogCategory.Ticket, "认购失败!", ex);
            }
        }
Beispiel #8
0
        public void XmlCompareConstrainCustomAnalyzerIgnoreNodeMissing()
        {
            var expected = XmlSamples.GetContent("elements");
            var actual   = XmlSamples.GetContent("elements-with-comment");

            Assert.That(
                expected,
                IsXml.Equals(actual)
                .WithIgnoreComment(false)
                .UseAnalizer(XmlAnalyzer.Custom()
                             .SetEqual(XmlComparisonType.NodeList)
                             .SetEqual(XmlComparisonType.NodeListLookup)));
        }
Beispiel #9
0
        public void CompareElementsWithDifferentOrderAndStopAnalyzerIsDifferentTests()
        {
            var comparer = new XmlComparer {
                Analyzer = XmlAnalyzer.Constant(XmlComparisonState.Different)
            };
            var comparison = CompareItems(comparer, "elements", "elements-with-different-order");

            AssertComparison(
                comparison,
                XmlComparisonState.Different,
                new XmlComparisonType[]
            {
                XmlComparisonType.NodeListSequence,
                XmlComparisonType.NodeListSequence
            });
        }
        public BonusNoticeInfo AddBonusNotify(string xml)
        {
            BonusNoticeInfo info = XmlAnalyzer.AnalyseXmlToCommunicationObject <BonusNoticeInfo>(xml);

            try
            {
                BonusEntity bonusEntity = new BonusEntity();
                bonusEntity.GameName      = info._Body._BonusInfo._Issue.GameName;
                bonusEntity.IssuseNumber  = info._Body._BonusInfo._Issue.Number;
                bonusEntity.BonusNumber   = info._Body._BonusInfo.BonusNumber;
                bonusEntity.TotalItems    = info._Body._BonusInfo.TotalItems;
                bonusEntity.TotalMoney    = info._Body._BonusInfo.TotalMoney;
                bonusEntity.NoticeId      = info.Id;
                bonusEntity.IsDistributed = false;
                using (ILHDBTran tran = BeginTran())
                {
                    BonusManager bonusManager = new BonusManager(tran);
                    bonusManager.AddBonus(bonusEntity);
                    List <BonusDetailEntity> bonusDetailList = new List <BonusDetailEntity>();
                    foreach (BonusMappingInfo.BonusItem bonusItem in info._Body._BonusInfo._BonusItemList)
                    {
                        BonusDetailEntity detail = new BonusDetailEntity();
                        detail.TicketId     = bonusItem.TicketId;
                        detail.BonusLevel   = bonusItem.BonusLevel;
                        detail.PlayType     = (int)bonusItem.PlayType;
                        detail.Money        = bonusItem.Money;
                        detail.IsBombBonus  = bonusItem.IsBombBonus;
                        detail.Size         = bonusItem.Size;
                        detail.GameName     = bonusEntity.GameName;
                        detail.IssuseNumber = bonusEntity.IssuseNumber;
                        bonusManager.AddBonusDetail(detail);
                    }
                    tran.Commit();
                }
                return(info);
            }
            catch (Exception ex)
            {
                string errMsg = "添加返奖通知失败!" + xml;
                throw HandleException(LogCategory.Notice, errMsg, ex);
            }
        }
        protected override void AnnotateFile(AnalysisServices services, RepoFile file, BoundSourceFileBuilder binder)
        {
            var document = XmlAnalyzer.Analyze(binder);

            AnnotateFile(services, file, (XmlSourceFileBuilder)binder, document);
        }
 protected override void AnnotateFile(BoundSourceFileBuilder binder)
 {
     XmlAnalyzer.Analyze(binder);
 }
Beispiel #13
0
    private void DoBuy()
    {
        string issueIdString   = HidIsuseID.Value;
        string isuseNumber     = HidIsuseNumber.Value;
        string endTime         = HidIsuseEndTime.Value;
        string playTypeString  = Shove._Web.Utility.GetRequest("playType");
        string lotteryNumber   = Shove._Web.Utility.FilteSqlInfusion(base.Request["tb_LotteryNumber"]);
        string sumMoneyString  = Shove._Web.Utility.GetRequest("tb_hide_SumMoney");
        string sumNumberString = Shove._Web.Utility.GetRequest("tb_hide_SumNum");
        string lotteryIdString = Shove._Web.Utility.GetRequest("HidLotteryID");
        string multipleString  = Shove._Web.Utility.GetRequest("tb_Multiple");

        if (multipleString == "")
        {
            multipleString = "1";
        }
        StringBuilder sb = new StringBuilder();

        try
        {
            HPBuyRequestInfo requestInfo = new HPBuyRequestInfo();

            decimal money     = decimal.Parse(sumMoneyString);
            int     multiple  = int.Parse(multipleString);
            int     sumNumber = int.Parse(sumNumberString);
            int     playType  = int.Parse(playTypeString);
            int     lotteryId = int.Parse(lotteryIdString);
            long    isuseId   = long.Parse(issueIdString);

            string messengerId  = GetAgenceAccountUserName();
            string userPassword = GetAgenceAccountPassword();
            string messageId    = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
            string timestamp    = DateTime.Now.ToString("yyyyMMddHHmmss");

            IssueMappingInfo issueInfo = new IssueMappingInfo();
            issueInfo.GameName = LotteryCode;
            issueInfo.Number   = isuseNumber;

            List <string> anteCodes = new List <string>();
            lotteryNumber = lotteryNumber.Replace(" + ", "#").Replace(' ', ',');
            anteCodes.AddRange(lotteryNumber.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries));

            TicketMappingInfo ticket = new TicketMappingInfo();
            ticket.TicketId  = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
            ticket.BuyType   = BuyType.A101; // TODO
            ticket.Money     = money;
            ticket.Amount    = multiple;
            ticket.AnteCodes = anteCodes;
            ticket.IssueInfo = issueInfo;
            //ticket.UserProfile = GetAgencyUserProfileInfo();

            HPBuyRequestInfo.Body requestBody = new HPBuyRequestInfo.Body();
            requestBody._Request            = new HPBuyRequestInfo.Body.Request();
            requestBody._Request.TicketList = new XmlMappingList <TicketMappingInfo>();
            requestBody._Request.TicketList.Add(ticket);

            string bodyXml = requestBody.ToXmlString("body");

            CommunicationObject.RequestHeaderObject requestHeader = new CommunicationObject.RequestHeaderObject();
            requestHeader.MessengerId     = GetAgenceAccountUserName();
            requestHeader.Timestamp       = timestamp;
            requestHeader.TransactionType = TranType.Request103;
            requestHeader.Digest          = PostManager.MD5(messageId + timestamp + userPassword + bodyXml, "gb2312");

            string headerXml = requestHeader.ToXmlString("header");

            string requestXml = "<?xml version=\"1.0\" encoding=\"GBK\"?><message version=\"1.0\" id=\"" + messageId + "\">" + headerXml + bodyXml + "</message>";

            string result = @"投注结果\n\n";
            try
            {
                string requestText = "transType=" + (int)TranType.Request103 + "&transMessage=" + requestXml;
                string xml         = PostManager.Post(GateWayManager.HPIssueQuery_GateWay, requestText, 1200);
                //string xml = gateway.LotteryRequest(accountN, transType, tickets);
                HPResponseInfo info = XmlAnalyzer.AnalyseResponse <HPResponseInfo>(xml);
                result += info.Code + " - " + info.Message;
            }
            catch (Exception ex)
            {
                result += "错误 - " + ex.Message;
                LogWriter.Write(LogCategory.Lottery, "投注错误", ex);
            }
            JavaScript.Alert(this.Page, result);
            return;
        }
        catch
        {
            JavaScript.Alert(this.Page, "输入有错误,请仔细检查。");
            return;
        }
    }