/// <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("异常!!!!"); //} }
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); //} } } }