Exemple #1
0
        /// <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;
 }
Exemple #3
0
        /// <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();
 }
Exemple #5
0
        /// <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);
                }
            }
        }