KeyText getLottery()
        {
            KeyText ret = null;

            if (ret != null)//如果既往计划中找不到,到所有彩票清单中找,如果找到就返回
            {
                return(ret);
            }
            ShareLotteryPlanClass.AllLotteryKeyNames.Keys.ToList().ForEach(
                a =>
            {
                string txt = ShareLotteryPlanClass.AllLotteryKeyNames[a];
                if (Msg.Contains(txt))
                {
                    ret = new KeyText(a, txt);
                    return;
                }
                if (txt == "北京赛车" && Msg.ToLower().Contains("pk10"))
                {
                    ret = new KeyText(a, txt);
                    return;
                }
            }
                );
            return(ret);
        }
        public override bool Response(ref ShareLotteryPlanClass optPlan)
        {
            KeyText hasLottery = getLottery();

            if (hasLottery == null)//未找到彩种,先确认彩种
            {
                TheAskWaitingUserAnswer ask = new TheAskWaitingUserAnswer(this);
                this.lastAsk = ask;
                ask.LastRequestWaitResponse = this;
                string sendmsg = @"请根据我提供的问题选择您需要推荐的彩种:" +
                                 "{0}";

                ask.askData = ShareLotteryPlanClass.AllLottery;


                string fullmsg = string.Format(sendmsg, ask.AskText);
                ask.askMsg = fullmsg;
                wxprocess.InjectAsk(ask);
                this.answerMsg(fullmsg);
                return(true);
            }
            else//如果提供了彩票品种,直接反馈信息
            {
            }

            return(true);
            //return base.Response();
        }
示例#3
0
        KeyText getLottery()
        {
            KeyText ret = null;

            if (this.wxprocess.AllPlan != null)
            {
                Dictionary <string, KeyText> hasCreatedLotteries = this.wxprocess.AllPlan.getUserCreatedLotteries(wxmsg.FromMemberUserName);
                hasCreatedLotteries.Values.ToList().ForEach(a =>
                {
                    if (Msg.Contains(a.text))
                    {
                        ret = a;
                        return;
                    }
                });
            }
            if (ret != null)//如果既往计划中找不到,到所有彩票清单中找,如果找到就返回
            {
                return(ret);
            }
            ShareLotteryPlanClass.AllLotteryKeyNames.Keys.ToList().ForEach(
                a =>
            {
                string txt = ShareLotteryPlanClass.AllLotteryKeyNames[a];
                if (Msg.Contains(txt))
                {
                    ret = new KeyText(a, txt);
                    return;
                }
            }
                );
            return(ret);
        }
示例#4
0
        static MutliLevelData getLotteryDic()
        {
            MutliLevelData ret    = new MutliLevelData();
            string         xml    = TextFileComm.getFileText("LotteryList.xml", "xml");
            XmlDocument    xmldoc = new XmlDocument();

            try
            {
                xmldoc.LoadXml(xml);
                XmlNode     root      = xmldoc.SelectSingleNode("root");
                XmlNodeList typenodes = root.SelectNodes("lotteryType/item");
                foreach (XmlNode typenode in typenodes)
                {
                    string  val  = XmlUtil.GetSubNodeText(typenode, "@value");
                    string  text = XmlUtil.GetSubNodeText(typenode, "@text");
                    KeyText k    = new KeyText(val, text);
                    if (ret.SubList.ContainsKey(k))
                    {
                        continue;
                    }
                    ret.SubList.Add(k, getNextLevel(root, val));
                }
            }
            catch (Exception ce)
            {
                return(ret);
            }
            return(ret);
        }
示例#5
0
 public KeyText AddSub(KeyText key, MutliLevelData val)
 {
     if (!SubList.ContainsKey(key))
     {
         SubList.Add(key, val);
         return(key);
     }
     return(null);
 }
示例#6
0
        public MutliLevelData AddSub(string val, string text, MutliLevelData obj)
        {
            KeyText key = new KeyText(val, text);

            if (!SubList.ContainsKey(key))
            {
                SubList.Add(key, obj);
                return(obj);
            }
            return(null);
        }
示例#7
0
        static MutliLevelData getNextLevel(XmlNode root, string val)
        {
            MutliLevelData ret   = new MutliLevelData();
            XmlNodeList    slist = root.SelectNodes(string.Format("lottery[@type='{0}']/item", val));

            foreach (XmlNode snode in slist)
            {
                string  v  = XmlUtil.GetSubNodeText(snode, "@value");
                string  t  = XmlUtil.GetSubNodeText(snode, "@text");
                KeyText sk = new KeyText(v, t);
                if (ret.SubList.ContainsKey(sk))
                {
                    continue;
                }

                ret.SubList.Add(sk, getNextLevel(root, v));
            }
            return(ret);
        }
示例#8
0
        public override bool Response(ref ShareLotteryPlanClass optPlan)
        {
            optPlan = null;
            lastAsk = wxprocess.getLastAsk(roomId, requestUser);
            if (lastAsk == null)
            {
                return(base.Response(ref optPlan));//当作不知道
            }
            if (answers.Count == 0)
            {
                answerMsg("请按提示回答上一个问题!");
                return(false);
            }
            MutliLevelData mld = lastAsk.askData;

            if (!mld.SubList.Keys.Select(a => a.key).ToList().Contains(answers[0]))
            {
                if (mld != null && mld.Parent.SubList.Keys.Select(a => a.key).ToList().Contains(answers[0]))//返回上级
                {
                    MutliLevelData parent = mld.Parent?.Parent;
                    mld = mld.Parent;
                    if (mld.Parent != null)
                    {
                        mld.Parent = parent;
                    }
                }
                else
                {
                    string msg = @"你回复的数字未在我期望范围内:请继续回复上一个问题!";
                    answerMsg(msg);
                    answerMsg(lastAsk.askMsg);//重复上一个问题
                    return(false);
                }
            }
            KeyText result = mld.SubList.Where(a => a.Key.key == answers[0]).First().Key;

            lastAsk.AnswerResult = result;
            if (lastAsk.UserResponseAnswer == null)
            {
                lastAsk.UserResponseAnswer = new List <string>();
            }
            lastAsk.UserResponseAnswer.Add(answers[0]);
            if (mld.SubList[result] != null && mld.SubList[result].SubList.Count > 0)//如果还有下级问题,继续问
            {
                lastAsk.askData        = mld.SubList[result];
                lastAsk.askData.Parent = mld;
                lastAsk.askMsg         = lastAsk.AskText;
                lastAsk.LastRequestWaitResponse.lastAsk = lastAsk;
                wxprocess.setLastAsk(lastAsk);
                answerMsg(lastAsk.askMsg);
                return(false);
            }


            wxprocess.CopyToHistoryAsks(lastAsk);                             //保存至历史
            wxprocess.CloseCurrAsk(lastAsk);                                  //关闭当前等待的
            lastAsk.LastRequestWaitResponse.currPlan = currPlan;
            bool succ = lastAsk.LastRequestWaitResponse.ResponseAsk(lastAsk); //转入最后处理

            if (succ)
            {
                optPlan = lastAsk.LastRequestWaitResponse.currPlan;
            }
            return(succ);
        }
示例#9
0
        public override bool Response(ref ShareLotteryPlanClass optPlan)
        {
            if (wxprocess.AllPlan != null)
            {
                var runningPlans = wxprocess.AllPlan.Where(a => {
                    if (
                        a.Value.sharePlanStatus != SharePlanStatus.Completed && a.Value.wxRootNo == roomId)
                    {
                        return(true);
                    }
                    return(false);
                });
                if (runningPlans.Count() > 0)
                {
                    answerMsg("非法请求!一个群只能有一个合买在运行,请结束上一个合买再新建新的合买!");
                    return(false);
                }
            }
            KeyText hasLottery        = getLottery();
            ShareLotteryPlanClass slp = new ShareLotteryPlanClass();

            if (hasLottery == null)//未找到彩种,先确认彩种
            {
                TheAskWaitingUserAnswer ask = new TheAskWaitingUserAnswer(this);
                this.lastAsk = ask;
                ask.LastRequestWaitResponse = this;
                string sendmsg = @"您是我们的新用户,请根据我提供的问题选择您需要合买的彩种:" +
                                 "{0}";

                ask.askData = ShareLotteryPlanClass.AllLottery;


                string fullmsg = string.Format(sendmsg, ask.AskText);
                ask.askMsg = fullmsg;
                wxprocess.InjectAsk(ask);
                this.answerMsg(fullmsg);
                return(true);
            }
            else
            {
                Regex           regTr = new Regex(string.Format("{0}(.*?)期", hasLottery.text));
                MatchCollection mcs   = regTr.Matches(pureMsg);
                if (mcs.Count > 0)
                {
                    slp.betExpectNo = mcs[0].Value.Trim().Replace("第", "").Replace(hasLottery.text, "").Replace("期", "");
                }
                slp.betLottery      = hasLottery.key;
                slp.wxRootNo        = roomId;
                slp.wxRootName      = roomName;
                slp.createTime      = DateTime.Now;
                slp.creator         = requestUser;
                slp.creatorNike     = requestNike;
                slp.sharePlanStatus = SharePlanStatus.Ready;
                this.answerMsg(slp.ToUserCreateModel());
                wxprocess.AllPlan.Add(slp.guid, slp);
                optPlan = slp;
            }


            return(true);
            //return base.Response();
        }