/// <summary>
        /// 更新优惠券审核记录
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <int> UpdateCouponGetRuleAuditAsync(GetCouponRuleAuditModel request, CancellationToken cancellationToken)
        {
            GetCouponRuleAuditEntity entity = ObjectMapper.ConvertTo <GetCouponRuleAuditModel, GetCouponRuleAuditEntity>(request);
            int pkid = await _ICouponGetRuleAuditRepository.UpdateAsync(entity, cancellationToken).ConfigureAwait(false) ? entity.PKID : 0;

            return(pkid);
        }
        /// <summary>
        /// 创建优惠券领取规则记录
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <int> CreateCouponGetRuleAsync(CreateCouponGetRuleAuditRequest request, CancellationToken cancellationToken)
        {
            try
            {
                GetCouponRuleAuditEntity entity = ObjectMapper.ConvertTo <CreateCouponGetRuleAuditRequest, GetCouponRuleAuditEntity>(request);
                var pkid = await _ICouponGetRuleAuditRepository.CreateAsync(entity, cancellationToken).ConfigureAwait(false);

                return(pkid);
            }
            catch (Exception ex)
            {
                _logger.Error($"CreateCouponGetRuleAuditAsync Exception {JsonConvert.SerializeObject(request)}", ex);
                return(0);
            }
        }
        /// <summary>
        /// Create 优惠券审核记录
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async ValueTask <int> CreateAsync(GetCouponRuleAuditEntity entity, CancellationToken cancellationToken)
        {
            #region sql
            string sql = $@"INSERT INTO {DBName}
                                   ([GetCouponRulePKID]
                                   ,[RuleID]
                                   ,[Description]
                                   ,[PromtionName]
                                   ,Discount
                                   ,Minmoney
                                   ,[AllowChanel]
                                   ,[Term]
                                   ,[ValiStartDate]
                                   ,[ValiEndDate]
                                   ,[Quantity]
                                   ,[GetQuantity]
                                   ,[SingleQuantity]
                                   ,[DXStartDate]
                                   ,[DXEndDate]
                                   ,[GetRuleGUID]
                                   ,[Channel]
                                   ,[SupportUserRange]
                                   ,[DetailShowStartDate]
                                   ,[DetailShowEndDate]
                                   ,[DepartmentId]
                                   ,[IntentionId]
                                   ,[Creater]
                                   ,[DepartmentName]
                                   ,[IntentionName]
                                   ,[CouponType]
                                   ,[DeadLineDate]
                                   ,[IsPush]
                                   ,[PushSetting]
                                   ,[BusinessLineId]
                                   ,[BusinessLineName]
                                   ,[RemindQuantity]
                                   ,[RemindEmails]
                                   ,[Applicant]
                                   ,[Auditor]
                                   ,[AuditDateTime]
                                   ,[AuditStatus]
                                   ,[AuditMessage]
                                   ,[WorkOrderId]
                                   ,[CreateDateTime]
                                   ,[LastUpdateDateTime]
                                    )
                             VALUES
                                   (
                                    @GetCouponRulePKID
                                   ,@RuleID
                                   ,@Description
                                   ,@PromtionName
                                   ,@Discount
                                   ,@Minmoney
                                   ,@AllowChanel
                                   ,@Term
                                   ,@ValiStartDate
                                   ,@ValiEndDate
                                   ,@Quantity
                                   ,@GetQuantity
                                   ,@SingleQuantity
                                   ,@DXStartDate
                                   ,@DXEndDate
                                   ,@GetRuleGUID
                                   ,@Channel
                                   ,@SupportUserRange
                                   ,@DetailShowStartDate
                                   ,@DetailShowEndDate
                                   ,@DepartmentId
                                   ,@IntentionId
                                   ,@Creater
                                   ,@DepartmentName
                                   ,@IntentionName
                                   ,@CouponType
                                   ,@DeadLineDate
                                   ,@IsPush
                                   ,@PushSetting
                                   ,@BusinessLineId
                                   ,@BusinessLineName
                                   ,@RemindQuantity
                                   ,@RemindEmails
                                   ,@Applicant
                                   ,@Auditor
                                   ,getdate()
                                   ,@AuditStatus
                                   ,@AuditMessage
                                   ,@WorkOrderId
                                   ,getdate()
                                   ,getdate()
                                );
                                select SCOPE_IDENTITY();";  //返回pkid
            #endregion

            using (var dbHelper = _factory.CreateDbHelper("Activity", false))
            {
                using (var cmd = new SqlCommand(sql))
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.Add(new SqlParameter("@GetCouponRulePKID", entity.GetCouponRulePKID));
                    cmd.Parameters.Add(new SqlParameter("@RuleID", entity.RuleID));
                    cmd.Parameters.Add(new SqlParameter("@Description", entity.Description ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@PromtionName", entity.PromtionName ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@Discount", entity.Discount));
                    cmd.Parameters.Add(new SqlParameter("@Minmoney", entity.Minmoney));
                    cmd.Parameters.Add(new SqlParameter("@AllowChanel", entity.AllowChanel));
                    cmd.Parameters.Add(new SqlParameter("@Term", entity.Term));
                    cmd.Parameters.Add(new SqlParameter("@ValiStartDate", entity.ValiStartDate));
                    cmd.Parameters.Add(new SqlParameter("@ValiEndDate", entity.ValiEndDate));
                    cmd.Parameters.Add(new SqlParameter("@Quantity", entity.Quantity));
                    cmd.Parameters.Add(new SqlParameter("@GetQuantity", entity.GetQuantity));
                    cmd.Parameters.Add(new SqlParameter("@SingleQuantity", entity.SingleQuantity));
                    cmd.Parameters.Add(new SqlParameter("@DXStartDate", entity.DXStartDate));
                    cmd.Parameters.Add(new SqlParameter("@DXEndDate", entity.DXEndDate));
                    cmd.Parameters.Add(new SqlParameter("@GetRuleGUID", entity.GetRuleGUID));
                    cmd.Parameters.Add(new SqlParameter("@Channel", entity.Channel ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@SupportUserRange", entity.SupportUserRange));
                    cmd.Parameters.Add(new SqlParameter("@DetailShowStartDate", entity.DetailShowStartDate));
                    cmd.Parameters.Add(new SqlParameter("@DetailShowEndDate", entity.DetailShowEndDate));
                    cmd.Parameters.Add(new SqlParameter("@DepartmentId", entity.DepartmentId));
                    cmd.Parameters.Add(new SqlParameter("@IntentionId", entity.IntentionId));
                    cmd.Parameters.Add(new SqlParameter("@Creater", entity.Creater ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@DepartmentName", entity.DepartmentName ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@IntentionName", entity.IntentionName ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@CouponType", entity.CouponType));
                    cmd.Parameters.Add(new SqlParameter("@DeadLineDate", entity.DeadLineDate));
                    cmd.Parameters.Add(new SqlParameter("@IsPush", entity.IsPush));
                    cmd.Parameters.Add(new SqlParameter("@PushSetting", entity.PushSetting ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@BusinessLineId", entity.BusinessLineId));
                    cmd.Parameters.Add(new SqlParameter("@BusinessLineName", entity.BusinessLineName ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@RemindQuantity", entity.RemindQuantity));
                    cmd.Parameters.Add(new SqlParameter("@RemindEmails", entity.RemindEmails ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@Applicant", entity.Applicant ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@Auditor", entity.Auditor ?? ""));
                    //cmd.Parameters.Add(new SqlParameter("@AuditDateTime", entity.AuditDateTime));
                    cmd.Parameters.Add(new SqlParameter("@AuditStatus", entity.AuditStatus));
                    cmd.Parameters.Add(new SqlParameter("@AuditMessage", entity.AuditMessage ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@WorkOrderId", entity.WorkOrderId));
                    try
                    {
                        var temp = await dbHelper.ExecuteScalarAsync(cmd, cancellationToken).ConfigureAwait(false);

                        return(Convert.ToInt32(temp));
                    }
                    catch (Exception ex)
                    {
                        _logger.Error($"CouponGetRuleAuditRepository  CreateAsyncException = {JsonConvert.SerializeObject(ex)} & entity= {JsonConvert.SerializeObject(entity)}", ex);
                        return(0);
                    }
                }
            }
        }
        /// <summary>
        ///  Update 优惠券审核记录
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async ValueTask <bool> UpdateAsync(GetCouponRuleAuditEntity entity, CancellationToken cancellationToken)
        {
            #region sql
            string sql = $@"UPDATE {DBName}
                               SET [GetCouponRulePKID] = @GetCouponRulePKID              
                                  ,[RuleID] = @RuleID
                                  ,[Description] = @Description
                                  ,[PromtionName] = @PromtionName
                                  ,[Discount] = @Discount
                                  ,[Minmoney] = @Minmoney
                                  ,[AllowChanel] = @AllowChanel
                                  ,[Term] = @Term
                                  ,[ValiStartDate] = @ValiStartDate
                                  ,[ValiEndDate] = @ValiEndDate
                                  ,[Quantity] = @Quantity
                                  ,[GetQuantity] = @GetQuantity
                                  ,[SingleQuantity] = @SingleQuantity
                                  ,[DXStartDate] = @DXStartDate
                                  ,[DXEndDate] = @DXEndDate
                                  ,[GetRuleGUID] = @GetRuleGUID
                                  ,[Channel] = @Channel
                                  ,[SupportUserRange] = @SupportUserRange
                                  ,[DetailShowStartDate] = @DetailShowStartDate
                                  ,[DetailShowEndDate] = @DetailShowEndDate
                                  ,[DepartmentId] = @DepartmentId
                                  ,[IntentionId] = @IntentionId
                                  ,[Creater] = @Creater
                                  ,[DepartmentName] = @DepartmentName
                                  ,[IntentionName] = @IntentionName
                                  ,[CouponType] = @CouponType
                                  ,[DeadLineDate] = @DeadLineDate
                                  ,[IsPush] = @IsPush
                                  ,[PushSetting] = @PushSetting
                                  ,[BusinessLineId] = @BusinessLineId
                                  ,[BusinessLineName] = @BusinessLineName
                                  ,[RemindQuantity] = @RemindQuantity
                                  ,[RemindEmails] = @RemindEmails
                                  ,[Applicant] = @Applicant
                                  ,[Auditor] = @Auditor
                                  ,[AuditDateTime] = @AuditDateTime
                                  ,[AuditStatus] = @AuditStatus
                                  ,[AuditMessage] = @AuditMessage
                                  ,[WorkOrderId] = @WorkOrderId
                                  ,[LastUpdateDateTime] = getdate()
                                where PKID =@PKID
                            ;";
            #endregion

            using (var dbHelper = _factory.CreateDbHelper("Activity", false))
            {
                using (var cmd = new SqlCommand(sql))
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.Add(new SqlParameter("@PKID", entity.PKID));
                    cmd.Parameters.Add(new SqlParameter("@GetCouponRulePKID", entity.GetCouponRulePKID));
                    cmd.Parameters.Add(new SqlParameter("@RuleID", entity.RuleID));
                    cmd.Parameters.Add(new SqlParameter("@Description", entity.Description));
                    cmd.Parameters.Add(new SqlParameter("@PromtionName", entity.PromtionName));
                    cmd.Parameters.Add(new SqlParameter("@Discount", entity.Discount));
                    cmd.Parameters.Add(new SqlParameter("@Minmoney", entity.Minmoney));
                    cmd.Parameters.Add(new SqlParameter("@AllowChanel", entity.AllowChanel));
                    cmd.Parameters.Add(new SqlParameter("@Term", entity.Term));
                    cmd.Parameters.Add(new SqlParameter("@ValiStartDate", entity.ValiStartDate));
                    cmd.Parameters.Add(new SqlParameter("@ValiEndDate", entity.ValiEndDate));
                    cmd.Parameters.Add(new SqlParameter("@Quantity", entity.Quantity));
                    cmd.Parameters.Add(new SqlParameter("@GetQuantity", entity.GetQuantity));
                    cmd.Parameters.Add(new SqlParameter("@SingleQuantity", entity.SingleQuantity));
                    cmd.Parameters.Add(new SqlParameter("@DXStartDate", entity.DXStartDate));
                    cmd.Parameters.Add(new SqlParameter("@DXEndDate", entity.DXEndDate));
                    cmd.Parameters.Add(new SqlParameter("@GetRuleGUID", entity.GetRuleGUID));
                    cmd.Parameters.Add(new SqlParameter("@Channel", entity.Channel));
                    cmd.Parameters.Add(new SqlParameter("@SupportUserRange", entity.SupportUserRange));
                    cmd.Parameters.Add(new SqlParameter("@DetailShowStartDate", entity.DetailShowStartDate));
                    cmd.Parameters.Add(new SqlParameter("@DetailShowEndDate", entity.DetailShowEndDate));
                    cmd.Parameters.Add(new SqlParameter("@DepartmentId", entity.DepartmentId));
                    cmd.Parameters.Add(new SqlParameter("@IntentionId", entity.IntentionId));
                    cmd.Parameters.Add(new SqlParameter("@Creater", entity.Creater));
                    cmd.Parameters.Add(new SqlParameter("@DepartmentName", entity.DepartmentName));
                    cmd.Parameters.Add(new SqlParameter("@IntentionName", entity.IntentionName));
                    cmd.Parameters.Add(new SqlParameter("@CouponType", entity.CouponType));
                    cmd.Parameters.Add(new SqlParameter("@DeadLineDate", entity.DeadLineDate));
                    cmd.Parameters.Add(new SqlParameter("@IsPush", entity.IsPush));
                    cmd.Parameters.Add(new SqlParameter("@PushSetting", entity.PushSetting));
                    cmd.Parameters.Add(new SqlParameter("@BusinessLineId", entity.BusinessLineId));
                    cmd.Parameters.Add(new SqlParameter("@BusinessLineName", entity.BusinessLineName));
                    cmd.Parameters.Add(new SqlParameter("@RemindQuantity", entity.RemindQuantity));
                    cmd.Parameters.Add(new SqlParameter("@RemindEmails", entity.RemindEmails));
                    cmd.Parameters.Add(new SqlParameter("@Applicant", entity.Applicant));
                    cmd.Parameters.Add(new SqlParameter("@Auditor", entity.Auditor));
                    cmd.Parameters.Add(new SqlParameter("@AuditDateTime", entity.AuditDateTime));
                    cmd.Parameters.Add(new SqlParameter("@AuditStatus", entity.AuditStatus));
                    cmd.Parameters.Add(new SqlParameter("@AuditMessage", entity.AuditMessage ?? ""));
                    cmd.Parameters.Add(new SqlParameter("@WorkOrderId", entity.WorkOrderId));
                    var result = (await dbHelper.ExecuteNonQueryAsync(cmd, cancellationToken).ConfigureAwait(false));
                    return(result > 0);
                }
            }
        }