Ejemplo n.º 1
0
        /// <summary>
        ///C端 获取订单的金额 add by caoheyang 20150305
        /// </summary>
        /// <param name="model">订单</param>
        /// <returns></returns>
        public static decimal GetCurrenOrderPrice(OrderCommission model)
        {
            decimal amount         = model.Amount == null ? 0 : Convert.ToDecimal(model.Amount);                 //佣金比例
            int     orderCount     = model.OrderCount == null ? 0 : Convert.ToInt32(model.OrderCount);           //佣金比例
            decimal distribSubsidy = model.DistribSubsidy == null ? 0 : Convert.ToDecimal(model.DistribSubsidy); //外送费

            return(Decimal.Round(amount + orderCount * distribSubsidy, 2));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 获取订单的网站补贴 add by caoheyang 20150402
 /// </summary>
 /// <param name="model">订单</param>
 /// <returns></returns>
 public override decimal GetOrderWebSubsidy(OrderCommission model)
 {
     if (model.OrderWebSubsidy != null && model.OrderWebSubsidy != 0)
     {
         return(ParseHelper.ToDecimal(model.OrderWebSubsidy));
     }
     return(ParseHelper.ToDecimal(GlobalConfigDao.GlobalConfigGet(model.BusinessGroupId).CommonSiteSubsidies));
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取订单的佣金比例 add by caoheyang 20150402
        /// </summary>
        /// <param name="model">订单</param>
        /// <returns></returns>
        public override decimal GetCommissionRate(OrderCommission model)
        {
            decimal temp = model.BusinessCommission - ParseHelper.ToDecimal(GlobalConfigDao.GlobalConfigGet(model.BusinessGroupId).CommissionRatio);

            if (temp == 0)
            {
                return(0);
            }
            else
            {
                return(Decimal.Round(temp / 100m, 2));
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 保本算法订单的骑士佣金 add by caoheyang 20150402
        /// </summary>
        /// <param name="model">订单</param>
        /// <returns></returns>
        public override decimal GetCurrenOrderCommission(OrderCommission model)
        {
            if (model.Amount == null)
            {
                return(0);
            }
            decimal commissionRate = GetCommissionRate(model);            //佣金比例
            int     orderCount     = ParseHelper.ToInt(model.OrderCount); //订单数量

            if (model.DistribSubsidy != null && model.DistribSubsidy > 0) //如果外送费有数据,按照外送费计算骑士佣金
            {
                return(Decimal.Round(Convert.ToDecimal(model.Amount) * commissionRate
                                     + ParseHelper.ToDecimal(model.DistribSubsidy) * orderCount, 2)); //计算佣金
            }
            else //无外送费按照网站补贴计算佣金金额
            {
                return(Decimal.Round(Convert.ToDecimal(model.Amount) * commissionRate + GetOrderWebSubsidy(model) * orderCount, 2));//计算佣金
            }
        }
        /// <summary>
        /// 获取订单的额外补贴金额 add by caoheyang 20150409
        /// </summary>
        /// <param name="model">订单</param>
        /// <returns></returns>
        public override decimal GetAdjustment(OrderCommission model)
        {
            string  globalConfigModel = Ets.Dao.GlobalConfig.GlobalConfigDao.GlobalConfigGet(model.BusinessGroupId).PriceSubsidies.TrimEnd(';');
            var     globalConfigList  = globalConfigModel.Split(';');
            decimal adjustment        = 0m; //额外补贴金额

            for (int i = globalConfigList.Length - 1; i >= 0; i--)
            {
                string[] tempInfo = globalConfigList[i].Split(',');
                decimal  money    = ParseHelper.ToDecimal(tempInfo[0]); //满金额
                decimal  addmony  = ParseHelper.ToDecimal(tempInfo[1]); //补贴金额
                if (ParseHelper.ToDecimal(model.Amount) >= money)
                {
                    adjustment = addmony;
                    break;
                }
            }
            return(adjustment);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 根据时间段获取订单的骑士佣金 add by caoheyang 20150330
        /// </summary>
        /// <param name="model">订单</param>
        /// <returns></returns>
        public override decimal GetCurrenOrderCommission(OrderCommission model)
        {
            if (model.Amount == null)
            {
                return(0);
            }
            decimal distribe       = 0;                                   //默认外送费,网站补贴都为0
            decimal commissionRate = GetCommissionRate(model);            //佣金比例
            int     orderCount     = ParseHelper.ToInt(model.OrderCount); //佣金比例

            if (model.DistribSubsidy != null && model.DistribSubsidy > 0) //如果外送费有数据,按照外送费计算骑士佣金
            {
                distribe = Convert.ToDecimal(model.DistribSubsidy);
            }
            else
            {
                distribe = GetOrderWebSubsidy(model);
            }
            return(Decimal.Round(Convert.ToDecimal(model.Amount) * commissionRate + distribe * orderCount, 2));//计算佣金
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取当前订单结算金额 add by caoheyang 20140402
        /// 胡灵波-20150504
        /// </summary>
        /// <param name="model">参数实体</param>
        /// <returns></returns>
        public decimal GetSettleMoney(OrderCommission model)
        {
            decimal sumsettleMoney = 0;

            decimal settleMoney = 0;

            if (model.CommissionType == 2)//固定金额
            {
                settleMoney    = Decimal.Round(ParseHelper.ToDecimal(model.CommissionFixValue) * ParseHelper.ToDecimal(model.OrderCount), 2);
                sumsettleMoney = Decimal.Round(ParseHelper.ToDecimal(model.DistribSubsidy)
                                               * ParseHelper.ToInt(model.OrderCount) + settleMoney, 2);
            }
            else
            {
                settleMoney = model.BusinessCommission == 0 ?
                              0 : Decimal.Round(ParseHelper.ToDecimal(model.BusinessCommission / 100m) * ParseHelper.ToDecimal(model.Amount), 2);
                sumsettleMoney = Decimal.Round(ParseHelper.ToDecimal(model.DistribSubsidy)
                                               * ParseHelper.ToInt(model.OrderCount) + settleMoney, 2);
            }

            return(sumsettleMoney);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 获取订单的额外补贴金额 add by caoheyang 20150409
 /// </summary>
 /// <param name="model">订单</param>
 /// <returns></returns>
 public override decimal GetAdjustment(OrderCommission model)
 {
     return(0m);
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 获取订单的佣金比例 add by caoheyang 20150402
 /// </summary>
 /// <param name="model">订单</param>
 /// <returns></returns>
 public override decimal GetCommissionRate(OrderCommission model)
 {
     return(ParseHelper.ToDecimal(GlobalConfigDao.GlobalConfigGet(model.BusinessGroupId).CommonCommissionRatio));
 }
Ejemplo n.º 10
0
 /// <summary>
 /// 获取订单的额外补贴金额 add by caoheyang 20150409
 /// </summary>
 /// <param name="model">订单</param>
 /// <returns></returns>
 public abstract decimal GetAdjustment(OrderCommission model);
Ejemplo n.º 11
0
 /// <summary>
 /// 获取订单的佣金比例 add by caoheyang 20150402
 /// </summary>
 /// <param name="model">订单</param>
 /// <returns></returns>
 public abstract decimal GetCommissionRate(OrderCommission model);
Ejemplo n.º 12
0
 /// <summary>
 /// 获取订单的网站补贴 add by caoheyang 20150402
 /// </summary>
 /// <param name="model">订单</param>
 /// <returns></returns>
 public abstract decimal GetOrderWebSubsidy(OrderCommission model);
Ejemplo n.º 13
0
 /// <summary>
 /// 获取订单的骑士佣金 add by caoheyang 20150305
 /// </summary>
 /// <param name="model">订单</param>
 /// <returns></returns>
 public abstract decimal GetCurrenOrderCommission(OrderCommission model);
Ejemplo n.º 14
0
        /// <summary>
        /// 美团的订单数据转成通用的openapi接入订单数据实体类型 20150421
        /// </summary>
        /// <param name="fromModel">美团数据实体</param>
        public CreatePM_OpenApi TranslateModel(MeiTuanOrdeModel fromModel)
        {
            #region 订单基础数据
            CreatePM_OpenApi model = new CreatePM_OpenApi();
            model.order_id = fromModel.order_id; //订单ID
            //店铺信息  店铺是已经在E代送存在的,这里没有任何实际意义,数据用不到
            Store store = new Store();
            store.store_id      = fromModel.app_poi_code;             //对接方店铺id
            store.store_name    = fromModel.wm_poi_name;              //店铺名称
            store.address       = fromModel.wm_poi_address;           //店铺地址
            store.phone         = fromModel.wm_poi_phone;             //店铺电话
            store.group         = GroupType.Group4.GetHashCode();     //店铺电话
            model.remark        = fromModel.caution;                  //备注
            model.status        = OrderStatus.Status30.GetHashCode(); //初始化订单状态 第三方代接入
            model.create_time   = DateTime.Now;                       //订单发单时间 创建时间
            model.payment       = fromModel.pay_type;                 //支付类型
            model.is_pay        = fromModel.pay_type != 1;            //目前货到付款时取未支付,在线支付取已支付
            model.total_price   = fromModel.total;                    //订单金额
            model.store_info    = store;                              //店铺
            model.invoice_title = fromModel.invoice_title;            //发票标题

            //订单明细不为空时做处理
            if (!string.IsNullOrWhiteSpace(fromModel.detail) && fromModel.detail != "")
            {
                MeiTuanOrdeDetailModel[] meituandetails = JsonHelper.JsonConvertToObject <MeiTuanOrdeDetailModel[]>(fromModel.detail);
                OrderDetail[]            details        = new OrderDetail[meituandetails.Length];
                for (int i = 0; i < meituandetails.Length; i++)
                {
                    OrderDetail tempdetail = new OrderDetail();
                    tempdetail.product_name = meituandetails[i].food_name; //菜品名称
                    tempdetail.quantity     = meituandetails[i].quantity;  //菜品数量
                    tempdetail.unit_price   = meituandetails[i].price;     //菜品单价
                    tempdetail.detail_id    = 0;                           //美团不传递明细id,明细id为0
                    details[i] = tempdetail;
                }
                model.order_details = details; //订单ID
            }

            model.orderfrom = GroupType.Group4.GetHashCode();                     // 订单来源  美团订单的订单来源是 4

            model.receive_time = TimeHelper.TimeStampToDateTime(fromModel.ctime); //美团不传递,E代送必填 要求送餐时间
            #endregion

            #region 订单商户相关信息
            var redis      = new ETS.NoSql.RedisCache.RedisCache();
            int businessId = ParseHelper.ToInt(redis.Get <string>(string.Format(ETS.Const.RedissCacheKey.OtherBusinessIdInfo, model.orderfrom,
                                                                                model.store_info.store_id.ToString()))); //缓存中取E代送商户id
            if (businessId == 0)
            {
                return(null);
            }
            else
            {
                model.businessId = businessId;
            }
            BusListResultModel business = new BusinessDao().GetBusiness(businessId);
            if (business.Status != BusinessStatus.Status1.GetHashCode())//商户非审核通过不允许接单
            {
                return(null);
            }
            model.store_info.delivery_fee       = ParseHelper.ToDecimal(business.DistribSubsidy);     //外送费
            model.store_info.businesscommission = ParseHelper.ToDecimal(business.BusinessCommission); //结算比例
            model.CommissionType     = business.CommissionType;
            model.CommissionFixValue = business.CommissionFixValue;
            model.BusinessGroupId    = business.BusinessGroupId;
            model.MealsSettleMode    = business.MealsSettleMode;
            #endregion

            #region 订单地址信息
            Address address = new Address();
            address.address       = fromModel.recipient_address; //用户收货地址
            address.user_phone    = fromModel.recipient_phone;   //用户联系电话
            address.user_name     = fromModel.recipient_name;    //用户姓名
            address.longitude     = fromModel.longitude;         //经度
            address.latitude      = fromModel.latitude;          //纬度
            address.city_code     = business.CityId;             //市
            address.city          = business.City;
            address.area_code     = business.districtId;         //区
            address.area          = business.district;
            address.province      = business.Province;           //省
            address.province_code = business.ProvinceCode;
            model.address         = address;                     //订单ID
            #endregion

            #region 佣金相关
            model.package_count = 1; //订单份数
            //佣金计算规则
            //model.CommissionFormulaMode = ParseHelper.ToInt(Ets.Dao.GlobalConfig.GlobalConfigDao.GlobalConfigGet(1).CommissionFormulaMode);
            model.CommissionFormulaMode = business.StrategyId;
            //计算获得订单骑士佣金
            OrderCommission orderComm = new OrderCommission()
            {
                Amount             = model.total_price,                   /*订单金额*/
                DistribSubsidy     = model.store_info.delivery_fee,       /*外送费*/
                OrderCount         = model.package_count,                 /*订单数量*/
                BusinessCommission = model.store_info.businesscommission, /*商户结算比例*/
                BusinessGroupId    = model.BusinessGroupId,
                StrategyId         = model.CommissionFormulaMode
            } /*网站补贴*/;
            //OrderPriceProvider commissonPro = CommissionFactory.GetCommission();
            OrderPriceProvider commissonPro = CommissionFactory.GetCommission(business.StrategyId);
            model.ordercommission = commissonPro.GetCurrenOrderCommission(orderComm);                 //骑士佣金
            model.websitesubsidy  = commissonPro.GetOrderWebSubsidy(orderComm);                       //网站补贴
            model.commissionrate  = commissonPro.GetCommissionRate(orderComm);                        //订单佣金比例
            model.settlemoney     = commissonPro.GetSettleMoney(orderComm);                           //订单结算金额
            model.adjustment      = commissonPro.GetAdjustment(orderComm);                            //订单额外补贴金额
            #endregion
            if (!(bool)model.is_pay && model.MealsSettleMode == MealsSettleMode.LineOn.GetHashCode()) //未付款且线上支付
            {
                //paramodel.BusinessReceivable = Decimal.Round(ParseHelper.ToDecimal(paramodel.total_price) +
                //               ParseHelper.ToDecimal(paramodel.store_info.delivery_fee) * ParseHelper.ToInt(paramodel.package_count), 2);
                //只有一个子订单
                model.BusinessReceivable = Decimal.Round(ParseHelper.ToDecimal(model.total_price) +
                                                         ParseHelper.ToDecimal(model.store_info.delivery_fee), 2);
            }

            //fromModel.extras 说明,暂时不用
            return(model);
        }
Ejemplo n.º 15
0
 /// <summary>
 /// 获取订单的网站补贴 add by caoheyang 20150402
 /// </summary>
 /// <param name="model">订单</param>
 /// <returns></returns>
 public override decimal GetOrderWebSubsidy(OrderCommission model)
 {
     return(ParseHelper.ToDecimal((DateTime.Now.Hour >= 10 && DateTime.Now.Hour <= 13) || (DateTime.Now.Hour >= 16 && DateTime.Now.Hour <= 19) ?
                                  GlobalConfigDao.GlobalConfigGet(model.BusinessGroupId).TimeSpanInPrice : GlobalConfigDao.GlobalConfigGet(model.BusinessGroupId).TimeSpanOutPrice));
 }