/// <summary> /// 获取用户二维码推广活动二维码图片地址 /// </summary> /// <param name="webApplicationId">微信关联程序Id</param> /// <param name="openId">微信用户OpenId</param> /// <returns></returns> public string GetQRCodePromotionActivityImageUrl(Guid webApplicationId, string openId) { if (this.IValidatorTool.IsEmpty(openId)) { throw new BaseException("openId不能为空"); } if (webApplicationId == Guid.Empty) { throw new BaseException("weiXinApplicationId不能为空"); } var weiXinQRCodeAccount = this.FirstOrDefault( Where.Create() .Eq("WebApplicationId", webApplicationId) .Eq("OpenId", openId) ); if (weiXinQRCodeAccount == null) { return(string.Empty); } var resultData = string.Empty; WeiXinQRCodeDto weiXinQRCode = null; if (weiXinQRCodeAccount.QRCodeId.HasValue) { var weiXinQRCodeResult = this.ServiceContext.IWeiXinQRCodeService.FindById(weiXinQRCodeAccount.QRCodeId.Value); if (weiXinQRCodeResult != null) { weiXinQRCode = weiXinQRCodeResult; } } if (weiXinQRCode != null && weiXinQRCode.IsExpire == false) { resultData = _WeiXinAPIContext.IQRCodeAPI.GetWeiXinQRCodeImageUrl(weiXinQRCode.Ticket); } return(resultData); }
public string CreateOrGetQRCodePromotionActivityImageUrl(Guid webApplicationId, string openId) { if (this.IValidatorTool.IsEmpty(openId)) { throw new BaseException("openId不能为空"); } if (webApplicationId == Guid.Empty) { throw new BaseException("weiXinApplicationId不能为空"); } var weiXinQRCodeAccount = this.CreateOrGetAccount(webApplicationId, openId); var resultData = this.GetQRCodePromotionActivityImageUrl(webApplicationId, openId); if (!string.IsNullOrEmpty(resultData)) { return(resultData); } WeiXinQRCodeDto weiXinQRCode = null; if (weiXinQRCodeAccount.QRCodeId.HasValue) { var weiXinQRCodeResult = this.ServiceContext.IWeiXinQRCodeService.FindById(weiXinQRCodeAccount.QRCodeId.Value); if (weiXinQRCodeResult != null) { weiXinQRCode = weiXinQRCodeResult; } } var accessToken = this.ServiceContext.ICWXWeiXinApplicationService.GetAccessToken(webApplicationId); var config = this.ServiceContext.IWeiXinQRCodePromotionActivityConfigService.CreateOrGet(webApplicationId); if (config == null) { throw new BaseException(string.Format("ID({0})微信关联程序配置数据读取失败", webApplicationId)); } var sceneId = (int)this.ServiceContext.IComMaxIdService.CreateNext(webApplicationId); var createTemporaryQRCodePostDataDtoResult = _WeiXinAPIContext .IQRCodeAPI.CreateTemporaryQRCodePostDataDto(accessToken, config.NewTemporaryQRCodeImageExpireInSeconds, sceneId); var getQRCodeTicketResult = _WeiXinAPIContext.IQRCodeAPI.GetQRCodeTicket(accessToken, createTemporaryQRCodePostDataDtoResult); resultData = _WeiXinAPIContext.IQRCodeAPI.GetWeiXinQRCodeImageUrl(getQRCodeTicketResult); var isNewWeiXinQRCode = false; if (weiXinQRCode == null) { isNewWeiXinQRCode = true; weiXinQRCode = new WeiXinQRCodeDto() { ID = Guid.NewGuid() }; } weiXinQRCode.ActionName = config.QRCodeActionName; weiXinQRCode.ExpireSeconds = config.IsTemporary ? config.NewTemporaryQRCodeImageExpireInSeconds : -1; weiXinQRCode.Ticket = getQRCodeTicketResult.ticket; weiXinQRCode.ID = Guid.NewGuid(); weiXinQRCode.CreatedDate = DateTime.Now; weiXinQRCode.QRCodeUrl = getQRCodeTicketResult.url; weiXinQRCode.SceneId = sceneId; weiXinQRCode.SceneStr = null; weiXinQRCode.WebApplicationId = webApplicationId; this.ServiceContext.IWeiXinQRCodeService.InsertOrUpdate(weiXinQRCode); weiXinQRCodeAccount.QRCodeId = weiXinQRCode.ID; if (isNewWeiXinQRCode) { this.Update(weiXinQRCodeAccount); } return(resultData); }