Ejemplo n.º 1
0
        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));
        }