diff --git a/IoTSharp.Data.MySQL/Migrations/20211221075652_addmodelcommand.Designer.cs b/IoTSharp.Data.MySQL/Migrations/20211221075652_addmodelcommand.Designer.cs new file mode 100644 index 0000000000000000000000000000000000000000..357266057163c2f39e463e20d4de8824ba6aba59 --- /dev/null +++ b/IoTSharp.Data.MySQL/Migrations/20211221075652_addmodelcommand.Designer.cs @@ -0,0 +1,1957 @@ +// +using System; +using IoTSharp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace IoTSharp.Data.MySql.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20211221075652_addmodelcommand")] + partial class addmodelcommand + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 64) + .HasAnnotation("ProductVersion", "5.0.12"); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ActionData") + .HasColumnType("JSON"); + + b.Property("ActionName") + .HasColumnType("longtext"); + + b.Property("ActionResult") + .HasColumnType("JSON"); + + b.Property("ActiveDateTime") + .HasColumnType("timestamp"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("ObjectID") + .HasColumnType("char(36)"); + + b.Property("ObjectName") + .HasColumnType("longtext"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("UserId") + .HasColumnType("longtext"); + + b.Property("UserName") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuditLog"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuthToken") + .HasColumnType("longtext"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuthorizedKeys"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionary", b => + { + b.Property("DictionaryId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("Dictionary18NKeyName") + .HasColumnType("longtext"); + + b.Property("DictionaryColor") + .HasColumnType("longtext"); + + b.Property("DictionaryDesc") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupId") + .HasColumnType("bigint"); + + b.Property("DictionaryIcon") + .HasColumnType("longtext"); + + b.Property("DictionaryName") + .HasColumnType("longtext"); + + b.Property("DictionaryPattern") + .HasColumnType("longtext"); + + b.Property("DictionaryStatus") + .HasColumnType("int"); + + b.Property("DictionaryTag") + .HasColumnType("longtext"); + + b.Property("DictionaryValue") + .HasColumnType("longtext"); + + b.Property("DictionaryValueType") + .HasColumnType("int"); + + b.Property("DictionaryValueTypeName") + .HasColumnType("longtext"); + + b.HasKey("DictionaryId"); + + b.ToTable("BaseDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionaryGroup", b => + { + b.Property("DictionaryGroupId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("DictionaryGroup18NKeyName") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupDesc") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupKey") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupName") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupStatus") + .HasColumnType("int"); + + b.Property("DictionaryGroupValueType") + .HasColumnType("int"); + + b.Property("DictionaryGroupValueTypeName") + .HasColumnType("longtext"); + + b.HasKey("DictionaryGroupId"); + + b.ToTable("BaseDictionaryGroups"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("BizData") + .HasColumnType("longtext"); + + b.Property("Bizid") + .HasColumnType("longtext"); + + b.Property("CreaterDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("EventDesc") + .HasColumnType("longtext"); + + b.Property("EventName") + .HasColumnType("longtext"); + + b.Property("EventStaus") + .HasColumnType("int"); + + b.Property("FlowRuleRuleId") + .HasColumnType("char(36)"); + + b.Property("MataData") + .HasColumnType("longtext"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("EventId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("BaseEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseI18N", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("AddDate") + .HasColumnType("datetime(6)"); + + b.Property("KeyName") + .HasColumnType("longtext"); + + b.Property("ResouceDesc") + .HasColumnType("longtext"); + + b.Property("ResouceGroupId") + .HasColumnType("int"); + + b.Property("ResourceId") + .HasColumnType("bigint"); + + b.Property("ResourceKey") + .HasColumnType("longtext"); + + b.Property("ResourceTag") + .HasColumnType("longtext"); + + b.Property("ResourceType") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("ValueBG") + .HasColumnType("longtext"); + + b.Property("ValueCS") + .HasColumnType("longtext"); + + b.Property("ValueDA") + .HasColumnType("longtext"); + + b.Property("ValueDEDE") + .HasColumnType("longtext"); + + b.Property("ValueELGR") + .HasColumnType("longtext"); + + b.Property("ValueENGR") + .HasColumnType("longtext"); + + b.Property("ValueENUS") + .HasColumnType("longtext"); + + b.Property("ValueESES") + .HasColumnType("longtext"); + + b.Property("ValueFI") + .HasColumnType("longtext"); + + b.Property("ValueFRFR") + .HasColumnType("longtext"); + + b.Property("ValueHE") + .HasColumnType("longtext"); + + b.Property("ValueHRHR") + .HasColumnType("longtext"); + + b.Property("ValueHU") + .HasColumnType("longtext"); + + b.Property("ValueITIT") + .HasColumnType("longtext"); + + b.Property("ValueJAJP") + .HasColumnType("longtext"); + + b.Property("ValueKOKR") + .HasColumnType("longtext"); + + b.Property("ValueNL") + .HasColumnType("longtext"); + + b.Property("ValuePLPL") + .HasColumnType("longtext"); + + b.Property("ValuePT") + .HasColumnType("longtext"); + + b.Property("ValueSLSL") + .HasColumnType("longtext"); + + b.Property("ValueSR") + .HasColumnType("longtext"); + + b.Property("ValueSV") + .HasColumnType("longtext"); + + b.Property("ValueTRTR") + .HasColumnType("longtext"); + + b.Property("ValueUK") + .HasColumnType("longtext"); + + b.Property("ValueVI") + .HasColumnType("longtext"); + + b.Property("ValueZHCN") + .HasColumnType("longtext"); + + b.Property("ValueZHTW") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("BaseI18Ns"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("City") + .HasColumnType("longtext"); + + b.Property("Country") + .HasColumnType("longtext"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Phone") + .HasColumnType("longtext"); + + b.Property("Province") + .HasColumnType("longtext"); + + b.Property("Street") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Customer"); + }); + + modelBuilder.Entity("IoTSharp.Data.DataStorage", b => + { + b.Property("Catalog") + .HasColumnType("int"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("KeyName") + .HasColumnType("varchar(255)"); + + b.Property("DataSide") + .HasColumnType("int"); + + b.Property("DateTime") + .HasColumnType("timestamp"); + + b.Property("Type") + .HasColumnType("int"); + + b.Property("Value_Binary") + .HasColumnType("longblob"); + + b.Property("Value_Boolean") + .HasColumnType("tinyint(1)"); + + b.Property("Value_DateTime") + .HasColumnType("timestamp"); + + b.Property("Value_Double") + .HasColumnType("double"); + + b.Property("Value_Json") + .HasColumnType("JSON"); + + b.Property("Value_Long") + .HasColumnType("bigint"); + + b.Property("Value_String") + .HasColumnType("longtext"); + + b.Property("Value_XML") + .HasColumnType("longtext"); + + b.HasKey("Catalog", "DeviceId", "KeyName"); + + b.HasIndex("Catalog"); + + b.HasIndex("Catalog", "DeviceId"); + + b.ToTable("DataStorage"); + + b.HasDiscriminator("Catalog").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuthorizedKeyId") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("DeviceModelId") + .HasColumnType("char(36)"); + + b.Property("DeviceType") + .HasColumnType("int"); + + b.Property("LastActive") + .HasColumnType("timestamp"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Online") + .HasColumnType("tinyint(1)"); + + b.Property("OwnerId") + .HasColumnType("char(36)"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Timeout") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizedKeyId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("DeviceModelId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Device"); + + b.HasDiscriminator("DeviceType").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.Property("DiagramId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("DiagramDesc") + .HasColumnType("longtext"); + + b.Property("DiagramImage") + .HasColumnType("longtext"); + + b.Property("DiagramName") + .HasColumnType("longtext"); + + b.Property("DiagramStatus") + .HasColumnType("int"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)"); + + b.HasKey("DiagramId"); + + b.ToTable("DeviceDiagrams"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.Property("GraphId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("DeviceDiagramDiagramId") + .HasColumnType("char(36)"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("GraphElementId") + .HasColumnType("longtext"); + + b.Property("GraphFill") + .HasColumnType("longtext"); + + b.Property("GraphHeight") + .HasColumnType("decimal(65,30)"); + + b.Property("GraphPostionX") + .HasColumnType("decimal(65,30)"); + + b.Property("GraphPostionY") + .HasColumnType("decimal(65,30)"); + + b.Property("GraphShape") + .HasColumnType("longtext"); + + b.Property("GraphStroke") + .HasColumnType("longtext"); + + b.Property("GraphStrokeWidth") + .HasColumnType("decimal(65,30)"); + + b.Property("GraphTextAnchor") + .HasColumnType("longtext"); + + b.Property("GraphTextFill") + .HasColumnType("longtext"); + + b.Property("GraphTextFontFamily") + .HasColumnType("longtext"); + + b.Property("GraphTextFontSize") + .HasColumnType("decimal(65,30)"); + + b.Property("GraphTextRefX") + .HasColumnType("decimal(65,30)"); + + b.Property("GraphTextRefY") + .HasColumnType("decimal(65,30)"); + + b.Property("GraphTextVerticalAnchor") + .HasColumnType("longtext"); + + b.Property("GraphWidth") + .HasColumnType("decimal(65,30)"); + + b.HasKey("GraphId"); + + b.HasIndex("DeviceDiagramDiagramId"); + + b.ToTable("DeviceGraphs"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.Property("ToolBoxId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CommondParam") + .HasColumnType("longtext"); + + b.Property("CommondType") + .HasColumnType("longtext"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("DeviceId") + .HasColumnType("bigint"); + + b.Property("ToolBoxIcon") + .HasColumnType("longtext"); + + b.Property("ToolBoxName") + .HasColumnType("longtext"); + + b.Property("ToolBoxOffsetLeftPer") + .HasColumnType("decimal(65,30)"); + + b.Property("ToolBoxOffsetTopPer") + .HasColumnType("decimal(65,30)"); + + b.Property("ToolBoxOffsetX") + .HasColumnType("decimal(65,30)"); + + b.Property("ToolBoxOffsetY") + .HasColumnType("decimal(65,30)"); + + b.Property("ToolBoxRequestUri") + .HasColumnType("longtext"); + + b.Property("ToolBoxStatus") + .HasColumnType("int"); + + b.Property("ToolBoxType") + .HasColumnType("longtext"); + + b.HasKey("ToolBoxId"); + + b.ToTable("DeviceGraphToolBoxes"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("IdentityId") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IdentityType") + .HasColumnType("int"); + + b.Property("IdentityValue") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("DeviceId"); + + b.ToTable("DeviceIdentities"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Property("DeviceModelId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("ModelDesc") + .HasColumnType("longtext"); + + b.Property("ModelName") + .HasColumnType("longtext"); + + b.Property("ModelStatus") + .HasColumnType("int"); + + b.HasKey("DeviceModelId"); + + b.ToTable("DeviceModels"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.Property("CommandId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CommandI18N") + .HasColumnType("longtext"); + + b.Property("CommandName") + .HasColumnType("longtext"); + + b.Property("CommandParams") + .HasColumnType("longtext"); + + b.Property("CommandStatus") + .HasColumnType("int"); + + b.Property("CommandTemplate") + .HasColumnType("longtext"); + + b.Property("CommandTitle") + .HasColumnType("longtext"); + + b.Property("CommandType") + .HasColumnType("int"); + + b.Property("CreateDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("DeviceModelId") + .HasColumnType("char(36)"); + + b.HasKey("CommandId"); + + b.HasIndex("DeviceModelId"); + + b.ToTable("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePort", b => + { + b.Property("PortId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("bigint"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("PortDesc") + .HasColumnType("longtext"); + + b.Property("PortElementId") + .HasColumnType("longtext"); + + b.Property("PortName") + .HasColumnType("longtext"); + + b.Property("PortPhyType") + .HasColumnType("int"); + + b.Property("PortPic") + .HasColumnType("longtext"); + + b.Property("PortStatus") + .HasColumnType("int"); + + b.Property("PortType") + .HasColumnType("int"); + + b.HasKey("PortId"); + + b.ToTable("DevicePorts"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePortMapping", b => + { + b.Property("MappingId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("MappingIndex") + .HasColumnType("decimal(65,30)"); + + b.Property("MappingStatus") + .HasColumnType("int"); + + b.Property("SourceDeviceId") + .HasColumnType("char(36)"); + + b.Property("SourceElementId") + .HasColumnType("longtext"); + + b.Property("SourceId") + .HasColumnType("longtext"); + + b.Property("TargeId") + .HasColumnType("longtext"); + + b.Property("TargetDeviceId") + .HasColumnType("char(36)"); + + b.Property("TargetElementId") + .HasColumnType("longtext"); + + b.HasKey("MappingId"); + + b.ToTable("DevicePortMappings"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.Property("DeviceRuleId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConfigDateTime") + .HasColumnType("datetime(6)"); + + b.Property("ConfigUser") + .HasColumnType("char(36)"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("EnableTrace") + .HasColumnType("int"); + + b.Property("FlowRuleRuleId") + .HasColumnType("char(36)"); + + b.HasKey("DeviceRuleId"); + + b.HasIndex("DeviceId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("DeviceRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.Property("FieldId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("FieldCode") + .HasColumnType("longtext"); + + b.Property("FieldCreateDate") + .HasColumnType("datetime(6)"); + + b.Property("FieldEditDate") + .HasColumnType("datetime(6)"); + + b.Property("FieldI18nKey") + .HasColumnType("longtext"); + + b.Property("FieldMaxLength") + .HasColumnType("int"); + + b.Property("FieldName") + .HasColumnType("longtext"); + + b.Property("FieldPattern") + .HasColumnType("longtext"); + + b.Property("FieldPocoTypeName") + .HasColumnType("longtext"); + + b.Property("FieldStatus") + .HasColumnType("int"); + + b.Property("FieldUIElement") + .HasColumnType("bigint"); + + b.Property("FieldUIElementSchema") + .HasColumnType("longtext"); + + b.Property("FieldUnit") + .HasColumnType("longtext"); + + b.Property("FieldValue") + .HasColumnType("longtext"); + + b.Property("FieldValueDataSource") + .HasColumnType("longtext"); + + b.Property("FieldValueLocalDataSource") + .HasColumnType("longtext"); + + b.Property("FieldValueType") + .HasColumnType("int"); + + b.Property("FieldValueTypeName") + .HasColumnType("longtext"); + + b.Property("FormId") + .HasColumnType("bigint"); + + b.Property("IsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("IsRequired") + .HasColumnType("tinyint(1)"); + + b.HasKey("FieldId"); + + b.ToTable("DynamicFormFieldInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.Property("FieldValueId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("BizId") + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("FieldCode") + .HasColumnType("longtext"); + + b.Property("FieldCreateDate") + .HasColumnType("datetime(6)"); + + b.Property("FieldId") + .HasColumnType("bigint"); + + b.Property("FieldName") + .HasColumnType("longtext"); + + b.Property("FieldUnit") + .HasColumnType("longtext"); + + b.Property("FieldValue") + .HasColumnType("longtext"); + + b.Property("FieldValueType") + .HasColumnType("bigint"); + + b.Property("FromId") + .HasColumnType("bigint"); + + b.HasKey("FieldValueId"); + + b.ToTable("DynamicFormFieldValueInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.Property("FormId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("BizId") + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("FormCreator") + .HasColumnType("bigint"); + + b.Property("FormDesc") + .HasColumnType("longtext"); + + b.Property("FormLayout") + .HasColumnType("longtext"); + + b.Property("FormName") + .HasColumnType("longtext"); + + b.Property("FormSchame") + .HasColumnType("longtext"); + + b.Property("FormStatus") + .HasColumnType("int"); + + b.Property("FromCreateDate") + .HasColumnType("datetime(6)"); + + b.Property("IsCompact") + .HasColumnType("tinyint(1)"); + + b.Property("ModelClass") + .HasColumnType("longtext"); + + b.Property("Url") + .HasColumnType("longtext"); + + b.HasKey("FormId"); + + b.ToTable("DynamicFormInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.Property("FlowId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Conditionexpression") + .HasColumnType("longtext"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("CreateId") + .HasColumnType("char(36)"); + + b.Property("Createor") + .HasColumnType("char(36)"); + + b.Property("ExecutorId") + .HasColumnType("char(36)"); + + b.Property("FlowRuleRuleId") + .HasColumnType("char(36)"); + + b.Property("FlowStatus") + .HasColumnType("int"); + + b.Property("FlowType") + .HasColumnType("longtext"); + + b.Property("Flowdesc") + .HasColumnType("longtext"); + + b.Property("Flowname") + .HasColumnType("longtext"); + + b.Property("Incoming") + .HasColumnType("longtext"); + + b.Property("NodeProcessClass") + .HasColumnType("longtext"); + + b.Property("NodeProcessMethod") + .HasColumnType("longtext"); + + b.Property("NodeProcessParams") + .HasColumnType("longtext"); + + b.Property("NodeProcessScript") + .HasColumnType("longtext"); + + b.Property("NodeProcessScriptType") + .HasColumnType("longtext"); + + b.Property("NodeProcessType") + .HasColumnType("longtext"); + + b.Property("ObjectId") + .HasColumnType("longtext"); + + b.Property("Outgoing") + .HasColumnType("longtext"); + + b.Property("SourceId") + .HasColumnType("longtext"); + + b.Property("TargetId") + .HasColumnType("longtext"); + + b.Property("TestStatus") + .HasColumnType("int"); + + b.Property("Tester") + .HasColumnType("char(36)"); + + b.Property("TesterDateTime") + .HasColumnType("datetime(6)"); + + b.Property("bpmnid") + .HasColumnType("longtext"); + + b.HasKey("FlowId"); + + b.HasIndex("ExecutorId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("Flows"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.Property("OperationId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AddDate") + .HasColumnType("datetime(6)"); + + b.Property("BaseEventId") + .HasColumnType("char(36)"); + + b.Property("BizId") + .HasColumnType("longtext"); + + b.Property("Data") + .HasColumnType("longtext"); + + b.Property("FlowId") + .HasColumnType("char(36)"); + + b.Property("FlowRuleId") + .HasColumnType("char(36)"); + + b.Property("NodeStatus") + .HasColumnType("int"); + + b.Property("OperationDesc") + .HasColumnType("longtext"); + + b.Property("Step") + .HasColumnType("int"); + + b.Property("Tag") + .HasColumnType("longtext"); + + b.Property("bpmnid") + .HasColumnType("longtext"); + + b.HasKey("OperationId"); + + b.HasIndex("BaseEventId"); + + b.HasIndex("FlowId"); + + b.HasIndex("FlowRuleId"); + + b.ToTable("FlowOperations"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.Property("RuleId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreatTime") + .HasColumnType("datetime(6)"); + + b.Property("CreateId") + .HasColumnType("char(36)"); + + b.Property("Creator") + .HasColumnType("longtext"); + + b.Property("DefinitionsXml") + .HasColumnType("longtext"); + + b.Property("Describes") + .HasColumnType("longtext"); + + b.Property("ExecutableCode") + .HasColumnType("longtext"); + + b.Property("MountType") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ParentRuleId") + .HasColumnType("char(36)"); + + b.Property("RuleDesc") + .HasColumnType("longtext"); + + b.Property("RuleStatus") + .HasColumnType("int"); + + b.Property("RuleType") + .HasColumnType("int"); + + b.Property("Runner") + .HasColumnType("longtext"); + + b.Property("SubVersion") + .HasColumnType("double"); + + b.HasKey("RuleId"); + + b.ToTable("FlowRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("IdentityUserId") + .HasColumnType("varchar(255)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("IdentityUserId"); + + b.HasIndex("TenantId"); + + b.ToTable("Relationship"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.Property("ExecutorId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AddDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("DefaultConfig") + .HasColumnType("longtext"); + + b.Property("ExecutorDesc") + .HasColumnType("longtext"); + + b.Property("ExecutorName") + .HasColumnType("longtext"); + + b.Property("ExecutorStatus") + .HasColumnType("int"); + + b.Property("MataData") + .HasColumnType("longtext"); + + b.Property("Path") + .HasColumnType("longtext"); + + b.Property("Tag") + .HasColumnType("longtext"); + + b.Property("TestStatus") + .HasColumnType("int"); + + b.Property("Tester") + .HasColumnType("char(36)"); + + b.Property("TesterDateTime") + .HasColumnType("datetime(6)"); + + b.Property("TypeName") + .HasColumnType("longtext"); + + b.HasKey("ExecutorId"); + + b.ToTable("RuleTaskExecutors"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("EventDesc") + .HasColumnType("longtext"); + + b.Property("EventName") + .HasColumnType("longtext"); + + b.Property("EventNameSpace") + .HasColumnType("longtext"); + + b.Property("EventParam") + .HasColumnType("longtext"); + + b.Property("EventStatus") + .HasColumnType("int"); + + b.Property("EventTag") + .HasColumnType("longtext"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("EventId"); + + b.ToTable("SubscriptionEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.Property("BindId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("EventId") + .HasColumnType("char(36)"); + + b.Property("RuleTaskExecutorExecutorId") + .HasColumnType("char(36)"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("SubscriptionEventId") + .HasColumnType("char(36)"); + + b.Property("TaskConfig") + .HasColumnType("longtext"); + + b.HasKey("BindId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("RuleTaskExecutorExecutorId"); + + b.HasIndex("SubscriptionEventId"); + + b.ToTable("SubscriptionTasks"); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryData", b => + { + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("KeyName") + .HasColumnType("varchar(255)"); + + b.Property("DateTime") + .HasColumnType("timestamp"); + + b.Property("DataSide") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.Property("Value_Binary") + .HasColumnType("longblob"); + + b.Property("Value_Boolean") + .HasColumnType("tinyint(1)"); + + b.Property("Value_DateTime") + .HasColumnType("timestamp"); + + b.Property("Value_Double") + .HasColumnType("double"); + + b.Property("Value_Json") + .HasColumnType("JSON"); + + b.Property("Value_Long") + .HasColumnType("bigint"); + + b.Property("Value_String") + .HasColumnType("longtext"); + + b.Property("Value_XML") + .HasColumnType("longtext"); + + b.HasKey("DeviceId", "KeyName", "DateTime"); + + b.HasIndex("DeviceId"); + + b.HasIndex("KeyName"); + + b.HasIndex("DeviceId", "KeyName"); + + b.ToTable("TelemetryData"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("City") + .HasColumnType("longtext"); + + b.Property("Country") + .HasColumnType("longtext"); + + b.Property("EMail") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Phone") + .HasColumnType("longtext"); + + b.Property("Province") + .HasColumnType("longtext"); + + b.Property("Street") + .HasColumnType("longtext"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Tenant"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("longtext"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("LockoutEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("longtext"); + + b.Property("PhoneNumber") + .HasColumnType("longtext"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("tinyint(1)"); + + b.Property("SecurityStamp") + .HasColumnType("longtext"); + + b.Property("TwoFactorEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ClaimType") + .HasColumnType("longtext"); + + b.Property("ClaimValue") + .HasColumnType("longtext"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("ProviderKey") + .HasColumnType("varchar(255)"); + + b.Property("ProviderDisplayName") + .HasColumnType("longtext"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("varchar(255)"); + + b.Property("RoleId") + .HasColumnType("varchar(255)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("varchar(255)"); + + b.Property("LoginProvider") + .HasColumnType("varchar(255)"); + + b.Property("Name") + .HasColumnType("varchar(255)"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens"); + }); + + modelBuilder.Entity("IoTSharp.Data.AttributeLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(2); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(4); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.HasBaseType("IoTSharp.Data.Device"); + + b.HasDiscriminator().HasValue(1); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Customers") + .HasForeignKey("TenantId"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.HasOne("IoTSharp.Data.AuthorizedKey", null) + .WithMany("Devices") + .HasForeignKey("AuthorizedKeyId"); + + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany("Devices") + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.DeviceModel", "DeviceModel") + .WithMany() + .HasForeignKey("DeviceModelId"); + + b.HasOne("IoTSharp.Data.Gateway", "Owner") + .WithMany("Children") + .HasForeignKey("OwnerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Devices") + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("DeviceModel"); + + b.Navigation("Owner"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.HasOne("IoTSharp.Data.DeviceDiagram", "DeviceDiagram") + .WithMany() + .HasForeignKey("DeviceDiagramDiagramId"); + + b.Navigation("DeviceDiagram"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithMany() + .HasForeignKey("DeviceId"); + + b.Navigation("Device"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.HasOne("IoTSharp.Data.DeviceModel", "DeviceModel") + .WithMany("DeviceModelCommands") + .HasForeignKey("DeviceModelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeviceModel"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithMany() + .HasForeignKey("DeviceId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("Device"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "Executor") + .WithMany() + .HasForeignKey("ExecutorId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("Executor"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.HasOne("IoTSharp.Data.BaseEvent", "BaseEvent") + .WithMany() + .HasForeignKey("BaseEventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("IoTSharp.Data.Flow", "Flow") + .WithMany() + .HasForeignKey("FlowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BaseEvent"); + + b.Navigation("Flow"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "IdentityUser") + .WithMany() + .HasForeignKey("IdentityUserId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("IdentityUser"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "RuleTaskExecutor") + .WithMany() + .HasForeignKey("RuleTaskExecutorExecutorId"); + + b.HasOne("IoTSharp.Data.SubscriptionEvent", "Subscription") + .WithMany() + .HasForeignKey("SubscriptionEventId"); + + b.Navigation("Customer"); + + b.Navigation("RuleTaskExecutor"); + + b.Navigation("Subscription"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Navigation("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Navigation("Customers"); + + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.Navigation("Children"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/IoTSharp.Data.MySQL/Migrations/20211221075652_addmodelcommand.cs b/IoTSharp.Data.MySQL/Migrations/20211221075652_addmodelcommand.cs new file mode 100644 index 0000000000000000000000000000000000000000..d983a73b624551a8e83660dcc4e9eca109f0aae6 --- /dev/null +++ b/IoTSharp.Data.MySQL/Migrations/20211221075652_addmodelcommand.cs @@ -0,0 +1,285 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace IoTSharp.Data.MySql.Migrations +{ + public partial class addmodelcommand : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_FlowOperations_BaseEvents_BaseEventEventId", + table: "FlowOperations"); + + migrationBuilder.DropForeignKey( + name: "FK_FlowOperations_FlowRules_FlowRuleRuleId", + table: "FlowOperations"); + + migrationBuilder.DropForeignKey( + name: "FK_FlowOperations_Flows_FlowId", + table: "FlowOperations"); + + migrationBuilder.DropIndex( + name: "IX_FlowOperations_BaseEventEventId", + table: "FlowOperations"); + + migrationBuilder.DropIndex( + name: "IX_FlowOperations_FlowRuleRuleId", + table: "FlowOperations"); + + migrationBuilder.DropColumn( + name: "BaseEventEventId", + table: "FlowOperations"); + + migrationBuilder.DropColumn( + name: "FlowRuleRuleId", + table: "FlowOperations"); + + migrationBuilder.AlterColumn( + name: "FlowId", + table: "FlowOperations", + type: "char(36)", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), + collation: "ascii_general_ci", + oldClrType: typeof(Guid), + oldType: "char(36)", + oldNullable: true) + .OldAnnotation("Relational:Collation", "ascii_general_ci"); + + migrationBuilder.AddColumn( + name: "BaseEventId", + table: "FlowOperations", + type: "char(36)", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), + collation: "ascii_general_ci"); + + migrationBuilder.AddColumn( + name: "FlowRuleId", + table: "FlowOperations", + type: "char(36)", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000"), + collation: "ascii_general_ci"); + + migrationBuilder.AddColumn( + name: "DeviceModelId", + table: "Device", + type: "char(36)", + nullable: true, + collation: "ascii_general_ci"); + + migrationBuilder.CreateTable( + name: "DeviceModels", + columns: table => new + { + DeviceModelId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + ModelName = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModelDesc = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModelStatus = table.Column(type: "int", nullable: false), + CreateDateTime = table.Column(type: "datetime(6)", nullable: false), + Creator = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci") + }, + constraints: table => + { + table.PrimaryKey("PK_DeviceModels", x => x.DeviceModelId); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "DeviceModelCommands", + columns: table => new + { + CommandId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + CommandTitle = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CommandI18N = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CommandType = table.Column(type: "int", nullable: false), + CommandParams = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CommandName = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CommandTemplate = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + DeviceModelId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + CreateDateTime = table.Column(type: "datetime(6)", nullable: false), + Creator = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + CommandStatus = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_DeviceModelCommands", x => x.CommandId); + table.ForeignKey( + name: "FK_DeviceModelCommands_DeviceModels_DeviceModelId", + column: x => x.DeviceModelId, + principalTable: "DeviceModels", + principalColumn: "DeviceModelId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_FlowOperations_BaseEventId", + table: "FlowOperations", + column: "BaseEventId"); + + migrationBuilder.CreateIndex( + name: "IX_FlowOperations_FlowRuleId", + table: "FlowOperations", + column: "FlowRuleId"); + + migrationBuilder.CreateIndex( + name: "IX_Device_DeviceModelId", + table: "Device", + column: "DeviceModelId"); + + migrationBuilder.CreateIndex( + name: "IX_DeviceModelCommands_DeviceModelId", + table: "DeviceModelCommands", + column: "DeviceModelId"); + + migrationBuilder.AddForeignKey( + name: "FK_Device_DeviceModels_DeviceModelId", + table: "Device", + column: "DeviceModelId", + principalTable: "DeviceModels", + principalColumn: "DeviceModelId", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_FlowOperations_BaseEvents_BaseEventId", + table: "FlowOperations", + column: "BaseEventId", + principalTable: "BaseEvents", + principalColumn: "EventId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_FlowOperations_FlowRules_FlowRuleId", + table: "FlowOperations", + column: "FlowRuleId", + principalTable: "FlowRules", + principalColumn: "RuleId", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_FlowOperations_Flows_FlowId", + table: "FlowOperations", + column: "FlowId", + principalTable: "Flows", + principalColumn: "FlowId", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Device_DeviceModels_DeviceModelId", + table: "Device"); + + migrationBuilder.DropForeignKey( + name: "FK_FlowOperations_BaseEvents_BaseEventId", + table: "FlowOperations"); + + migrationBuilder.DropForeignKey( + name: "FK_FlowOperations_FlowRules_FlowRuleId", + table: "FlowOperations"); + + migrationBuilder.DropForeignKey( + name: "FK_FlowOperations_Flows_FlowId", + table: "FlowOperations"); + + migrationBuilder.DropTable( + name: "DeviceModelCommands"); + + migrationBuilder.DropTable( + name: "DeviceModels"); + + migrationBuilder.DropIndex( + name: "IX_FlowOperations_BaseEventId", + table: "FlowOperations"); + + migrationBuilder.DropIndex( + name: "IX_FlowOperations_FlowRuleId", + table: "FlowOperations"); + + migrationBuilder.DropIndex( + name: "IX_Device_DeviceModelId", + table: "Device"); + + migrationBuilder.DropColumn( + name: "BaseEventId", + table: "FlowOperations"); + + migrationBuilder.DropColumn( + name: "FlowRuleId", + table: "FlowOperations"); + + migrationBuilder.DropColumn( + name: "DeviceModelId", + table: "Device"); + + migrationBuilder.AlterColumn( + name: "FlowId", + table: "FlowOperations", + type: "char(36)", + nullable: true, + collation: "ascii_general_ci", + oldClrType: typeof(Guid), + oldType: "char(36)") + .OldAnnotation("Relational:Collation", "ascii_general_ci"); + + migrationBuilder.AddColumn( + name: "BaseEventEventId", + table: "FlowOperations", + type: "char(36)", + nullable: true, + collation: "ascii_general_ci"); + + migrationBuilder.AddColumn( + name: "FlowRuleRuleId", + table: "FlowOperations", + type: "char(36)", + nullable: true, + collation: "ascii_general_ci"); + + migrationBuilder.CreateIndex( + name: "IX_FlowOperations_BaseEventEventId", + table: "FlowOperations", + column: "BaseEventEventId"); + + migrationBuilder.CreateIndex( + name: "IX_FlowOperations_FlowRuleRuleId", + table: "FlowOperations", + column: "FlowRuleRuleId"); + + migrationBuilder.AddForeignKey( + name: "FK_FlowOperations_BaseEvents_BaseEventEventId", + table: "FlowOperations", + column: "BaseEventEventId", + principalTable: "BaseEvents", + principalColumn: "EventId", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_FlowOperations_FlowRules_FlowRuleRuleId", + table: "FlowOperations", + column: "FlowRuleRuleId", + principalTable: "FlowRules", + principalColumn: "RuleId", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_FlowOperations_Flows_FlowId", + table: "FlowOperations", + column: "FlowId", + principalTable: "Flows", + principalColumn: "FlowId", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/IoTSharp.Data.MySQL/Migrations/ApplicationDbContextModelSnapshot.cs b/IoTSharp.Data.MySQL/Migrations/ApplicationDbContextModelSnapshot.cs index d2275e89d132cab1690df57801ba5f3280d2b79a..bbe16e22d02ac169bad9f75a67f90d920df461f5 100644 --- a/IoTSharp.Data.MySQL/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/IoTSharp.Data.MySQL/Migrations/ApplicationDbContextModelSnapshot.cs @@ -446,6 +446,9 @@ namespace IoTSharp.Data.MySql.Migrations b.Property("CustomerId") .HasColumnType("char(36)"); + b.Property("DeviceModelId") + .HasColumnType("char(36)"); + b.Property("DeviceType") .HasColumnType("int"); @@ -476,6 +479,8 @@ namespace IoTSharp.Data.MySql.Migrations b.HasIndex("CustomerId"); + b.HasIndex("DeviceModelId"); + b.HasIndex("OwnerId"); b.HasIndex("TenantId"); @@ -669,6 +674,75 @@ namespace IoTSharp.Data.MySql.Migrations b.ToTable("DeviceIdentities"); }); + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Property("DeviceModelId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("ModelDesc") + .HasColumnType("longtext"); + + b.Property("ModelName") + .HasColumnType("longtext"); + + b.Property("ModelStatus") + .HasColumnType("int"); + + b.HasKey("DeviceModelId"); + + b.ToTable("DeviceModels"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.Property("CommandId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CommandI18N") + .HasColumnType("longtext"); + + b.Property("CommandName") + .HasColumnType("longtext"); + + b.Property("CommandParams") + .HasColumnType("longtext"); + + b.Property("CommandStatus") + .HasColumnType("int"); + + b.Property("CommandTemplate") + .HasColumnType("longtext"); + + b.Property("CommandTitle") + .HasColumnType("longtext"); + + b.Property("CommandType") + .HasColumnType("int"); + + b.Property("CreateDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("DeviceModelId") + .HasColumnType("char(36)"); + + b.HasKey("CommandId"); + + b.HasIndex("DeviceModelId"); + + b.ToTable("DeviceModelCommands"); + }); + modelBuilder.Entity("IoTSharp.Data.DevicePort", b => { b.Property("PortId") @@ -1042,7 +1116,7 @@ namespace IoTSharp.Data.MySql.Migrations b.Property("AddDate") .HasColumnType("datetime(6)"); - b.Property("BaseEventEventId") + b.Property("BaseEventId") .HasColumnType("char(36)"); b.Property("BizId") @@ -1051,10 +1125,10 @@ namespace IoTSharp.Data.MySql.Migrations b.Property("Data") .HasColumnType("longtext"); - b.Property("FlowId") + b.Property("FlowId") .HasColumnType("char(36)"); - b.Property("FlowRuleRuleId") + b.Property("FlowRuleId") .HasColumnType("char(36)"); b.Property("NodeStatus") @@ -1074,11 +1148,11 @@ namespace IoTSharp.Data.MySql.Migrations b.HasKey("OperationId"); - b.HasIndex("BaseEventEventId"); + b.HasIndex("BaseEventId"); b.HasIndex("FlowId"); - b.HasIndex("FlowRuleRuleId"); + b.HasIndex("FlowRuleId"); b.ToTable("FlowOperations"); }); @@ -1647,6 +1721,10 @@ namespace IoTSharp.Data.MySql.Migrations .WithMany("Devices") .HasForeignKey("CustomerId"); + b.HasOne("IoTSharp.Data.DeviceModel", "DeviceModel") + .WithMany() + .HasForeignKey("DeviceModelId"); + b.HasOne("IoTSharp.Data.Gateway", "Owner") .WithMany("Children") .HasForeignKey("OwnerId"); @@ -1657,6 +1735,8 @@ namespace IoTSharp.Data.MySql.Migrations b.Navigation("Customer"); + b.Navigation("DeviceModel"); + b.Navigation("Owner"); b.Navigation("Tenant"); @@ -1680,6 +1760,17 @@ namespace IoTSharp.Data.MySql.Migrations b.Navigation("Device"); }); + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.HasOne("IoTSharp.Data.DeviceModel", "DeviceModel") + .WithMany("DeviceModelCommands") + .HasForeignKey("DeviceModelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeviceModel"); + }); + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => { b.HasOne("IoTSharp.Data.Device", "Device") @@ -1714,15 +1805,21 @@ namespace IoTSharp.Data.MySql.Migrations { b.HasOne("IoTSharp.Data.BaseEvent", "BaseEvent") .WithMany() - .HasForeignKey("BaseEventEventId"); + .HasForeignKey("BaseEventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); b.HasOne("IoTSharp.Data.Flow", "Flow") .WithMany() - .HasForeignKey("FlowId"); + .HasForeignKey("FlowId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") .WithMany() - .HasForeignKey("FlowRuleRuleId"); + .HasForeignKey("FlowRuleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); b.Navigation("BaseEvent"); @@ -1836,6 +1933,11 @@ namespace IoTSharp.Data.MySql.Migrations b.Navigation("Devices"); }); + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Navigation("DeviceModelCommands"); + }); + modelBuilder.Entity("IoTSharp.Data.Tenant", b => { b.Navigation("Customers"); diff --git a/IoTSharp/ClientApp/src/app/core/i18n/i18n.service.ts b/IoTSharp/ClientApp/src/app/core/i18n/i18n.service.ts index 8647fac5141f499b317f58f4be60de4f4b3183c9..9bb02dffbbd1eb87f00a0b50ce3eab9aaa7a4b76 100644 --- a/IoTSharp/ClientApp/src/app/core/i18n/i18n.service.ts +++ b/IoTSharp/ClientApp/src/app/core/i18n/i18n.service.ts @@ -98,7 +98,8 @@ export class I18NService extends AlainI18nBaseService { } loadLangData(lang: string): Observable { - return this.http.get(`assets/tmp/i18n/${lang}.json`); + + return this.http.get(`api/i18n/current?_allow_anonymous=true&lang=${lang}`); } use(lang: string, data: Record): void { diff --git a/IoTSharp/Controllers/DeviceModelController.cs b/IoTSharp/Controllers/DeviceModelController.cs index e0c2369cb18471e1022723a2b84b50649aff188d..166672ee78e5253ee59fa465eafb9f35192b2566 100644 --- a/IoTSharp/Controllers/DeviceModelController.cs +++ b/IoTSharp/Controllers/DeviceModelController.cs @@ -29,12 +29,23 @@ namespace IoTSharp.Controllers [HttpPost("[action]")] public ApiResult> Index([FromQuery] DeviceModelParam m) { - Expression> condition = x => x.ModelStatus > -1; - if (!string.IsNullOrEmpty(m.Name)) + try + { + Expression> condition = x => x.ModelStatus > -1; + if (!string.IsNullOrEmpty(m.Name)) + { + condition.And(x => x.ModelName == m.Name); + } + return new ApiResult>(ApiCode.Success, "OK", new PagedData() { rows = _context.DeviceModels.Where(condition).Skip((m.offset) * m.limit).Take(m.limit).ToList(), total = _context.DeviceModels.Count(condition) }); + + } + catch (Exception e) { - condition.And(x => x.ModelName == m.Name); + return new ApiResult>(ApiCode.Exception, e.Message, null); } - return new ApiResult>(ApiCode.Success, "OK", new PagedData() { rows = _context.DeviceModels.Where(condition).Skip((m.offset) * m.limit).Take(m.limit).ToList(), total = _context.DeviceModels.Count(condition) }); + + + } [HttpGet("[action]")] public ApiResult Get(Guid id) @@ -81,8 +92,6 @@ namespace IoTSharp.Controllers _context.DeviceModels.Update(dm); _context.SaveChanges(); return new ApiResult(ApiCode.CantFindObject, "Ok", true); - - } catch (Exception ex) { @@ -115,9 +124,9 @@ namespace IoTSharp.Controllers { var dev = _context.Device.SingleOrDefault(c => c.Id == id); - if (dev!=null&&dev.DeviceModelId != null && dev.DeviceModelId != Guid.Empty) + if (dev != null && dev.DeviceModelId != null && dev.DeviceModelId != Guid.Empty) { - return new ApiResult>(ApiCode.Success, "Ok", _context.DeviceModelCommands.Where(c=>c.DeviceModelId==dev.DeviceModelId&&c.CommandStatus>-1).ToList()); + return new ApiResult>(ApiCode.Success, "Ok", _context.DeviceModelCommands.Where(c => c.DeviceModelId == dev.DeviceModelId && c.CommandStatus > -1).ToList()); } @@ -127,7 +136,7 @@ namespace IoTSharp.Controllers [HttpGet("[action]")] public ApiResult> GetCommands(Guid id) { - return new ApiResult>(ApiCode.Success, "Ok", _context.DeviceModelCommands.Where(c => c.DeviceModelId == id&&c.CommandStatus>-1).ToList()); + return new ApiResult>(ApiCode.Success, "Ok", _context.DeviceModelCommands.Where(c => c.DeviceModelId == id && c.CommandStatus > -1).ToList()); } [HttpGet("[action]")] @@ -157,8 +166,8 @@ namespace IoTSharp.Controllers CommandParams = m.CommandParams, CommandName = m.CommandName, DeviceModelId = m.DeviceModelId, - CommandTemplate = m.CommandTemplate, - CreateDateTime = DateTime.Now + CommandTemplate = m.CommandTemplate, + CreateDateTime = DateTime.Now }; _context.DeviceModelCommands.Add(dmc); diff --git a/IoTSharp/Controllers/DevicesController.cs b/IoTSharp/Controllers/DevicesController.cs index 6da869393155a4be2558444c49581cbd4c705e38..f97f2e9c37b66d74fea81d6ae0f37a75c9f3b2ee 100644 --- a/IoTSharp/Controllers/DevicesController.cs +++ b/IoTSharp/Controllers/DevicesController.cs @@ -104,53 +104,66 @@ namespace IoTSharp.Controllers public async Task>> GetDevices([FromQuery] DeviceParam m) { + + if (m.limit > 0) { - Expression> condition = x => x.Customer.Id == m.customerId && x.Status > -1; - return new ApiResult>(ApiCode.Success, "OK", new PagedData + + try { - total = await _context.Device.CountAsync(condition), - rows = await _context.Device.OrderByDescending(c => c.LastActive).Where(condition).Skip((m.offset) * m.limit).Take(m.limit).Join(_context.DeviceIdentities, x => x.Id, y => y.Device.Id, (x, y) => new DeviceDetailDto() + Expression> condition = x => x.Customer.Id == m.customerId && x.Status > -1; + return new ApiResult>(ApiCode.Success, "OK", new PagedData { - Id = x.Id, - Name = x.Name, - LastActive = x.LastActive, - IdentityId = y.IdentityId, - IdentityValue = y.IdentityType == IdentityType.X509Certificate ? "" : y.IdentityValue, - Tenant = x.Tenant, - Customer = x.Customer, - DeviceType = x.DeviceType, - Online = x.Online, - Owner = x.Owner, - Timeout = x.Timeout, - IdentityType = y.IdentityType - - - }).ToListAsync() - }); - + total = await _context.Device.CountAsync(condition), + rows = await _context.Device.OrderByDescending(c => c.LastActive).Where(condition).Skip((m.offset) * m.limit).Take(m.limit).Join(_context.DeviceIdentities, x => x.Id, y => y.Device.Id, (x, y) => new DeviceDetailDto() + { + Id = x.Id, + Name = x.Name, + LastActive = x.LastActive, + IdentityId = y.IdentityId, + IdentityValue = y.IdentityType == IdentityType.X509Certificate ? "" : y.IdentityValue, + Tenant = x.Tenant, + Customer = x.Customer, + DeviceType = x.DeviceType, + Online = x.Online, + Owner = x.Owner, + Timeout = x.Timeout, + IdentityType = y.IdentityType + }).ToListAsync() + }); + } + catch (Exception e) + { + return new ApiResult>(ApiCode.Exception, e.Message, null); + } } else { - - Expression> condition = x => x.Customer.Id == m.customerId && x.Status > -1; - return new ApiResult>(ApiCode.Success, "OK", new PagedData + try { - total = await _context.Device.CountAsync(condition), - rows = await _context.Device.OrderByDescending(c => c.LastActive).Where(condition).Select(x=> new DeviceDetailDto() + Expression> condition = x => x.Customer.Id == m.customerId && x.Status > -1; + return new ApiResult>(ApiCode.Success, "OK", new PagedData { - Id = x.Id, - Name = x.Name, - LastActive = x.LastActive, - Tenant = x.Tenant, - Customer = x.Customer, - DeviceType = x.DeviceType, - Online = x.Online, - Owner = x.Owner, - Timeout = x.Timeout, - }).ToListAsync() - }); + total = await _context.Device.CountAsync(condition), + rows = await _context.Device.OrderByDescending(c => c.LastActive).Where(condition).Select(x => new DeviceDetailDto() + { + Id = x.Id, + Name = x.Name, + LastActive = x.LastActive, + Tenant = x.Tenant, + Customer = x.Customer, + DeviceType = x.DeviceType, + Online = x.Online, + Owner = x.Owner, + Timeout = x.Timeout, + }).ToListAsync() + }); + } + catch (Exception e) + { + return new ApiResult>(ApiCode.Exception, e.Message, null); + } } @@ -622,15 +635,21 @@ namespace IoTSharp.Controllers { var cid = User.Claims.First(c => c.Type == IoTSharpClaimTypes.Customer); var tid = User.Claims.First(c => c.Type == IoTSharpClaimTypes.Tenant); - var devvalue = new Device() { Name = device.Name, DeviceType = device.DeviceType, Timeout = device.Timeout, LastActive = DateTime.Now, Status = 1, - DeviceModel = _context.DeviceModels.FirstOrDefault(c => c.DeviceModelId == device.DeviceModelId), - //CreateDate = DateTime.Today, - //CreateMonth =DateTime.Now.ToString("yyyy-MM"), - //CreateDateTime = DateTime.Now - }; + var devvalue = new Device() + { + Name = device.Name, + DeviceType = device.DeviceType, + Timeout = device.Timeout, + LastActive = DateTime.Now, + Status = 1, + DeviceModel = _context.DeviceModels.FirstOrDefault(c => c.DeviceModelId == device.DeviceModelId), + //CreateDate = DateTime.Today, + //CreateMonth =DateTime.Now.ToString("yyyy-MM"), + //CreateDateTime = DateTime.Now + }; devvalue.Tenant = _context.Tenant.Find(new Guid(tid.Value)); devvalue.Customer = _context.Customer.Find(new Guid(cid.Value)); - + if (devvalue.Tenant == null || devvalue.Customer == null) @@ -646,7 +665,7 @@ namespace IoTSharp.Controllers { identity.IdentityType = device.IdentityType; - _context.DeviceIdentities.Update(identity); + _context.DeviceIdentities.Update(identity); await _context.SaveChangesAsync(); } @@ -711,7 +730,7 @@ namespace IoTSharp.Controllers try { _logger.LogInformation($"RPC 通过 access_token:{access_token} 找到设备{dev.Name} "); - var rpcClient = new RpcClient(_mqtt,_logger); + var rpcClient = new RpcClient(_mqtt, _logger); var _timeout = TimeSpan.FromSeconds(timeout); var qos = MqttQualityOfServiceLevel.AtMostOnce; var payload = Newtonsoft.Json.JsonConvert.SerializeObject(args); @@ -865,7 +884,7 @@ namespace IoTSharp.Controllers }); await _context.SaveChangesAsync(); return new ApiResult(ApiCode.Success, "Ok", true); - + } @@ -939,7 +958,7 @@ namespace IoTSharp.Controllers [ProducesDefaultResponseType] public async Task> GetSessionsCount() { - return new ApiResult(ApiCode.Success, "OK",( await _serverEx.GetClientStatusAsync()).Count); + return new ApiResult(ApiCode.Success, "OK", (await _serverEx.GetClientStatusAsync()).Count); } } } \ No newline at end of file