private List <MsgRequest> FormRequest() { List <MsgRequest> ret = new List <MsgRequest> (); //if (elist.Count == 0) { // return null; //} var elist = EventReporter.ReportEvent(); foreach (var e in elist) { var req = new MsgRequest(); var head = new Head(); var content = new Content(); var msg = new Msg(); head.srcID = e.sponsorId; head.srcType = SRCType.SIM; head.dstIDs.InsertRange(0, e.targetIdList); msg.type = Support.MsgTypeConverter(e.type); msg.body = World.GetInstance().GetGameObject(e.sponsorId).GetComponent <EventGenerator>().SelfSerialize(e.type, e.rawContent); content.msg.Add(msg); req.content = content; req.head = head; ret.Add(req); } return(ret); }
public DTOResponse GetList(MsgRequest request) { DTOResponse dtoResponse = new DTOResponse(); try { string str1 = (string)null; string str2 = (string)null; DateTime dt1; DateTime dt2; if (!string.IsNullOrEmpty(request.datetimerange) && request.datetimerange.Length > 10) { string s1 = request.datetimerange.Substring(0, 10); string s2 = request.datetimerange.Substring(13, 10); DateTime.TryParse(s1, out dt1); DateTime.TryParse(s2, out dt2); str1 = dt1.ToString("yyyy-MM-dd HH:mm:ss"); str2 = dt2.ToString("yyyy-MM-dd HH:mm:ss"); } else { DateTime today = DateTime.Today; dt1 = today.AddDays(-7.0); today = DateTime.Today; dt2 = today.AddDays(1.0); str1 = dt1.ToString("yyyy-MM-dd HH:mm:ss"); str2 = dt2.ToString("yyyy-MM-dd HH:mm:ss"); } using (IDbConnection dbConn = HelperConnection.GetConnectionFactory().OpenDbConnection()) { SqlExpression <SysAlterInfoEntity> expression = dbConn.From <SysAlterInfoEntity>(); expression.And((Expression <Func <SysAlterInfoEntity, bool> >)(x => x.CREATEDATETIME >= dt1 && x.CREATEDATETIME <= dt2)); if (!string.IsNullOrEmpty(request.MSGTEXT)) { expression.And((Expression <Func <SysAlterInfoEntity, bool> >)(x => x.MSGTEXT.Contains(request.MSGTEXT))); } if (!string.IsNullOrEmpty(request.MSGTYPE) && request.MSGTYPE != "0") { expression.And((Expression <Func <SysAlterInfoEntity, bool> >)(x => x.MSGTYPE == request.MSGTYPE)); } if (!string.IsNullOrEmpty(request.MSGSTATE)) { expression.And((Expression <Func <SysAlterInfoEntity, bool> >)(x => x.MSGSTATE == request.MSGSTATE)); } long num = dbConn.Count <SysAlterInfoEntity>(expression); List <SysAlterInfoEntity> list = dbConn.Select <SysAlterInfoEntity>(expression).OrderByDescending <SysAlterInfoEntity, long>((Func <SysAlterInfoEntity, long>)(x => x.ID)).ToList <SysAlterInfoEntity>().Skip <SysAlterInfoEntity>((request.page - 1) * request.limit).Take <SysAlterInfoEntity>(request.limit).ToList <SysAlterInfoEntity>(); dtoResponse.TotalCount = num; dtoResponse.ResultObject = (object)list; dtoResponse.IsSuccess = true; dtoResponse.MessageText = "查询操作成功!"; } } catch (Exception ex) { dtoResponse.IsSuccess = false; dtoResponse.MessageText = ex.Message; MsgService.logger.Error((object)ex); } return(dtoResponse); }
/// <summary> /// 执行微信消息处理 /// </summary> /// <param name="signature">微信消息签名</param> /// <param name="timestamp">时间戳</param> /// <param name="nonce">随机字符串</param> /// <param name="body">请求参数主体</param> /// <returns>响应结果的Xml</returns> public string Execute(string signature, string timestamp, string nonce, Stream body) { WeChatEncryptMsg wechatMsg = new WeChatEncryptMsg() { MsgSignature = signature, Timestamp = timestamp, Nonce = nonce, Body = body }; MsgRequest msgRequest = messageLinkUp.GetMsgRequestData(wechatMsg); string responseXml = "success"; if (msgRequest is SubscribeEvent) { responseXml = DealWithMsg(msgRequest as SubscribeEvent); } else if (msgRequest is ContentMsg) { responseXml = DealWithMsg(msgRequest as ContentMsg); } return(responseXml); }
public object Any(MsgRequest request) { DTOResponseLayUI dtoResponseLayUi = new DTOResponseLayUI(); MsgService msgService = new MsgService(); DTOResponse response; if (request.ACTION == 100) { response = msgService.GetList(request); } if (request.ACTION == OPAction.QUERYDETAIL1) { response = msgService.GetOplogList(request); } else { dtoResponseLayUi.code = -1; dtoResponseLayUi.msg = "未定义的操作类型:" + request.ACTION.ToString(); return((object)dtoResponseLayUi); } return(this.ConvertTo(response)); }
protected override Task OnMessageReceivedAsync(IWebSocketContext context, byte[] rxBuffer, IWebSocketReceiveResult rxResult) { var user_id = context.HttpContextId; TripleDESCryptoServiceProvider crypto; UserProfile profile; if (API.TripleDES.UserDict.TryGetValue(user_id, out profile)) { // ---------------------------------------- crypto = profile.crypto; MsgRequest req = new MsgRequest(crypto, rxBuffer); if (req.MsgId != profile.next_msg_id) { return(Task.CompletedTask); } // ---------------------------------------- if (req.Type == "str") { string content = API.Encoding.ByteArrayToString(req.Data); if (API.Keyboard.EnableAutoTyping) { API.Keyboard.SendString(content); } if (API.Keyboard.EnableClipboard) { API.Keyboard.SetClipboard(content); } } // ---------------------------------------- string pongEncrypted = req.GetResponse(profile); SendToOthersAsync(context, req.GetRepeat(profile)); return(SendAsync(context, pongEncrypted)); } else { // ---------------------------------------- byte[] bytes = API.RSA.RSADecrypt(rxBuffer); if (bytes == null) { return(Task.CompletedTask); } string[] splitted = API.Encoding.ByteArrayToString(bytes).Split(';'); string type = splitted[0], key = splitted[1], iv = splitted[2]; // ---------------------------------------- if (type != "reg" || key.Length != 32 || iv.Length != 16) { return(Task.CompletedTask); } crypto = API.TripleDES.createDESCrypto(key, iv); string next_msg_id = API.Util.GetRandomHexString(4); string helloRaw = "acc;" + user_id + ";" + next_msg_id; string helloEncrypted = API.Util.StringToEncryptHex(helloRaw, crypto); API.TripleDES.UserDict.Add(user_id, new UserProfile() { userid = user_id, crypto = crypto, next_msg_id = next_msg_id }); return(SendAsync(context, helloEncrypted)); } }
public static bool SendGameInvite(MsgRequest request) { return(PrxMessagingSendGameInvite(request)); }
public static bool SendMessage(MsgRequest request) { return(PrxMessagingSendMessage(request)); }
private static extern bool PrxMessagingSendGameInvite(MsgRequest msgRequest);
public Message(MsgRequest type, string msg) { this.type = type; this.msg = msg; }
public Message(MsgRequest type, int num) { this.type = type; this.num = num; }
public Message(MsgRequest type, string msg, double flt) { this.msg = msg; this.type = type; this.flt = flt; }
public Message(MsgRequest type, string msg, int num) { this.msg = msg; this.type = type; this.num = num; }
public Message(MsgRequest type) { this.type = type; }
/// <summary> /// 从请求中提取微信消息推送的请求数据 /// </summary> /// <param name="request">推送过来的请求</param> /// <returns>消息推送的请求数据</returns> public MsgRequest GetMsgRequestData(WeChatEncryptMsg requestEncryptMsg) { //微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次 //消息排重,推荐使用msgid排重;事件类型消息推荐使用FromUserName + CreateTime 排重 //服务器无法保证在五秒内处理并回复,直接回复success;直接回复空串,微信不再重试 //开发者在5秒内未回复任何内容,开发者回复了异常数据,微信系统提示“该公众号暂时无法提供服务,请稍后再试” if (weChatConfig == null) { throw new NullReferenceException("请使用构造MessageLinkUp(idOrAppId),或初始化Initialize(idOrAppId)"); } string xmlText;//消息 if (weChatConfig.EnCrypt) { //消息是密文,要解密后处理 xmlText = MessageDecrypt(requestEncryptMsg); } else { var stream = requestEncryptMsg.Body; //具体消息数据在请求流里面 StreamReader reader = new StreamReader(stream); xmlText = reader.ReadToEnd(); //消息 reader.Close(); } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlText); XmlNode rootNode = xmlDoc.SelectSingleNode("xml"); MsgRequest msgRequest = null; if (rootNode["MsgType"] == null) { msgRequest = new MsgRequest(); } else { string msgType = rootNode["MsgType"].InnerText; switch (msgType) { case "text": ContentMsg contentMsg = new ContentMsg(); if (rootNode["MsgId"] != null) { contentMsg.MsgId = Convert.ToInt64(rootNode["MsgId"].InnerText); } if (rootNode["Content"] != null) { contentMsg.Content = rootNode["Content"].InnerText; } msgRequest = contentMsg; break; case "image": PictureMsg pictureMsg = new PictureMsg(); if (rootNode["MsgId"] != null) { pictureMsg.MsgId = Convert.ToInt64(rootNode["MsgId"].InnerText); } if (rootNode["PicUrl"] != null) { pictureMsg.PicUrl = rootNode["PicUrl"].InnerText; } if (rootNode["MediaId"] != null) { pictureMsg.MediaId = rootNode["MediaId"].InnerText; } msgRequest = pictureMsg; break; case "voice": VoiceMsg voiceMsg = new VoiceMsg(); if (rootNode["MsgId"] != null) { voiceMsg.MsgId = Convert.ToInt64(rootNode["MsgId"].InnerText); } if (rootNode["MediaId"] != null) { voiceMsg.MediaId = rootNode["MediaId"].InnerText; } if (rootNode["Format"] != null) { voiceMsg.Format = rootNode["Format"].InnerText; } if (rootNode["Recognition"] != null) { voiceMsg.Recognition = rootNode["Recognition"].InnerText; } msgRequest = voiceMsg; break; case "video": VideoMsg videoMsg = new VideoMsg(); if (rootNode["MsgId"] != null) { videoMsg.MsgId = Convert.ToInt64(rootNode["MsgId"].InnerText); } if (rootNode["MediaId"] != null) { videoMsg.MediaId = rootNode["MediaId"].InnerText; } if (rootNode["ThumbMediaId"] != null) { videoMsg.ThumbMediaId = rootNode["ThumbMediaId"].InnerText; } msgRequest = videoMsg; break; case "shortvideo": ShortVideoMsg shortVideoMsg = new ShortVideoMsg(); if (rootNode["MsgId"] != null) { shortVideoMsg.MsgId = Convert.ToInt64(rootNode["MsgId"].InnerText); } if (rootNode["MediaId"] != null) { shortVideoMsg.MediaId = rootNode["MediaId"].InnerText; } if (rootNode["ThumbMediaId"] != null) { shortVideoMsg.ThumbMediaId = rootNode["ThumbMediaId"].InnerText; } msgRequest = shortVideoMsg; break; case "location": LocationMsg locationMsg = new LocationMsg(); if (rootNode["MsgId"] != null) { locationMsg.MsgId = Convert.ToInt64(rootNode["MsgId"].InnerText); } if (rootNode["Location_X"] != null) { locationMsg.Location_X = Convert.ToDouble(rootNode["Location_X"].InnerText); } if (rootNode["Location_Y"] != null) { locationMsg.Location_Y = Convert.ToDouble(rootNode["Location_Y"].InnerText); } if (rootNode["Scale"] != null) { locationMsg.Scale = int.Parse(rootNode["Scale"].InnerText); } if (rootNode["Label"] != null) { locationMsg.Label = rootNode["Label"].InnerText; } msgRequest = locationMsg; break; case "link": LinkMsg linkMsg = new LinkMsg(); if (rootNode["MsgId"] != null) { linkMsg.MsgId = Convert.ToInt64(rootNode["MsgId"].InnerText); } if (rootNode["Title"] != null) { linkMsg.Title = rootNode["Title"].InnerText; } if (rootNode["Description"] != null) { linkMsg.Description = rootNode["Description"].InnerText; } if (rootNode["Url"] != null) { linkMsg.Url = rootNode["Url"].InnerText; } msgRequest = linkMsg; break; case "event": if (rootNode["Event"] != null) { string eventStr = rootNode["Event"].InnerText.ToLower(); switch (eventStr) { case "subscribe": if (rootNode["EventKey"] != null) { string eventKey = rootNode["EventKey"].InnerText; if (eventKey.StartsWith("qrscene_")) { ScanSubscribeEvent scanSubscribeEvent = new ScanSubscribeEvent(); scanSubscribeEvent.EventKey = eventKey; if (rootNode["Ticket"] != null) { scanSubscribeEvent.Ticket = rootNode["Ticket"].InnerText; } msgRequest = scanSubscribeEvent; } } if (msgRequest == null) { msgRequest = new SubscribeEvent(); } break; case "unsubscribe": msgRequest = new UnSubscribeEvent(); break; case "scan": ScanEvent scanEvent = new ScanEvent(); if (rootNode["EventKey"] != null) { scanEvent.EventKey = rootNode["EventKey"].InnerText; } if (rootNode["Ticket"] != null) { scanEvent.Ticket = rootNode["Ticket"].InnerText; } msgRequest = scanEvent; break; case "location": LocationEvent locationEvent = new LocationEvent(); if (rootNode["Latitude"] != null) { locationEvent.Latitude = double.Parse(rootNode["Latitude"].InnerText); } if (rootNode["Longitude"] != null) { locationEvent.Longitude = double.Parse(rootNode["Longitude"].InnerText); } if (rootNode["Precision"] != null) { locationEvent.Precision = double.Parse(rootNode["Precision"].InnerText); } msgRequest = locationEvent; break; case "click": ClickEvent clickEvent = new ClickEvent(); if (rootNode["EventKey"] != null) { clickEvent.EventKey = rootNode["EventKey"].InnerText; } msgRequest = clickEvent; break; case "view": ViewEvent viewEvent = new ViewEvent(); if (rootNode["EventKey"] != null) { viewEvent.EventKey = rootNode["EventKey"].InnerText; } msgRequest = viewEvent; break; case "masssendjobfinish": //批量发送群发消息处理完成的消息通知 MassSendJobFinishEvent sendJobFinishEvent = new MassSendJobFinishEvent(); if (rootNode["MsgID"] != null) { sendJobFinishEvent.MsgID = int.Parse(rootNode["MsgID"].InnerText); } if (rootNode["Status"] != null) { sendJobFinishEvent.Status = Enum.Parse <MassSendJobStatus>(rootNode["Status"].InnerText); } if (rootNode["TotalCount"] != null) { sendJobFinishEvent.TotalCount = int.Parse(rootNode["TotalCount"].InnerText); } if (rootNode["FilterCount"] != null) { sendJobFinishEvent.FilterCount = int.Parse(rootNode["FilterCount"].InnerText); } if (rootNode["SentCount"] != null) { sendJobFinishEvent.SentCount = int.Parse(rootNode["SentCount"].InnerText); } if (rootNode["ErrorCount"] != null) { sendJobFinishEvent.ErrorCount = int.Parse(rootNode["ErrorCount"].InnerText); } XmlNodeList checkResultList = rootNode["CopyrightCheckResult"]?.ChildNodes; if (checkResultList != null && checkResultList.Count > 0) { XmlNode countNode = rootNode["CopyrightCheckResult"]["Count"]; XmlNode checkStateNode = rootNode["CopyrightCheckResult"]["CheckState"]; XmlNode resultListNode = rootNode["CopyrightCheckResult"]["ResultList"]; if (countNode != null) { sendJobFinishEvent.CopyrightCheckCount = int.Parse(countNode.InnerText); } else if (checkStateNode != null) { sendJobFinishEvent.CheckState = int.Parse(checkStateNode.InnerText); } else if (resultListNode != null) { sendJobFinishEvent.ResultList = new List <ArticleCheckResult>(); foreach (XmlNode itemNode in resultListNode) { sendJobFinishEvent.ResultList.Add(new ArticleCheckResult() { ArticleIdx = int.Parse(itemNode["ArticleIdx"].InnerText), UserDeclareState = int.Parse(itemNode["UserDeclareState"].InnerText), AuditState = int.Parse(itemNode["AuditState"].InnerText), OriginalArticleUrl = itemNode["OriginalArticleUrl"].InnerText, OriginalArticleType = int.Parse(itemNode["OriginalArticleType"].InnerText), CanReprint = bool.Parse(itemNode["CanReprint"].InnerText), NeedReplaceContent = bool.Parse(itemNode["NeedReplaceContent"].InnerText), NeedShowReprintSource = bool.Parse(itemNode["NeedShowReprintSource"].InnerText), }); } } } msgRequest = sendJobFinishEvent; break; case "templatesendjobfinish": TemplateSendJobFinishEvent templateSendFinishEvent = new TemplateSendJobFinishEvent(); if (rootNode["MsgID"] != null) { templateSendFinishEvent.MsgID = int.Parse(rootNode["MsgID"].InnerText); } if (rootNode["Status"] != null) { templateSendFinishEvent.Status = rootNode["Status"].InnerText; } break; default: msgRequest = new MsgRequest(); break; } } break; default: msgRequest = new MsgRequest(); break; } msgRequest.MsgType = msgType; } msgRequest.ToUserName = rootNode["ToUserName"].InnerText; msgRequest.FromUserName = rootNode["FromUserName"].InnerText; msgRequest.CreateTime = int.Parse(rootNode["CreateTime"].InnerText); return(msgRequest); }
private static extern bool PrxMessagingSendMessage(MsgRequest msgRequest);