示例#1
0
        /// <summary>
        /// 带店铺场景值的关注
        /// </summary>
        /// <returns></returns>
        private async Task SubscribeWithScene(string openId, string nickName, string headImgUrl, int?tenantId, string scene, string ticket)
        {
            string[] scenes = new string[0];
            scene  = scene.Substring(8);
            scenes = scene.Split("_");

            //Logger.InfoFormat("保存关注场景值id:{0}", scene);
            //Logger.InfoFormat("保存关注场景值数组:{0}", scenes);
            //Logger.InfoFormat("保存关注ticket:{0}", ticket);

            var user = await _wechatuserRepository.GetAll().Where(w => w.OpenId == openId).FirstOrDefaultAsync();//GetWeChatUserAsync(openId, tenantId);

            if (user != null)
            {
                user.NickName      = nickName;
                user.UserType      = UserTypeEnum.消费者;
                user.UserId        = null;
                user.UserName      = user.NickName;
                user.BindTime      = DateTime.Now;
                user.HeadImgUrl    = headImgUrl;
                user.AttentionTime = DateTime.Now;                     // 第一次关注时间
                if (string.IsNullOrEmpty(user.SourceId))               //关注来源
                {
                    user.SourceType = (SceneType)int.Parse(scenes[0]); //关注来源类型
                    user.SourceId   = scenes[1];                       //关注来源Id
                    user.Ticket     = ticket;                          //关注二维码票据
                }
                await _wechatuserRepository.UpdateAsync(user);
            }
            else
            {
                user               = new WeChatUser();
                user.NickName      = nickName;
                user.OpenId        = openId;
                user.TenantId      = tenantId;
                user.UserType      = UserTypeEnum.消费者;
                user.UserName      = nickName;
                user.HeadImgUrl    = headImgUrl;
                user.AttentionTime = DateTime.Now;                    // 最后一次关注时间
                user.IntegralTotal = 0;                               //积分默认为0
                user.BindStatus    = BindStatusEnum.未绑定;
                user.SourceType    = (SceneType)int.Parse(scenes[0]); //关注来源类型
                user.SourceId      = scenes[1];                       //关注来源Id
                user.Ticket        = ticket;                          //关注二维码票据
                await _wechatuserRepository.InsertAsync(user);
            }
            SceneType stype = (SceneType)int.Parse(scenes[0]);
            //关注之后新增推广日志
            var qrCodeLog = new QrCodeLog();

            qrCodeLog.AttentionTime = DateTime.Now;
            qrCodeLog.OpenId        = openId;
            qrCodeLog.SourceId      = scenes[1];
            qrCodeLog.SourceType    = stype;
            qrCodeLog.Ticket        = ticket;
            await _qrcodelogRepository.InsertAsync(qrCodeLog);

            if (stype == SceneType.店铺)
            {
                Logger.Info("进入店铺粉丝更新");
                var exists = _qrcodelogRepository.GetAll().Any(q => q.SourceId == scenes[1] && q.OpenId == openId);
                if (!exists)
                {
                    var shop = await _shopRepository.GetAsync(new Guid(scenes[1]));

                    shop.FansNum++;
                    Logger.InfoFormat("店铺粉丝数:{0}", shop.FansNum);
                }
            }
            //await CurrentUnitOfWork.SaveChangesAsync();
            //await SaveLogAndFans(openId, scenes[1], int.Parse(scenes[0]), ticket, tenantId);
            ////关注后店铺粉丝统计(方法执行的先后顺序)
            //using (CurrentUnitOfWork.SetTenantId(tenantId))
            //{
            //    //Logger.Info("场景值存在");
            //    //Logger.InfoFormat("场景值类型:{0}", scenes[0]);

            //    ////关注之后新增推广日志
            //    //var qrCodeLog = new QrCodeLog();
            //    //qrCodeLog.AttentionTime = DateTime.Now;
            //    //qrCodeLog.OpenId = openId;
            //    //qrCodeLog.SourceId = scenes[1];
            //    //qrCodeLog.SourceType = (SceneType)int.Parse(scenes[0]);
            //    //qrCodeLog.Ticket = ticket;
            //    //await _qrcodelogRepository.InsertAsync(qrCodeLog);

            //    //if ((SceneType)int.Parse(scenes[0]) == SceneType.店铺)
            //    //{
            //    //    Logger.Info("进入店铺粉丝更新");
            //    //    var exists = _qrcodelogRepository.GetAll().Any(q => q.SourceId == scenes[1] && q.OpenId == user.OpenId);
            //    //    if (!exists)
            //    //    {
            //    //        var shop = await _shopRepository.GetAsync(new Guid(scenes[1]));
            //    //        shop.FansNum++;
            //    //        Logger.InfoFormat("店铺粉丝数:{0}", shop.FansNum);
            //    //    }
            //    //}
            //    //await CurrentUnitOfWork.SaveChangesAsync();
            //    throw new Exception("异常!!!!");
            //}
        }
示例#2
0
        public async Task SubscribeAsync(string openId, string nickName, string headImgUrl, int?tenantId, string scene, string ticket)
        {
            using (_unitOfWorkManager.Current.SetTenantId(tenantId))
            {
                string[] scenes = { };
                if (!string.IsNullOrEmpty(scene))
                {
                    scene  = scene.Substring(8);
                    scenes = scene.Split("_");
                }
                var user = await GetWeChatUserAsync(openId, tenantId);

                Logger.InfoFormat("保存关注场景值id:{0}", scene);
                Logger.InfoFormat("保存关注场景值数组:{0}", scenes);
                Logger.InfoFormat("保存关注ticket:{0}", ticket);

                //关注之后新增推广日志
                var qrCodeLog = new QrCodeLog();
                qrCodeLog.AttentionTime = DateTime.Now;
                qrCodeLog.OpenId        = openId;
                qrCodeLog.SourceId      = scenes.Length > 0 ? scenes[1] : "";
                if (scenes.Length > 0)
                {
                    qrCodeLog.SourceType = (SceneType)int.Parse(scenes[0]);
                }
                qrCodeLog.Ticket = ticket;
                _qrcodelogRepository.Insert(qrCodeLog);

                await CurrentUnitOfWork.SaveChangesAsync();

                if (user != null)
                {
                    user.NickName = nickName;
                    user.UserType = UserTypeEnum.消费者;
                    //user.BindStatus = WechatEnums.BindStatusEnum.未绑定;
                    user.UserId        = null;
                    user.UserName      = user.NickName;
                    user.BindTime      = DateTime.Now;
                    user.HeadImgUrl    = headImgUrl;
                    user.AttentionTime = DateTime.Now;                            // 第一次关注时间
                    if (string.IsNullOrEmpty(user.SourceId) && scenes.Length > 0) //关注来源
                    {
                        user.SourceType = (SceneType)int.Parse(scenes[0]);        //关注来源类型
                        user.SourceId   = scenes[1];                              //关注来源Id
                        user.Ticket     = ticket;                                 //关注二维码票据
                    }
                    await _wechatuserRepository.UpdateAsync(user);
                }
                else
                {
                    user               = new WeChatUser();
                    user.NickName      = nickName;
                    user.OpenId        = openId;
                    user.TenantId      = tenantId;
                    user.UserType      = UserTypeEnum.消费者;
                    user.UserName      = nickName;
                    user.HeadImgUrl    = headImgUrl;
                    user.AttentionTime = DateTime.Now; // 最后一次关注时间
                    user.IntegralTotal = 0;            //积分默认为0
                    user.BindStatus    = BindStatusEnum.未绑定;
                    if (scenes.Length > 0)
                    {
                        user.SourceType = (SceneType)int.Parse(scenes[0]); //关注来源类型
                        user.SourceId   = scenes[1];                       //关注来源Id
                    }
                    user.Ticket = ticket;                                  //关注二维码票据
                    await _wechatuserRepository.InsertAsync(user);
                }

                //关注后店铺粉丝统计(方法执行的先后顺序)
                if (scenes.Length > 0 && (SceneType)int.Parse(scenes[0]) == SceneType.店铺)
                {
                    var openIdList = _qrcodelogRepository.GetAll().Where(q => q.SourceId == scenes[1]).Select(q => q.OpenId).Distinct().ToList();
                    var fansNum    = _wechatuserRepository.GetAll().Where(w => openIdList.Contains(w.OpenId)).Count();

                    Logger.InfoFormat("关注日志是否存在:{0}", fansNum);
                    //if (!isExsit)
                    //{
                    var shop = _shopRepository.GetAll().Where(s => s.Id == new Guid(scenes[1])).FirstOrDefault();
                    shop.FansNum = fansNum;//店铺初始化为0
                    //await _shopRepository.UpdateAsync(shop);
                    //}
                }
            }
        }