/// <summary> /// 获取微信用户信息列表 /// </summary> /// <returns></returns> public List <WeixinUserInfoEntity> GetEntities() { var entities = new WeixinUserInfoDll().LoadEntities(p => p.OpenId != "").ToList(); var viewEntity = new WeixinUserInfoEntity(); return(entities.Select(p => viewEntity.GetViewModel(p)).ToList()); }
/// <summary> /// 获取渠道的扫描记录 /// </summary> /// <param name="channelId">渠道ID</param> /// <returns></returns> public List<ChannelScanDisplayEntity> GetChannelScanList(int channelId) { //获取渠道扫描记录 var entities = new ChannelScanDll().LoadEntities(p => p.ChannelId == channelId).ToList(); var viewEntity = new ChannelScanEntity(); var result = entities.Select(p => new ChannelScanDisplayEntity() { ScanEntity = viewEntity.GetViewModel(p) }).ToList(); //获取每条渠道扫描记录对应的微信用户信息 var openIds = result.Select(p=>p.ScanEntity.OpenId).ToArray(); //在渠道扫描记录中包含微信用户信息,便于前端页面显示 var userinfoEntities = new WeixinUserInfoDll().LoadEntities(p => openIds.Contains(p.OpenId)).ToList(); var userinfoViewEntity = new WeixinUserInfoEntity(); var userinfoViewEnities = userinfoEntities.Select(p => userinfoViewEntity.GetViewModel(p)).ToList(); result.ForEach(e=>{ e.UserInfoEntity = userinfoViewEnities.Where(p => p.OpenId == e.ScanEntity.OpenId).FirstOrDefault(); }); return result; }
/// <summary> /// 获取渠道的扫描记录 /// </summary> /// <param name="channelId">渠道ID</param> /// <returns></returns> public List <ChannelScanDisplayEntity> GetChannelScanList(int channelId) { //获取渠道扫描记录 var entities = new ChannelScanDll().LoadEntities(p => p.ChannelId == channelId).ToList(); var viewEntity = new ChannelScanEntity(); var result = entities.Select(p => new ChannelScanDisplayEntity() { ScanEntity = viewEntity.GetViewModel(p) }).ToList(); //获取每条渠道扫描记录对应的微信用户信息 var openIds = result.Select(p => p.ScanEntity.OpenId).ToArray(); //在渠道扫描记录中包含微信用户信息,便于前端页面显示 var userinfoEntities = new WeixinUserInfoDll().LoadEntities(p => openIds.Contains(p.OpenId)).ToList(); var userinfoViewEntity = new WeixinUserInfoEntity(); var userinfoViewEnities = userinfoEntities.Select(p => userinfoViewEntity.GetViewModel(p)).ToList(); result.ForEach(e => { e.UserInfoEntity = userinfoViewEnities.Where(p => p.OpenId == e.ScanEntity.OpenId).FirstOrDefault(); }); return(result); }
/// <summary> /// 获取微信用户信息列表 /// </summary> /// <returns></returns> public List<WeixinUserInfoEntity> GetEntities() { var entities = new WeixinUserInfoDll().LoadEntities(p => p.OpenId != "").ToList(); var viewEntity = new WeixinUserInfoEntity(); return entities.Select(p => viewEntity.GetViewModel(p)).ToList(); }
/// <summary> /// 微信用户信息同步方法 /// </summary> /// <returns></returns> private static void SynchronizeWeixinUser() { OpenIdResultJson weixinOpenIds = GetAllOpenIds(); //获取已同步到数据库中的微信用户的OpenId List <string> dataOpenList = new WeixinUserInfoDll().LoadEntities(p => p.ID > 0).Select(e => e.OpenId).ToList(); List <string> insertOpenIdList = new List <string>(); List <string> updateOpenIdList = new List <string>(); List <string> deleteOpenIdList = new List <string>(); //判断每个微信用户需要执行的操作 for (int index = 0; index < weixinOpenIds.data.openid.Count; index++) { var weixinOpenId = weixinOpenIds.data.openid[index]; var user = dataOpenList.Find(e => e == weixinOpenId); if (user == null) { //不存在数据库中的,插入 insertOpenIdList.Add(weixinOpenId); } else { //已存在数据库中的,修改 updateOpenIdList.Add(weixinOpenId); } } //已取消关注该微信公众号的,删除 insertOpenIdList.ForEach(e => dataOpenList.Remove(e)); updateOpenIdList.ForEach(e => dataOpenList.Remove(e)); deleteOpenIdList.AddRange(dataOpenList); //插入失败的openId列表,用于失败重试 List <string> failedInsert = new List <string>(); //修改失败的openId列表,用于失败重试 List <string> failedUpdate = new List <string>(); //插入新的微信用户 foreach (var openId in insertOpenIdList) { ExecuteWeixinUser(openId, new WeixinUserInfoDll().Insert, failedInsert); } //更新已有微信用户 foreach (var openId in updateOpenIdList) { ExecuteWeixinUser(openId, new WeixinUserInfoDll().Update, failedUpdate); } if (deleteOpenIdList.Count > 0) { //删除已取消关注该微信公众号的微信用户 foreach (var openId in deleteOpenIdList) { new WeixinUserInfoDll().DeleteByOpenId(openId); } } //插入失败,重试一次 if (failedInsert.Count > 0) { List <string> fail = new List <string>(); foreach (var openId in failedInsert) { ExecuteWeixinUser(openId, new WeixinUserInfoDll().Insert, fail); } } //更新失败,重试一次 if (failedUpdate.Count > 0) { List <string> fail = new List <string>(); foreach (var openId in failedInsert) { ExecuteWeixinUser(openId, new WeixinUserInfoDll().Update, fail); } } }
/// <summary> /// 微信用户信息同步方法 /// </summary> /// <returns></returns> private static void SynchronizeWeixinUser() { OpenIdResultJson weixinOpenIds = GetAllOpenIds(); //获取已同步到数据库中的微信用户的OpenId List<string> dataOpenList = new WeixinUserInfoDll().LoadEntities(p => p.ID > 0).Select(e => e.OpenId).ToList(); List<string> insertOpenIdList = new List<string>(); List<string> updateOpenIdList = new List<string>(); List<string> deleteOpenIdList = new List<string>(); //判断每个微信用户需要执行的操作 for (int index = 0; index < weixinOpenIds.data.openid.Count; index++) { var weixinOpenId = weixinOpenIds.data.openid[index]; var user = dataOpenList.Find(e => e == weixinOpenId); if (user == null) { //不存在数据库中的,插入 insertOpenIdList.Add(weixinOpenId); } else { //已存在数据库中的,修改 updateOpenIdList.Add(weixinOpenId); } } //已取消关注该微信公众号的,删除 insertOpenIdList.ForEach(e => dataOpenList.Remove(e)); updateOpenIdList.ForEach(e => dataOpenList.Remove(e)); deleteOpenIdList.AddRange(dataOpenList); //插入失败的openId列表,用于失败重试 List<string> failedInsert = new List<string>(); //修改失败的openId列表,用于失败重试 List<string> failedUpdate = new List<string>(); //插入新的微信用户 foreach (var openId in insertOpenIdList) { ExecuteWeixinUser(openId, new WeixinUserInfoDll().Insert, failedInsert); } //更新已有微信用户 foreach (var openId in updateOpenIdList) { ExecuteWeixinUser(openId, new WeixinUserInfoDll().Update, failedUpdate); } if (deleteOpenIdList.Count > 0) { //删除已取消关注该微信公众号的微信用户 foreach (var openId in deleteOpenIdList) { new WeixinUserInfoDll().DeleteByOpenId(openId); } } //插入失败,重试一次 if (failedInsert.Count > 0) { List<string> fail = new List<string>(); foreach (var openId in failedInsert) { ExecuteWeixinUser(openId, new WeixinUserInfoDll().Insert, fail); } } //更新失败,重试一次 if (failedUpdate.Count > 0) { List<string> fail = new List<string>(); foreach (var openId in failedInsert) { ExecuteWeixinUser(openId, new WeixinUserInfoDll().Update, fail); } } }