/// <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>
        /// 提交领取规则审核到工单系统
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <int> CommitWorkOrderForCouponGetRuleAuditAsync(CreateCouponGetRuleAuditRequest request, CancellationToken cancellationToken)
        {
            CommitWorkOrderForCouponGetRuleAuditRequest apiRequest = ObjectMapper.ConvertTo <CreateCouponGetRuleAuditRequest, CommitWorkOrderForCouponGetRuleAuditRequest>(request);

            apiRequest.WorkOrderTypeId = Convert.ToInt32(_AppSettingOptions.WorkOrderTypeIdForCouponGetRuleAudit);
            apiRequest.TaskOwner       = request.Auditor;
            apiRequest.UserEmail       = request.Applicant;
            apiRequest.Quantity        = request.Quantity?.ToString("N0");
            apiRequest.SumDiscount     = string.Format("{0:N2}", (request.Quantity * request.Discount));
            //获取使用规则信息
            var useRule = await _ICouponUseRuleRepository.GetByPKIDAsync(request.RuleID, cancellationToken).ConfigureAwait(false);

            apiRequest.PromotionType          = useRule.PromotionType;
            apiRequest.EnabledGroupBuy        = useRule.EnabledGroupBuy;
            apiRequest.RuleDescription        = string.IsNullOrWhiteSpace(useRule.RuleDescription) ? "无" : useRule.RuleDescription;
            apiRequest.CouponUseRuleDetailURL = _AppSettingOptions.SettingHost + "/Promotion/PromotionDetailNew?id=" + request.RuleID;
            try
            {
                _logger.Info($"CommitWorkOrderForCouponGetRuleAuditAsync result postData= {JsonConvert.SerializeObject(apiRequest)}");
                var httpClient      = _clientFactory.CreateClient("HttpTimeoutForCommitWorkOrder");//设置超时时间
                var responseMessage = await httpClient.PostAsJsonAsync(_AppSettingOptions.CommitWorkOrderApiURL, apiRequest).ConfigureAwait(false);

                string response = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false);

                _logger.Info($"CommitWorkOrderForCouponGetRuleAuditAsync result response ={response}");
                var responseModel = JsonConvert.DeserializeObject <CommitWorkOrderForCouponGetRuleAuditResponse>(response);
                if (responseModel.Code == 1)
                {
                    return(Convert.ToInt32(responseModel.ResponseContent));
                }
                _logger.Error($"CommitWorkOrderForCouponGetRuleAuditAsync fail Message ={responseModel?.Message}");
                return(0);
            }
            catch (Exception ex)
            {
                _logger.Error($"CommitWorkOrderForCouponGetRuleAuditAsync Exception apiRequest ={JsonConvert.SerializeObject(apiRequest)}", ex);
                return(0);
            }
        }
Beispiel #3
0
        /// <summary>
        /// 创建优惠券审核记录
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async override ValueTask <OperationResult <int> > CreateCouponGetRuleAuditAsync([FromBody] CreateCouponGetRuleAuditRequest request)
        {
            if (request.Applicant == "*****@*****.**")
            {
                request.Applicant = "*****@*****.**";
            }
            //1.获取审核第一步的 审核人
            GetCouponGetRuleAuditorRequest getCouponGetRuleAuditorRequest = new GetCouponGetRuleAuditorRequest()
            {
                Step           = 1,
                Applicant      = request.Applicant,
                BusinessLineId = request.BusinessLineId,
                DepartmentId   = request.DepartmentId,
            };

            if (request.GetCouponRulePKID > 0)//修改
            {
                //判断是否存在 审核中的 记录
                var list = await _ICouponGetRuleAuditManager.GetListByGetCouponRulePKIDAsync(request.GetCouponRulePKID, HttpContext.RequestAborted).ConfigureAwait(false);

                if (list.Where(p => p.AuditStatus == 1).Any())
                {
                    return(OperationResult.FromError <int>("-1", "此优惠券正在审核中不支持编辑,请前往【审核列表】查看审核信息"));
                }
                //获取 原领取规则信息
                var originalGetRule = await _ICouponGetRuleManager.GetByPKIDAsync(request.GetCouponRulePKID, HttpContext.RequestAborted).ConfigureAwait(false);

                request.GetRuleGUID = originalGetRule.GetRuleGUID;
            }

            var GetCouponGetRuleAuditorResult = await _ICouponGetRuleAuditManager.GetCouponGetRuleAuditorAsync(getCouponGetRuleAuditorRequest, HttpContext.RequestAborted).ConfigureAwait(false);

            if (GetCouponGetRuleAuditorResult.Success || GetCouponGetRuleAuditorResult.Result != null)
            {
                request.Auditor = GetCouponGetRuleAuditorResult.Result.Auditors;
            }
            else
            {
                return(OperationResult.FromError <int>(GetCouponGetRuleAuditorResult.ErrorCode, GetCouponGetRuleAuditorResult.ErrorMessage));
            }

            //2.提交到工单系统
            var workOrderId = await _ICouponGetRuleAuditManager.CommitWorkOrderForCouponGetRuleAuditAsync(request, HttpContext.RequestAborted).ConfigureAwait(false);

            request.AuditStatus = (int)WorkOrderAuditStatusEnum.审批中;
            if (workOrderId == 0)
            {
                return(OperationResult.FromError <int>("-1", "提交到工单失败,请重试"));
            }
            request.WorkOrderId = workOrderId;
            //3.添加审核记录
            var pkid = await _ICouponGetRuleAuditManager.CreateCouponGetRuleAuditAsync(request, HttpContext.RequestAborted).ConfigureAwait(false);

            if (pkid > 0)
            {
                //4.添加审核的提交日志
                var ConfigResult = await _IConfigLogService.InsertDefaultLogQueue(GlobalConstant.LogTypeCouponGetRuleAudit, JsonConvert.SerializeObject(new
                {
                    ObjectId    = pkid,
                    ObjectType  = GlobalConstant.LogObjectTypeCouponGetRuleAudit,
                    BeforeValue = "",
                    AfterValue  = JsonConvert.SerializeObject(request),
                    Operate     = "添加审核记录",
                    Author      = request.Applicant
                })).ConfigureAwait(false);

                return(OperationResult.FromResult(pkid));
            }
            else
            {
                return(OperationResult.FromError <int>("-2", "CreateCouponGetRuleAuditAsync Exception"));
            }
        }