Beispiel #1
0
        //分红任务
        public void Balance()
        {
            //获取所有的成功订单
            var storeOrders = _storeOrderQueryService.StoreOrders().Where(x => x.Status == StoreOrderStatus.Success);

            if (storeOrders.Any())
            {
                //获取所有的可用代理人
                var partners = _partnerQueryService.Partners().Where(x => !x.IsLocked);
                foreach (var partner in partners)
                {
                    var partnerBalanceDate = partner.BalancedDate.AddDays(partner.BalanceInterval);
                    //判断是否到达分红期
                    if (DateTime.Now > partnerBalanceDate || DateTime.Now.Date.Equals(partnerBalanceDate.Date))
                    {
                        //分红期内销售额
                        var amount = storeOrders.Where(
                            x => x.ExpressRegion.Contains(partner.Region) &&
                            x.CreatedOn > partner.BalancedDate &&
                            x.CreatedOn < DateTime.Now).Sum(x => x.Total);
                        var command = new AcceptNewBalanceCommand(amount)
                        {
                            AggregateRootId = partner.Id
                        };
                        _commandService.SendAsync(command);
                    }
                }
            }
        }
Beispiel #2
0
        public async Task <BaseApiResponse> AcceptNewBalance(AcceoptNewBalanceRequest request)
        {
            request.CheckNotNull(nameof(request));
            if (request.Amount <= 0)
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "地区销售额错误"
                });
            }
            var partner = _partnerQueryService.Find(request.Id);

            if (partner == null)
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "没有找到代理"
                });
            }
            var command = new AcceptNewBalanceCommand(request.Amount)
            {
                AggregateRootId = request.Id
            };
            var result = await ExecuteCommandAsync(command);

            if (!result.IsSuccess())
            {
                return(new BaseApiResponse {
                    Code = 400, Message = "命令没有执行成功:{0}".FormatWith(result.GetErrorMessage())
                });
            }
            //添加操作记录
            var currentAdmin = _contextService.GetCurrentAdmin(HttpContext.Current);

            RecordOperat(currentAdmin.AdminId.ToGuid(), "给代理分红", request.Id, "分红地区:{0},销售额:{1}".FormatWith(partner.Region, request.Amount));

            return(new BaseApiResponse());
        }
Beispiel #3
0
 public void Handle(ICommandContext context, AcceptNewBalanceCommand command)
 {
     context.Get <Partner>(command.AggregateRootId).AcceptNewBalance(command.Amount);
 }