/// <summary>
        /// 描述:生成奖学金券
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-11-2</para>
        /// </summary>
        /// <returns>生成的校长奖学金信息</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:4, 异常描述:添加校长奖学金失败
        /// 异常ID:5, 异常描述:优惠券号重复
        /// </exception>
        public async Task <CouponResponse> CreateCoupon(CouponAmountRequest dto)
        {
            var couponNo = CreateCouponNo.GetCouponCode();

            if (_tblDctCouponRepository.Value.GetCouponNoByCouponInfo(this._schoolId, couponNo) != null)
            {
                throw new BussinessException(ModelType.Discount, 5);
            }

            var entity = new TblDctCoupon()
            {
                CouponId      = IdGenerator.NextId(),
                SchoolId      = _schoolId,
                CouponNo      = couponNo,
                CouponType    = (int)CouponType.HeadmasterBonus,
                Amount        = dto.Amount,
                Status        = (int)Dto.Enum.CouponStatus.NoUse,
                ExpireTime    = DateTime.Now.AddMonths(6),
                EnrollOrderId = 0,
                IsFreeAll     = dto.IsFreeAll,
                StudentId     = 0,
                UseTime       = null,
                CreateTime    = DateTime.Now,
                FromId        = 0,
                Remark        = string.Empty,
                CreatorId     = dto.CreatorId
            };
            var flag = await _tblDctCouponRepository.Value.AddTask(entity);

            if (!flag)
            {
                throw new BussinessException(ModelType.Discount, 4);
            }
            var        result     = Mapper.Map <CouponResponse>(entity);
            OrgService orgService = new OrgService();
            var        schoolList = orgService.GetAllSchoolList().FirstOrDefault(x => x.SchoolId.Trim() == _schoolId.Trim());

            result.SchoolName = schoolList == null ? "" : schoolList.SchoolName;
            return(result);
        }
        /// <summary>
        /// 描述:添加优惠券信息
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间: 2018-11-2</para>
        /// </summary>
        /// <param name="couponRuleEntity">赠与奖学金信息</param>
        /// <param name="studentId">学生Id</param>
        /// <param name="couponType">优惠券类型</param>
        /// <param name="enrollOrderId">来源订单Id</param>
        /// <param name="couponStatus">优惠券状态</param>
        /// <param name="tblDctCouponRepository">优惠券表仓储</param>
        /// <returns>优惠券Id</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:8, 异常描述:添加优惠券失败
        /// </exception>
        private async Task <long> AddCouponInfo(TblDctCouponRule couponRuleEntity, long studentId, CouponType couponType, long enrollOrderId, Dto.Enum.CouponStatus couponStatus, TblDctCouponRepository tblDctCouponRepository)
        {
            try
            {
                var recommendEntity = new TblDctCoupon
                {
                    CouponId      = IdGenerator.NextId(),
                    SchoolId      = _schoolId,
                    CouponNo      = CreateCouponNo.GetCouponCode(),
                    CouponType    = (int)couponType,
                    Amount        = couponRuleEntity.CouponAmount,
                    Status        = (int)couponStatus,
                    ExpireTime    = DateTime.Now.AddMonths(6),
                    StudentId     = studentId,
                    UseTime       = couponStatus == Dto.Enum.CouponStatus.HasUse ? DateTime.Now : (DateTime?)null,
                    CreateTime    = DateTime.Now,
                    FromId        = couponRuleEntity.CouponRuleId,
                    EnrollOrderId = enrollOrderId,
                    Remark        = couponRuleEntity.Remark,
                    IsFreeAll     = false,
                    CreatorId     = base.CurrentUserId,
                };
                var flag = await tblDctCouponRepository.AddTask(recommendEntity);

                if (flag)
                {
                    return(recommendEntity.CouponId);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }
            throw new BussinessException(ModelType.Discount, 8);
        }