/// <summary> /// 发放优惠积分, /// </summary> /// <param name="pkid"></param> /// <returns></returns> public async Task <OperationResult <BigBrandRewardPoolModel> > CreatePageage(int pkid) { var page = new BigBrandRewardPoolModel(); foreach (var item in this.entity.ItemPools) { if (item.PartItem?.Where(_ => _.PKID == pkid)?.Count() > 0) { page = item.PartItem?.Where(_ => _.PKID == pkid)?.FirstOrDefault(); } } if (this.entity.BigBrandType == 2) { //积分抽奖 using (var client = new Tuhu.Service.Member.UserIntegralClient()) { ///规则guid var integralRuleId = new Guid("9A40D2E0-3085-40F1-9CCF-A5AC2A0ABAD2"); Service.Member.Models.UserIntegralDetailModel integralDetailModel = new Service.Member.Models.UserIntegralDetailModel(); integralDetailModel.TransactionIntegral = this.entity.NeedIntegral.Value; integralDetailModel.TransactionChannel = "H5"; integralDetailModel.Versions = "1.0.0"; integralDetailModel.TransactionRemark = "大翻盘积分抽奖"; integralDetailModel.IntegralRuleID = integralRuleId; var invokeResult = await client.UserIntegralChangeByUserIDAsync(this.UserId, integralDetailModel, null, 0); //先扣积分 invokeResult.ThrowIfException(true); if (invokeResult.Success) { var response = (await CreatePackageInfo(page)); return(response.Success ? OperationResult.FromResult(page) : OperationResult.FromError <BigBrandRewardPoolModel>(response.ErrorCode, response.ErrorMessage)); } else { return(null); } } } else { var response = (await CreatePackageInfo(page)); return(response.Success ? OperationResult.FromResult(page) : OperationResult.FromError <BigBrandRewardPoolModel>(response.ErrorCode, response.ErrorMessage)); } }
private async Task <OperationResult <bool> > CreatePackageInfo(BigBrandRewardPoolModel page) { List <BigBrandRealLogModel> realList = new List <BigBrandRealLogModel>(); Guid tip = Guid.NewGuid(); if (page.PartItem == null) { throw new Exception("奖励礼包为空"); } foreach (var info in page.PartItem) { if (page.RewardType == 1) { //发放优惠券 if (this.UserId != Guid.Empty) { using (var client = new Tuhu.Service.Member.PromotionClient()) { var result = await client.CreatePromotionNewAsync(new CreatePromotionModel() { Author = this.UserId.ToString(), GetRuleGUID = Guid.Parse(info.CouponGuid), UserID = this.UserId, Channel = this.Channel + "大翻盘", DeviceID = this.DeviceId, Operation = "大翻盘抽奖", Referer = this.Refer, IssueChannle = "幸运大翻牌", IssueChannleId = this.entity.HashKeyValue, Issuer = string.IsNullOrWhiteSpace(this.entity.UpdateUserName) == true ? this.entity.CreateUserName : this.entity.UpdateUserName }); result.ThrowIfException(true); if (result.Result.IsSuccess) { page.PromotionCodePKIDs += result.Result?.PromotionId.ToString() + ","; } else { return(OperationResult.FromError <bool>(result.Result.ErrorCode.ToString(), result.Result.ErrorMessage)); } } } else if (!string.IsNullOrEmpty(this.UnionId)) //如果用户id为空,根据unionid发券 { using (var client = new Tuhu.Service.Member.ThirdPartyPromotionClient()) { var result = await client.InsertUserCardInfoAsync(new UserCardInfo() { Channel = this.Channel + "大翻盘", CreatedTime = DateTime.Now, DeviceID = this.DeviceId, EventTime = DateTime.Now, GetRuleId = Guid.Parse(info.CouponGuid), IssueChannle = "幸运大翻盘", UnionId = this.UnionId, OpenId = this.OpenId, IssueChannleId = this.entity.HashKeyValue, Issuer = string.IsNullOrWhiteSpace(this.entity.UpdateUserName) == true ? this.entity.CreateUserName : this.entity.UpdateUserName, UpdatedTime = DateTime.Now }); if (!result.Success) { return(OperationResult.FromError <bool>(result.ErrorCode.ToString(), result.ErrorMessage)); } } } } else if (page.RewardType == 2) { //积分抽奖 using (var client = new Tuhu.Service.Member.UserIntegralClient()) { ///规则guid var integralRuleId = new Guid("04E70162-9588-4329-BCED-E149E22D7DCE"); Service.Member.Models.UserIntegralDetailModel integralDetailModel = new Service.Member.Models.UserIntegralDetailModel(); integralDetailModel.TransactionIntegral = info.Integral.Value; integralDetailModel.TransactionChannel = "H5"; integralDetailModel.Versions = "1.0.0"; integralDetailModel.TransactionRemark = "大翻盘积分抽奖"; integralDetailModel.IntegralRuleID = integralRuleId; var result = await client.UserIntegralChangeByUserIDAsync(this.UserId, integralDetailModel, null, 0); result.ThrowIfException(true); } } else if (page.RewardType == 4) { this.RealTip = tip; BigBrandRealLogModel real = new BigBrandRealLogModel() { CreateDateTime = DateTime.Now, FKBigBrandID = this.entity.PKID, FKBigBrandPoolID = page.PKID, Prize = info.RealProductName, Tip = tip, UserId = this.UserId, LastUpdateDateTime = DateTime.Now }; realList.Add(real); } else if (page.RewardType == 5)//抽中的是微信红包,给用户发微信红包 { //using (var client = new Pay.PayClient()) //{ // var sendResponse = await client.Wx_SendRedBagAsync(new Pay.Models.WxSendRedBagRequest() // { // OpenId = this.OpenId, // Channel = this.Channel + "大翻盘", // ActName = "大翻盘抽奖", // Remark = this.entity.HashKeyValue, // Wishing = "新年大吉", // Money = (info.WxRedBagAmount ?? 0) * 100 // }); // sendResponse.ThrowIfException(true); //} //发红包改为发消息队列,从消息队列里慢慢发 TuhuNotification.SendNotification("notification.WxSendRedBag", new Pay.Models.WxSendRedBagRequest() { OpenId = this.OpenId, Channel = this.Channel + "大翻盘", ActName = "大翻盘抽奖", Remark = this.entity.HashKeyValue, Wishing = "新年大吉", Money = (info.WxRedBagAmount ?? 0) * 100 }); } else { //空奖 } } if (page.RewardType == 4) { //实物奖励 DalBigBrand.AddBigBrandRealLog(realList); } if (this.entity.BigBrandType == 1) { this.TimeCount -= 1; } if (this.entity.BigBrandType == 3) { this.TimeCount -= 1; await ActivityManager.UpdateLuckyWheelUserlotteryCountAsync(this.UserId, Guid.Empty, this.entity.HashKeyValue); } return(OperationResult.FromResult(true)); }