private async void sendRequst(Dictionary <string, string> template, Uri requestUrl) { string ur = $"{string.Format("0")}\"\",\"\""; string openId, userId, timestamp, nonce, trade_source, signature, qrcodeid, longitude, latitude; template.TryGetValue("openid", out openId); template.TryGetValue("userid", out userId); template.TryGetValue("timestamp", out timestamp); template.TryGetValue("nonce", out nonce); template.TryGetValue("trade_source", out trade_source); template.TryGetValue("signature", out signature); template.TryGetValue("attach", out qrcodeid); var member = MemberCheckInSingletonService.Instance.membercheckinlist.Single(m => m.openId == openId); longitude = member.longitude.ToString(); latitude = member.latitude.ToString(); string customParams = $"{{\"openid\":\"{openId}\",\"userid\":\"{userId}\",\"timestamp\":\"{timestamp}\",\"nonce\":\"{nonce}\",\"trade_source\":\"{trade_source}\",\"signature\":\"{signature}\",\"qrcodeid\":\"{qrcodeid}\",\"attentype\":\"morning\",\"longitude\":{longitude},\"latitude\":{latitude},\"cacheflag\":\"0\"}}"; //"openid":"","userid":"510129760","timestamp":"1555230703033","nonce":"b422fca3-6745-45fb-942e-3277e4c2872f","trade_source":"HXQYH","signature":"C5B39A04405C819AB045BD54A3376D59","qrcodeid":"00000000000000105723","attentype":"morning","longitude":104.07,"latitude":30.67,"cacheflag":"0" string url = $"http://kqapi.hxlife.com/tms/api/QRcodeSign?callbackparam=success_jsonpCallback¶ms={customParams}&_={DateTimeOffset.UtcNow.ToUnixTimeSeconds()}"; string retString = await HttpUtil.Request(url); Regex regex = new Regex("success_jsonpCallback\\((.*)\\)"); if (regex.IsMatch(retString)) { var result = regex.Match(retString).Groups[1].Value; var checkInResult = JsonConvert.DeserializeObject <CheckInServerResponse>(result); MemberCheckInSingletonService.updateMemberCheckInInformation(openId, checkInResult.result == "success" ? CheckInStatus.Success : CheckInStatus.Error, checkInResult.result, checkInResult.message, requestUrl.ToString()); } else { MemberCheckInSingletonService.updateMemberCheckInInformation(openId, CheckInStatus.Error, null, retString, requestUrl.ToString()); } }
private void Instance_OnMessage(object sender, CustomEventArgs e) { Console.WriteLine("Handling SocketService.OnMessage................................"); Console.WriteLine(JsonConvert.SerializeObject(e.Data)); //MessageBox.Show(e.Data.op.ToString()); //this.m_SyncContext.Post((data) => //{ // MessageBox.Show(e.Data.op.ToString()); //}, null); this.m_SyncContext.Post((data) => { var checkInUrl = GetCheckInLocation()?.url; switch (e.Data.op) { case SocketOp.ACK: case SocketOp.PLAIN: this.toolStripProgressBar1.Value = 0; this.toolStripStatusLabelPercent.Text = ""; this.toolStripStatusLabel1.Text = $"[{e.Data.data.message}]"; break; case SocketOp.CHECK_IN_CREATED: MemberCheckInSingletonService.createNewMemberCheckInformation(e.Data.data); this.toolStripProgressBar1.Value = 100; this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"[{e.Data.data.name}]绑定完成"; break; case SocketOp.CHECK_IN_STARTED: this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"[{e.Data.data.name}]开始打卡"; break; case SocketOp.CHECK_IN_SKIP: if (Mode == CheckInMode.Batch && IsSomeoneWaiting(e.Data.data.id)) { this.toolStripProgressBar1.ProgressBar.PerformStep(); this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"[{e.Data.data.name}]跳过"; SwitchCheckInMember(); var sleepMS = random.Next(lowerTimeSpan, higherTimeSpan); Thread.Sleep(sleepMS); CheckInSingleMember(checkInUrl); } else if (Mode == CheckInMode.Register) { this.toolStripProgressBar1.Value = 100; this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"[{e.Data.data.name}]重复绑定"; } else if (this.IsWatcher) { this.toolStripProgressBar1.ProgressBar.PerformStep(); this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"[{e.Data.data.name}]跳过"; } else { this.toolStripProgressBar1.Value = 100; this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = "当前打卡完成"; } break; case SocketOp.CHECK_IN_UPDATED: Task.Run(async() => { await MemberCheckInSingletonService.updateMemberCheckInInformation(e.Data.data); if (Mode == CheckInMode.Register) { this.m_SyncContext.Post(context => { this.toolStripProgressBar1.Value = 100; this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"[{e.Data.data.name}]完成注册"; }, this); } else if (Mode == CheckInMode.Batch && IsSomeoneWaiting(e.Data.data.id)) { this.m_SyncContext.Post(context => { this.toolStripProgressBar1.PerformStep(); this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"[{e.Data.data.name}]完成打卡"; }, this); SwitchCheckInMember(); var sleepMS = random.Next(lowerTimeSpan, higherTimeSpan); Thread.Sleep(sleepMS); CheckInSingleMember(checkInUrl); } else if (NeedFace(e.Data.data.id)) { this.m_SyncContext.Post(context => { this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"[{e.Data.data.name}]开始打脸"; }, this); if (MemberCheckInSingletonService.Instance.checkedInIds.Contains(e.Data.data.id)) { MemberCheckInSingletonService.Instance.checkedInIds.Remove(e.Data.data.id); } MemberCheckIn memberCheckIn = MemberCheckInSingletonService.Instance.membercheckinlist.SingleOrDefault(m => m._id == e.Data.data.id); if (!this.IsWatcher) { MonitorFaceDialog(memberCheckIn.faceList); } } else { this.m_SyncContext.Post(context => { this.toolStripProgressBar1.Value = 100; this.toolStripStatusLabelPercent.Text = $"{this.toolStripProgressBar1.Value}%"; this.toolStripStatusLabel1.Text = $"当前打卡完成"; }, this); } }); break; case SocketOp.MEMBER_NEED_CHECK_IN_UPDATED: if (!this.IsWatcher) { // only Watcher need to refresh member list again. RefreshMemberListPassively(); return; } break; } }, this); }