/// <summary> /// 同步微信用户 /// </summary> /// <param name="WeixinOpenId"></param> /// <param name="userInfo"></param> /// <param name="config"></param> public static void SycUserFromWeixinMP(string WeixinOpenId, ref WechatMPUser userInfo, SysWechatConfig config) { Logger.Debug("SycUserFromWeixin"); Innocellence.Weixin.MP.AdvancedAPIs.User.BatchGetUserInfoData user = new Innocellence.Weixin.MP.AdvancedAPIs.User.BatchGetUserInfoData { openid = WeixinOpenId, lang = Language.zh_CN.ToString() }; var result = Innocellence.Weixin.MP.AdvancedAPIs.UserApi.BatchGetUserInfo(config.WeixinAppId, config.WeixinCorpSecret, new List <Innocellence.Weixin.MP.AdvancedAPIs.User.BatchGetUserInfoData> { user }); Logger.Debug("SycUserFromWeixin result"); if (result != null && result.user_info_list != null) { Logger.Debug("result count :{0}", result.user_info_list.Count); var objuserInfo = result.user_info_list.Select(a => WechatMPUserView.ConvertWeChatUserToMpUser(a, config.AccountManageId.Value, config.Id)).ToList().FirstOrDefault(); if (userInfo == null) { userInfo = objuserInfo; } if (objuserInfo != null) { Logger.Debug("SycUserFromWeixin userInfo: " + userInfo.OpenId + userInfo.NickName); objuserInfo.AccountManageId = config.AccountManageId; if (objuserInfo.SubScribe == 0) //未关注 { objuserInfo.Id = userInfo.Id; objuserInfo.IsCanceled = true; userInfo = objuserInfo; } else { objuserInfo.Id = userInfo.Id; } Logger.Debug("SycUserFromWeixin userInfo id: {0}, SubScribe: {1}", objuserInfo.Id, objuserInfo.SubScribe); IWechatMPUserService wechatMPUserService = EngineContext.Current.Resolve <IWechatMPUserService>(); wechatMPUserService.RegistToWeiXin(objuserInfo); Logger.Debug("SycUserFromWeixin userInfo updated."); } else { Logger.Debug("SycUserFromWeixin Error objuserInfo=null.{0}", WeixinOpenId); } } }
private WechatMPUser ConvertToWechatMPUser(WechatMPUserView user) { return(new WechatMPUser { Id = user.Id, City = user.City, Province = user.Province, Country = user.Country, GroupId = user.GroupId, HeadImgUrl = user.HeadImgUrl, IsCanceled = user.IsCanceled, Language = user.Language, NickName = user.NickName, OpenId = user.OpenId, Remark = user.Remark, Sex = user.Sex, SubScribe = user.SubScribe, SubScribeTime = user.SubScribeTime, TagIdList = user.TagIdList, UnionId = user.UnionId, AccountManageId = user.AccountManageId, }); }
/// <summary> /// 根据指定id, 返回该id 对应的user的前后各10条数据 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult GetUserHistory(int id, int appId, int pageSize, int pageNumber, bool hiddenAutoReply) { try { _Logger.Debug("get user {0}'s history in {1} between {2} and {3}", id, appId, pageSize, pageNumber); var list = _requestMessageLogService.GetRecords <WechatUserRequestMessageLogView>(id, appId, pageSize, pageNumber); foreach (var a in list) { if (a.ContentType == 106) { //var a.Content Regex listRegex = new Regex("\"Url\":\"((http[s]?://.*?)/.*?wxdetail/(\\d+).*?)\"", RegexOptions.Multiline | RegexOptions.IgnoreCase); //得到匹配的数据集合 MatchCollection mc = listRegex.Matches(a.Content); foreach (Match mt in mc) { a.Content = a.Content.Replace(mt.Groups[1].Value, string.Format("{0}/WechatMain/Message/GetNews?id={1}&subid=0&code=0", mt.Groups[2].Value, mt.Groups[3].Value)); } } } var accountManage = WeChatCommonService.GetWeChatConfigByID(appId); var config = WeChatCommonService.GetWeChatConfigByID(appId); if (accountManage != null) { //企业号 if (accountManage.IsCorp.HasValue && accountManage.IsCorp.Value) { SysAddressBookMember user = null; list.ForEach(r => { r.IsCrop = true; if (user == null) { user = _addressBookService.GetMemberByUserId(r.UserID, true); } if (user != null) { //此处需要获取user的其他信息,因此头像直接从user中获取即可,可能会导致两处头像不一致 r.UserName = user.UserName; r.PhotoUrl = user.Avatar; r.Mobile = user.Mobile; r.EmployeeNo = string.IsNullOrEmpty(user.EmployeeNo) ? string.Empty : user.EmployeeNo; List <int> departMent = JsonConvert.DeserializeObject <int[]>(user.Department).ToList(); string[] departMents = WeChatCommonService.lstDepartment(config.AccountManageId.Value).Where(d => departMent.Contains(d.id)).Select(d => d.name).ToArray(); r.Department = string.Join(",", departMents); r.AppLogo = config.CoverUrl; } }); } else //服务号 { WechatMPUserView user = null; list.ForEach(r => { r.IsCrop = false; if (user == null) { user = _wechatMPUserService.GetUserByOpenId(r.UserID); } if (user != null) { r.PhotoUrl = user.HeadImgUrl; } r.AppLogo = config.CoverUrl; }); } } //if (hiddenAutoReply) //{ // list.RemoveAll(h => h.IsAutoReply == true); //} return(Json( new { list = list, isFirst = pageNumber <0 ? pageSize> list.Count: false, isLast = pageNumber > 0 ? pageSize > list.Count : false, }, JsonRequestBehavior.AllowGet)); } catch (Exception e) { _Logger.Error(e); throw; } }