public async Task CreateDeviceByCustomerAsync(CreateDeviceByCustomerInput input) { //检查当前客户所属的租户库存是否有该设备号 CheckErrors(await _deviceStockManager.CheckIsHaveDeviceNoAsync(input.Device.BNo)); 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"; //所属用户 device.UserId = AbpSession.GetUserId(); //过期时间 device.BExpireTime = DateTime.Now.AddYears(SettingManager.GetSettingValueForTenant <int>(SpartanSettingKeys.Tenant_Customer_InstallDevice_ExpireYear, AbpSession.GetTenantId())); //生成设备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(); }
public async Task <JsonResult> CreateDevice(CreateDeviceByCustomerInput input) { await _deviceAppService.CreateDeviceByCustomerAsync(input); return(Json(true, JsonRequestBehavior.AllowGet)); }