//分红任务 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); } } } }
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()); }
public void Handle(ICommandContext context, AcceptNewBalanceCommand command) { context.Get <Partner>(command.AggregateRootId).AcceptNewBalance(command.Amount); }