decimal GetCommissionMoney()
        {
            //平台应抽成金额
            decimal commissionMoney = 0;

            //区域运营商对商家的抽成配置
            var merchantCommission = CacheCollection.AreaForMerchantCommissionCache.Get(_areaID, _merchantID, (int)_option);

            //不存在独立商家的抽成配置则从默认抽成中获取
            if (null == merchantCommission)
            {
                merchantCommission = new Func <AreaForMerchantCommissionCacheModel>(() =>
                {
                    var defaultMerchantCommission = CacheCollection.AreaDefaultCommissionCache.Get(_areaID, (int)_option);
                    if (null != defaultMerchantCommission)
                    {
                        AreaDefaultCommissionOption comOption = default(AreaDefaultCommissionOption);

                        switch (_option)
                        {
                        case AreaMerchantCommissionOption.MerchantProductOrder: comOption = AreaDefaultCommissionOption.MerchantProductOrder; break;

                        case AreaMerchantCommissionOption.MerchantServiceOrder: comOption = AreaDefaultCommissionOption.MerchantServiceOrder; break;
                        }

                        return(new AreaForMerchantCommissionCacheModel
                        {
                            AreaID = defaultMerchantCommission.AreaID,
                            CommissionItem = (int)comOption,
                            CommissionType = defaultMerchantCommission.CommissionType,
                            MerchantID = _merchantID,
                            Value = defaultMerchantCommission.Value
                        });
                    }
                    return(null);
                }).Invoke();
            }
            if (null != merchantCommission && merchantCommission.Value > 0)
            {
                if (merchantCommission.CommissionType == (int)CommissionType.FixedAmount)
                {
                    commissionMoney = merchantCommission.Value;
                }
                else if (merchantCommission.CommissionType == (int)CommissionType.MoneyRate)
                {
                    commissionMoney = Math.Round(_baseAmount * merchantCommission.Value * 0.01M, 2, MidpointRounding.ToEven);
                }
            }

            return(commissionMoney);
        }
예제 #2
0
        decimal GetCommissionMoney()
        {
            //平台应抽成金额
            decimal commissionMoney = 0;

            //区域运营商对个人服务者的抽成配置
            var workerCommission = CacheCollection.AreaForPersonalWorkerCommissionCache.Get(_areaID, _workerID, (int)_option);

            //不存在独立个人服务者的抽成配置则从默认抽成中获取
            if (null == workerCommission)
            {
                workerCommission = new Func <AreaForPersonalWorkerCommissionCacheModel>(() =>
                {
                    var defaultWorkerCommission = CacheCollection.AreaDefaultCommissionCache.Get(_areaID, (int)_option);
                    if (null != defaultWorkerCommission)
                    {
                        AreaDefaultCommissionOption comOption = default(AreaDefaultCommissionOption);

                        switch (_option)
                        {
                        case AreaWorkerCommissionOption.WorkerServiceOrder: comOption = AreaDefaultCommissionOption.WorkerServiceOrder; break;
                        }

                        return(new AreaForPersonalWorkerCommissionCacheModel
                        {
                            AreaID = defaultWorkerCommission.AreaID,
                            CommissionItem = (int)comOption,
                            CommissionType = defaultWorkerCommission.CommissionType,
                            UserID = _workerID,
                            Value = defaultWorkerCommission.Value
                        });
                    }
                    return(null);
                }).Invoke();
            }
            if (null != workerCommission && workerCommission.Value > 0)
            {
                if (workerCommission.CommissionType == (int)CommissionType.FixedAmount)
                {
                    commissionMoney = workerCommission.Value;
                }
                else if (workerCommission.CommissionType == (int)CommissionType.MoneyRate)
                {
                    commissionMoney = Math.Round(_baseAmount * workerCommission.Value * 0.01M, 2, MidpointRounding.ToEven);
                }
            }

            return(commissionMoney);
        }