Esempio n. 1
0
        /// <summary>
        /// </summary>
        /// <param name="shareAamount"></param>
        /// <param name="triggerUser"></param>
        /// <param name="shareUser"></param>
        /// <param name="config"></param>
        /// <param name="parameter"></param>
        /// <param name="shareLevel"></param>
        public static List <FenRunResultParameter> ResultParameters(decimal shareAamount, User triggerUser,
                                                                    User shareUser, ShareBaseConfig config, TaskParameter parameter, long shareLevel = 0)
        {
            //如果分润金额小于等于0,则退出
            if (shareAamount <= 0)
            {
                return(null);
            }

            //判断用户是否满足type与grade要求,不满足则跳过当前用户

            var moneyTypes    = Ioc.Resolve <IAutoConfigService>().GetList <MoneyTypeConfig>(r => r.Status == Status.Normal);
            var ParameterList = new List <FenRunResultParameter>();

            foreach (var rule in config.RuleItems)
            {
                var shareAmount   = shareAamount * rule.Ratio;
                var ruleMoneyType = moneyTypes.FirstOrDefault(r => r.Id == rule.MoneyTypeId);
                var Parameter     = Create(shareAmount, triggerUser, shareUser, ruleMoneyType, config, parameter,
                                           shareLevel);
                ParameterList.Add(Parameter);
            }

            return(ParameterList);
        }
Esempio n. 2
0
        /// <summary>
        ///     创建分润参数
        /// </summary>
        /// <param name="shareAamount"></param>
        /// <param name="triggerUser">触发用户</param>
        /// <param name="shareUser"></param>
        /// <param name="moneyType">分润金额到账账户类型</param>
        /// <param name="config">分润维度配置数据</param>
        /// <param name="parameter">分润触发通用参数</param>
        /// <param name="shareLevel"></param>
        public static FenRunResultParameter Create(decimal shareAamount, User triggerUser, User shareUser,
                                                   MoneyTypeConfig moneyType, ShareBaseConfig config, TaskParameter parameter, long shareLevel = 0)
        {
            parameter.TryGetValue("OrderId", out long orderId);
            parameter.TryGetValue("OrderSerial", out string orderSerial);
            var Order = new InvoiceOrder
            {
                Id     = orderId,
                Serial = orderSerial,
                Amount = shareAamount
            };

            //替换分润描述
            var summary = config.TemplateRule.LoggerTemplate.Replace("{OrderUserName}", triggerUser.UserName)
                          .Replace("{ShareUserNickName}", triggerUser.Name).Replace("{ShareUserRealName}", triggerUser.Name)
                          .Replace("{GainerUserName}", shareUser.UserName).Replace("{GainerNickName}", shareUser.Name)
                          .Replace("{GainerRealName}", shareUser.Name)
                          .Replace("{OrderSerial}", orderSerial).Replace("{AccountName}", moneyType.Name)
                          .Replace("{ShareUserAmount}", triggerUser.ToString())
                          .Replace("{DividendAmount}", shareAamount.ToString());

            return(new FenRunResultParameter
            {
                Amount = shareAamount,
                ModuleName = "招商奖", //读取配置的的名称,未实现

                //分润记录信息
                ShareStatus = FenRunStatus.Success,
                ShareLevel = shareLevel,
                UserRemark = string.Empty,
                Summary = summary,
                ExtraDate = "额外数据",

                //模块信息
                ModuleConfigId = config.Id,
                //BonusId = config.BonusId,
                ModuleTypeName = config.GetType().Name,
                TriggerType = config.TriggerType,

                //触发用户
                TriggerGradeId = config.ShareUser.ShareUserGradeId,
                TriggerUserTypeId = config.ShareUser.ShareUserTypeId,
                TriggerUserId = triggerUser.Id,
                OrderUserName = triggerUser.GetUserName(),

                //获得分润的用户
                ReceiveUserId = shareUser.Id,
                ReceiveUserName = shareUser.GetUserName(),

                //订单信息
                Order = Order,

                //财务信息
                MoneyTypeId = moneyType.Id,
                BillStatus = BillStatus.Success
            });
        }
Esempio n. 3
0
        /// <summary>
        /// 生成订单
        /// </summary>
        /// <param name="shareAmount">分润金额</param>
        /// <param name="orderUser">下单用户</param>
        /// <param name="shareUser">收益用户</param>
        /// <param name="parameter">参数</param>
        /// <param name="config">分润配置</param>
        /// <param name="resultList"></param>
        /// <param name="configName"></param>
        protected void CreateResultList(decimal shareAmount, User orderUser, User shareUser, TaskParameter parameter, ShareBaseConfig config, IList <ITaskResult> resultList, string configName = "")
        {
            //如果分润金额小于等于0,则退出
            if (shareAmount > 0 && shareUser != null)
            {
                if (shareUser.Status == Alabo.Domains.Enums.Status.Normal)
                {
                    parameter.TryGetValue("OrderId", out long orderId);

                    // 如果限制供应商购买过的店铺
                    // 检查该会员是否购买过该店铺的商品,核对User_TypeUser表
                    if (Configuration.ProductRule.IsLimitStoreBuy)
                    {
                        //TODO 重构
                        //// 如果是订单用户
                        //if (TriggerType == TriggerType.Order) {
                        //    var order = Ioc.Resolve<IOrderService>().GetSingle(orderId);
                        //    if (order != null) {
                        //        var storeUser = Ioc.Resolve<ITypeUserService>()
                        //            .GetStoreUser(order.StoreId, shareUser.Id);
                        //        if (storeUser == null) {
                        //            //分润用户不是该店铺的用户 退出
                        //            return;
                        //            // ExecuteResult<ITaskResult>.Cancel($"分润用户不是该店铺的用户");
                        //        }
                        //    }
                        //}
                    }

                    var moneyTypes = Resolve <IAutoConfigService>().GetList <MoneyTypeConfig>(r => r.Status == Alabo.Domains.Enums.Status.Normal);
                    foreach (var rule in Configuration.RuleItems)
                    {
                        var ruleAmount    = shareAmount * rule.Ratio;
                        var ruleMoneyType = moneyTypes.FirstOrDefault(r => r.Id == rule.MoneyTypeId);
                        if (ruleMoneyType == null)
                        {
                            continue;
                            //ExecuteResult<ITaskResult>.Cancel($"资产分润规则设置错误,货币类型Id{ruleMoneyType.Id}");
                        }

                        var shareResult = new ShareResult {
                            OrderUser       = orderUser,
                            ShareUser       = shareUser,
                            ShareOrder      = base.ShareOrder,
                            Amount          = ruleAmount,
                            MoneyTypeId     = rule.MoneyTypeId,
                            ModuleConfigId  = config.Id,
                            ModuleId        = config.ModuleId,
                            SmsNotification = config.TemplateRule.SmsNotification
                        };
                        //描述
                        shareResult.Intro = Configuration.TemplateRule.LoggerTemplate.Replace("{OrderUserName}", orderUser.GetUserName())
                                            .Replace("{ShareUserName}", shareUser.GetUserName())
                                            .Replace("{ConfigName}", configName)
                                            .Replace("{AccountName}", ruleMoneyType.Name)
                                            .Replace("{OrderId}", orderId.ToString())
                                            .Replace("{OrderPrice}", base.ShareOrder.Amount.ToString("F2"))
                                            .Replace("{ShareAmount}", ruleAmount.ToString("F2"));

                        //短信内容
                        shareResult.SmsIntro = Configuration.TemplateRule.LoggerTemplate.Replace("{OrderUserName}", orderUser.GetUserName())
                                               .Replace("{ShareUserName}", shareUser.GetUserName())
                                               .Replace("{ConfigName}", configName)
                                               .Replace("{AccountName}", ruleMoneyType.Name)
                                               .Replace("{OrderId}", orderId.ToString())
                                               .Replace("{OrderPrice}", base.ShareOrder.Amount.ToString("F2"))
                                               .Replace("{ShareAmount}", ruleAmount.ToString("F2"));

                        var queueResult = new TaskQueueResult <ITaskResult>(Context)
                        {
                            ShareResult = shareResult
                        };
                        resultList.Add(queueResult);
                    }
                }
            }
        }
Esempio n. 4
0
 protected void CreateResultList(decimal shareAmount, User shareUser, TaskParameter parameter, ShareBaseConfig config, IList <ITaskResult> resultList, string configName = "")
 {
     CreateResultList(shareAmount, base.ShareOrderUser, shareUser, parameter, config, resultList, configName = "");
 }