public async Task CreateDeviceByAgentAsync(CreateDeviceByAgentInput input) { var device = input.Device.MapTo <Device>(); //获取或者创建所有的领域对象 所有的参数验证 已经在DTO中验证 //设备类型 var deviceType = await _deviceTypeRepository.GetAsync(device.BDeviceTypeId); //租户 var tenant = await _tenantRepository.GetAsync(AbpSession.GetTenantId()); //交易记录 var dealRecord = DealRecord.CreateInstallDeviceDealRecord(AbpSession.GetTenantId(), AbpSession.GetUserId(), deviceType.ServiceCharge); //设置默认参数 device.BIconType = "PlaneCar"; //生成设备Code device.BCode = await _deviceTypeManager.CreateCodeAsync(device, deviceType); //数据节点 device.BNodeId = await _nodeManager.GetNodeIdAsync(device); //默认超速 device.SLimitSpeed = SpartanConsts.DefaultLimitSpeed; //添加设备 CheckErrors(await _deviceManager.CreateAsync(device)); await CurrentUnitOfWork.SaveChangesAsync(); //从租户中扣款 CheckErrors(await _tenantManager.DeductMoneyByInstallDeviceAsync(tenant, device, deviceType)); //添加交易记录 await _dealRecordRepository.InsertAsync(dealRecord); await CurrentUnitOfWork.SaveChangesAsync(); }