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)); }
/// <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); }