/// <summary> /// 作废优惠券 /// </summary> /// <returns></returns> private async Task <bool> InvalidatedPromotion() { var result = true; var userCreatePromotionTask = await _gfDal.SelectGFBankPromotionTaskByMobile(_task.Mobile); var taskPromotionIds = userCreatePromotionTask.Where(s => string.Equals(s.BusinessType, nameof(GFBusinessType.Activate))) .FirstOrDefault(s => s.RuleGuid == _task.RuleGuid)?.PromotionIds; if (!string.IsNullOrWhiteSpace(taskPromotionIds)) { var promotionIdList = taskPromotionIds.Split(','); var success = true; foreach (var promotionId in promotionIdList) { var promotion = await MemberServiceProxy.FetchPromotionByPromotionCode(promotionId); if (promotion != null) { if (promotion.Status == 0) { var updateRequest = new UpdateUserPromotionCodeStatusRequest() { UserID = _task.UserId, PromotionCodeId = Convert.ToInt32(promotionId), Status = 2, Channel = _promotionchannel, OperationAuthor = "GuangFa" }; var updateResult = await MemberServiceProxy.UpdateUserPromotionCodeStatus(updateRequest); if (!updateResult) { success = false; JobLogger.GFLogger.Warn($"作废优惠券失败,promotionId:{promotionId},task:{this.ToString()}"); EmailHelper.SendEmail($"广发联名卡Job警告", $"作废优惠券失败,promotionId:{promotionId},task:{this.ToString()}"); break; } } else if (promotion.Status == 1) { JobLogger.GFLogger.Warn($"广发需要作废的优惠券已经使用,promotionId:{promotionId}"); EmailHelper.SendEmail($"广发联名卡Job警告", $"广发需要作废的优惠券已经使用,promotionId:{promotionId}"); } } } result = success; } return(result); }
/// <summary> /// 更新用户优惠券使用状态(主要改为已作废)(0.未使用,1.已使用,2.已作废 /// </summary> /// <param name="request"></param> /// <returns></returns> public static async Task <bool> UpdateUserPromotionCodeStatus(UpdateUserPromotionCodeStatusRequest request) { bool result = false; try { using (var client = new PromotionClient()) { var serviceResult = await client.UpdateUserPromotionCodeStatusAsync(request); serviceResult.ThrowIfException(true); result = serviceResult.Result; } } catch (Exception ex) { Logger.Error($"更新优惠券状态出错,request:{JsonConvert.SerializeObject(request)}", ex); } return(result); }