public CleanController(WechatContext context, HttpProxy http, ILoggerFactory factory) { _context = context; _http = http; _logFactory = factory; _log = factory.CreateLogger("app"); }
private void init() { var builder = new DbContextOptionsBuilder <WechatContext>(); builder.UseSqlServer(config.GetConnectionString("WechatContext")); _db = new WechatContext(builder.Options); _http = new HttpProxy(); }
public static CleanTask CreateTask(HttpProxy proxy, Account account, WechatContext context) { var now = DateTime.Now; var url = Urls.SessionUrl + TimeTic(now); var result = proxy.Get(url); var sessionId = result.Split(new[] { "\"" }, StringSplitOptions.None)[1]; var task = new CleanTask { Id = sessionId, Creator = account, CreateTime = now }; context.Add(task); context.SaveChanges(); return(task); }
public ActionResult PostAsync(WechatMsgRequestModel model) { if (model.RequestContent == null) { using (var reader = new StreamReader(Request.InputStream)) { Logger.Debug($"Request.InputStream Length:{Request.InputStream.Length}"); model.RequestContent = reader.ReadToEnd(); Logger.Debug($"RequestContent from Request.InputStream:{model.RequestContent}"); } } if (string.IsNullOrEmpty(model.RequestContent)) { return(Content("RequestContent 为空")); } var context = new WechatContext(model); return(Wechat(context)); }
public ActionResult PostAsync(WechatMsgRequestModel model) { //自定义MessageHandler,对微信请求的详细判断操作都在这里面。 //var postModel = new PostModel //{ // Nonce = model.Nonce, // Timestamp = model.Timestamp, // Signature = model.Signature, // Msg_Signature = model.Msg_Signature, // AppId = WeChatConsts.AppId, // EncodingAESKey = WeChatConsts.AESKey, // Token = WeChatConsts.Token, //}; if (model.RequestContent == null) { using (var reader = new StreamReader(Request.InputStream)) { logger.Debug($"Request.InputStream Length:{Request.InputStream.Length}"); model.RequestContent = reader.ReadToEnd(); logger.Debug($"RequestContent from Request.InputStream:{model.RequestContent}"); } } if (String.IsNullOrEmpty(model.RequestContent)) { return(Content("RequestContent 为空")); } //var doc = System.Xml.Linq.XDocument.Parse(model.RequestContent); //logger.Debug("doc:" + doc.ToString()); //var messageHandler = new WechatMsgHandler(doc, postModel); //#region 设置消息去重 ///* 如果需要添加消息去重功能,只需打开OmitRepeatedMessage功能,SDK会自动处理。 // * 收到重复消息通常是因为微信服务器没有及时收到响应,会持续发送2-5条不等的相同内容的RequestMessage // */ //messageHandler.OmitRepeatedMessage = true;//默认已经开启,此处仅作为演示,也可以设置为false在本次请求中停用此功能 //#endregion //logger.Debug("收到微信消息:" + Common.ConverterHelper.ObjectToJson(messageHandler.RequestDocument)); //messageHandler.Execute(); //logger.Debug("返回的消息:" + Common.ConverterHelper.ObjectToJson(messageHandler.ResponseDocument)); //return Wechat(messageHandler); var context = new WechatContext(model); return(Wechat(context)); }
public AdminController(WechatContext db) { _db = db; }
public ContentResult Wechat(WechatContext wechatContext) { return(Content(wechatContext.GetResponse())); }
/// <summary> /// Get the wechat users and save to database. /// </summary> /// <returns></returns> public static bool GetWechatUserToDB() { string token = AccessTokenContainer.TryGetToken(corpID, corpSecret); WechatContext context = new WechatContext(); //todo: 清空现有用户数据 //获取微信企业号内的用户架构信息 Dictionary <string, List <Tag> > _userTags = new Dictionary <string, List <Tag> >(); Dictionary <int, List <Tag> > _partyTags = new Dictionary <int, List <Tag> >(); Dictionary <string, User> Users = new Dictionary <string, User>(); //查找所有Tag并插入数据库 GetTagListResult tagList = MailListApi.GetTagList(token); if (tagList != null && tagList.taglist != null && tagList.taglist.Count > 0) { foreach (var tag in tagList.taglist) { int tagId = -1; if (Int32.TryParse(tag.tagid, out tagId)) { Tag tempTag = new Tag() { TagId = tagId, TagName = tag.tagname }; GetTagMemberResult tagMemberResult = MailListApi.GetTagMember(token, tagId); if (tagMemberResult != null && tagMemberResult.partylist != null && tagMemberResult.partylist.Length > 0) { foreach (int party in tagMemberResult.partylist) { if (!_partyTags.ContainsKey(party)) { _partyTags[party] = new List <Tag>(); } _partyTags[party].Add(tempTag); } } if (tagMemberResult != null && tagMemberResult.userlist != null && tagMemberResult.userlist.Count > 0) { foreach (var tagUser in tagMemberResult.userlist) { if (!_userTags.ContainsKey(tagUser.userid)) { _userTags[tagUser.userid] = new List <Tag>(); } _userTags[tagUser.userid].Add(tempTag); } } context.Tags.Add(tempTag); } } context.SaveChanges(); } //查找所有部门并插入数据库 GetDepartmentListResult departmentList = MailListApi.GetDepartmentList(token); if (departmentList != null && departmentList.department != null) { foreach (var party in departmentList.department) { var tempParty = new Party() { PartyId = party.id, Name = party.name, Order = party.order, ParentPartyId = party.parentid }; //此处需要查询所有的Tag保存到库中 if (_partyTags.ContainsKey(party.id)) { tempParty.PartyTags = _partyTags[party.id].Select(f => new PartyTag() { PartyId = tempParty.PartyId, TagId = f.TagId }).ToList(); } //根据部门查找所有用户并存入缓存 GetDepartmentMemberInfoResult memberInfos = MailListApi.GetDepartmentMemberInfo(token, party.id, 1, 0); if (memberInfos != null && memberInfos.userlist != null && memberInfos.userlist.Count > 0) { foreach (var member in memberInfos.userlist) { if (!Users.ContainsKey(member.userid)) { Users[member.userid] = new User() { Avatar = member.avatar, Email = member.email, Gender = member.gender, Mobile = member.mobile, Name = member.name, Position = member.position, Status = member.status, UserId = member.userid, Weixinid = member.weixinid, UserTags = (_userTags.ContainsKey(member.userid) && _userTags[member.userid].Count > 0) ? _userTags[member.userid].Select(f => new UserTag() { UserId = member.userid, TagId = f.TagId }).ToList() : null }; } Users[member.userid].UserPartys.Add(new UserParty() { PartyId = tempParty.PartyId, UserId = member.userid }); } } context.Partys.Add(tempParty); } context.SaveChanges(); } if (Users != null && Users.Count > 0) { foreach (var user in Users.Values) { context.Users.Add(user); } context.SaveChanges(); } return(true); }