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(); }
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); }
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); }
public KeyText AddSub(KeyText key, MutliLevelData val) { if (!SubList.ContainsKey(key)) { SubList.Add(key, val); return(key); } return(null); }
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); }
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); }
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); }
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(); }