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