示例#1
0
        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();
        }
        public async Task <JsonResult> CreateDevice(CreateDeviceByAgentInput input)
        {
            await _deviceAppService.CreateDeviceByAgentAsync(input);

            return(Json(true, JsonRequestBehavior.AllowGet));
        }