/// <summary> /// 线上出货上报 /// </summary> /// <returns></returns> public async Task OnlineOrder(DealOrderInput input) { var orders = await _orderRepository.GetAllListAsync(c => input.orders.Any(w => w.orderId == c.order_id)); foreach (var order in orders) { var state = input.orders.FirstOrDefault(c => c.orderId == order.order_id); order.status = state.orderStatus; } }
public override Empty DealOrder(DealOrderInput input) { var order = CheckDealOrderInput(input.OrderId); order.BalanceAchieved.Add(input.Amount); State.AllOrders[input.OrderId] = order; if (order.BalanceAchieved == order.BalanceObtain) { order.Status = OrderStatus.Done; State.AllOrders[input.OrderId] = order; UpdateOrderId(input.OrderId, OrderStatus.Done); } else { if (order.Status == OrderStatus.Created) { order.Status = OrderStatus.Ongoing; State.AllOrders[input.OrderId] = order; } } //add sub order record var subOrders = State.SubOrders[input.OrderId]; subOrders.SubOrders.Add(new DealtOrder { Dealer = Context.Sender, Amount = input.Amount }); //transfer from State.TokenContract.TransferFrom.Send(new TransferFromInput { Symbol = order.SymbolObtain, Amount = input.Amount, From = Context.Sender, To = Context.Self, Memo = "sent order token to contract first" }); //transfer to issuer State.TokenContract.Transfer.Send(new TransferInput { Symbol = order.SymbolObtain, Amount = input.Amount, To = order.Issuer, Memo = "deal order" }); //transfer to dealer var paidAmount = order.BalancePaid.Div(order.BalanceObtain).Mul(input.Amount); State.TokenContract.Transfer.Send(new TransferInput { Symbol = order.SymbolPaid, Amount = paidAmount, To = Context.Sender, Memo = "got token" }); Context.Fire(new OrderDealt { OrderId = input.OrderId, Dealer = Context.Sender, Amount = input.Amount }); return(new Empty()); }