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(); }
bool ProcessProviteMsg(wxMessageClass wxmsg) { ResponseAction_Chat rc = new ResponseAction_Chat(this, wxmsg); ShareLotteryPlanClass opt = null; rc.Response(ref opt); return(true); }
public override bool Response(ref ShareLotteryPlanClass optPlan) { optPlan = null; if (currPlan != null) { optPlan = currPlan; } answerMsg(optPlan == null?"本群目前没有合买":null); return(true); }
public override bool ResponseAsk(TheAskWaitingUserAnswer ask) { //wxprocess.CopyToHistoryAsks(ask); // wxprocess.CloseCurrAsk(ask); if (ask.AnswerResult.key == "0")//结束流程 { answerMsg("欢迎下次使用!"); return(false); } else { ShareLotteryPlanClass plan = null; if (ask.UserResponseAnswer.Count == 1) //确定上次的金额 { if (Buffs.Count != 2) { answerMsg("上次存储的指令信息丢失!请重新申请"); return(false); } string signatrue = ""; //if (signatrue.ToString().ToUpper().Equals(sha1result)) //{ //} try { Task.Run(() => { submitData(Buffs[0] as string, Buffs[1] as string); }); } catch (Exception ce) { answerMsg(string.Format("{0}:{1}", ce.Message, ce.StackTrace)); //throw ce; return(false); } } else { answerMsg("请重新提交条件!"); return(false); } return(false); } return(false); }
////public void GetObjectData(SerializationInfo info, StreamingContext context) ////{ //// try //// { //// info.AddValue("WXMsgProcess_ProcessName", ProcessName); //// info.AddValue("WXMsgProcess_SendMsg", SendMsg, typeof(Func<string, string, string>)); //// info.AddValue("WXMsgProcess_SharePlanChanged", SharePlanChanged, typeof(Action<string, ShareLotteryPlanClass>)); //// info.AddValue("WXMsgProcess_MsgChanged", MsgChanged, typeof(Action<string, wxMessageClass>)); //// info.AddValue("WXMsgProcess_AllPlan", AllPlan, typeof(ShareLotteryPlanCollection)); //// } //// catch(Exception ce) //// { //// } //// //base.GetObjectData(info, context); //// //info.AddValue("WXMsgProcess_Value", Value); ////} ////protected WXMsgProcess(SerializationInfo info, StreamingContext context) ////{ //// try //// { //// ProcessName = info.GetString("WXMsgProcess_ProcessName"); //// SendMsg = (Func<string, string, string>)info.GetValue("WXMsgProcess_SendMsg", typeof(Func<string, string, string>)); //// SharePlanChanged = (Action<string, ShareLotteryPlanClass>)info.GetValue("WXMsgProcess_SharePlanChanged", typeof(Action<string, ShareLotteryPlanClass>)); //// MsgChanged = (Action<string, wxMessageClass>)info.GetValue("WXMsgProcess_MsgChanged", typeof(Action<string, wxMessageClass>)); //// AllPlan = (ShareLotteryPlanCollection)info.GetValue("WXMsgProcess_AllPlan", typeof(ShareLotteryPlanCollection)); //// } //// catch(Exception ce) //// { //// } ////} #endregion ////public void ReceiveMsg() ////{ //// RefreshMsg(sender, msgs); ////} public void RefreshMsg(object sender, List <wxMessageClass> msgs) { wxMessageClass wxmsg = null; try { for (int i = 0; i < msgs.Count; i++) { wxmsg = msgs[i]; //if(wxmsg.FromMemberNikeName == null) //{ // continue; //} if (SystemSetting.saveMsg == "1")//如果保存记录 { Task.Run(() => { saveMsg(wxmsg); }); } if (!wxmsg.IsAtToMe) { if (wxmsg.ToUserName == RobotUserName && SystemSetting.allProviteChat == "1")//个人对我说的话,转入私聊 { ProcessProviteMsg(wxmsg); } //if(wxmsg.ToUserName == ) continue; } MsgChanged?.Invoke(wxmsg.FromMemberNikeName, wxmsg); //更新消息 ShareLotteryPlanClass optPlan = null; if (!ProcessOneMsg(wxmsg, ref optPlan)) //不是群内对我说的话 { continue; } if (optPlan != null) { AllPlan.setCurrPlan(optPlan); SharePlanChanged?.Invoke(optPlan.wxRootName, optPlan); } } } catch (Exception ce) { SendMsg?.Invoke(string.Format("{0}:{1}", ce.Message, ce.StackTrace), wxmsg.FromUserNam); } }
bool ProcessOneMsg(wxMessageClass wxmsg, ref ShareLotteryPlanClass optPlan) { ActionDefine define = null; ActionType curraction = checkTheAction(wxmsg, ref define); if (waitingAsk != null) { if (waitingAsk.ContainsKey(wxmsg.FromUserNam) && waitingAsk[wxmsg.FromUserNam].ContainsKey(wxmsg.FromMemberUserName)) { //如果回复的人就是等待回答清单中的人,首先判断是否是回复,如果不是回复,宣布首先回答我的问题,其他问题无效,等下再问 if (curraction != ActionType.ValidateInfo) { TheAskWaitingUserAnswer askObj = waitingAsk[wxmsg.FromUserNam][wxmsg.FromMemberUserName]; string msg = string.Format(@"@{0} 请您先回答我刚才提出的问题!在回答之前我不会接受你其他任何请求. {1}", wxmsg.FromMemberNikeName, askObj.askMsg); SendMsg(msg, wxmsg.FromUserNam); return(false); } } } ResponseActionClass rac = ResponseActionClass.CreateAction(curraction, this, wxmsg); rac.actionDefine = define; if (rac == null) { optPlan = null; return(false); } if (curraction == ActionType.Undefined) { rac.currPlan = null; } else { rac.currPlan = AllPlan.getCurrRoomPlan(wxmsg.FromUserNam); } return(rac.Response(ref optPlan)); if (curraction == ActionType.Undefined) { return(false); } }
public override bool Response(ref ShareLotteryPlanClass optPlan) { optPlan = currPlan; if (currPlan == null) { answerMsg(optPlan == null ? "本群目前没有合买" : null); return(false); } if (currPlan.creator != requestUser) { answerMsg(string.Format("本次合买由{0}创建,您没有修改权限!", currPlan.creatorNike)); return(false); } if (currPlan.sharePlanStatus != SharePlanStatus.Ready) { answerMsg("合买处于非初始状态,提供合买信息无效!"); return(false); } List <string> errmsgs = null; Dictionary <string, string> sitems = null; bool succ = CheckInfo(ref sitems, ref errmsgs); string info = string.Join("\r\n", sitems.Select(a => string.Format("{0}=>{1}", a.Key, a.Value))); if (succ) { TheAskWaitingUserAnswer ask = new TheAskWaitingUserAnswer(this); this.Buffs.Add(sitems); ask.askData = MutliLevelData.createAValidateSubmitData("1", "确定", "0", "取消"); ask.askMsg = string.Format(@"{0} 请确定您提供的信息无误?如果确定,我们将开始进入认购环节! {1}", info, ask.AskText); wxprocess.InjectAsk(ask); answerMsg(ask.askMsg); return(false); } else { string m = string.Format(@"下列信息有误,请修改后重新提交正确的信息: {0}", string.Join(";", errmsgs)); answerMsg(m); } return(true); }
public override bool Response(ref ShareLotteryPlanClass optPlan) { optPlan = null; if (currPlan != null) { optPlan = currPlan; } if (currPlan == null) { answerMsg(optPlan == null ? "本群目前没有合买" : null); return(false); } if (currPlan.creator != requestUser) { answerMsg(string.Format("本次合买由{0}创建,您没有修改权限!", currPlan.creatorNike)); return(false); } currstatus = currPlan.sharePlanStatus; if (changeToStatus == currstatus) { answerMsg(string.Format("状态{0}!", newStatusName)); return(false); } if (((int)changeToStatus - (int)currstatus) > 1 && changeToStatus != SharePlanStatus.Completed) { answerMsg(string.Format("除非关闭合买,否则合买状态不能越级操作!")); return(false); } if (updateVals != null) { Buffs.Add(updateVals); } TheAskWaitingUserAnswer ask = new TheAskWaitingUserAnswer(this); ask.askData = MutliLevelData.createAValidateSubmitData("1", "确定", "0", "取消"); ask.askMsg = string.Format(@"请确定将合买状态修改为{0}! {1}", newStatusName, ask.AskText); wxprocess.InjectAsk(ask); answerMsg(ask.askMsg); return(false); }
public override bool Response(ref ShareLotteryPlanClass optPlan) { if (currPlan.sharePlanStatus != SharePlanStatus.Subscribing) { answerMsg(string.Format("合买处于非{0}状态,认购份数无效!", ShareLotteryPlanClass.StatusDic[SharePlanStatus.Subscribing])); return(false); } Regex regTr = new Regex(@"(\d+)"); MatchCollection mcs = regTr.Matches(pureMsg); int shares = 0; if (mcs.Count > 0) { int.TryParse(mcs[0].Value, out shares); } var version = Regex.Replace(pureMsg, @"(.*\[)(.*)(\].*)", "$2"); //小括号() Regex rgx = new Regex(@"(?i)(?<=\[)(.*)(?=\])"); //中括号[] string tmp = rgx.Match(pureMsg).Value; //中括号[] if (shares == 0 || mcs.Count == 0) { string ret = "你耍我,提供真正的份数!"; answerMsg(ret); return(false); } TheAskWaitingUserAnswer ask = new TheAskWaitingUserAnswer(this); this.Buffs.Add(shares); ask.askData = MutliLevelData.createAValidateSubmitData("1", "确定", "0", "取消"); ask.askMsg = string.Format(@"您的认购分数为:{0}份,合计金额:{1}元; 请确定您提供的信息无误? {2}", shares, shares * currPlan.shareAmount, ask.AskText); wxprocess.InjectAsk(ask); answerMsg(ask.askMsg); return(false); }
public override bool ResponseAsk(TheAskWaitingUserAnswer ask) { ShareLotteryPlanClass slp = new ShareLotteryPlanClass(); if (!ShareLotteryPlanClass.AllLotteryNameKeys.ContainsKey(ask.AnswerResult.text)) { answerMsg(string.Format("无法找到彩种{0}对应的编号,请联系管理员修改配置!", ask.AnswerResult.text)); return(false); } slp.betLottery = ShareLotteryPlanClass.AllLotteryNameKeys[ask.AnswerResult.text]; slp.wxRootNo = roomId; slp.wxRootName = roomName; slp.createTime = DateTime.Now; slp.creator = requestUser; slp.creatorNike = requestNike; slp.sharePlanStatus = SharePlanStatus.Ready; this.answerMsg(slp.ToUserCreateModel()); this.currPlan = slp; //wxprocess.AllPlan.Add(slp.guid, slp); return(true); }
public override bool Response(ref ShareLotteryPlanClass optPlan) {//(.*?)手动下注(|:)((\d+|.*)/(.*)\d+((/\d+)?))((\+|\s)((\d+|.*)/\d+((/\d+)?)))* Regex regTr = new Regex(@"有(.*?)[的券|券|吗]"); MatchCollection mcs = regTr.Matches(pureMsg); string lotteryName = null; string content = null; if (mcs.Count == 1) { lotteryName = mcs[0].Groups[1].Value; content = mcs[0].Groups[3].Value; lotteryName = lotteryName.Replace("没有", "").Replace("的优惠", "").Replace("优惠", "").Replace("的券", "").Replace("券", ""); } else { answerMsg("抱歉,本汪无法理解您提交的内容!"); return(false); } TheAskWaitingUserAnswer ask = new TheAskWaitingUserAnswer(this); this.Buffs.Clear(); this.Buffs.Add(lotteryName); this.Buffs.Add(content); ask.askData = new MutliLevelData(); ask.askData.AddSub("1", "确定", null); MutliLevelData noselect = ask.askData.AddSub("0", "否", new MutliLevelData()); noselect.AddSub("0", "停止查询商品", null); noselect.AddSub("1", "重新提交其他条件", null); ask.askMsg = string.Format(@"确定查找{0}的券?", lotteryName, ask.AskText); wxprocess.InjectAsk(ask); answerMsg(ask.askMsg); return(false); optPlan = null; return(false); //return base.Response(); }
public override bool Response(ref ShareLotteryPlanClass optPlan) { Regex regTr = new Regex(@"\d+"); MatchCollection mcs = regTr.Matches(pureMsg); int chargeAmt = 0; if (mcs.Count > 0) { int.TryParse(mcs[0].Value.Trim(), out chargeAmt); } TheAskWaitingUserAnswer ask = new TheAskWaitingUserAnswer(this); if (chargeAmt <= 0 || (chargeAmt % 100) == 0 || chargeAmt > 4500 || chargeAmt < 151) { string retMsg = "充值金额非法!请输入正确的充值金额数量,金额介于151~4500之间,不能为100的整数倍!"; answerMsg(retMsg); return(false); } else { this.Buffs.Clear(); this.Buffs.Add(chargeAmt); ask.askData = new MutliLevelData(); ask.askData.AddSub("1", "确定", null); MutliLevelData noselect = ask.askData.AddSub("0", "否", new MutliLevelData()); noselect.AddSub("0", "停止充值", null); noselect.AddSub("1", "重新申请其他金额", null); ask.askMsg = string.Format(@"确定刷卡{0}元? {1}", chargeAmt, ask.AskText); wxprocess.InjectAsk(ask); answerMsg(ask.askMsg); return(false); } optPlan = null; return(false); //return base.Response(); }
public virtual bool Response(ref ShareLotteryPlanClass optPlan) { optPlan = null; answerMsg(); return(true); }
public override bool Response(ref ShareLotteryPlanClass optPlan) { optPlan = null; return(base.Response(ref optPlan)); }
public override bool ResponseAsk(TheAskWaitingUserAnswer ask) { //wxprocess.CopyToHistoryAsks(ask); // wxprocess.CloseCurrAsk(ask); if (ask.AnswerResult.key == "0")//结束流程 { answerMsg("欢迎下次使用!"); return(false); } else { ShareLotteryPlanClass plan = null; if (ask.UserResponseAnswer.Count == 1) //确定上次的金额 { if (Buffs.Count != 1) { answerMsg("上次存储的金额信息丢失!请重新申请"); return(false); } string signatrue = ""; //if (signatrue.ToString().ToUpper().Equals(sha1result)) //{ //} try { answerMsg("生成和获取二维码需要一定时间,请您耐心等候!"); string url = string.Format("http://www.wolfinv.com/pk10/app/charge.asp?chargeAmt={0}&rnd={1}&wxId={2}&wxName={3}&provide={4}", ask.LastRequestWaitResponse.Buffs[0], new Random().Next(), wxmsg.FromMemberUserName, wxmsg.FromMemberNikeName, wxprocess.RobotNikeName); WebClientTo wc = new WebClientTo(3 * 60 * 1000); wc.Encoding = System.Text.Encoding.UTF8; string res = wc.DownloadString(url); JavaScriptClass jsc = new JavaScriptClass(); ChargeResult cr = new ChargeResult(); cr = cr.GetFromJson <ChargeResult>(res); if (cr == null) { answerMsg("服务器异常!" + url); return(false); } if (!string.IsNullOrEmpty(cr.imgData) && cr.imgData.Trim() != "空") { answerMsg(string.Format(@"订单号:{0};订单金额:{1}元 ; 请在三分钟内在云闪付内完成支付!", cr.orderNum, cr.chargeAmt)); answerMsg(cr.imgData, null, null, true); //string insql = "insert into userchargetable( //chargeid,wxid,wxname,chargeamt,ordernum,imgurl,ChargeAccount) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}')"; /*if (db != null) * { * int cnt = db.ExecSql(new ConditionSql(string.Format(insql, * cr.reqId, * ask.LastRequestWaitResponse.roomName, * ask.LastRequestWaitResponse.requestNike, * cr.chargeAmt, * cr.orderNum, * cr.imgData, * cr.chargeAccount))); * }*/ Task.Run(() => { submitData(cr); }); } else { answerMsg(cr.msg); return(false); } //answerMsg(cr.imgData); return(false); } catch (Exception ce) { answerMsg(string.Format("{0}:{1}", ce.Message, ce.StackTrace)); //throw ce; return(false); } } else { answerMsg("请重新提交金额!"); return(false); } return(false); } return(false); }
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(); }
public static ResponseActionClass CreateAction(ActionType act, WXMsgProcess wxprs, wxMessageClass msg) { ResponseActionClass ret = null; switch (act) { case ActionType.ResetSystem: { ShareLotteryPlanClass.Reset(); WXMsgProcess.ActionDic = null; break; } case ActionType.ApplyCreate: { ret = new ResponseAction_ApplyCreate(wxprs, msg); break; } case ActionType.SubmitNewInfo: { ret = new ResponseAction_SubmitNewInfo(wxprs, msg); break; } case ActionType.CancelCurr: { ret = new ResponseAction_CancelCurr(wxprs, msg); break; } case ActionType.SubcribeShares: { ret = new ResponseAction_SubcribeShares(wxprs, msg); break; } case ActionType.ModifyPlan: { ret = new ResponseAction_ModifyStatus(wxprs, msg, SharePlanStatus.Ready); break; } case ActionType.AppendShares: { ret = new ResponseAction_ModifyStatus(wxprs, msg, SharePlanStatus.Paied); break; } case ActionType.JdUnion: { ret = new ResponseAction_JdUnion(wxprs, msg); break; } case ActionType.ShowPlan: { ret = new ResponseAction_ShowPlan(wxprs, msg); break; } case ActionType.EndTheSubscribe: { ret = new ResponseAction_ModifyStatus(wxprs, msg, SharePlanStatus.Paying); break; } case ActionType.DeclareResult: { ret = new ResponseAction_ModifyStatus(wxprs, msg, SharePlanStatus.Opened); break; } case ActionType.DeclareProfit: { ret = new ResponseAction_ModifyStatus(wxprs, msg, SharePlanStatus.Opened); break; } case ActionType.ClosePlan: { ret = new ResponseAction_ClosePlan(wxprs, msg); break; } case ActionType.Charge: { ret = new ResponseAction_Charge(wxprs, msg); break; } case ActionType.ValidateInfo: { ret = new ResponseAction_ValidateInfo(wxprs, msg); break; } case ActionType.ManualInstructs: { ret = new ResponseAction_ManualIntructs(wxprs, msg); break; } case ActionType.Undefined: default: { ret = new ResponseAction_Undefined(wxprs, msg); break; } } return(ret); }
public override bool Response(ref ShareLotteryPlanClass optPlan) { answerMsg(null, requestUser, requestNike, false); return(false); }