public int GetCommissionRatioCount(CommissionRatioSearchCondition condition)
        {
            var query = _commissionRatioRepository.Table;

            try
            {
                if (condition.Id != null && condition.Id.Any())
                {
                    query = query.Where(q => condition.Id.Contains(q.Id));
                }
                if (condition.Page.HasValue && condition.PageSize.HasValue)
                {
                    query =
                        query.Skip((condition.Page.Value - 1) * condition.PageSize.Value).Take(condition.PageSize.Value);
                }
                return(query.Count());
            }
            catch (Exception e)
            {
                _log.Error(e, "数据库操作出错");
                return(-1);
            }
        }
        public IQueryable <CommissionRatioEntity> GetCommissionRatioCondition(CommissionRatioSearchCondition condition)
        {
            var query = _commissionRatioRepository.Table;

            try
            {
                if (condition.Id != null && condition.Id.Any())
                {
                    query = query.Where(q => condition.Id.Contains(q.Id));
                }

                if (condition.OrderBy.HasValue)
                {
                    switch (condition.OrderBy.Value)
                    {
                    case EnumCommissionSearchOrderBy.OrderById:
                        query = condition.IsDescending ? query.OrderByDescending(q => q.Id) : query.OrderBy(q => q.Id);
                        break;
                    }
                }
                else
                {
                    query = query.OrderBy(q => q.Id);
                }
                if (condition.Page.HasValue && condition.PageSize.HasValue)
                {
                    query =
                        query.Skip((condition.Page.Value - 1) * condition.PageSize.Value).Take(condition.PageSize.Value);
                }
                return(query);
            }
            catch (Exception e)
            {
                _log.Error(e, "数据库操作出错");
                return(null);
            }
        }
        public HttpResponseMessage Index()
        {
            var con = new CommissionRatioSearchCondition
            {
                Page     = 1,
                PageSize = 1
            };
            var commissionRatio = _commissionRatioService.GetCommissionRatioCondition(con).Select(p => new Models.Trading.CommissionRatio.CommissionRatio
            {
                Id               = p.Id,
                RecCfbScale      = p.RecCfbScale,
                RecAgentScale    = p.RecAgentScale,
                TakeCfbScale     = p.TakeCfbScale,
                TakeAgentScale   = p.TakeAgentScale,
                RecPartnerScale  = p.RecPartnerScale,
                TakePartnerScale = p.TakePartnerScale
            }).FirstOrDefault();

            if (commissionRatio == null)
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据不存在")));
            }
            return(PageHelper.toJson(commissionRatio));
        }
Пример #4
0
        /// <summary>
        /// 计算佣金
        /// </summary>
        /// <param name="model">订单对象</param>
        /// <returns></returns>
        public AmountModel GetCommission(OrderEntity model)
        {
            var con = new CommissionRatioSearchCondition
            {
                Page     = 1,
                PageSize = 1
            };
            //获取佣金分成比例
            var commissionRatio =
                _commissionRatioService.GetCommissionRatioCondition(con)
                .Select(p => new Models.Trading.CommissionRatio.CommissionRatio
            {
                Id               = p.Id,
                RecCfbScale      = p.RecCfbScale,
                RecAgentScale    = p.RecAgentScale,
                TakeCfbScale     = p.TakeCfbScale,
                TakeAgentScale   = p.TakeAgentScale,
                RecPartnerScale  = p.RecPartnerScale,
                TakePartnerScale = p.TakePartnerScale
            }).FirstOrDefault();

            if (commissionRatio == null)
            {
                return(null);
            }
            var ode    = model.OrderDetail;
            var amount = new AmountModel();
            var broker = _brokerService.GetBrokerById(model.AgentId);

            if (GetPartner(broker.UserId) == null)
            {
                switch (model.Ordertype)
                {
                case EnumOrderType.推荐订单:
                    //如果是推荐订单;
                    if (model.Shipstatus == 3)
                    {
                        amount.CFBamount   = ode.Dealcommission * commissionRatio.RecCfbScale;
                        amount.Agentamount = ode.Dealcommission * commissionRatio.RecAgentScale + ode.RecCommission;
                    }
                    else
                    {
                        amount.Agentamount = ode.RecCommission;
                    }
                    break;

                case EnumOrderType.带客订单:
                    if (model.Shipstatus == 3)
                    {
                        amount.CFBamount   = ode.Dealcommission * commissionRatio.TakeCfbScale;
                        amount.Agentamount = ode.Dealcommission * commissionRatio.TakeAgentScale + ode.Commission;
                    }
                    else
                    {
                        amount.Agentamount = ode.Commission;
                    }
                    break;
                }
            }
            else
            {
                switch (model.Ordertype)
                {
                case EnumOrderType.推荐订单:
                    //如果是推荐订单;
                    if (model.Shipstatus == 3)
                    {
                        amount.CFBamount   = ode.Dealcommission * commissionRatio.RecCfbScale;
                        amount.Agentamount = (ode.Dealcommission * commissionRatio.RecAgentScale - ode.Dealcommission * commissionRatio.RecAgentScale *
                                              commissionRatio.RecPartnerScale) + ode.RecCommission;
                        amount.Partneramount = ode.Dealcommission * commissionRatio.RecAgentScale *
                                               commissionRatio.RecPartnerScale;
                    }
                    else
                    {
                        amount.Agentamount = ode.RecCommission;
                    }
                    break;

                case EnumOrderType.带客订单:
                    if (model.Shipstatus == 3)
                    {
                        amount.CFBamount   = ode.Dealcommission * commissionRatio.TakeCfbScale;
                        amount.Agentamount = (ode.Dealcommission * commissionRatio.TakeAgentScale - ode.Dealcommission * commissionRatio.TakeAgentScale *
                                              commissionRatio.TakePartnerScale) + ode.Commission;
                        amount.Partneramount = ode.Dealcommission * commissionRatio.TakeAgentScale *
                                               commissionRatio.TakePartnerScale;
                    }
                    else
                    {
                        amount.Agentamount = ode.Commission;
                    }
                    break;
                }
            }
            return(amount);
        }