/// <summary> /// 描述:添加转介绍优惠券,并修改优惠券的状态 /// <para>作 者:瞿琦</para> /// <para>创建时间:2019-1-10</para> /// </summary> /// <param name="useCouponList">已使用的优惠券信息集合</param> /// <param name="enrollStudentId">报名学生Id</param> /// <param name="recommendStudentId">转介绍人Id(没有转介绍时为空)</param> /// <param name="recommendCouponRuleId">转介绍的规则Id(没有勾选时传空)</param> /// <param name="enrollOrderId">订单表主键</param> /// <param name="tblDctCouponRepository">优惠券表仓储</param> /// <param name="tblDctCouponRuleRepository">优惠信息规则表仓储</param> /// <returns>已使用的转介绍优惠券集合</returns> /// <exception cref="AMS.Core.BussinessException"> /// 异常ID:15, 异常描述:该转介绍奖学金信息不存在 /// </exception> private List <CouponGenerateResponse> OperationRecommendCoupon(List <CouponGenerateResponse> useCouponList, long enrollStudentId, long?recommendStudentId, long?recommendCouponRuleId, long enrollOrderId, TblDctCouponRepository tblDctCouponRepository, TblDctCouponRuleRepository tblDctCouponRuleRepository) { if (recommendStudentId.HasValue && recommendStudentId > 0) //介绍人不为空时才有转介绍优惠 { var couponRuleService = new CouponRuleService(this._schoolId); TblDctCouponRule recommendRuleModel; if (recommendCouponRuleId.HasValue && recommendCouponRuleId > 0) //如果报名页面勾选转介绍 ,则根据id查询转介绍信息 { recommendRuleModel = couponRuleService.GetCouponRuleIdByRuleList(recommendCouponRuleId.Value); if (recommendRuleModel == null) { throw new BussinessException(ModelType.Discount, 15); } } else //如果报名页面没有勾选转介绍 ,则获取本校区转介绍最新优惠信息 { recommendRuleModel = couponRuleService.GetTblDctCouponRuleInfo(); } if (recommendRuleModel != null) //为空代表没有转介绍优惠,有转介绍的话则添加两张优惠券 { var enrollStuCouponId = AddCouponInfo(recommendRuleModel, enrollStudentId, CouponType.Recommend, enrollOrderId, Dto.Enum.CouponStatus.NoUse, tblDctCouponRepository).Result; //同时添加2张优惠券 AddCouponInfo(recommendRuleModel, recommendStudentId.Value, CouponType.Recommend, enrollOrderId, Dto.Enum.CouponStatus.NoUse, tblDctCouponRepository).Wait(); recommendRuleModel.UseQuota = recommendRuleModel.UseQuota + 2; tblDctCouponRuleRepository.Update(recommendRuleModel); //修改使用人数 LogWriter.Write(this, "测试转介绍:" + recommendCouponRuleId); if (recommendCouponRuleId.HasValue && recommendCouponRuleId > 0) //转介绍规则Id不为空,则使用该优惠券 { tblDctCouponRepository.UpdateCouponAsync(enrollStuCouponId, Dto.Enum.CouponStatus.HasUse, DateTime.Now, null).Wait(); //将当前报名学生的优惠券使用掉 修改优惠券状态 var recommendRuleEntity = new CouponGenerateResponse { CouponId = enrollStuCouponId, CouponRuleAmount = recommendRuleModel.CouponAmount, CouponType = CouponType.Recommend }; useCouponList.Add(recommendRuleEntity); } } } return(useCouponList); }