/// <summary>
        ///     获取s the radio by grade.
        ///     获取等级分润比例
        /// </summary>
        /// <param name="shareUser">The share 会员.</param>
        /// <param name="level">The level.</param>
        private decimal GetRadioByGrade(User shareUser, int level)
        {
            var shareGrade = Resolve <IGradeService>().GetGrade(shareUser.GradeId);

            if (shareGrade == null)
            {
                return(0);
            }

            var radio     = 0m;
            var rangeItem = Configuration.TeamFiexdAchievementRangItems.FirstOrDefault(r => r.GradeId == shareGrade.Id);

            if (rangeItem == null)
            {
                return(radio);
            }

            if (level == 1)
            {
                return(rangeItem.FristAmount);
            }

            if (level == 2)
            {
                return(rangeItem.SecondAmount);
            }

            if (level == 3)
            {
                return(rangeItem.ThreeAmount);
            }

            return(radio);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Bills the logger.
        /// </summary>
        /// <param name="TriggerUser">The trigger 会员.</param>
        /// <param name="GainerUser">The gainer 会员.</param>
        /// <param name="accountName">Name of the account.</param>
        /// <param name="TriggerAmount">The trigger amount.</param>
        /// <param name="DividendAmount">The dividend amount.</param>
        /// <param name="orderSerial">The order serial.</param>
        protected string BillLogger(Alabo.Users.Entities.User TriggerUser, Alabo.Users.Entities.User GainerUser, string accountName, decimal TriggerAmount, decimal DividendAmount, string orderSerial = "")
        {
            //日志模板对应字段替换
            if (string.IsNullOrWhiteSpace(Configuration.TemplateRule.LoggerTemplate))
            {
                return(string.Empty);
            }

            return(Configuration.TemplateRule.LoggerTemplate.Replace("{OrderUserName}", TriggerUser.UserName).Replace("{ShareUserNickName}", TriggerUser.Name).Replace("{ShareUserRealName}", TriggerUser.Name)
                   .Replace("{GainerUserName}", GainerUser.UserName).Replace("{GainerNickName}", GainerUser.Name).Replace("{GainerRealName}", GainerUser.Name)
                   .Replace("{OrderSerial}", orderSerial).Replace("{AccountName}", accountName).Replace("{ShareUserAmount}", TriggerAmount.ToString()).Replace("{DividendAmount}", DividendAmount.ToString()));
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     检查分润会员,得到收益的会员
        ///     可以在插入数据看的时候,检查
        /// </summary>
        /// <param name="userId">会员Id</param>
        /// <param name="shareUser">The share 会员.</param>
        public virtual ExecuteResult <ITaskResult[]> GetShareUser(long userId, out User shareUser)
        {
            shareUser = null;
            var _shareUser = Ioc.Resolve <IUserService>().GetSingle(userId);

            if (_shareUser == null)
            {
                return(ExecuteResult <ITaskResult[]> .Fail($"the shareuser is null.with userid {userId}"));
            }
            //检查分润会员的状态
            if (_shareUser.Status != Status.Normal)
            {
                return(ExecuteResult <ITaskResult[]> .Fail($"the shareuser status is not normal .with userid {userId}"));
            }
            //检查分润订单用户类型
            if (Configuration.ShareUser.IsLimitShareUserType)
            {
                if (!Configuration.ShareUser.ShareUserTypeId.IsGuidNullOrEmpty())
                {
                    if (Configuration.ShareUser.ShareUserTypeId == Guid.Parse("71BE65E6-3A64-414D-972E-1A3D4A365000"))
                    {
                        //如果是会员,检查会员等级
                        if (Configuration.ShareUser.IsLimitShareUserGrade)
                        {
                            if (Configuration.ShareUser.ShareUserGradeId != _shareUser.GradeId)
                            {
                                return(ExecuteResult <ITaskResult[]> .Fail(
                                           $"user with id {userId} not match UserGradeid:{Configuration.ShareUser.ShareUserTypeId}, exit module")); //会员等级不符合grade要求,直接退出
                            }
                        }
                    }
                }
                else
                {
                    return(ExecuteResult <ITaskResult[]> .Fail("ShareUserTypeId is null")); //userTypeId 为空
                }
            }

            shareUser = _shareUser;

            return(ExecuteResult <ITaskResult[]> .Success());
        }
        /// <summary>
        ///     Executes the level amount.
        /// </summary>
        /// <param name="shareUser">会员Id</param>
        /// <param name="levelAmount">剩余金额</param>
        /// <param name="taskResults">The task results.</param>
        /// <param name="level">层次</param>
        /// <param name="parameter"></param>
        /// <param name="shareGuids">maxShareAmount</param>
        private IList <ITaskResult> ExecuteLevelAmount(IList <ITaskResult> taskResults, User shareUser, int level,
                                                       TaskParameter parameter, ref decimal levelAmount, ref List <Guid> shareGuids)
        {
            if (levelAmount <= 0)
            {
                levelAmount = 0m;
                return(taskResults);
            }

            if (shareUser == null)
            {
                levelAmount = 0m;
                return(taskResults);
            }

            var maxAmount = GetRadioByGrade(shareUser, level); // 当前等级最大分润金额

            if (shareGuids.Contains(shareUser.GradeId))
            {
                return(taskResults);
            }

            shareGuids.Add(shareUser.GradeId);
            var shareAmount = Math.Min(levelAmount, maxAmount);

            levelAmount = levelAmount - shareAmount;
            var intro = "直推";

            if (level == 2)
            {
                intro = "间推";
            }

            if (level == 3)
            {
                intro = "三层";
            }

            CreateResultList(shareAmount, ShareOrderUser, shareUser, parameter, Configuration, taskResults, intro);
            return(taskResults);
        }