diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..3b1c5e8
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NEOTERICc.ttf b/NEOTERICc.ttf
new file mode 100644
index 0000000..9ec1177
Binary files /dev/null and b/NEOTERICc.ttf differ
diff --git a/QQ图片20190103221300.jpg b/QQ图片20190103221300.jpg
new file mode 100644
index 0000000..18998b0
Binary files /dev/null and b/QQ图片20190103221300.jpg differ
diff --git a/Untitled.mdj b/Untitled.mdj
new file mode 100644
index 0000000..307cf70
--- /dev/null
+++ b/Untitled.mdj
@@ -0,0 +1,3712 @@
+{
+ "_type": "Project",
+ "_id": "AAAAAAFF+h6SjaM2Hec=",
+ "name": "Untitled",
+ "ownedElements": [
+ {
+ "_type": "UMLModel",
+ "_id": "AAAAAAFF+qBWK6M3Z8Y=",
+ "_parent": {
+ "$ref": "AAAAAAFF+h6SjaM2Hec="
+ },
+ "name": "Model",
+ "ownedElements": [
+ {
+ "_type": "UMLClassDiagram",
+ "_id": "AAAAAAFF+qBtyKM79qY=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBWK6M3Z8Y="
+ },
+ "name": "Main",
+ "defaultDiagram": true
+ }
+ ]
+ },
+ {
+ "_type": "UMLModel",
+ "_id": "AAAAAAFoHnp+nU2sNqg=",
+ "_parent": {
+ "$ref": "AAAAAAFF+h6SjaM2Hec="
+ },
+ "name": "Model1",
+ "ownedElements": [
+ {
+ "_type": "UMLClassDiagram",
+ "_id": "AAAAAAFoHnp+nk2th+s=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "ClassDiagram1",
+ "ownedViews": [
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHnqMXk2zGik=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHnqMXk2x9Ho="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHnqMXk20k44=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk2zGik="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHnqMXk2x9Ho="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHnqMXk21QTQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk20k44="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 720,
+ "top": 1072,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHnqMXk22Olc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk20k44="
+ },
+ "font": "Arial;13;1",
+ "left": 365,
+ "top": 543,
+ "width": 135,
+ "height": 13,
+ "text": "Product"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHnqMXk23cIg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk20k44="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 720,
+ "top": 1072,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHnqMXk24z4s=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk20k44="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 720,
+ "top": 1072,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 360,
+ "top": 536,
+ "width": 145,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHnqMXk21QTQ="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHnqMXk22Olc="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHnqMXk23cIg="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHnqMXk24z4s="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHnqMXk25V4E=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk2zGik="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHnqMXk2x9Ho="
+ },
+ "font": "Arial;13;0",
+ "left": 360,
+ "top": 561,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHnqMXk26IMk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk2zGik="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHnqMXk2x9Ho="
+ },
+ "font": "Arial;13;0",
+ "left": 360,
+ "top": 571,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHnqMXk27CE0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk2zGik="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHnqMXk2x9Ho="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 360,
+ "top": 536,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHnqMXk28OmE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnqMXk2zGik="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHnqMXk2x9Ho="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 360,
+ "top": 536,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 360,
+ "top": 536,
+ "width": 145,
+ "height": 129,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHnqMXk20k44="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHnqMXk25V4E="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHnqMXk26IMk="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHnqMXk27CE0="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHnqMXk28OmE="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHn4fPE3ggJ4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn4fNE3eaZI="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHn4fPE3hqm8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3ggJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn4fNE3eaZI="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHn4fPE3iER8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3hqm8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -272,
+ "top": 416,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHn4fPE3jmh0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3hqm8="
+ },
+ "font": "Arial;13;1",
+ "left": 597,
+ "top": 543,
+ "width": 135,
+ "height": 13,
+ "text": "Audit"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHn4fPE3kxOQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3hqm8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -272,
+ "top": 416,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHn4fPE3lY0M=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3hqm8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -272,
+ "top": 416,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 592,
+ "top": 536,
+ "width": 145,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHn4fPE3iER8="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHn4fPE3jmh0="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHn4fPE3kxOQ="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHn4fPE3lY0M="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHn4fPE3mCOY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3ggJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn4fNE3eaZI="
+ },
+ "font": "Arial;13;0",
+ "left": 592,
+ "top": 561,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHn4fPE3ndnk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3ggJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn4fNE3eaZI="
+ },
+ "font": "Arial;13;0",
+ "left": 592,
+ "top": 571,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHn4fPE3ofoo=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3ggJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn4fNE3eaZI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -136,
+ "top": 208,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHn4fPE3pm8s=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn4fPE3ggJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn4fNE3eaZI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -136,
+ "top": 208,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 592,
+ "top": 536,
+ "width": 145,
+ "height": 129,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHn4fPE3hqm8="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHn4fPE3mCOY="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHn4fPE3ndnk="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHn4fPE3ofoo="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHn4fPE3pm8s="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHn6bek4Nu9I=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn6bdU4L9r0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHn6bek4Oc1w=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Nu9I="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn6bdU4L9r0="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHn6bek4PPwY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Oc1w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -272,
+ "top": 400,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHn6bek4QzB8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Oc1w="
+ },
+ "font": "Arial;13;1",
+ "left": 125,
+ "top": 543,
+ "width": 135,
+ "height": 13,
+ "text": "Transaction"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHn6bek4RUIo=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Oc1w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -272,
+ "top": 400,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHn6bek4SmvQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Oc1w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -272,
+ "top": 400,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 120,
+ "top": 536,
+ "width": 145,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHn6bek4PPwY="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHn6bek4QzB8="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHn6bek4RUIo="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHn6bek4SmvQ="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHn6bek4Th2M=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Nu9I="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn6bdU4L9r0="
+ },
+ "font": "Arial;13;0",
+ "left": 120,
+ "top": 561,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHn6bek4U+SA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Nu9I="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn6bdU4L9r0="
+ },
+ "font": "Arial;13;0",
+ "left": 120,
+ "top": 571,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHn6bek4Vcvk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Nu9I="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn6bdU4L9r0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -136,
+ "top": 200,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHn6bek4W1/M=",
+ "_parent": {
+ "$ref": "AAAAAAFoHn6bek4Nu9I="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHn6bdU4L9r0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -136,
+ "top": 200,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 120,
+ "top": 536,
+ "width": 145,
+ "height": 128,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHn6bek4Oc1w="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHn6bek4Th2M="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHn6bek4U+SA="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHn6bek4Vcvk="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHn6bek4W1/M="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHoAdvE459i8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHoAdvE46njI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE459i8="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoAdvE4783M=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE46njI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -688,
+ "top": 464,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoAdvE48jD8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE46njI="
+ },
+ "font": "Arial;13;1",
+ "left": 125,
+ "top": 351,
+ "width": 135,
+ "height": 13,
+ "text": "TransactionDao"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoAdvE493SM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE46njI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -688,
+ "top": 464,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoAdvE4+jzY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE46njI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -688,
+ "top": 464,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 120,
+ "top": 344,
+ "width": 145,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoAdvE4783M="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoAdvE48jD8="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHoAdvE493SM="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoAdvE4+jzY="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHoAdvE4/vkY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE459i8="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ },
+ "font": "Arial;13;0",
+ "left": 120,
+ "top": 369,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHoAdvE5Ajjo=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE459i8="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ },
+ "font": "Arial;13;0",
+ "left": 120,
+ "top": 379,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHoAdvE5BZTQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE459i8="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -344,
+ "top": 232,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHoAdvE5ConU=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE459i8="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -344,
+ "top": 232,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 120,
+ "top": 344,
+ "width": 145,
+ "height": 128,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHoAdvE46njI="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHoAdvE4/vkY="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHoAdvE5Ajjo="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHoAdvE5BZTQ="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHoAdvE5ConU="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHoDiGE5qIWg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHoDiGE5r6+U=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5qIWg="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoDiGE5s0vM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5r6+U="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 256,
+ "top": 480,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoDiJU5tMdE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5r6+U="
+ },
+ "font": "Arial;13;1",
+ "left": 373,
+ "top": 351,
+ "width": 127,
+ "height": 13,
+ "text": "ProductDao"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoDiJU5ufao=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5r6+U="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 256,
+ "top": 480,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoDiJU5vnPE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5r6+U="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 256,
+ "top": 480,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 368,
+ "top": 344,
+ "width": 137,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoDiGE5s0vM="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoDiJU5tMdE="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHoDiJU5ufao="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoDiJU5vnPE="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHoDiJU5wKkk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5qIWg="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ },
+ "font": "Arial;13;0",
+ "left": 368,
+ "top": 369,
+ "width": 137,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHoDiJU5xuUE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5qIWg="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ },
+ "font": "Arial;13;0",
+ "left": 368,
+ "top": 379,
+ "width": 137,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHoDiJU5yRWE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5qIWg="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 128,
+ "top": 240,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHoDiJU5zMww=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5qIWg="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 128,
+ "top": 240,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 368,
+ "top": 344,
+ "width": 137,
+ "height": 128,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHoDiGE5r6+U="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHoDiJU5wKkk="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHoDiJU5xuUE="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHoDiJU5yRWE="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHoDiJU5zMww="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHoFdV06ajNw=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoFdV06Y4e4="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHoFdV06bsZ4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06ajNw="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoFdV06Y4e4="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoFdV06cEmI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06bsZ4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -224,
+ "top": 400,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoFdV06dKno=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06bsZ4="
+ },
+ "font": "Arial;13;1",
+ "left": 597,
+ "top": 351,
+ "width": 135,
+ "height": 13,
+ "text": "AuditDao"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoFdV06e5Jg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06bsZ4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -224,
+ "top": 400,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoFdWE6fhI4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06bsZ4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -224,
+ "top": 400,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 592,
+ "top": 344,
+ "width": 145,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoFdV06cEmI="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoFdV06dKno="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHoFdV06e5Jg="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoFdWE6fhI4="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHoFdWE6gz1E=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06ajNw="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoFdV06Y4e4="
+ },
+ "font": "Arial;13;0",
+ "left": 592,
+ "top": 369,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHoFdWE6h9zk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06ajNw="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoFdV06Y4e4="
+ },
+ "font": "Arial;13;0",
+ "left": 592,
+ "top": 379,
+ "width": 145,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHoFdWE6ixU8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06ajNw="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoFdV06Y4e4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -112,
+ "top": 200,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHoFdWE6j7C0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06ajNw="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoFdV06Y4e4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -112,
+ "top": 200,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 592,
+ "top": 344,
+ "width": 145,
+ "height": 128,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHoFdV06bsZ4="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHoFdWE6gz1E="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHoFdWE6h9zk="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHoFdWE6ixU8="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHoFdWE6j7C0="
+ }
+ },
+ {
+ "_type": "UMLDependencyView",
+ "_id": "AAAAAAFoHoKuJ1CKoR8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoKuJ1CIwqI="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoKuJ1CLyjo=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoKuJ1CKoR8="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoKuJ1CIwqI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 206,
+ "top": 496,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoKuJ1CKoR8="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoKuJ1CMVL8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoKuJ1CKoR8="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoKuJ1CIwqI="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 221,
+ "top": 496,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoKuJ1CKoR8="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoKuJ1CN4H0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoKuJ1CKoR8="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoKuJ1CIwqI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 177,
+ "top": 497,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoKuJ1CKoR8="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFoHn6bek4Nu9I="
+ },
+ "tail": {
+ "$ref": "AAAAAAFoHoAdvE459i8="
+ },
+ "lineStyle": 1,
+ "points": "192:472;192:535",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoKuJ1CLyjo="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoKuJ1CMVL8="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoKuJ1CN4H0="
+ }
+ },
+ {
+ "_type": "UMLDependencyView",
+ "_id": "AAAAAAFoHoKz7FCbstQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoKz7FCZmGs="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoKz7FCceUE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoKz7FCbstQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoKz7FCZmGs="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 448,
+ "top": 497,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoKz7FCbstQ="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoKz7FCd6JA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoKz7FCbstQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoKz7FCZmGs="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 463,
+ "top": 497,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoKz7FCbstQ="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoKz7FCeBd8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoKz7FCbstQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoKz7FCZmGs="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 419,
+ "top": 496,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoKz7FCbstQ="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFoHnqMXk2zGik="
+ },
+ "tail": {
+ "$ref": "AAAAAAFoHoDiGE5qIWg="
+ },
+ "lineStyle": 1,
+ "points": "435:472;433:535",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoKz7FCceUE="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoKz7FCd6JA="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoKz7FCeBd8="
+ }
+ },
+ {
+ "_type": "UMLDependencyView",
+ "_id": "AAAAAAFoHoK4MVCsIWk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoK4MVCqIdc="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoK4MVCtvrg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoK4MVCsIWk="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoK4MVCqIdc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 678,
+ "top": 496,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoK4MVCsIWk="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoK4MVCuprA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoK4MVCsIWk="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoK4MVCqIdc="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 693,
+ "top": 496,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoK4MVCsIWk="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoK4MVCv6YM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoK4MVCsIWk="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoK4MVCqIdc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 649,
+ "top": 497,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoK4MVCsIWk="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFoHn4fPE3ggJ4="
+ },
+ "tail": {
+ "$ref": "AAAAAAFoHoFdV06ajNw="
+ },
+ "lineStyle": 1,
+ "points": "664:472;664:535",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoK4MVCtvrg="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoK4MVCuprA="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoK4MVCv6YM="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHoM63VDYIxM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoM63VDWKwE="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHoM63VDZfqc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDYIxM="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoM63VDWKwE="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoM63lDad6k=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDZfqc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -448,
+ "top": -96,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoM63lDbiOE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDZfqc="
+ },
+ "font": "Arial;13;1",
+ "left": 117,
+ "top": 87,
+ "width": 150,
+ "height": 13,
+ "text": "SumCirculator"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoM63lDckcs=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDZfqc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -448,
+ "top": -96,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoM63lDdFZQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDZfqc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -448,
+ "top": -96,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": 80,
+ "width": 160,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoM63lDad6k="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoM63lDbiOE="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHoM63lDckcs="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoM63lDdFZQ="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHoM63lDeIMI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDYIxM="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoM63VDWKwE="
+ },
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": 105,
+ "width": 160,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHoM63lDfuhI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDYIxM="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoM63VDWKwE="
+ },
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": 115,
+ "width": 160,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHoM63lDggH4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDYIxM="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoM63VDWKwE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -224,
+ "top": -48,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHoM63lDhi5E=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDYIxM="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoM63VDWKwE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -224,
+ "top": -48,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 112,
+ "top": 80,
+ "width": 160,
+ "height": 136,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHoM63VDZfqc="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHoM63lDeIMI="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHoM63lDfuhI="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHoM63lDggH4="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHoM63lDhi5E="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHoSFCFEEbt0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoSFCFECdgg="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHoSFDVEFRE8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFCFEEbt0="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoSFCFECdgg="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoSFDVEGXZM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFDVEFRE8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -416,
+ "top": -96,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoSFDVEHPnE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFDVEFRE8="
+ },
+ "font": "Arial;13;1",
+ "left": 357,
+ "top": 87,
+ "width": 150,
+ "height": 13,
+ "text": "NextCirculator"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoSFDVEIXkI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFDVEFRE8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -416,
+ "top": -96,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoSFDVEJOIw=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFDVEFRE8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -416,
+ "top": -96,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 352,
+ "top": 80,
+ "width": 160,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoSFDVEGXZM="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoSFDVEHPnE="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHoSFDVEIXkI="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoSFDVEJOIw="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHoSFDVEKtl4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFCFEEbt0="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoSFCFECdgg="
+ },
+ "font": "Arial;13;0",
+ "left": 352,
+ "top": 105,
+ "width": 160,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHoSFDVELKTU=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFCFEEbt0="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoSFCFECdgg="
+ },
+ "font": "Arial;13;0",
+ "left": 352,
+ "top": 115,
+ "width": 160,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHoSFDVEMoho=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFCFEEbt0="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoSFCFECdgg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -208,
+ "top": -48,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHoSFDVENYk0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFCFEEbt0="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoSFCFECdgg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -208,
+ "top": -48,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 352,
+ "top": 80,
+ "width": 160,
+ "height": 136,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHoSFDVEFRE8="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHoSFDVEKtl4="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHoSFDVELKTU="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHoSFDVEMoho="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHoSFDVENYk0="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHoTUo1Eu3L4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHoTUo1EvZ7M=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1Eu3L4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoTUpVEwVQA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1EvZ7M="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -208,
+ "top": -112,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoTUpVExKh4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1EvZ7M="
+ },
+ "font": "Arial;13;1",
+ "left": 677,
+ "top": 79,
+ "width": 158,
+ "height": 13,
+ "text": "DeductCirculator"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoTUpVEyXy8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1EvZ7M="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -208,
+ "top": -112,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoTUpVEzqS8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1EvZ7M="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -208,
+ "top": -112,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 672,
+ "top": 72,
+ "width": 168,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoTUpVEwVQA="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoTUpVExKh4="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHoTUpVEyXy8="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoTUpVEzqS8="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHoTUpVE0VWQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1Eu3L4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ },
+ "font": "Arial;13;0",
+ "left": 672,
+ "top": 97,
+ "width": 168,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHoTUpVE1DDY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1Eu3L4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ },
+ "font": "Arial;13;0",
+ "left": 672,
+ "top": 107,
+ "width": 168,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHoTUpVE2IqY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1Eu3L4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -104,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHoTUpVE3VKQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1Eu3L4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -104,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 672,
+ "top": 72,
+ "width": 168,
+ "height": 136,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHoTUo1EvZ7M="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHoTUpVE0VWQ="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHoTUpVE1DDY="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHoTUpVE2IqY="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHoTUpVE3VKQ="
+ }
+ },
+ {
+ "_type": "UMLAssociationView",
+ "_id": "AAAAAAFoHoYm/FFeT7o=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1FaehU="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFflrA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1FaehU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 474,
+ "top": 282,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFgAQY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1FaehU="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 480,
+ "top": 296,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFhEWQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1FaehU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 461,
+ "top": 255,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFiAao=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1FbJvU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 653,
+ "top": 197,
+ "height": 13,
+ "alpha": 0.5235987755982988,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFjEvM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1FbJvU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 657,
+ "top": 210,
+ "height": 13,
+ "alpha": 0.7853981633974483,
+ "distance": 40,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFkNpE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1FbJvU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 646,
+ "top": 171,
+ "height": 13,
+ "alpha": -0.5235987755982988,
+ "distance": 25,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFlFYo=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1Fc4OM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 294,
+ "top": 368,
+ "height": 13,
+ "alpha": -0.5235987755982988,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ }
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFm70s=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1Fc4OM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 302,
+ "top": 379,
+ "height": 13,
+ "alpha": -0.7853981633974483,
+ "distance": 40,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ }
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoYm/FFnDck=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1Fc4OM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 279,
+ "top": 345,
+ "height": 13,
+ "alpha": 0.5235987755982988,
+ "distance": 25,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ }
+ },
+ {
+ "_type": "UMLQualifierCompartmentView",
+ "_id": "AAAAAAFoHoYm/FFoBcM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1FbJvU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLQualifierCompartmentView",
+ "_id": "AAAAAAFoHoYm/FFpJkc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm/FFeT7o="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoYm+1Fc4OM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFoHoAdvE459i8="
+ },
+ "tail": {
+ "$ref": "AAAAAAFoHoTUo1Eu3L4="
+ },
+ "lineStyle": 1,
+ "points": "671:179;265:372",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoYm/FFflrA="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoYm/FFgAQY="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoYm/FFhEWQ="
+ },
+ "tailRoleNameLabel": {
+ "$ref": "AAAAAAFoHoYm/FFiAao="
+ },
+ "tailPropertyLabel": {
+ "$ref": "AAAAAAFoHoYm/FFjEvM="
+ },
+ "tailMultiplicityLabel": {
+ "$ref": "AAAAAAFoHoYm/FFkNpE="
+ },
+ "headRoleNameLabel": {
+ "$ref": "AAAAAAFoHoYm/FFlFYo="
+ },
+ "headPropertyLabel": {
+ "$ref": "AAAAAAFoHoYm/FFm70s="
+ },
+ "headMultiplicityLabel": {
+ "$ref": "AAAAAAFoHoYm/FFnDck="
+ },
+ "tailQualifiersCompartment": {
+ "$ref": "AAAAAAFoHoYm/FFoBcM="
+ },
+ "headQualifiersCompartment": {
+ "$ref": "AAAAAAFoHoYm/FFpJkc="
+ }
+ },
+ {
+ "_type": "UMLAssociationView",
+ "_id": "AAAAAAFoHogollJUdY4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJQBnc="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJVvHI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJQBnc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 326,
+ "top": 262,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJWJtM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJQBnc="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 337,
+ "top": 252,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJXpr0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJQBnc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 305,
+ "top": 283,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJYlSc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJRCcQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 284,
+ "top": 218,
+ "height": 13,
+ "alpha": 0.5235987755982988,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJZCDI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJRCcQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 295,
+ "top": 211,
+ "height": 13,
+ "alpha": 0.7853981633974483,
+ "distance": 40,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJaoGM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJRCcQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 261,
+ "top": 234,
+ "height": 13,
+ "alpha": -0.5235987755982988,
+ "distance": 25,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJbRsw=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJS/fE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 369,
+ "top": 307,
+ "height": 13,
+ "alpha": -0.5235987755982988,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ }
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJc+eE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJS/fE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 377,
+ "top": 297,
+ "height": 13,
+ "alpha": -0.7853981633974483,
+ "distance": 40,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ }
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHogollJdVxk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJS/fE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 352,
+ "top": 329,
+ "height": 13,
+ "alpha": 0.5235987755982988,
+ "distance": 25,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ }
+ },
+ {
+ "_type": "UMLQualifierCompartmentView",
+ "_id": "AAAAAAFoHogollJe18I=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJRCcQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLQualifierCompartmentView",
+ "_id": "AAAAAAFoHogollJfiWg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJUdY4="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHogollJS/fE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFoHoDiGE5qIWg="
+ },
+ "tail": {
+ "$ref": "AAAAAAFoHoM63VDYIxM="
+ },
+ "lineStyle": 1,
+ "points": "256:216;376:343",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFoHogollJVvHI="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHogollJWJtM="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHogollJXpr0="
+ },
+ "tailRoleNameLabel": {
+ "$ref": "AAAAAAFoHogollJYlSc="
+ },
+ "tailPropertyLabel": {
+ "$ref": "AAAAAAFoHogollJZCDI="
+ },
+ "tailMultiplicityLabel": {
+ "$ref": "AAAAAAFoHogollJaoGM="
+ },
+ "headRoleNameLabel": {
+ "$ref": "AAAAAAFoHogollJbRsw="
+ },
+ "headPropertyLabel": {
+ "$ref": "AAAAAAFoHogollJc+eE="
+ },
+ "headMultiplicityLabel": {
+ "$ref": "AAAAAAFoHogollJdVxk="
+ },
+ "tailQualifiersCompartment": {
+ "$ref": "AAAAAAFoHogollJe18I="
+ },
+ "headQualifiersCompartment": {
+ "$ref": "AAAAAAFoHogollJfiWg="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHoh7m1PcuYk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHoh7m1Pdrik=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1PcuYk="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoh7pFPeUAc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1Pdrik="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -240,
+ "top": -16,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoh7pFPfQ3E=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1Pdrik="
+ },
+ "font": "Arial;13;1",
+ "left": 813,
+ "top": 351,
+ "width": 134,
+ "height": 13,
+ "text": "UsageDateDao"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoh7pFPgugE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1Pdrik="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -240,
+ "top": -16,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHoh7pFPhx8s=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1Pdrik="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -240,
+ "top": -16,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 808,
+ "top": 344,
+ "width": 144,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoh7pFPeUAc="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoh7pFPfQ3E="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHoh7pFPgugE="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoh7pFPhx8s="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHoh7pFPi+Lw=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1PcuYk="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ },
+ "font": "Arial;13;0",
+ "left": 808,
+ "top": 369,
+ "width": 144,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHoh7pFPjNEE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1PcuYk="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ },
+ "font": "Arial;13;0",
+ "left": 808,
+ "top": 379,
+ "width": 144,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHoh7pFPkw/E=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1PcuYk="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -120,
+ "top": -8,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHoh7pFPliYM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1PcuYk="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -120,
+ "top": -8,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 808,
+ "top": 344,
+ "width": 144,
+ "height": 128,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHoh7m1Pdrik="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHoh7pFPi+Lw="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHoh7pFPjNEE="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHoh7pFPkw/E="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHoh7pFPliYM="
+ }
+ },
+ {
+ "_type": "UMLAssociationView",
+ "_id": "AAAAAAFoHoj0HlSyqqI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSuGHY="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0HlSz9sY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSuGHY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 666,
+ "top": 260,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0HlS0njc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSuGHY="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 674,
+ "top": 247,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0HlS1UiM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSuGHY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 651,
+ "top": 285,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0HlS2CgU=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSvy7o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 541,
+ "top": 188,
+ "height": 13,
+ "alpha": 0.5235987755982988,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0H1S3Hbk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSvy7o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 550,
+ "top": 177,
+ "height": 13,
+ "alpha": 0.7853981633974483,
+ "distance": 40,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0H1S4w5U=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSvy7o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 524,
+ "top": 209,
+ "height": 13,
+ "alpha": -0.5235987755982988,
+ "distance": 25,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0H1S5Qoc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSwn/8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 792,
+ "top": 332,
+ "height": 13,
+ "alpha": -0.5235987755982988,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ }
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0H1S660I=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSwn/8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 796,
+ "top": 320,
+ "height": 13,
+ "alpha": -0.7853981633974483,
+ "distance": 40,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ }
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHoj0H1S7THk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSwn/8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 782,
+ "top": 358,
+ "height": 13,
+ "alpha": 0.5235987755982988,
+ "distance": 25,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ }
+ },
+ {
+ "_type": "UMLQualifierCompartmentView",
+ "_id": "AAAAAAFoHoj0H1S8LwA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSvy7o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLQualifierCompartmentView",
+ "_id": "AAAAAAFoHoj0H1S9dhw=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0HlSyqqI="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHoj0EVSwn/8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFoHoh7m1PcuYk="
+ },
+ "tail": {
+ "$ref": "AAAAAAFoHoSFCFEEbt0="
+ },
+ "lineStyle": 1,
+ "points": "512:194;807:365",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFoHoj0HlSz9sY="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHoj0HlS0njc="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHoj0HlS1UiM="
+ },
+ "tailRoleNameLabel": {
+ "$ref": "AAAAAAFoHoj0HlS2CgU="
+ },
+ "tailPropertyLabel": {
+ "$ref": "AAAAAAFoHoj0H1S3Hbk="
+ },
+ "tailMultiplicityLabel": {
+ "$ref": "AAAAAAFoHoj0H1S4w5U="
+ },
+ "headRoleNameLabel": {
+ "$ref": "AAAAAAFoHoj0H1S5Qoc="
+ },
+ "headPropertyLabel": {
+ "$ref": "AAAAAAFoHoj0H1S660I="
+ },
+ "headMultiplicityLabel": {
+ "$ref": "AAAAAAFoHoj0H1S7THk="
+ },
+ "tailQualifiersCompartment": {
+ "$ref": "AAAAAAFoHoj0H1S8LwA="
+ },
+ "headQualifiersCompartment": {
+ "$ref": "AAAAAAFoHoj0H1S9dhw="
+ }
+ },
+ {
+ "_type": "UMLAssociationView",
+ "_id": "AAAAAAFoHokAwVVP0NQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVLDSg="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVQrSI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVLDSg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 831,
+ "top": 262,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVRwLA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVLDSg="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 845,
+ "top": 256,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVSi8Q=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVLDSg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 804,
+ "top": 275,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVT4Kk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVM2dI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 811,
+ "top": 219,
+ "height": 13,
+ "alpha": 0.5235987755982988,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVU/HI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVM2dI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 824,
+ "top": 215,
+ "height": 13,
+ "alpha": 0.7853981633974483,
+ "distance": 40,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVVAKc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVM2dI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 784,
+ "top": 226,
+ "height": 13,
+ "alpha": -0.5235987755982988,
+ "distance": 25,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "edgePosition": 2
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVWy7s=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVN9wI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 851,
+ "top": 307,
+ "height": 13,
+ "alpha": -0.5235987755982988,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ }
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVXBDU=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVN9wI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 862,
+ "top": 299,
+ "height": 13,
+ "alpha": -0.7853981633974483,
+ "distance": 40,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ }
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHokAwVVYfZo=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVN9wI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 828,
+ "top": 322,
+ "height": 13,
+ "alpha": 0.5235987755982988,
+ "distance": 25,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ }
+ },
+ {
+ "_type": "UMLQualifierCompartmentView",
+ "_id": "AAAAAAFoHokAwVVZ+5Y=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVM2dI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLQualifierCompartmentView",
+ "_id": "AAAAAAFoHokAwVVani4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVP0NQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHokAwVVN9wI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFoHoh7m1PcuYk="
+ },
+ "tail": {
+ "$ref": "AAAAAAFoHoTUo1Eu3L4="
+ },
+ "lineStyle": 1,
+ "points": "787:208;849:343",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFoHokAwVVQrSI="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHokAwVVRwLA="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHokAwVVSi8Q="
+ },
+ "tailRoleNameLabel": {
+ "$ref": "AAAAAAFoHokAwVVT4Kk="
+ },
+ "tailPropertyLabel": {
+ "$ref": "AAAAAAFoHokAwVVU/HI="
+ },
+ "tailMultiplicityLabel": {
+ "$ref": "AAAAAAFoHokAwVVVAKc="
+ },
+ "headRoleNameLabel": {
+ "$ref": "AAAAAAFoHokAwVVWy7s="
+ },
+ "headPropertyLabel": {
+ "$ref": "AAAAAAFoHokAwVVXBDU="
+ },
+ "headMultiplicityLabel": {
+ "$ref": "AAAAAAFoHokAwVVYfZo="
+ },
+ "tailQualifiersCompartment": {
+ "$ref": "AAAAAAFoHokAwVVZ+5Y="
+ },
+ "headQualifiersCompartment": {
+ "$ref": "AAAAAAFoHokAwVVani4="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFoHomfVljTbpU=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHomfVljRtq0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFoHomfVljUa8A=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljTbpU="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHomfVljRtq0="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHomfV1jV9LM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljUa8A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -256,
+ "top": -32,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHomfV1jWJg0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljUa8A="
+ },
+ "font": "Arial;13;1",
+ "left": 805,
+ "top": 543,
+ "width": 134,
+ "height": 13,
+ "text": "Usageate"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHomfV1jXb2M=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljUa8A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -256,
+ "top": -32,
+ "width": 80.9072265625,
+ "height": 13,
+ "text": "(from Model1)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFoHomfV1jYLfg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljUa8A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -256,
+ "top": -32,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 800,
+ "top": 536,
+ "width": 144,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHomfV1jV9LM="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFoHomfV1jWJg0="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFoHomfV1jXb2M="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHomfV1jYLfg="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFoHomfV1jZWQ4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljTbpU="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHomfVljRtq0="
+ },
+ "font": "Arial;13;0",
+ "left": 800,
+ "top": 561,
+ "width": 144,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFoHomfV1jazEM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljTbpU="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHomfVljRtq0="
+ },
+ "font": "Arial;13;0",
+ "left": 800,
+ "top": 571,
+ "width": 144,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFoHomfV1jbXUo=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljTbpU="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHomfVljRtq0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFoHomfV1jcc48=",
+ "_parent": {
+ "$ref": "AAAAAAFoHomfVljTbpU="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHomfVljRtq0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 800,
+ "top": 536,
+ "width": 144,
+ "height": 128,
+ "nameCompartment": {
+ "$ref": "AAAAAAFoHomfVljUa8A="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFoHomfV1jZWQ4="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFoHomfV1jazEM="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFoHomfV1jbXUo="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFoHomfV1jcc48="
+ }
+ },
+ {
+ "_type": "UMLDependencyView",
+ "_id": "AAAAAAFoHonQP1lmDVg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nk2th+s="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHonQP1lkl4c="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHonQP1lnn6s=",
+ "_parent": {
+ "$ref": "AAAAAAFoHonQP1lmDVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHonQP1lkl4c="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 889,
+ "top": 497,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHonQP1lmDVg="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHonQP1lorzA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHonQP1lmDVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHonQP1lkl4c="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 904,
+ "top": 497,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHonQP1lmDVg="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFoHonQP1lp/0Q=",
+ "_parent": {
+ "$ref": "AAAAAAFoHonQP1lmDVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFoHonQP1lkl4c="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 860,
+ "top": 496,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFoHonQP1lmDVg="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFoHomfVljTbpU="
+ },
+ "tail": {
+ "$ref": "AAAAAAFoHoh7m1PcuYk="
+ },
+ "lineStyle": 1,
+ "points": "876:472;874:535",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFoHonQP1lnn6s="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFoHonQP1lorzA="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFoHonQP1lp/0Q="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHnqMXk2x9Ho=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "Product"
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHn4fNE3eaZI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "Audit"
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHn6bdU4L9r0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "Transaction"
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHoAdvE43XFA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "TransactionDao",
+ "ownedElements": [
+ {
+ "_type": "UMLDependency",
+ "_id": "AAAAAAFoHoKuJ1CIwqI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ },
+ "source": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ },
+ "target": {
+ "$ref": "AAAAAAFoHn6bdU4L9r0="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHoDiGE5oqzA=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "ProductDao",
+ "ownedElements": [
+ {
+ "_type": "UMLDependency",
+ "_id": "AAAAAAFoHoKz7FCZmGs=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ },
+ "source": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ },
+ "target": {
+ "$ref": "AAAAAAFoHnqMXk2x9Ho="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHoFdV06Y4e4=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "AuditDao",
+ "ownedElements": [
+ {
+ "_type": "UMLDependency",
+ "_id": "AAAAAAFoHoK4MVCqIdc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoFdV06Y4e4="
+ },
+ "source": {
+ "$ref": "AAAAAAFoHoFdV06Y4e4="
+ },
+ "target": {
+ "$ref": "AAAAAAFoHn4fNE3eaZI="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHoM63VDWKwE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "SumCirculator",
+ "ownedElements": [
+ {
+ "_type": "UMLAssociation",
+ "_id": "AAAAAAFoHogollJQBnc=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoM63VDWKwE="
+ },
+ "end1": {
+ "_type": "UMLAssociationEnd",
+ "_id": "AAAAAAFoHogollJRCcQ=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJQBnc="
+ },
+ "reference": {
+ "$ref": "AAAAAAFoHoM63VDWKwE="
+ }
+ },
+ "end2": {
+ "_type": "UMLAssociationEnd",
+ "_id": "AAAAAAFoHogollJS/fE=",
+ "_parent": {
+ "$ref": "AAAAAAFoHogollJQBnc="
+ },
+ "reference": {
+ "$ref": "AAAAAAFoHoDiGE5oqzA="
+ }
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHoSFCFECdgg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "NextCirculator",
+ "ownedElements": [
+ {
+ "_type": "UMLAssociation",
+ "_id": "AAAAAAFoHoj0EVSuGHY=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoSFCFECdgg="
+ },
+ "end1": {
+ "_type": "UMLAssociationEnd",
+ "_id": "AAAAAAFoHoj0EVSvy7o=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0EVSuGHY="
+ },
+ "reference": {
+ "$ref": "AAAAAAFoHoSFCFECdgg="
+ }
+ },
+ "end2": {
+ "_type": "UMLAssociationEnd",
+ "_id": "AAAAAAFoHoj0EVSwn/8=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoj0EVSuGHY="
+ },
+ "reference": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ }
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHoTUo1Es4Zk=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "DeductCirculator",
+ "ownedElements": [
+ {
+ "_type": "UMLAssociation",
+ "_id": "AAAAAAFoHoYm+1FaehU=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ },
+ "end1": {
+ "_type": "UMLAssociationEnd",
+ "_id": "AAAAAAFoHoYm+1FbJvU=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm+1FaehU="
+ },
+ "reference": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ }
+ },
+ "end2": {
+ "_type": "UMLAssociationEnd",
+ "_id": "AAAAAAFoHoYm+1Fc4OM=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoYm+1FaehU="
+ },
+ "reference": {
+ "$ref": "AAAAAAFoHoAdvE43XFA="
+ }
+ }
+ },
+ {
+ "_type": "UMLAssociation",
+ "_id": "AAAAAAFoHokAwVVLDSg=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ },
+ "end1": {
+ "_type": "UMLAssociationEnd",
+ "_id": "AAAAAAFoHokAwVVM2dI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVLDSg="
+ },
+ "reference": {
+ "$ref": "AAAAAAFoHoTUo1Es4Zk="
+ }
+ },
+ "end2": {
+ "_type": "UMLAssociationEnd",
+ "_id": "AAAAAAFoHokAwVVN9wI=",
+ "_parent": {
+ "$ref": "AAAAAAFoHokAwVVLDSg="
+ },
+ "reference": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ }
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHoh7m1PatHw=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "UsageDateDao",
+ "ownedElements": [
+ {
+ "_type": "UMLDependency",
+ "_id": "AAAAAAFoHonQP1lkl4c=",
+ "_parent": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ },
+ "source": {
+ "$ref": "AAAAAAFoHoh7m1PatHw="
+ },
+ "target": {
+ "$ref": "AAAAAAFoHomfVljRtq0="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFoHomfVljRtq0=",
+ "_parent": {
+ "$ref": "AAAAAAFoHnp+nU2sNqg="
+ },
+ "name": "Usageate"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/demo.html b/demo.html
new file mode 100644
index 0000000..d7094a2
--- /dev/null
+++ b/demo.html
@@ -0,0 +1,443 @@
+
+
+
+
+
+
+
+
+ 账号登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
CLOUD
+
+
+
+
+
+
+
diff --git a/demo/Dao/auditMapper.java b/demo/Dao/auditMapper.java
new file mode 100644
index 0000000..fa4f8eb
--- /dev/null
+++ b/demo/Dao/auditMapper.java
@@ -0,0 +1,31 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Audit;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface auditMapper {
+ @Select("select * from audit where checkNum = #{checkNum}")
+ public Audit selectAudioByCheckNum(long checkNum);
+
+ @Select("select * from audit")
+ public List select();
+
+ @Insert("insert into audit(checkNum, userNum, productNum, " +
+ "bankAccount, checkState, contractNum, " +
+ "isSignContract, year, amount, applyTime)" +
+ " values (#{checkNum},#{userNum},#{productNum},#{bankAccount},#{checkState}," +
+ "#{contractNum},#{isSignContract},#{year},#{amount},#{applyTime})")
+ public void addAudit(Audit audits);
+
+ @Update("update audit set checkNum=#{checkNum},userNum=#{userNum}" +
+ ",productNum=#{productNum},checkState=#{checkState},contractNum=#{contractNum}," +
+ "isSignContract=#{isSignContract},year=#{year},amount=#{amount}," +
+ "applyTime=#{applyTime}where checkNum=#{checkNum}")
+ public void updateAudit(Audit audits);
+
+ @Delete("delete from audit where checkNum=#{checkNum}")
+ public void deleteAudit(long checkNum);
+}
diff --git a/demo/Dao/bankMapper.java b/demo/Dao/bankMapper.java
new file mode 100644
index 0000000..07efb76
--- /dev/null
+++ b/demo/Dao/bankMapper.java
@@ -0,0 +1,36 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Bank;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+
+@Mapper
+public interface bankMapper {
+
+ @Select("select * from bank where bankNum = #{bankNum}")
+ public Bank selectBankByBankNum(int bankNum);
+
+ @Select("select * from bank where bankName = #{bankName}")
+ public Bank selectBankByBankName(String bankName);
+
+ @Select("select * from bank")
+ public List select();
+
+ @Insert("insert into bank(bankNum, bankName, contact, " +
+ " values (#{bankNum},#{bankName},#{contact},)")
+ public void addBank(Bank banks);
+
+ @Update("update bank set bankNum=#{bankNum},bankName=#{bankName}" +
+ ",contact=#{contact} where bankNum=#{bankNum}")
+ public void updateBank(Bank banks);
+
+// @Delete("delete from bank where bankNum=#{bankNum}")
+// public void deleteBank(String bankNum);
+//
+// @Delete("delete from bank where bankName=#{bankName}")
+// public void deleteBanks(String bankName);
+}
diff --git a/demo/Dao/managerMapper.java b/demo/Dao/managerMapper.java
new file mode 100644
index 0000000..aa92471
--- /dev/null
+++ b/demo/Dao/managerMapper.java
@@ -0,0 +1,26 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Manager;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface managerMapper {
+ @Select("select * from manager where managerNum = #{managerName}")
+ public Manager selectManagerByManagerName(String managerName);
+
+ @Insert("insert into manager(managerNum, managerName, managerPwd, " +
+ "managerRight, telephoneNum) values (#{managerNum},#{managerName}," +
+ "#{managerPwd},#{managerRight},#{telephoneNum})")
+ public void addManager(Manager managers);
+
+ @Update("update manager set managerNum=#{managerNum},managerName=#{managerName}" +
+ ",managerPwd=#{managerPwd},managerRight=#{managerRight},telephoneNum=#{telephoneNum},")
+ public void updateManager(Manager managers);
+
+// @Delete("delete from manager where managerNum=#{managerNum}")
+// public void deleteManager(String managerNum);
+
+}
diff --git a/demo/Dao/paymentMapper.java b/demo/Dao/paymentMapper.java
new file mode 100644
index 0000000..205c52c
--- /dev/null
+++ b/demo/Dao/paymentMapper.java
@@ -0,0 +1,16 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Repayment;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface paymentMapper {
+ @Select("select * from repayment where checkNum =#{checkNum}")
+ public Repayment selectPepaymentBycheckNum(long checkNum);
+
+ @Update("update repayment set repAmount = {#repAmount} ,repSum = {#repSum} where checkNum = #{checkNum}")
+ public void updateRepayment(Repayment repayment);
+
+}
diff --git a/demo/Dao/productHistroyMapper.java b/demo/Dao/productHistroyMapper.java
new file mode 100644
index 0000000..18f6b7c
--- /dev/null
+++ b/demo/Dao/productHistroyMapper.java
@@ -0,0 +1,33 @@
+package com.example.demo.Dao;
+
+
+import com.example.demo.bean.ProductHistroy;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+@Mapper
+public interface productHistroyMapper {
+ @Select("select * from producthistroy where productNum = #{productNum}")
+ public ProductHistroy selectAudioByCheckNum(long productNum);
+
+ @Select("select * from producthistroy")
+ public List select();
+
+ @Insert("insert into productHistroy(productNum, productName, category, " +
+ "intrate, bankNum, productDescription, uploadTime, deleteTime, alterTime)" +
+ " values (#{productNum},#{productName},#{category},#{intrate},#{bankNum}," +
+ "#{productDescription},#{uploadTime},#{deleteTime},#{alterTime})")
+ public void addProductHistroy(ProductHistroy productHistroys);
+
+// @Update("update producthistroy set productNum=#{productNum},productName=#{productName}" +
+// ",category=#{category},intrate=#{intrate},bankNum=#{bankNum}," +
+// "productDescription=#{productDescription},uploadTime=#{uploadTime},deleteTime=#{deleteTime}," +
+// "alterTime=#{alterTime}where productNum=#{productNum}")
+// public void updateProductHistroy(ProductHistroy productHistroys);
+
+// @Delete("delete from producthistroy where productNum=#{productNum}")
+// public void deleteProductHistroy(int productNum);
+}
diff --git a/demo/Dao/productMapper.java b/demo/Dao/productMapper.java
new file mode 100644
index 0000000..b0708e3
--- /dev/null
+++ b/demo/Dao/productMapper.java
@@ -0,0 +1,33 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Product;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface productMapper {
+ @Select("select * from product where productNum = #{productNum}")
+ public Product selectProductByProductNum(long productNum);
+
+ @Select("select * from product where productName = #{productName}")
+ public Product selectProductByProductName(long productName);
+
+ @Select("select * from product")
+ public List select();
+
+ @Insert("insert into product(productNum, productName, category, intrate, " +
+ "bankNum, productDescription, pictureAddress)" +
+ " values (#{productNum},#{productName},#{category},#{intrate},#{bankNum}," +
+ "#{productDescription},#{pictureAddress})")
+ public void addProduct(Product products);
+
+ @Update("update product set productNum=#{productNum},productName=#{productName}" +
+ ",category=#{category},intrate=#{intrate},bankNum=#{bankNum}," +
+ "productDescription=#{productDescription},pictureAddress=#{pictureAddress}")
+ public void updateProduct(Product products);
+
+
+ @Delete("delete from product where productNum=#{productNum}")
+ public void deleteProduct(int productNum);
+}
diff --git a/demo/Dao/transMapper.java b/demo/Dao/transMapper.java
new file mode 100644
index 0000000..7c414ca
--- /dev/null
+++ b/demo/Dao/transMapper.java
@@ -0,0 +1,30 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Transaction;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface transMapper {
+ @Select("select * from transaction where transactionNum = #{transactionNum}")
+ public Transaction selectAudioByCheckNum(long transactionNum);
+
+ @Select("select * from transaction")
+ public List select();
+
+ @Insert("insert into transaction(transactionNum, payer, payee," +
+ " transactionTime, transactionAmount, note,checkNum)" +
+ " values (#{transactionNum},#{payer},#{payee},#{transactionTime},#{transactionAmount}," +
+ "#{note},#{checkNum})")
+ public void addTransaction(Transaction transactions);
+
+ @Update("update audit set transactionNum=#{transactionNum},payer=#{payer}" +
+ ",payee=#{payee},transactionTime=#{transactionTime},transactionAmount=#{transactionAmount}," +
+ "note=#{note}")
+ public void updateTransaction(Transaction transactions);
+
+ @Delete("delete from audit where transactionNum=#{transactionNum}")
+ public void deleteTransaction(long transactionNum);
+
+}
diff --git a/demo/Dao/usageDateMapper.java b/demo/Dao/usageDateMapper.java
new file mode 100644
index 0000000..ae239f8
--- /dev/null
+++ b/demo/Dao/usageDateMapper.java
@@ -0,0 +1,31 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.UsageDate;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+
+@Mapper
+public interface usageDateMapper {
+ @Select("select * from usagedate where transactionNum = #{transactionNum}")
+ public UsageDate selectUsageDateByCheckNum(long checkNum);
+
+ @Select("select * from usagedate")
+ public List select();
+
+ @Insert("insert into usagedate(checkNum, productNum, userNum," +
+ " bankAccount, bankNum, year, amount, startTime)" +
+ " values (#{checkNum},#{productNum},#{userNum},#{bankAccount},#{bankNum}," +
+ "#{year},#{amount},#{startTime})")
+ public void addUsageDate(UsageDate usageDate);
+
+ @Update("update usagedate set checkNum=#{checkNum},productNum=#{productNum}" +
+ ",userNum=#{userNum},bankAccount=#{bankAccount},bankNum=#{bankNum}," +
+ "year=#{year},amount=#{amount},startTime=#{startTime}")
+ public void updateUsageDate(UsageDate usageDate);
+
+ @Delete("delete from usagedate where checkNum=#{checkNum}")
+ public void deleteUsageDate(long checkNum);
+
+}
diff --git a/demo/Dao/userBankIdentify.java b/demo/Dao/userBankIdentify.java
new file mode 100644
index 0000000..fabaf77
--- /dev/null
+++ b/demo/Dao/userBankIdentify.java
@@ -0,0 +1,26 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.UserBankIdentify;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface userBankIdentify {
+ @Select("select * from userbankidentify where userName = #{userName}")
+ public UserBankIdentify selectUsageDateByCheckNum(String userName);
+
+ @Select("select * from userBankIdentify")
+ public List select();
+
+ @Insert("insert into usagedate(userName, bankAccount, bankAccountIdentify)" +
+ " values (#{userName},#{bankAccount},#{bankAccountIdentify})")
+ public void addUserBankIdentify(UserBankIdentify userBankIdentifys);
+
+ @Update("update usagedate set userName=#{userName},bankAccount=#{bankAccount}" +
+ ",bankAccountIdentify=#{bankAccountIdentify}")
+ public void updateUserBankIdentify(UserBankIdentify userBankIdentifys);
+
+ @Delete("delete from usagedate where userName=#{userName}")
+ public void deleteUserBankIdentify(String userName);
+}
diff --git a/demo/Dao/userMapper.java b/demo/Dao/userMapper.java
new file mode 100644
index 0000000..1b96851
--- /dev/null
+++ b/demo/Dao/userMapper.java
@@ -0,0 +1,30 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.User;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface userMapper {
+ @Select("select * from user where userNum = #{userNum}")
+ public User selectUserByuserNum(long userNum);
+
+ @Select("select * from user")
+ public List select();
+
+ @Insert("insert into user(userNum, userName, userPwd, userRight," +
+ " tureName, idNum, telephoneNum, address, isIdentify, registerTime)" +
+ " values (#{userNum},#{userName},#{userPwd},#{userRight},#{tureName}," +
+ "#{idNum},#{telephoneNum},#{address},#{isIdentify},#{registerTime})")
+ public void addUser(User users);
+
+ @Update("update user set userNum=#{userNum},userName=#{userName}" +
+ ",userPwd=#{userPwd},userRight=#{userRight},tureName=#{tureName}," +
+ "idNum=#{idNum},telephoneNum=#{telephoneNum},address=#{address}," +
+ "isIdentify=#{isIdentify},registerTime=#{registerTime}where userNum=#{userNum}")
+ public void updateUser(User users);
+
+ @Delete("delete from user where userNum=#{userNum}")
+ public void deleteUser(long userNum);
+}
diff --git a/demo/DemoApplication.java b/demo/DemoApplication.java
new file mode 100644
index 0000000..99fe3b0
--- /dev/null
+++ b/demo/DemoApplication.java
@@ -0,0 +1,15 @@
+package com.example.demo;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+//@MapperScan("com.example.demo.Dao")
+public class DemoApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(DemoApplication.class, args);
+ }
+
+}
+
diff --git a/demo/bean/Audit.java b/demo/bean/Audit.java
new file mode 100644
index 0000000..7569c10
--- /dev/null
+++ b/demo/bean/Audit.java
@@ -0,0 +1,32 @@
+package com.example.demo.bean;
+
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Audit {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long checkNum;
+ private long userNum;
+ private double amount;
+ private String applyTime;
+ private String bankAccount;
+ private long checkState;
+ private long contractNum;
+ private short isSignContract;
+ private long productNum;
+ private int year;
+ private int equation;
+
+
+ public Audit(){};
+}
diff --git a/demo/bean/Bank.java b/demo/bean/Bank.java
new file mode 100644
index 0000000..be9f33d
--- /dev/null
+++ b/demo/bean/Bank.java
@@ -0,0 +1,21 @@
+package com.example.demo.bean;
+
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Bank {
+ @Id
+ private int bankNum;
+ private String bankName;
+ private String contact;//联系方式
+
+
+ public Bank(){};
+}
diff --git a/demo/bean/Manager.java b/demo/bean/Manager.java
new file mode 100644
index 0000000..67eb681
--- /dev/null
+++ b/demo/bean/Manager.java
@@ -0,0 +1,33 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Manager {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long managerNum;
+ private String managerName;
+ private String managerPwd;
+ private String managerRight;
+ private String telephoneNum;
+
+
+ public Manager(){};
+
+ public long getManagerNum() {
+ return managerNum;
+ }
+
+ public void setManagerNum(int managerNum) {
+ this.managerNum = managerNum;
+ }
+}
diff --git a/demo/bean/Product.java b/demo/bean/Product.java
new file mode 100644
index 0000000..7f6722b
--- /dev/null
+++ b/demo/bean/Product.java
@@ -0,0 +1,83 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Product {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long productNum;
+ private String productName;
+ private String category;
+ private float intrate;
+ private int bankNum;
+ private String productDescription;
+ private String pictureAddress;
+
+ public Product(){};
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getPictureAddress() {
+ return pictureAddress;
+ }
+
+ public void setPictureAddress(String pictureAddress) {
+ this.pictureAddress = pictureAddress;
+ }
+
+ public String getProductDescription() {
+ return productDescription;
+ }
+
+ public void setProductDescription(String productDescription) {
+ this.productDescription = productDescription;
+ }
+
+ public int getBankNum() {
+ return bankNum;
+ }
+
+ public void setBankNum(int bankNum) {
+ this.bankNum = bankNum;
+ }
+
+ public float getIntrate() {
+ return intrate;
+ }
+
+ public void setIntrate(float intrate) {
+ this.intrate = intrate;
+ }
+
+ public long getProductNum() {
+ return productNum;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public void setProductNum(long productNum) {
+ this.productNum = productNum;
+ }
+}
+
diff --git a/demo/bean/ProductHistroy.java b/demo/bean/ProductHistroy.java
new file mode 100644
index 0000000..3b0e8c4
--- /dev/null
+++ b/demo/bean/ProductHistroy.java
@@ -0,0 +1,111 @@
+package com.example.demo.bean;
+
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+@Getter
+@Setter
+public class ProductHistroy {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long productNum;
+ private int bankNum;
+ private long managerNum;
+ private String productName;
+ private String category;
+ private float intrate;
+ private String productDescription;
+ private String upLoadTime;
+ private String deleteTime;
+ private String alterTime;
+
+ public ProductHistroy(){};
+
+ public long getManagerNum() {
+ return managerNum;
+ }
+
+ public void setManagerNum(long managerNum) {
+ this.managerNum = managerNum;
+ }
+
+ public long getProductNum() {
+ return productNum;
+ }
+
+ public void setProductNum(long productNum) {
+ this.productNum = productNum;
+ }
+
+ public String getAlterTime() {
+ return alterTime;
+ }
+
+ public void setAlterTime(String alterTime) {
+ this.alterTime = alterTime;
+ }
+
+
+ public String getDeleteTime() {
+ return deleteTime;
+ }
+
+ public void setDeleteTime(String deleteTime) {
+ this.deleteTime = deleteTime;
+ }
+
+ public String getUpLoadTime() {
+ return upLoadTime;
+ }
+
+ public void setUpLoadTime(String upLoadTime) {
+ this.upLoadTime = upLoadTime;
+ }
+
+ public String getProductDescription() {
+ return productDescription;
+ }
+
+ public void setProductDescription(String productDescription) {
+ this.productDescription = productDescription;
+ }
+
+ public float getIntrate() {
+ return intrate;
+ }
+
+ public void setIntrate(float intrate) {
+ this.intrate = intrate;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public int getBankNum() {
+ return bankNum;
+ }
+
+ public void setBankNum(int bankNum) {
+ this.bankNum = bankNum;
+ }
+}
diff --git a/demo/bean/Repayment.java b/demo/bean/Repayment.java
new file mode 100644
index 0000000..5744436
--- /dev/null
+++ b/demo/bean/Repayment.java
@@ -0,0 +1,21 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Repayment {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long checkNum;
+ private double repAmount;
+ private double repSum;
+
+}
diff --git a/demo/bean/Transaction.java b/demo/bean/Transaction.java
new file mode 100644
index 0000000..6126220
--- /dev/null
+++ b/demo/bean/Transaction.java
@@ -0,0 +1,33 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Transaction {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long transactionNum;
+ private long payer;
+ private long payee;
+ private float transactionTime;
+ private float transactionAmount;
+ private String note;
+ private long checkNum;
+
+ public Transaction(){};
+ public Transaction(long checkNum,long payer,long payee,double transationAmount){
+ this.checkNum=checkNum;
+ this.payer = payer;
+ this.payee = payee;
+ this.transactionAmount=transactionNum;
+
+ }
+}
diff --git a/demo/bean/UsageDate.java b/demo/bean/UsageDate.java
new file mode 100644
index 0000000..0a10f6b
--- /dev/null
+++ b/demo/bean/UsageDate.java
@@ -0,0 +1,29 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class UsageDate {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long checkNum;
+ private long productNum;
+ private long userNum;
+ private String bankAccount;
+ private int bankNum;
+ private int year;
+ private float amount;
+ private String startTime;
+
+ public UsageDate(){};
+ private int equation;
+
+}
diff --git a/demo/bean/User.java b/demo/bean/User.java
new file mode 100644
index 0000000..4b22407
--- /dev/null
+++ b/demo/bean/User.java
@@ -0,0 +1,30 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class User {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long userNum;
+ private String userName;
+ private String userPwd;
+ private String userRight;
+ private String trueName;
+ private String idNum;
+ private String telephoneNum;
+ private String address;
+ private String isIdentify;
+ private String registerTime;
+
+
+ public User(){};
+}
diff --git a/demo/bean/UserBankIdentify.java b/demo/bean/UserBankIdentify.java
new file mode 100644
index 0000000..d0d41cb
--- /dev/null
+++ b/demo/bean/UserBankIdentify.java
@@ -0,0 +1,19 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Entity
+public class UserBankIdentify {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private String userName;
+ private String bankAccount;
+ private short bankAccountIdentify;
+
+}
diff --git a/demo/circulator/controller/NextCirController.java b/demo/circulator/controller/NextCirController.java
new file mode 100644
index 0000000..71d0b63
--- /dev/null
+++ b/demo/circulator/controller/NextCirController.java
@@ -0,0 +1,45 @@
+package com.example.demo.circulator.controller;
+
+
+import com.example.demo.circulator.service.CirService;
+import com.example.demo.circulator.service.EPAIR_CirService;
+import com.example.demo.circulator.service.EPR_CirService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+public class NextCirController {
+ //@Autowired
+ private CirService cirService;
+
+ @GetMapping("/cir/next")
+ public String nextCirculator(HttpServletRequest request,HttpServletResponse response){
+ long checkNum = (Long)request.getAttribute("checkNum");
+ int equation = (Integer)request.getAttribute("equation");
+ switch (equation){
+ case 1:
+ cirService = new EPAIR_CirService();
+ break;
+ case 2:
+ cirService = new EPR_CirService();
+ break;
+ default:
+ System.out.println("not exit!!");
+ break;
+ }
+ double next_principal_and_intrate = cirService.NextCirculator(checkNum);
+ if(next_principal_and_intrate>=0){
+ request.setAttribute("next",next_principal_and_intrate);
+ }else if(next_principal_and_intrate==-1){
+ return "/计算失败";
+ }else if(next_principal_and_intrate==-2){
+ return "/未贷款此类业务";
+ }else if(next_principal_and_intrate==-3){
+ return "/无此类业务";
+ }
+ return "/next";
+ }
+}
diff --git a/demo/circulator/controller/PayCirController.java b/demo/circulator/controller/PayCirController.java
new file mode 100644
index 0000000..b2c2487
--- /dev/null
+++ b/demo/circulator/controller/PayCirController.java
@@ -0,0 +1,24 @@
+package com.example.demo.circulator.controller;
+
+import com.example.demo.circulator.service.PayCirService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+
+@Controller
+public class PayCirController {
+ //@Autowired
+ PayCirService payCirService;
+
+ @PostMapping("/pay")
+ public String payAmountCir(long checkNum,double pay){
+ int result = payCirService.payAmountCirculator(checkNum,pay);
+ if(result==1){
+ return "/还款成功";
+ }else if(result==-2){
+ return"/未贷款该业务";
+ }else
+
+ return "还款失败";
+ }
+}
diff --git a/demo/circulator/controller/SumCirController.java b/demo/circulator/controller/SumCirController.java
new file mode 100644
index 0000000..52f2802
--- /dev/null
+++ b/demo/circulator/controller/SumCirController.java
@@ -0,0 +1,47 @@
+package com.example.demo.circulator.controller;
+
+import com.example.demo.circulator.service.CirService;
+import com.example.demo.circulator.service.EPAIR_CirService;
+import com.example.demo.circulator.service.EPR_CirService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+public class SumCirController {
+ //@Autowired
+ private CirService cirService;
+
+ @GetMapping("/cir/sum")
+ public String SumCirculator(HttpServletRequest request, HttpServletResponse response){
+ long productNum = Long.parseLong(request.getParameter("productNum"));
+ double amount = Double.parseDouble(request.getParameter("amount"));
+ int year = Integer.parseInt(request.getParameter("year"));
+ int equation = Integer.parseInt(request.getParameter("equation"));
+
+ switch (equation){
+ case 1:
+ cirService = new EPAIR_CirService();
+ break;
+ case 2:
+ cirService = new EPR_CirService();
+ break;
+ default:
+ System.out.println("not exit!!");
+ break;
+ }
+ double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year);
+ if(sum_principal_and_intrate>=0){
+ request.setAttribute("sum",sum_principal_and_intrate);
+ }else if(sum_principal_and_intrate==-3){
+ return "/无此类产品";
+ }else{
+ return "/计算失败";
+ }
+
+
+ return "/circulator";
+ }
+}
diff --git a/demo/circulator/service/CirService.java b/demo/circulator/service/CirService.java
new file mode 100644
index 0000000..09b230d
--- /dev/null
+++ b/demo/circulator/service/CirService.java
@@ -0,0 +1,17 @@
+package com.example.demo.circulator.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.PostConstruct;
+
+@Service
+public abstract class CirService {
+ @PostConstruct
+ public void init(){}
+
+ @Transactional //数据库与事物的一致性
+ public double NextCirculator(long checkNum){return 0;}
+ public double SumCirculator(long productNum,double amount,int year){return 0;}
+
+}
diff --git a/demo/circulator/service/EPAIR_CirService.java b/demo/circulator/service/EPAIR_CirService.java
new file mode 100644
index 0000000..43635d2
--- /dev/null
+++ b/demo/circulator/service/EPAIR_CirService.java
@@ -0,0 +1,63 @@
+package com.example.demo.circulator.service;
+
+import com.example.demo.Dao.productMapper;
+import com.example.demo.Dao.usageDateMapper;
+import com.example.demo.bean.Product;
+import com.example.demo.bean.UsageDate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+
+@Service
+public class EPAIR_CirService extends CirService{
+ @Autowired
+ private usageDateMapper usageDateMapper;
+ @Autowired
+ private productMapper productMapper;
+
+ @Transactional //数据库与事物的一致性
+ public double NextCirculator(long checkNum){
+ try{
+ UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
+ if(usageDate==null)return -2;
+ int year = usageDate.getYear();
+ double amount = usageDate.getAmount();
+ long productNum = usageDate.getProductNum();
+
+ Product product = productMapper.selectProductByProductNum(productNum);
+ if(product==null)return -3;
+ float intrate = product.getIntrate();
+ double rep_amount = 0;
+
+ //double not_rep_amount = amount - rep_amount;
+ intrate /= 12;
+ int month = year*12;
+ double rep = Math.pow((1+intrate),month)/(Math.pow((1+intrate),month)-1);
+ double next_principal_and_interest = rep * intrate * amount;
+ return next_principal_and_interest;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+
+ }
+ return -1;
+ }
+
+ public double SumCirculator(long productNum,double amount,int year){
+ try{
+ Product product = productMapper.selectProductByProductNum(productNum);
+ if(product==null)return -3;
+ float intrate = product.getIntrate();
+ double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1);
+ double principal_and_interest = rep * intrate * amount * year;
+ return principal_and_interest;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+ }
+ return -1;
+ }
+}
diff --git a/demo/circulator/service/EPR_CirService.java b/demo/circulator/service/EPR_CirService.java
new file mode 100644
index 0000000..40580a7
--- /dev/null
+++ b/demo/circulator/service/EPR_CirService.java
@@ -0,0 +1,69 @@
+package com.example.demo.circulator.service;
+
+import com.example.demo.Dao.paymentMapper;
+import com.example.demo.Dao.productMapper;
+import com.example.demo.Dao.usageDateMapper;
+import com.example.demo.bean.Product;
+import com.example.demo.bean.Repayment;
+import com.example.demo.bean.UsageDate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+public class EPR_CirService extends CirService{
+ @Autowired
+ private usageDateMapper usageDateMapper;
+ @Autowired
+ private paymentMapper paymentMapper;
+ @Autowired
+ private productMapper productMapper;
+
+ @Transactional //数据库与事物的一致性
+ public double NextCirculator(long checkNum){
+ try{
+ UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
+ Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
+ if(usageDate!=null){return -2;}
+ int year = usageDate.getYear();
+ double amount = usageDate.getAmount();
+ long productNum = usageDate.getProductNum();
+
+ Product product = productMapper.selectProductByProductNum(productNum);
+ if(product==null)return -3;
+ float intrate = product.getIntrate();
+ double rep_amount = 0;
+ if(repayment!=null)
+ repayment.getRepAmount();
+ intrate /= 12;
+ int month = year*12;
+ double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate;
+ return next_principal_and_interest;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+
+ }
+ return -1;
+ }
+
+ public double SumCirculator(long productNum,double amount,int year){
+ try{
+ Product product = productMapper.selectProductByProductNum(productNum);
+ if(product==null)return -3;
+ float intrate = product.getIntrate();
+ intrate /= 12;
+ int month = year * 12;
+ double first_principal_and_interest = amount/month + amount*intrate;
+ double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate;
+ double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2;
+ return principal_and_interest;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+ }
+ return -1;
+ }
+}
diff --git a/demo/circulator/service/PayCirService.java b/demo/circulator/service/PayCirService.java
new file mode 100644
index 0000000..de019c0
--- /dev/null
+++ b/demo/circulator/service/PayCirService.java
@@ -0,0 +1,50 @@
+package com.example.demo.circulator.service;
+
+import com.example.demo.Dao.paymentMapper;
+import com.example.demo.Dao.transMapper;
+import com.example.demo.Dao.usageDateMapper;
+import com.example.demo.bean.Repayment;
+import com.example.demo.bean.Transaction;
+import com.example.demo.bean.UsageDate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PayCirService {
+ @Autowired
+ private usageDateMapper usageDateMapper;
+ @Autowired
+ private paymentMapper paymentMapper;
+ @Autowired
+ private transMapper transMapper;
+
+ public int payAmountCirculator(long checkNum,double pay){
+ try{
+ Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
+ UsageDate usageDate= usageDateMapper.selectUsageDateByCheckNum(checkNum);
+ if(usageDate!=null)return -2;
+ double rep_amount = 0;
+ if(repayment!=null)
+ repayment.getRepAmount();
+ long userNum = usageDate.getUserNum();
+ int bankNum = usageDate.getBankNum();
+ double amount = usageDate.getAmount();
+ int year = usageDate.getYear();
+
+ Transaction transaction = new Transaction(checkNum,userNum,bankNum,pay);
+ transMapper.addTransaction(transaction);
+
+ rep_amount = pay - amount/(year*12);
+ repayment.setRepAmount(rep_amount);
+ repayment.setRepSum(pay);
+ paymentMapper.updateRepayment(repayment);
+ return 1;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+
+ }
+ return 0;
+ }
+}
diff --git a/demo/productService/controller/addController.java b/demo/productService/controller/addController.java
new file mode 100644
index 0000000..f36dc97
--- /dev/null
+++ b/demo/productService/controller/addController.java
@@ -0,0 +1,47 @@
+package com.example.demo.productService.controller;
+
+import com.example.demo.bean.Product;
+import com.example.demo.productService.tools.addPro;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+
+@Controller
+public class addController extends HttpServlet {
+ Product product;
+ addPro addPro;
+ @RequestMapping("/addproduct")
+ public String doPost(HttpServletResponse response,HttpServletRequest request){
+ PrintWriter writer=null;
+ try{
+ product.setProductNum(Integer.parseInt(request.getParameter("productNum")));
+ product.setProductName(request.getParameter("productName"));
+ product.setBankNum(Integer.parseInt(request.getParameter("bankNum")));
+ product.setCategory(request.getParameter("productName"));
+ product.setIntrate(Integer.parseInt(request.getParameter("intrate")));
+ product.setProductDescription(request.getParameter("description"));
+ product.setPictureAddress(request.getParameter("address"));
+ int result= addPro.add(product);
+ response.setContentType("text/hmtl;charset=utf-8");
+ writer=response.getWriter();
+ if(result==1){
+ writer.write("增加成功");
+ return "/";//返回增加删除修改的总页面
+ }
+ writer.write("增加失败");
+ return "/";//返回增加的页面
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+ if(writer!=null){
+ writer.close();
+ }
+ }
+ return "页面出错";
+ }
+
+}
diff --git a/demo/productService/controller/deleteController.java b/demo/productService/controller/deleteController.java
new file mode 100644
index 0000000..cdd6510
--- /dev/null
+++ b/demo/productService/controller/deleteController.java
@@ -0,0 +1,40 @@
+package com.example.demo.productService.controller;
+
+
+import com.example.demo.bean.Product;
+import com.example.demo.productService.tools.deletePro;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+
+@Controller
+public class deleteController {
+ Product product;
+ deletePro deletes;
+ @RequestMapping("/deleteproduct")
+ public String doPost(HttpServletResponse response, HttpServletRequest request){
+ PrintWriter writer=null;
+ try{
+ int productNum=Integer.parseInt(request.getParameter("productNum"));
+ int result= deletes.delete(productNum);
+ response.setContentType("text/hmtl;charset=utf-8");
+ writer=response.getWriter();
+ if(result==1){
+ writer.write("删除成功");
+ return "/";//返回增加删除修改的总页面
+ }
+ writer.write("删除失败");
+ return "/";//返回删除的页面
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+ if(writer!=null){
+ writer.close();
+ }
+ }
+ return "页面出错";
+ }
+}
diff --git a/demo/productService/controller/updateController.java b/demo/productService/controller/updateController.java
new file mode 100644
index 0000000..56ca6f8
--- /dev/null
+++ b/demo/productService/controller/updateController.java
@@ -0,0 +1,46 @@
+package com.example.demo.productService.controller;
+
+import com.example.demo.bean.Product;
+import com.example.demo.productService.tools.updatePro;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+
+@Controller
+public class updateController {
+ Product product;
+ updatePro updatePro;
+ @RequestMapping("/updateproduct")
+ public String doPost(HttpServletResponse response, HttpServletRequest request){
+ PrintWriter writer=null;
+ try{
+ product.setProductNum(Integer.parseInt(request.getParameter("productNum")));
+ product.setProductName(request.getParameter("productName"));
+ product.setBankNum(Integer.parseInt(request.getParameter("bankNum")));
+ product.setCategory(request.getParameter("productName"));
+ product.setIntrate(Integer.parseInt(request.getParameter("intrate")));
+ product.setProductDescription(request.getParameter("description"));
+ product.setPictureAddress(request.getParameter("address"));
+ int result= updatePro.update(product);
+ response.setContentType("text/hmtl;charset=utf-8");
+ writer=response.getWriter();
+ if(result==1){
+ writer.write("修改成功");
+ return "/";//返回增加删除修改的总页面
+ }
+ writer.write("修改失败");
+ return "/";//返回修改的页面
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+ if(writer!=null){
+ writer.close();
+ }
+ }
+ return "页面出错";
+ }
+
+}
diff --git a/demo/productService/tools/addPro.java b/demo/productService/tools/addPro.java
new file mode 100644
index 0000000..3d60f75
--- /dev/null
+++ b/demo/productService/tools/addPro.java
@@ -0,0 +1,27 @@
+package com.example.demo.productService.tools;
+
+import com.example.demo.Dao.productHistroyMapper;
+import com.example.demo.Dao.productMapper;
+import com.example.demo.bean.Product;
+import com.example.demo.bean.ProductHistroy;
+
+public class addPro {
+ private com.example.demo.productService.tools.nowTime nowTime;
+ private productMapper productMapper;
+ private productHistroyMapper proHisMapper;
+ private ProductHistroy productHistroy;
+
+ public int add(Product product1){
+ productMapper.addProduct(product1);
+ productHistroy.setProductNum(product1.getProductNum());
+ productHistroy.setProductName(product1.getProductName());
+ productHistroy.setBankNum(product1.getBankNum());
+ productHistroy.setCategory(product1.getCategory());
+ productHistroy.setIntrate(product1.getIntrate());
+ //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum
+ productHistroy.setProductDescription(product1.getProductDescription());
+ productHistroy.setUpLoadTime(nowTime.nowTime());
+ proHisMapper.addProductHistroy(productHistroy);
+ return 1;
+ }
+}
diff --git a/demo/productService/tools/deletePro.java b/demo/productService/tools/deletePro.java
new file mode 100644
index 0000000..5489d67
--- /dev/null
+++ b/demo/productService/tools/deletePro.java
@@ -0,0 +1,20 @@
+package com.example.demo.productService.tools;
+
+import com.example.demo.Dao.productHistroyMapper;
+import com.example.demo.bean.ProductHistroy;
+
+public class deletePro {
+ private com.example.demo.productService.tools.nowTime nowTime;
+ private com.example.demo.Dao.productMapper productMapper;
+ private productHistroyMapper proHisMapper;
+ private ProductHistroy productHistroy;
+
+ public int delete(int productNum){
+ productMapper.deleteProduct(productNum);
+ productHistroy.setProductNum(productNum);
+ //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum
+ productHistroy.setUpLoadTime(nowTime.nowTime());
+ proHisMapper.addProductHistroy(productHistroy);
+ return 1;
+ }
+}
diff --git a/demo/productService/tools/nowTime.java b/demo/productService/tools/nowTime.java
new file mode 100644
index 0000000..8629762
--- /dev/null
+++ b/demo/productService/tools/nowTime.java
@@ -0,0 +1,14 @@
+package com.example.demo.productService.tools;
+
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+
+public class nowTime{
+ public String nowTime(){
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
+ String time=(String)df.format(new Date());
+ return time;
+ }
+}
diff --git a/demo/productService/tools/updatePro.java b/demo/productService/tools/updatePro.java
new file mode 100644
index 0000000..fe43ceb
--- /dev/null
+++ b/demo/productService/tools/updatePro.java
@@ -0,0 +1,27 @@
+package com.example.demo.productService.tools;
+
+import com.example.demo.Dao.productHistroyMapper;
+import com.example.demo.Dao.productMapper;
+import com.example.demo.bean.Product;
+import com.example.demo.bean.ProductHistroy;
+
+public class updatePro {
+ private com.example.demo.productService.tools.nowTime nowTime;
+ private productMapper productMapper;
+ private productHistroyMapper proHisMapper;
+ private ProductHistroy productHistroy;
+
+ public int update(Product product1){
+ productMapper.updateProduct(product1);
+ productHistroy.setProductNum(product1.getProductNum());
+ productHistroy.setProductName(product1.getProductName());
+ productHistroy.setBankNum(product1.getBankNum());
+ productHistroy.setCategory(product1.getCategory());
+ productHistroy.setIntrate(product1.getIntrate());
+ //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum
+ productHistroy.setProductDescription(product1.getProductDescription());
+ productHistroy.setAlterTime(nowTime.nowTime());
+ proHisMapper.addProductHistroy(productHistroy);
+ return 1;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/auditMapper.java b/demo/src/main/java/com/example/demo/Dao/auditMapper.java
new file mode 100644
index 0000000..fa4f8eb
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/auditMapper.java
@@ -0,0 +1,31 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Audit;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface auditMapper {
+ @Select("select * from audit where checkNum = #{checkNum}")
+ public Audit selectAudioByCheckNum(long checkNum);
+
+ @Select("select * from audit")
+ public List select();
+
+ @Insert("insert into audit(checkNum, userNum, productNum, " +
+ "bankAccount, checkState, contractNum, " +
+ "isSignContract, year, amount, applyTime)" +
+ " values (#{checkNum},#{userNum},#{productNum},#{bankAccount},#{checkState}," +
+ "#{contractNum},#{isSignContract},#{year},#{amount},#{applyTime})")
+ public void addAudit(Audit audits);
+
+ @Update("update audit set checkNum=#{checkNum},userNum=#{userNum}" +
+ ",productNum=#{productNum},checkState=#{checkState},contractNum=#{contractNum}," +
+ "isSignContract=#{isSignContract},year=#{year},amount=#{amount}," +
+ "applyTime=#{applyTime}where checkNum=#{checkNum}")
+ public void updateAudit(Audit audits);
+
+ @Delete("delete from audit where checkNum=#{checkNum}")
+ public void deleteAudit(long checkNum);
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/bankMapper.java b/demo/src/main/java/com/example/demo/Dao/bankMapper.java
new file mode 100644
index 0000000..07efb76
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/bankMapper.java
@@ -0,0 +1,36 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Bank;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+
+@Mapper
+public interface bankMapper {
+
+ @Select("select * from bank where bankNum = #{bankNum}")
+ public Bank selectBankByBankNum(int bankNum);
+
+ @Select("select * from bank where bankName = #{bankName}")
+ public Bank selectBankByBankName(String bankName);
+
+ @Select("select * from bank")
+ public List select();
+
+ @Insert("insert into bank(bankNum, bankName, contact, " +
+ " values (#{bankNum},#{bankName},#{contact},)")
+ public void addBank(Bank banks);
+
+ @Update("update bank set bankNum=#{bankNum},bankName=#{bankName}" +
+ ",contact=#{contact} where bankNum=#{bankNum}")
+ public void updateBank(Bank banks);
+
+// @Delete("delete from bank where bankNum=#{bankNum}")
+// public void deleteBank(String bankNum);
+//
+// @Delete("delete from bank where bankName=#{bankName}")
+// public void deleteBanks(String bankName);
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/managerMapper.java b/demo/src/main/java/com/example/demo/Dao/managerMapper.java
new file mode 100644
index 0000000..aa92471
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/managerMapper.java
@@ -0,0 +1,26 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Manager;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface managerMapper {
+ @Select("select * from manager where managerNum = #{managerName}")
+ public Manager selectManagerByManagerName(String managerName);
+
+ @Insert("insert into manager(managerNum, managerName, managerPwd, " +
+ "managerRight, telephoneNum) values (#{managerNum},#{managerName}," +
+ "#{managerPwd},#{managerRight},#{telephoneNum})")
+ public void addManager(Manager managers);
+
+ @Update("update manager set managerNum=#{managerNum},managerName=#{managerName}" +
+ ",managerPwd=#{managerPwd},managerRight=#{managerRight},telephoneNum=#{telephoneNum},")
+ public void updateManager(Manager managers);
+
+// @Delete("delete from manager where managerNum=#{managerNum}")
+// public void deleteManager(String managerNum);
+
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/paymentMapper.java b/demo/src/main/java/com/example/demo/Dao/paymentMapper.java
new file mode 100644
index 0000000..205c52c
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/paymentMapper.java
@@ -0,0 +1,16 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Repayment;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface paymentMapper {
+ @Select("select * from repayment where checkNum =#{checkNum}")
+ public Repayment selectPepaymentBycheckNum(long checkNum);
+
+ @Update("update repayment set repAmount = {#repAmount} ,repSum = {#repSum} where checkNum = #{checkNum}")
+ public void updateRepayment(Repayment repayment);
+
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/productHistroyMapper.java b/demo/src/main/java/com/example/demo/Dao/productHistroyMapper.java
new file mode 100644
index 0000000..18f6b7c
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/productHistroyMapper.java
@@ -0,0 +1,33 @@
+package com.example.demo.Dao;
+
+
+import com.example.demo.bean.ProductHistroy;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+@Mapper
+public interface productHistroyMapper {
+ @Select("select * from producthistroy where productNum = #{productNum}")
+ public ProductHistroy selectAudioByCheckNum(long productNum);
+
+ @Select("select * from producthistroy")
+ public List select();
+
+ @Insert("insert into productHistroy(productNum, productName, category, " +
+ "intrate, bankNum, productDescription, uploadTime, deleteTime, alterTime)" +
+ " values (#{productNum},#{productName},#{category},#{intrate},#{bankNum}," +
+ "#{productDescription},#{uploadTime},#{deleteTime},#{alterTime})")
+ public void addProductHistroy(ProductHistroy productHistroys);
+
+// @Update("update producthistroy set productNum=#{productNum},productName=#{productName}" +
+// ",category=#{category},intrate=#{intrate},bankNum=#{bankNum}," +
+// "productDescription=#{productDescription},uploadTime=#{uploadTime},deleteTime=#{deleteTime}," +
+// "alterTime=#{alterTime}where productNum=#{productNum}")
+// public void updateProductHistroy(ProductHistroy productHistroys);
+
+// @Delete("delete from producthistroy where productNum=#{productNum}")
+// public void deleteProductHistroy(int productNum);
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/productMapper.java b/demo/src/main/java/com/example/demo/Dao/productMapper.java
new file mode 100644
index 0000000..b0708e3
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/productMapper.java
@@ -0,0 +1,33 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Product;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface productMapper {
+ @Select("select * from product where productNum = #{productNum}")
+ public Product selectProductByProductNum(long productNum);
+
+ @Select("select * from product where productName = #{productName}")
+ public Product selectProductByProductName(long productName);
+
+ @Select("select * from product")
+ public List select();
+
+ @Insert("insert into product(productNum, productName, category, intrate, " +
+ "bankNum, productDescription, pictureAddress)" +
+ " values (#{productNum},#{productName},#{category},#{intrate},#{bankNum}," +
+ "#{productDescription},#{pictureAddress})")
+ public void addProduct(Product products);
+
+ @Update("update product set productNum=#{productNum},productName=#{productName}" +
+ ",category=#{category},intrate=#{intrate},bankNum=#{bankNum}," +
+ "productDescription=#{productDescription},pictureAddress=#{pictureAddress}")
+ public void updateProduct(Product products);
+
+
+ @Delete("delete from product where productNum=#{productNum}")
+ public void deleteProduct(int productNum);
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/transMapper.java b/demo/src/main/java/com/example/demo/Dao/transMapper.java
new file mode 100644
index 0000000..7c414ca
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/transMapper.java
@@ -0,0 +1,30 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.Transaction;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface transMapper {
+ @Select("select * from transaction where transactionNum = #{transactionNum}")
+ public Transaction selectAudioByCheckNum(long transactionNum);
+
+ @Select("select * from transaction")
+ public List select();
+
+ @Insert("insert into transaction(transactionNum, payer, payee," +
+ " transactionTime, transactionAmount, note,checkNum)" +
+ " values (#{transactionNum},#{payer},#{payee},#{transactionTime},#{transactionAmount}," +
+ "#{note},#{checkNum})")
+ public void addTransaction(Transaction transactions);
+
+ @Update("update audit set transactionNum=#{transactionNum},payer=#{payer}" +
+ ",payee=#{payee},transactionTime=#{transactionTime},transactionAmount=#{transactionAmount}," +
+ "note=#{note}")
+ public void updateTransaction(Transaction transactions);
+
+ @Delete("delete from audit where transactionNum=#{transactionNum}")
+ public void deleteTransaction(long transactionNum);
+
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/usageDateMapper.java b/demo/src/main/java/com/example/demo/Dao/usageDateMapper.java
new file mode 100644
index 0000000..ae239f8
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/usageDateMapper.java
@@ -0,0 +1,31 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.UsageDate;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+
+@Mapper
+public interface usageDateMapper {
+ @Select("select * from usagedate where transactionNum = #{transactionNum}")
+ public UsageDate selectUsageDateByCheckNum(long checkNum);
+
+ @Select("select * from usagedate")
+ public List select();
+
+ @Insert("insert into usagedate(checkNum, productNum, userNum," +
+ " bankAccount, bankNum, year, amount, startTime)" +
+ " values (#{checkNum},#{productNum},#{userNum},#{bankAccount},#{bankNum}," +
+ "#{year},#{amount},#{startTime})")
+ public void addUsageDate(UsageDate usageDate);
+
+ @Update("update usagedate set checkNum=#{checkNum},productNum=#{productNum}" +
+ ",userNum=#{userNum},bankAccount=#{bankAccount},bankNum=#{bankNum}," +
+ "year=#{year},amount=#{amount},startTime=#{startTime}")
+ public void updateUsageDate(UsageDate usageDate);
+
+ @Delete("delete from usagedate where checkNum=#{checkNum}")
+ public void deleteUsageDate(long checkNum);
+
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/userBankIdentify.java b/demo/src/main/java/com/example/demo/Dao/userBankIdentify.java
new file mode 100644
index 0000000..fabaf77
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/userBankIdentify.java
@@ -0,0 +1,26 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.UserBankIdentify;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface userBankIdentify {
+ @Select("select * from userbankidentify where userName = #{userName}")
+ public UserBankIdentify selectUsageDateByCheckNum(String userName);
+
+ @Select("select * from userBankIdentify")
+ public List select();
+
+ @Insert("insert into usagedate(userName, bankAccount, bankAccountIdentify)" +
+ " values (#{userName},#{bankAccount},#{bankAccountIdentify})")
+ public void addUserBankIdentify(UserBankIdentify userBankIdentifys);
+
+ @Update("update usagedate set userName=#{userName},bankAccount=#{bankAccount}" +
+ ",bankAccountIdentify=#{bankAccountIdentify}")
+ public void updateUserBankIdentify(UserBankIdentify userBankIdentifys);
+
+ @Delete("delete from usagedate where userName=#{userName}")
+ public void deleteUserBankIdentify(String userName);
+}
diff --git a/demo/src/main/java/com/example/demo/Dao/userMapper.java b/demo/src/main/java/com/example/demo/Dao/userMapper.java
new file mode 100644
index 0000000..1b96851
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/Dao/userMapper.java
@@ -0,0 +1,30 @@
+package com.example.demo.Dao;
+
+import com.example.demo.bean.User;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface userMapper {
+ @Select("select * from user where userNum = #{userNum}")
+ public User selectUserByuserNum(long userNum);
+
+ @Select("select * from user")
+ public List select();
+
+ @Insert("insert into user(userNum, userName, userPwd, userRight," +
+ " tureName, idNum, telephoneNum, address, isIdentify, registerTime)" +
+ " values (#{userNum},#{userName},#{userPwd},#{userRight},#{tureName}," +
+ "#{idNum},#{telephoneNum},#{address},#{isIdentify},#{registerTime})")
+ public void addUser(User users);
+
+ @Update("update user set userNum=#{userNum},userName=#{userName}" +
+ ",userPwd=#{userPwd},userRight=#{userRight},tureName=#{tureName}," +
+ "idNum=#{idNum},telephoneNum=#{telephoneNum},address=#{address}," +
+ "isIdentify=#{isIdentify},registerTime=#{registerTime}where userNum=#{userNum}")
+ public void updateUser(User users);
+
+ @Delete("delete from user where userNum=#{userNum}")
+ public void deleteUser(long userNum);
+}
diff --git a/demo/src/main/java/com/example/demo/DemoApplication.java b/demo/src/main/java/com/example/demo/DemoApplication.java
index a4824b9..99fe3b0 100644
--- a/demo/src/main/java/com/example/demo/DemoApplication.java
+++ b/demo/src/main/java/com/example/demo/DemoApplication.java
@@ -1,11 +1,12 @@
package com.example.demo;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
+//@MapperScan("com.example.demo.Dao")
public class DemoApplication {
-
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
diff --git a/demo/src/main/java/com/example/demo/bean/Audit.java b/demo/src/main/java/com/example/demo/bean/Audit.java
new file mode 100644
index 0000000..7569c10
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/Audit.java
@@ -0,0 +1,32 @@
+package com.example.demo.bean;
+
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Audit {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long checkNum;
+ private long userNum;
+ private double amount;
+ private String applyTime;
+ private String bankAccount;
+ private long checkState;
+ private long contractNum;
+ private short isSignContract;
+ private long productNum;
+ private int year;
+ private int equation;
+
+
+ public Audit(){};
+}
diff --git a/demo/src/main/java/com/example/demo/bean/Bank.java b/demo/src/main/java/com/example/demo/bean/Bank.java
new file mode 100644
index 0000000..be9f33d
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/Bank.java
@@ -0,0 +1,21 @@
+package com.example.demo.bean;
+
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Bank {
+ @Id
+ private int bankNum;
+ private String bankName;
+ private String contact;//联系方式
+
+
+ public Bank(){};
+}
diff --git a/demo/src/main/java/com/example/demo/bean/Manager.java b/demo/src/main/java/com/example/demo/bean/Manager.java
new file mode 100644
index 0000000..67eb681
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/Manager.java
@@ -0,0 +1,33 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Manager {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long managerNum;
+ private String managerName;
+ private String managerPwd;
+ private String managerRight;
+ private String telephoneNum;
+
+
+ public Manager(){};
+
+ public long getManagerNum() {
+ return managerNum;
+ }
+
+ public void setManagerNum(int managerNum) {
+ this.managerNum = managerNum;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/bean/Product.java b/demo/src/main/java/com/example/demo/bean/Product.java
new file mode 100644
index 0000000..7f6722b
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/Product.java
@@ -0,0 +1,83 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Product {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long productNum;
+ private String productName;
+ private String category;
+ private float intrate;
+ private int bankNum;
+ private String productDescription;
+ private String pictureAddress;
+
+ public Product(){};
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getPictureAddress() {
+ return pictureAddress;
+ }
+
+ public void setPictureAddress(String pictureAddress) {
+ this.pictureAddress = pictureAddress;
+ }
+
+ public String getProductDescription() {
+ return productDescription;
+ }
+
+ public void setProductDescription(String productDescription) {
+ this.productDescription = productDescription;
+ }
+
+ public int getBankNum() {
+ return bankNum;
+ }
+
+ public void setBankNum(int bankNum) {
+ this.bankNum = bankNum;
+ }
+
+ public float getIntrate() {
+ return intrate;
+ }
+
+ public void setIntrate(float intrate) {
+ this.intrate = intrate;
+ }
+
+ public long getProductNum() {
+ return productNum;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public void setProductNum(long productNum) {
+ this.productNum = productNum;
+ }
+}
+
diff --git a/demo/src/main/java/com/example/demo/bean/ProductHistroy.java b/demo/src/main/java/com/example/demo/bean/ProductHistroy.java
new file mode 100644
index 0000000..3b0e8c4
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/ProductHistroy.java
@@ -0,0 +1,111 @@
+package com.example.demo.bean;
+
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+@Getter
+@Setter
+public class ProductHistroy {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long productNum;
+ private int bankNum;
+ private long managerNum;
+ private String productName;
+ private String category;
+ private float intrate;
+ private String productDescription;
+ private String upLoadTime;
+ private String deleteTime;
+ private String alterTime;
+
+ public ProductHistroy(){};
+
+ public long getManagerNum() {
+ return managerNum;
+ }
+
+ public void setManagerNum(long managerNum) {
+ this.managerNum = managerNum;
+ }
+
+ public long getProductNum() {
+ return productNum;
+ }
+
+ public void setProductNum(long productNum) {
+ this.productNum = productNum;
+ }
+
+ public String getAlterTime() {
+ return alterTime;
+ }
+
+ public void setAlterTime(String alterTime) {
+ this.alterTime = alterTime;
+ }
+
+
+ public String getDeleteTime() {
+ return deleteTime;
+ }
+
+ public void setDeleteTime(String deleteTime) {
+ this.deleteTime = deleteTime;
+ }
+
+ public String getUpLoadTime() {
+ return upLoadTime;
+ }
+
+ public void setUpLoadTime(String upLoadTime) {
+ this.upLoadTime = upLoadTime;
+ }
+
+ public String getProductDescription() {
+ return productDescription;
+ }
+
+ public void setProductDescription(String productDescription) {
+ this.productDescription = productDescription;
+ }
+
+ public float getIntrate() {
+ return intrate;
+ }
+
+ public void setIntrate(float intrate) {
+ this.intrate = intrate;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public int getBankNum() {
+ return bankNum;
+ }
+
+ public void setBankNum(int bankNum) {
+ this.bankNum = bankNum;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/bean/Repayment.java b/demo/src/main/java/com/example/demo/bean/Repayment.java
new file mode 100644
index 0000000..5744436
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/Repayment.java
@@ -0,0 +1,21 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Repayment {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long checkNum;
+ private double repAmount;
+ private double repSum;
+
+}
diff --git a/demo/src/main/java/com/example/demo/bean/Transaction.java b/demo/src/main/java/com/example/demo/bean/Transaction.java
new file mode 100644
index 0000000..6126220
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/Transaction.java
@@ -0,0 +1,33 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class Transaction {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long transactionNum;
+ private long payer;
+ private long payee;
+ private float transactionTime;
+ private float transactionAmount;
+ private String note;
+ private long checkNum;
+
+ public Transaction(){};
+ public Transaction(long checkNum,long payer,long payee,double transationAmount){
+ this.checkNum=checkNum;
+ this.payer = payer;
+ this.payee = payee;
+ this.transactionAmount=transactionNum;
+
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/bean/UsageDate.java b/demo/src/main/java/com/example/demo/bean/UsageDate.java
new file mode 100644
index 0000000..0a10f6b
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/UsageDate.java
@@ -0,0 +1,29 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class UsageDate {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long checkNum;
+ private long productNum;
+ private long userNum;
+ private String bankAccount;
+ private int bankNum;
+ private int year;
+ private float amount;
+ private String startTime;
+
+ public UsageDate(){};
+ private int equation;
+
+}
diff --git a/demo/src/main/java/com/example/demo/bean/User.java b/demo/src/main/java/com/example/demo/bean/User.java
new file mode 100644
index 0000000..4b22407
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/User.java
@@ -0,0 +1,30 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Setter
+@Entity
+public class User {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long userNum;
+ private String userName;
+ private String userPwd;
+ private String userRight;
+ private String trueName;
+ private String idNum;
+ private String telephoneNum;
+ private String address;
+ private String isIdentify;
+ private String registerTime;
+
+
+ public User(){};
+}
diff --git a/demo/src/main/java/com/example/demo/bean/UserBankIdentify.java b/demo/src/main/java/com/example/demo/bean/UserBankIdentify.java
new file mode 100644
index 0000000..d0d41cb
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/bean/UserBankIdentify.java
@@ -0,0 +1,19 @@
+package com.example.demo.bean;
+
+import lombok.Getter;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Getter
+@Entity
+public class UserBankIdentify {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private String userName;
+ private String bankAccount;
+ private short bankAccountIdentify;
+
+}
diff --git a/demo/src/main/java/com/example/demo/circulator/controller/NextCirController.java b/demo/src/main/java/com/example/demo/circulator/controller/NextCirController.java
new file mode 100644
index 0000000..71d0b63
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/circulator/controller/NextCirController.java
@@ -0,0 +1,45 @@
+package com.example.demo.circulator.controller;
+
+
+import com.example.demo.circulator.service.CirService;
+import com.example.demo.circulator.service.EPAIR_CirService;
+import com.example.demo.circulator.service.EPR_CirService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+public class NextCirController {
+ //@Autowired
+ private CirService cirService;
+
+ @GetMapping("/cir/next")
+ public String nextCirculator(HttpServletRequest request,HttpServletResponse response){
+ long checkNum = (Long)request.getAttribute("checkNum");
+ int equation = (Integer)request.getAttribute("equation");
+ switch (equation){
+ case 1:
+ cirService = new EPAIR_CirService();
+ break;
+ case 2:
+ cirService = new EPR_CirService();
+ break;
+ default:
+ System.out.println("not exit!!");
+ break;
+ }
+ double next_principal_and_intrate = cirService.NextCirculator(checkNum);
+ if(next_principal_and_intrate>=0){
+ request.setAttribute("next",next_principal_and_intrate);
+ }else if(next_principal_and_intrate==-1){
+ return "/计算失败";
+ }else if(next_principal_and_intrate==-2){
+ return "/未贷款此类业务";
+ }else if(next_principal_and_intrate==-3){
+ return "/无此类业务";
+ }
+ return "/next";
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/circulator/controller/PayCirController.java b/demo/src/main/java/com/example/demo/circulator/controller/PayCirController.java
new file mode 100644
index 0000000..b2c2487
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/circulator/controller/PayCirController.java
@@ -0,0 +1,24 @@
+package com.example.demo.circulator.controller;
+
+import com.example.demo.circulator.service.PayCirService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+
+@Controller
+public class PayCirController {
+ //@Autowired
+ PayCirService payCirService;
+
+ @PostMapping("/pay")
+ public String payAmountCir(long checkNum,double pay){
+ int result = payCirService.payAmountCirculator(checkNum,pay);
+ if(result==1){
+ return "/还款成功";
+ }else if(result==-2){
+ return"/未贷款该业务";
+ }else
+
+ return "还款失败";
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/circulator/controller/SumCirController.java b/demo/src/main/java/com/example/demo/circulator/controller/SumCirController.java
new file mode 100644
index 0000000..52f2802
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/circulator/controller/SumCirController.java
@@ -0,0 +1,47 @@
+package com.example.demo.circulator.controller;
+
+import com.example.demo.circulator.service.CirService;
+import com.example.demo.circulator.service.EPAIR_CirService;
+import com.example.demo.circulator.service.EPR_CirService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+public class SumCirController {
+ //@Autowired
+ private CirService cirService;
+
+ @GetMapping("/cir/sum")
+ public String SumCirculator(HttpServletRequest request, HttpServletResponse response){
+ long productNum = Long.parseLong(request.getParameter("productNum"));
+ double amount = Double.parseDouble(request.getParameter("amount"));
+ int year = Integer.parseInt(request.getParameter("year"));
+ int equation = Integer.parseInt(request.getParameter("equation"));
+
+ switch (equation){
+ case 1:
+ cirService = new EPAIR_CirService();
+ break;
+ case 2:
+ cirService = new EPR_CirService();
+ break;
+ default:
+ System.out.println("not exit!!");
+ break;
+ }
+ double sum_principal_and_intrate = cirService.SumCirculator(productNum,amount,year);
+ if(sum_principal_and_intrate>=0){
+ request.setAttribute("sum",sum_principal_and_intrate);
+ }else if(sum_principal_and_intrate==-3){
+ return "/无此类产品";
+ }else{
+ return "/计算失败";
+ }
+
+
+ return "/circulator";
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/circulator/service/CirService.java b/demo/src/main/java/com/example/demo/circulator/service/CirService.java
new file mode 100644
index 0000000..09b230d
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/circulator/service/CirService.java
@@ -0,0 +1,17 @@
+package com.example.demo.circulator.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.PostConstruct;
+
+@Service
+public abstract class CirService {
+ @PostConstruct
+ public void init(){}
+
+ @Transactional //数据库与事物的一致性
+ public double NextCirculator(long checkNum){return 0;}
+ public double SumCirculator(long productNum,double amount,int year){return 0;}
+
+}
diff --git a/demo/src/main/java/com/example/demo/circulator/service/EPAIR_CirService.java b/demo/src/main/java/com/example/demo/circulator/service/EPAIR_CirService.java
new file mode 100644
index 0000000..43635d2
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/circulator/service/EPAIR_CirService.java
@@ -0,0 +1,63 @@
+package com.example.demo.circulator.service;
+
+import com.example.demo.Dao.productMapper;
+import com.example.demo.Dao.usageDateMapper;
+import com.example.demo.bean.Product;
+import com.example.demo.bean.UsageDate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+
+@Service
+public class EPAIR_CirService extends CirService{
+ @Autowired
+ private usageDateMapper usageDateMapper;
+ @Autowired
+ private productMapper productMapper;
+
+ @Transactional //数据库与事物的一致性
+ public double NextCirculator(long checkNum){
+ try{
+ UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
+ if(usageDate==null)return -2;
+ int year = usageDate.getYear();
+ double amount = usageDate.getAmount();
+ long productNum = usageDate.getProductNum();
+
+ Product product = productMapper.selectProductByProductNum(productNum);
+ if(product==null)return -3;
+ float intrate = product.getIntrate();
+ double rep_amount = 0;
+
+ //double not_rep_amount = amount - rep_amount;
+ intrate /= 12;
+ int month = year*12;
+ double rep = Math.pow((1+intrate),month)/(Math.pow((1+intrate),month)-1);
+ double next_principal_and_interest = rep * intrate * amount;
+ return next_principal_and_interest;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+
+ }
+ return -1;
+ }
+
+ public double SumCirculator(long productNum,double amount,int year){
+ try{
+ Product product = productMapper.selectProductByProductNum(productNum);
+ if(product==null)return -3;
+ float intrate = product.getIntrate();
+ double rep = Math.pow((1+intrate),year)/(Math.pow((1+intrate),year)-1);
+ double principal_and_interest = rep * intrate * amount * year;
+ return principal_and_interest;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+ }
+ return -1;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/circulator/service/EPR_CirService.java b/demo/src/main/java/com/example/demo/circulator/service/EPR_CirService.java
new file mode 100644
index 0000000..40580a7
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/circulator/service/EPR_CirService.java
@@ -0,0 +1,69 @@
+package com.example.demo.circulator.service;
+
+import com.example.demo.Dao.paymentMapper;
+import com.example.demo.Dao.productMapper;
+import com.example.demo.Dao.usageDateMapper;
+import com.example.demo.bean.Product;
+import com.example.demo.bean.Repayment;
+import com.example.demo.bean.UsageDate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+public class EPR_CirService extends CirService{
+ @Autowired
+ private usageDateMapper usageDateMapper;
+ @Autowired
+ private paymentMapper paymentMapper;
+ @Autowired
+ private productMapper productMapper;
+
+ @Transactional //数据库与事物的一致性
+ public double NextCirculator(long checkNum){
+ try{
+ UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
+ Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
+ if(usageDate!=null){return -2;}
+ int year = usageDate.getYear();
+ double amount = usageDate.getAmount();
+ long productNum = usageDate.getProductNum();
+
+ Product product = productMapper.selectProductByProductNum(productNum);
+ if(product==null)return -3;
+ float intrate = product.getIntrate();
+ double rep_amount = 0;
+ if(repayment!=null)
+ repayment.getRepAmount();
+ intrate /= 12;
+ int month = year*12;
+ double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate;
+ return next_principal_and_interest;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+
+ }
+ return -1;
+ }
+
+ public double SumCirculator(long productNum,double amount,int year){
+ try{
+ Product product = productMapper.selectProductByProductNum(productNum);
+ if(product==null)return -3;
+ float intrate = product.getIntrate();
+ intrate /= 12;
+ int month = year * 12;
+ double first_principal_and_interest = amount/month + amount*intrate;
+ double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate;
+ double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2;
+ return principal_and_interest;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+ }
+ return -1;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/circulator/service/PayCirService.java b/demo/src/main/java/com/example/demo/circulator/service/PayCirService.java
new file mode 100644
index 0000000..de019c0
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/circulator/service/PayCirService.java
@@ -0,0 +1,50 @@
+package com.example.demo.circulator.service;
+
+import com.example.demo.Dao.paymentMapper;
+import com.example.demo.Dao.transMapper;
+import com.example.demo.Dao.usageDateMapper;
+import com.example.demo.bean.Repayment;
+import com.example.demo.bean.Transaction;
+import com.example.demo.bean.UsageDate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PayCirService {
+ @Autowired
+ private usageDateMapper usageDateMapper;
+ @Autowired
+ private paymentMapper paymentMapper;
+ @Autowired
+ private transMapper transMapper;
+
+ public int payAmountCirculator(long checkNum,double pay){
+ try{
+ Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
+ UsageDate usageDate= usageDateMapper.selectUsageDateByCheckNum(checkNum);
+ if(usageDate!=null)return -2;
+ double rep_amount = 0;
+ if(repayment!=null)
+ repayment.getRepAmount();
+ long userNum = usageDate.getUserNum();
+ int bankNum = usageDate.getBankNum();
+ double amount = usageDate.getAmount();
+ int year = usageDate.getYear();
+
+ Transaction transaction = new Transaction(checkNum,userNum,bankNum,pay);
+ transMapper.addTransaction(transaction);
+
+ rep_amount = pay - amount/(year*12);
+ repayment.setRepAmount(rep_amount);
+ repayment.setRepSum(pay);
+ paymentMapper.updateRepayment(repayment);
+ return 1;
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+
+
+ }
+ return 0;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/productService/controller/addController.java b/demo/src/main/java/com/example/demo/productService/controller/addController.java
new file mode 100644
index 0000000..f36dc97
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/productService/controller/addController.java
@@ -0,0 +1,47 @@
+package com.example.demo.productService.controller;
+
+import com.example.demo.bean.Product;
+import com.example.demo.productService.tools.addPro;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+
+@Controller
+public class addController extends HttpServlet {
+ Product product;
+ addPro addPro;
+ @RequestMapping("/addproduct")
+ public String doPost(HttpServletResponse response,HttpServletRequest request){
+ PrintWriter writer=null;
+ try{
+ product.setProductNum(Integer.parseInt(request.getParameter("productNum")));
+ product.setProductName(request.getParameter("productName"));
+ product.setBankNum(Integer.parseInt(request.getParameter("bankNum")));
+ product.setCategory(request.getParameter("productName"));
+ product.setIntrate(Integer.parseInt(request.getParameter("intrate")));
+ product.setProductDescription(request.getParameter("description"));
+ product.setPictureAddress(request.getParameter("address"));
+ int result= addPro.add(product);
+ response.setContentType("text/hmtl;charset=utf-8");
+ writer=response.getWriter();
+ if(result==1){
+ writer.write("增加成功");
+ return "/";//返回增加删除修改的总页面
+ }
+ writer.write("增加失败");
+ return "/";//返回增加的页面
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+ if(writer!=null){
+ writer.close();
+ }
+ }
+ return "页面出错";
+ }
+
+}
diff --git a/demo/src/main/java/com/example/demo/productService/controller/deleteController.java b/demo/src/main/java/com/example/demo/productService/controller/deleteController.java
new file mode 100644
index 0000000..cdd6510
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/productService/controller/deleteController.java
@@ -0,0 +1,40 @@
+package com.example.demo.productService.controller;
+
+
+import com.example.demo.bean.Product;
+import com.example.demo.productService.tools.deletePro;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+
+@Controller
+public class deleteController {
+ Product product;
+ deletePro deletes;
+ @RequestMapping("/deleteproduct")
+ public String doPost(HttpServletResponse response, HttpServletRequest request){
+ PrintWriter writer=null;
+ try{
+ int productNum=Integer.parseInt(request.getParameter("productNum"));
+ int result= deletes.delete(productNum);
+ response.setContentType("text/hmtl;charset=utf-8");
+ writer=response.getWriter();
+ if(result==1){
+ writer.write("删除成功");
+ return "/";//返回增加删除修改的总页面
+ }
+ writer.write("删除失败");
+ return "/";//返回删除的页面
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+ if(writer!=null){
+ writer.close();
+ }
+ }
+ return "页面出错";
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/productService/controller/updateController.java b/demo/src/main/java/com/example/demo/productService/controller/updateController.java
new file mode 100644
index 0000000..56ca6f8
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/productService/controller/updateController.java
@@ -0,0 +1,46 @@
+package com.example.demo.productService.controller;
+
+import com.example.demo.bean.Product;
+import com.example.demo.productService.tools.updatePro;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+
+@Controller
+public class updateController {
+ Product product;
+ updatePro updatePro;
+ @RequestMapping("/updateproduct")
+ public String doPost(HttpServletResponse response, HttpServletRequest request){
+ PrintWriter writer=null;
+ try{
+ product.setProductNum(Integer.parseInt(request.getParameter("productNum")));
+ product.setProductName(request.getParameter("productName"));
+ product.setBankNum(Integer.parseInt(request.getParameter("bankNum")));
+ product.setCategory(request.getParameter("productName"));
+ product.setIntrate(Integer.parseInt(request.getParameter("intrate")));
+ product.setProductDescription(request.getParameter("description"));
+ product.setPictureAddress(request.getParameter("address"));
+ int result= updatePro.update(product);
+ response.setContentType("text/hmtl;charset=utf-8");
+ writer=response.getWriter();
+ if(result==1){
+ writer.write("修改成功");
+ return "/";//返回增加删除修改的总页面
+ }
+ writer.write("修改失败");
+ return "/";//返回修改的页面
+ }catch(Exception e){
+ e.printStackTrace();
+ }finally {
+ if(writer!=null){
+ writer.close();
+ }
+ }
+ return "页面出错";
+ }
+
+}
diff --git a/demo/src/main/java/com/example/demo/productService/tools/addPro.java b/demo/src/main/java/com/example/demo/productService/tools/addPro.java
new file mode 100644
index 0000000..3d60f75
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/productService/tools/addPro.java
@@ -0,0 +1,27 @@
+package com.example.demo.productService.tools;
+
+import com.example.demo.Dao.productHistroyMapper;
+import com.example.demo.Dao.productMapper;
+import com.example.demo.bean.Product;
+import com.example.demo.bean.ProductHistroy;
+
+public class addPro {
+ private com.example.demo.productService.tools.nowTime nowTime;
+ private productMapper productMapper;
+ private productHistroyMapper proHisMapper;
+ private ProductHistroy productHistroy;
+
+ public int add(Product product1){
+ productMapper.addProduct(product1);
+ productHistroy.setProductNum(product1.getProductNum());
+ productHistroy.setProductName(product1.getProductName());
+ productHistroy.setBankNum(product1.getBankNum());
+ productHistroy.setCategory(product1.getCategory());
+ productHistroy.setIntrate(product1.getIntrate());
+ //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum
+ productHistroy.setProductDescription(product1.getProductDescription());
+ productHistroy.setUpLoadTime(nowTime.nowTime());
+ proHisMapper.addProductHistroy(productHistroy);
+ return 1;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/productService/tools/deletePro.java b/demo/src/main/java/com/example/demo/productService/tools/deletePro.java
new file mode 100644
index 0000000..5489d67
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/productService/tools/deletePro.java
@@ -0,0 +1,20 @@
+package com.example.demo.productService.tools;
+
+import com.example.demo.Dao.productHistroyMapper;
+import com.example.demo.bean.ProductHistroy;
+
+public class deletePro {
+ private com.example.demo.productService.tools.nowTime nowTime;
+ private com.example.demo.Dao.productMapper productMapper;
+ private productHistroyMapper proHisMapper;
+ private ProductHistroy productHistroy;
+
+ public int delete(int productNum){
+ productMapper.deleteProduct(productNum);
+ productHistroy.setProductNum(productNum);
+ //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum
+ productHistroy.setUpLoadTime(nowTime.nowTime());
+ proHisMapper.addProductHistroy(productHistroy);
+ return 1;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/productService/tools/nowTime.java b/demo/src/main/java/com/example/demo/productService/tools/nowTime.java
new file mode 100644
index 0000000..8629762
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/productService/tools/nowTime.java
@@ -0,0 +1,14 @@
+package com.example.demo.productService.tools;
+
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+
+public class nowTime{
+ public String nowTime(){
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
+ String time=(String)df.format(new Date());
+ return time;
+ }
+}
diff --git a/demo/src/main/java/com/example/demo/productService/tools/updatePro.java b/demo/src/main/java/com/example/demo/productService/tools/updatePro.java
new file mode 100644
index 0000000..fe43ceb
--- /dev/null
+++ b/demo/src/main/java/com/example/demo/productService/tools/updatePro.java
@@ -0,0 +1,27 @@
+package com.example.demo.productService.tools;
+
+import com.example.demo.Dao.productHistroyMapper;
+import com.example.demo.Dao.productMapper;
+import com.example.demo.bean.Product;
+import com.example.demo.bean.ProductHistroy;
+
+public class updatePro {
+ private com.example.demo.productService.tools.nowTime nowTime;
+ private productMapper productMapper;
+ private productHistroyMapper proHisMapper;
+ private ProductHistroy productHistroy;
+
+ public int update(Product product1){
+ productMapper.updateProduct(product1);
+ productHistroy.setProductNum(product1.getProductNum());
+ productHistroy.setProductName(product1.getProductName());
+ productHistroy.setBankNum(product1.getBankNum());
+ productHistroy.setCategory(product1.getCategory());
+ productHistroy.setIntrate(product1.getIntrate());
+ //productHistroy.setManagerNum(); manager.setManagerNum();调用登陆里面的一个接口得到managerNum
+ productHistroy.setProductDescription(product1.getProductDescription());
+ productHistroy.setAlterTime(nowTime.nowTime());
+ proHisMapper.addProductHistroy(productHistroy);
+ return 1;
+ }
+}
diff --git a/demo/src/main/resources/application.yml b/demo/src/main/resources/application.yml
new file mode 100644
index 0000000..2f7a0fa
--- /dev/null
+++ b/demo/src/main/resources/application.yml
@@ -0,0 +1,12 @@
+spring:
+ mvc:
+ view:
+ prefix: /WEB-INF/views/
+ suffix: .jsp
+ datasource:
+ url: jdbc:mysql://localhost:3306/loan?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+ username: root
+ password: 12345678
+ driver-class-name: com.mysql.cj.jdbc.Driver
+mybatis:
+ type-aliases-package: com.example.demo.Dao
diff --git a/demo/src/test/java/com/example/demo/Dao/paymentMapper.java b/demo/src/test/java/com/example/demo/Dao/paymentMapper.java
index 940f988..9fbd114 100644
--- a/demo/src/test/java/com/example/demo/Dao/paymentMapper.java
+++ b/demo/src/test/java/com/example/demo/Dao/paymentMapper.java
@@ -8,10 +8,10 @@ import org.apache.ibatis.annotations.Update;
@Mapper
public interface paymentMapper {
- @Select("select * from repayment where checkNum ={#checkNum}")
+ @Select("select * from repayment where checkNum =#{checkNum}")
public Repayment selectPepaymentBycheckNum(long checkNum);
- @Update("update repayment set repAmount = {#repAmount} ,repSum = {#repSum} where checkNum = {#checkNum}")
+ @Update("update repayment set repAmount = {#repAmount} ,repSum = #{repSum} where checkNum = #{checkNum}")
public void updateRepayment(Repayment repayment);
}
diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java b/demo/src/test/java/com/example/demo/circulator/controller/NextCirController.java
similarity index 91%
rename from demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java
rename to demo/src/test/java/com/example/demo/circulator/controller/NextCirController.java
index 4f77233..b8237d5 100644
--- a/demo/src/test/java/com/example/demo/circulator/service/controller/NextCirController.java
+++ b/demo/src/test/java/com/example/demo/circulator/controller/NextCirController.java
@@ -1,8 +1,10 @@
-package com.example.demo.circulator.service.controller;
+package com.example.demo.circulator.controller;
+
import com.example.demo.circulator.service.CirService;
import com.example.demo.circulator.service.EPAIR_CirService;
import com.example.demo.circulator.service.EPR_CirService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@@ -11,7 +13,7 @@ import javax.servlet.http.HttpServletResponse;
@Controller
public class NextCirController {
- //@Autowired
+ @Autowired
private CirService cirService;
@GetMapping("/cir/next")
diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/PayCirController.java b/demo/src/test/java/com/example/demo/circulator/controller/PayCirController.java
similarity index 80%
rename from demo/src/test/java/com/example/demo/circulator/service/controller/PayCirController.java
rename to demo/src/test/java/com/example/demo/circulator/controller/PayCirController.java
index 762bc32..d645aae 100644
--- a/demo/src/test/java/com/example/demo/circulator/service/controller/PayCirController.java
+++ b/demo/src/test/java/com/example/demo/circulator/controller/PayCirController.java
@@ -1,11 +1,13 @@
-package com.example.demo.circulator.service.controller;
+package com.example.demo.circulator.controller;
import com.example.demo.circulator.service.PayCirService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class PayCirController {
+ @Autowired
PayCirService payCirService;
@PostMapping("/pay")
diff --git a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java b/demo/src/test/java/com/example/demo/circulator/controller/SumCirController.java
similarity index 92%
rename from demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java
rename to demo/src/test/java/com/example/demo/circulator/controller/SumCirController.java
index 26aafe0..7ba45ad 100644
--- a/demo/src/test/java/com/example/demo/circulator/service/controller/SumCirController.java
+++ b/demo/src/test/java/com/example/demo/circulator/controller/SumCirController.java
@@ -1,8 +1,10 @@
-package com.example.demo.circulator.service.controller;
+package com.example.demo.circulator.controller;
+
import com.example.demo.circulator.service.CirService;
import com.example.demo.circulator.service.EPAIR_CirService;
import com.example.demo.circulator.service.EPR_CirService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@@ -11,7 +13,7 @@ import javax.servlet.http.HttpServletResponse;
@Controller
public class SumCirController {
- //@Autowired
+ @Autowired
private CirService cirService;
@GetMapping("/cir/sum")
diff --git a/demo/src/test/java/com/example/demo/circulator/service/CirService.java b/demo/src/test/java/com/example/demo/circulator/service/CirService.java
index c3be9ef..09b230d 100644
--- a/demo/src/test/java/com/example/demo/circulator/service/CirService.java
+++ b/demo/src/test/java/com/example/demo/circulator/service/CirService.java
@@ -1,10 +1,11 @@
package com.example.demo.circulator.service;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
+@Service
public abstract class CirService {
@PostConstruct
public void init(){}
diff --git a/demo/src/test/java/com/example/demo/circulator/service/EPAIR_CirService.java b/demo/src/test/java/com/example/demo/circulator/service/EPAIR_CirService.java
index 3efb4d4..bcc1cb6 100644
--- a/demo/src/test/java/com/example/demo/circulator/service/EPAIR_CirService.java
+++ b/demo/src/test/java/com/example/demo/circulator/service/EPAIR_CirService.java
@@ -5,13 +5,14 @@ import com.example.demo.Dao.usageDateMapper;
import com.example.demo.bean.Product;
import com.example.demo.bean.UsageDate;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.PostConstruct;
-
-public class EPAIR_CirService extends CirService{
+@Service
+public class EPAIR_CirService extends CirService {
@Autowired
private usageDateMapper usageDateMapper;
+ @Autowired
private productMapper productMapper;
@Transactional //数据库与事物的一致性
@@ -26,7 +27,7 @@ public class EPAIR_CirService extends CirService{
float intrate = product.getIntrate();
double rep_amount = 0;
- double not_rep_amount = amount - rep_amount;
+ //double not_rep_amount = amount - rep_amount;
intrate /= 12;
int month = year*12;
double rep = Math.pow((1+intrate),month)/(Math.pow((1+intrate),month)-1);
diff --git a/demo/src/test/java/com/example/demo/circulator/service/EPR_CirService.java b/demo/src/test/java/com/example/demo/circulator/service/EPR_CirService.java
index a44fce8..9cd4bce 100644
--- a/demo/src/test/java/com/example/demo/circulator/service/EPR_CirService.java
+++ b/demo/src/test/java/com/example/demo/circulator/service/EPR_CirService.java
@@ -7,14 +7,16 @@ import com.example.demo.bean.Product;
import com.example.demo.bean.Repayment;
import com.example.demo.bean.UsageDate;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.PostConstruct;
-
-public class EPR_CirService extends CirService{
+@Service
+public class EPR_CirService extends CirService {
@Autowired
private usageDateMapper usageDateMapper;
+ @Autowired
private paymentMapper paymentMapper;
+ @Autowired
private productMapper productMapper;
@Transactional //数据库与事物的一致性
diff --git a/demo/src/test/java/com/example/demo/circulator/service/PayCirService.java b/demo/src/test/java/com/example/demo/circulator/service/PayCirService.java
index f656029..320e1d2 100644
--- a/demo/src/test/java/com/example/demo/circulator/service/PayCirService.java
+++ b/demo/src/test/java/com/example/demo/circulator/service/PayCirService.java
@@ -6,10 +6,16 @@ import com.example.demo.Dao.usageDateMapper;
import com.example.demo.bean.Repayment;
import com.example.demo.bean.Transaction;
import com.example.demo.bean.UsageDate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+@Service
public class PayCirService {
+ @Autowired
private usageDateMapper usageDateMapper;
+ @Autowired
private paymentMapper paymentMapper;
+ @Autowired
private transMapper transMapper;
public int payAmountCirculator(long checkNum,double pay){
diff --git a/finance (1).sql b/finance (1).sql
new file mode 100644
index 0000000..e4ed745
--- /dev/null
+++ b/finance (1).sql
@@ -0,0 +1,155 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server : mysql
+ Source Server Type : MySQL
+ Source Server Version : 80013
+ Source Host : localhost:3306
+ Source Schema : finance
+
+ Target Server Type : MySQL
+ Target Server Version : 80013
+ File Encoding : 65001
+
+ Date: 07/01/2019 12:14:02
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for audit
+-- ----------------------------
+DROP TABLE IF EXISTS `audit`;
+CREATE TABLE `audit` (
+ `checkNum` int(10) NOT NULL,
+ `userNum` int(10) NOT NULL,
+ `productNum` int(10) NOT NULL,
+ `bankAccount` varchar(20) NOT NULL,
+ `checkState` int(2) NOT NULL,
+ `contractNum` int(10) DEFAULT NULL,
+ `isSignContract` tinyint(1) DEFAULT NULL,
+ `year` int(2) NOT NULL,
+ `amount` double(20,0) NOT NULL,
+ `applyTime` varchar(20) NOT NULL,
+ `equation` int(2) NOT NULL,
+ PRIMARY KEY (`checkNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for bank
+-- ----------------------------
+DROP TABLE IF EXISTS `bank`;
+CREATE TABLE `bank` (
+ `bankNum` int(10) NOT NULL,
+ `bankName` varchar(20) NOT NULL,
+ `contact` varchar(20) NOT NULL,
+ PRIMARY KEY (`bankNum`),
+ KEY `bankNum` (`bankNum`,`bankName`,`contact`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for manager
+-- ----------------------------
+DROP TABLE IF EXISTS `manager`;
+CREATE TABLE `manager` (
+ `managerNum` int(10) NOT NULL,
+ `managerName` varchar(20) NOT NULL,
+ `managerPwd` varchar(20) NOT NULL,
+ `managerRight` varchar(2) NOT NULL,
+ `telephoneNum` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+ PRIMARY KEY (`managerNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for product
+-- ----------------------------
+DROP TABLE IF EXISTS `product`;
+CREATE TABLE `product` (
+ `productNum` int(10) NOT NULL,
+ `productName` varchar(20) NOT NULL,
+ `category` varchar(20) NOT NULL,
+ `intrate` float(10,0) NOT NULL,
+ `bankNum` int(10) NOT NULL,
+ `productDescription` text,
+ `pictureAddress` varchar(255) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for productHistory
+-- ----------------------------
+DROP TABLE IF EXISTS `productHistory`;
+CREATE TABLE `productHistory` (
+ `productNum` int(10) NOT NULL,
+ `productName` varchar(20) NOT NULL,
+ `category` varchar(20) NOT NULL,
+ `intrate` float(10,0) NOT NULL,
+ `bankNum` int(10) NOT NULL,
+ `productDescription` text NOT NULL,
+ `uploadTime` varchar(20) NOT NULL,
+ `deleteTime` varchar(20) NOT NULL,
+ `alterTime` varchar(20) NOT NULL,
+ PRIMARY KEY (`productNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for transaction
+-- ----------------------------
+DROP TABLE IF EXISTS `transaction`;
+CREATE TABLE `transaction` (
+ `transactionNum` int(10) NOT NULL,
+ `payer` int(10) NOT NULL,
+ `payee` int(10) NOT NULL,
+ `transactionTime` float(20,0) NOT NULL,
+ `transactionAmount` double(20,0) NOT NULL,
+ `note` text,
+ PRIMARY KEY (`transactionNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for usageData
+-- ----------------------------
+DROP TABLE IF EXISTS `usageData`;
+CREATE TABLE `usageData` (
+ `checkNum` int(10) NOT NULL,
+ `productNum` int(10) NOT NULL,
+ `userNum` int(10) NOT NULL,
+ `bankAccount` varchar(20) NOT NULL,
+ `bankNum` int(10) NOT NULL,
+ `year` int(2) NOT NULL,
+ `amount` double(20,0) NOT NULL,
+ `startTime` varchar(20) NOT NULL,
+ `equation` int(2) NOT NULL,
+ PRIMARY KEY (`checkNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for user
+-- ----------------------------
+DROP TABLE IF EXISTS `user`;
+CREATE TABLE `user` (
+ `userNum` int(10) NOT NULL,
+ `userName` varchar(20) NOT NULL,
+ `userPwd` varchar(20) NOT NULL,
+ `userRight` varchar(2) NOT NULL,
+ `tureName` varchar(20) DEFAULT NULL,
+ `idNum` varchar(18) DEFAULT NULL,
+ `telephoneNum` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+ `address` varchar(50) DEFAULT NULL,
+ `isIdentify` tinyint(1) DEFAULT NULL,
+ `registerTime` varchar(20) DEFAULT NULL,
+ PRIMARY KEY (`userNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for userBankIdentify
+-- ----------------------------
+DROP TABLE IF EXISTS `userBankIdentify`;
+CREATE TABLE `userBankIdentify` (
+ `userNum` int(10) NOT NULL,
+ `bankAccount` varchar(20) NOT NULL,
+ `bankAccountIdentify` tinyint(1) DEFAULT NULL,
+ PRIMARY KEY (`userNum`,`bankAccount`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/finance.sql b/finance.sql
new file mode 100644
index 0000000..a2213b5
--- /dev/null
+++ b/finance.sql
@@ -0,0 +1,136 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server : localhost_3306
+ Source Server Type : MySQL
+ Source Server Version : 80013
+ Source Host : localhost:3306
+ Source Schema : finance
+
+ Target Server Type : MySQL
+ Target Server Version : 80013
+ File Encoding : 65001
+
+ Date: 03/01/2019 20:20:18
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for audit
+-- ----------------------------
+DROP TABLE IF EXISTS `audit`;
+CREATE TABLE `audit` (
+ `checkNum` varchar(20) NOT NULL,
+ `userNum` varchar(20) NOT NULL,
+ `productNum` varchar(20) NOT NULL,
+ `bankAccount` varchar(20) NOT NULL,
+ `checkState` int(2) NOT NULL,
+ `contractNum` varchar(20) DEFAULT NULL,
+ `isSignContract` tinyint(1) DEFAULT NULL,
+ `year` int(2) NOT NULL,
+ `amount` float(20,0) NOT NULL,
+ `applyTime` varchar(20) NOT NULL,
+ PRIMARY KEY (`checkNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for bank
+-- ----------------------------
+DROP TABLE IF EXISTS `bank`;
+CREATE TABLE `bank` (
+ `bankNum` varchar(10) NOT NULL,
+ `bankName` varchar(20) NOT NULL,
+ `contact` varchar(20) NOT NULL,
+ PRIMARY KEY (`bankNum`),
+ KEY `bankNum` (`bankNum`,`bankName`,`contact`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for manager
+-- ----------------------------
+DROP TABLE IF EXISTS `manager`;
+CREATE TABLE `manager` (
+ `managerNum` varchar(10) NOT NULL,
+ `managerName` varchar(20) NOT NULL,
+ `managerPwd` varchar(20) NOT NULL,
+ `managerRight` varchar(2) NOT NULL,
+ `telephoneNum` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+ PRIMARY KEY (`managerNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for product
+-- ----------------------------
+DROP TABLE IF EXISTS `product`;
+CREATE TABLE `product` (
+ `productNum` varchar(20) NOT NULL,
+ `productName` varchar(20) NOT NULL,
+ `category` varchar(20) NOT NULL,
+ `intrate` float(10,0) NOT NULL,
+ `bankNum` varchar(20) NOT NULL,
+ `productDescription` text,
+ `pictureAddress` varchar(255) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for transaction
+-- ----------------------------
+DROP TABLE IF EXISTS `transaction`;
+CREATE TABLE `transaction` (
+ `transactionNum` varchar(20) NOT NULL,
+ `payer` varchar(20) NOT NULL,
+ `payee` varchar(20) NOT NULL,
+ `transactionTime` float(20,0) NOT NULL,
+ `transactionAmount` float(20,0) NOT NULL,
+ `note` text,
+ PRIMARY KEY (`transactionNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for usageData
+-- ----------------------------
+DROP TABLE IF EXISTS `usageData`;
+CREATE TABLE `usageData` (
+ `checkNum` varchar(20) NOT NULL,
+ `productNum` varchar(20) NOT NULL,
+ `userNum` varchar(20) NOT NULL,
+ `bankAccount` varchar(20) NOT NULL,
+ `bankNum` varchar(20) NOT NULL,
+ `year` int(2) NOT NULL,
+ `amount` float(20,0) NOT NULL,
+ `startTime` varchar(20) NOT NULL,
+ PRIMARY KEY (`checkNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for user
+-- ----------------------------
+DROP TABLE IF EXISTS `user`;
+CREATE TABLE `user` (
+ `userNum` varchar(10) NOT NULL,
+ `userName` varchar(20) NOT NULL,
+ `userPwd` varchar(20) NOT NULL,
+ `userRight` varchar(2) NOT NULL,
+ `tureName` varchar(20) DEFAULT NULL,
+ `idNum` varchar(18) DEFAULT NULL,
+ `telephoneNum` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+ `address` varchar(50) DEFAULT NULL,
+ `isIdentify` tinyint(1) DEFAULT NULL,
+ `registerTime` varchar(20) DEFAULT NULL,
+ PRIMARY KEY (`userNum`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for userBankIdentify
+-- ----------------------------
+DROP TABLE IF EXISTS `userBankIdentify`;
+CREATE TABLE `userBankIdentify` (
+ `userName` varchar(20) NOT NULL,
+ `bankAccount` varchar(20) NOT NULL,
+ `bankAccountIdentify` tinyint(1) DEFAULT NULL,
+ PRIMARY KEY (`userName`,`bankAccount`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/main.css b/main.css
new file mode 100644
index 0000000..81f985b
--- /dev/null
+++ b/main.css
@@ -0,0 +1,274 @@
+*{
+ margin: 0;
+ padding: 0;
+}
+
+html,
+body {
+ height: 100%;
+}
+
+@font-face {
+ font-family: 'neo';
+ src: url("NEOTERICc-1.ttf")/*tpa=http://www.17sucai.com/preview/384665/2018-12-28/login/css/font/NEOTERICc.ttf*/;
+}
+input:focus{
+ outline: none;
+}
+.form input{
+ width: 300px;
+ height: 30px;
+ font-size: 18px;
+ background: none;
+ border: none;
+ border-bottom: 1px solid #fff;
+ color: #fff;
+ margin-bottom: 20px;
+}
+.form input::placeholder{
+ color: rgba(255,255,255,0.8);
+ font-size: 18px;
+ font-family: "neo";
+}
+.confirm{
+ height: 0;
+ overflow: hidden;
+ transition: .25s;
+}
+.btn{
+ width:140px;
+ height: 40px;
+ border: 1px solid #fff;
+ background: none;
+ font-size:20px;
+ color: #fff;
+ cursor: pointer;
+ margin-top: 25px;
+ font-family: "neo";
+ transition: .25s;
+}
+.btn:hover{
+ background: rgba(255,255,255,.25);
+}
+#login_wrap{
+ width: 980px;
+ min-height: 500px;
+ border-radius: 10px;
+ font-family: "neo";
+ overflow: hidden;
+ box-shadow: 0px 0px 120px rgba(0, 0, 0, 0.25);
+ position: fixed;
+ top: 50%;
+ right: 50%;
+ margin-top: -250px;
+ margin-right: -490px;
+}
+#login{
+ width: 50%;
+ height: 100%;
+ min-height: 500px;
+ background: linear-gradient(45deg, #9a444e, #e06267);
+ position: relative;
+ float: right;
+}
+#login #status{
+ width: 90px;
+ height: 35px;
+ margin: 40px auto;
+ color: #fff;
+ font-size: 30px;
+ font-weight: 600;
+ position: relative;
+ overflow: hidden;
+}
+#login #status i{
+ font-style: normal;
+ position: absolute;
+ transition: .5s
+}
+#login span{
+ text-align: center;
+ position: absolute;
+ left: 50%;
+ margin-left: -150px;
+ top: 52%;
+ margin-top: -140px;
+}
+#login span a{
+ text-decoration: none;
+ color: #fff;
+ display: block;
+ margin-top: 80px;
+ font-size: 18px;
+}
+#bg{
+ background: linear-gradient(45deg, #211136, #bf5853);
+ height: 100%;
+}
+/*绘图*/
+#login_img{
+ width: 50%;
+ min-height: 500px;
+ background: linear-gradient(45deg, #221334, #6c3049);
+ float: left;
+ position: relative;
+}
+#login_img span{
+ position: absolute;
+ display: block;
+}
+#login_img .circle{
+ width: 200px;
+ height: 200px;
+ border-radius: 50%;
+ background: linear-gradient(45deg, #df5555, #ef907a);
+ top: 70px;
+ left: 50%;
+ margin-left: -100px;
+ overflow: hidden;
+}
+#login_img .circle span{
+ width: 150px;
+ height: 40px;
+ border-radius: 50px;
+ position: absolute;
+}
+#login_img .circle span:nth-child(1){
+ top: 30px;
+ left: -38px;
+ background: #c55c59;
+}
+#login_img .circle span:nth-child(2){
+ bottom: 20px;
+ right: -35px;
+ background: #934555;
+}
+#login_img .star span{
+ background: radial-gradient(#fff 10%,#fff 20%,rgba(72, 34, 64, 0));
+ border-radius: 50%;
+ box-shadow: 0 0 7px #fff;
+}
+#login_img .star span:nth-child(1){
+ width: 15px;
+ height: 15px;
+ top: 50px;
+ left: 30px;
+}
+#login_img .star span:nth-child(2){
+ width: 10px;
+ height: 10px;
+ left: 360px;
+ top: 80px;
+}
+#login_img .star span:nth-child(3){
+ width: 5px;
+ height: 5px;
+ top: 400px;
+ left: 80px;
+}
+#login_img .star span:nth-child(4){
+ width: 8px;
+ height: 8px;
+ top: 240px;
+ left: 60px;
+}
+#login_img .star span:nth-child(5){
+ width: 4px;
+ height: 4px;
+ top: 20px;
+ left: 200px;
+}
+#login_img .star span:nth-child(6){
+ width: 4px;
+ height: 4px;
+ top: 460px;
+ left: 410px;
+}
+#login_img .star span:nth-child(7){
+ width: 6px;
+ height: 6px;
+ top: 250px;
+ left: 350px;
+}
+#login_img .fly_star span{
+ width: 90px;
+ height: 3px;
+ background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.67), rgba(255,255,255,0));
+ background: -o-linear-gradient(left, rgba(255, 255, 255, 0.67), rgba(255,255,255,0));
+ background: linear-gradient(to right, rgba(255, 255, 255, 0.67), rgba(255,255,255,0));
+ transform: rotate(-45deg);
+}
+#login_img .fly_star span:nth-child(1){
+ top:60px;
+ left: 80px;
+}
+#login_img .fly_star span:nth-child(2){
+ top: 210px;
+ left: 332px;
+ opacity: 0.6;
+}
+#login_img p{
+ text-align: center;
+ color: #af4b55;
+ font-weight: 600;
+ margin-top: 365px;
+ font-size: 25px;
+}
+#login_img p i{
+ font-style: normal;
+ margin-right: 45px;
+}
+#login_img p i:nth-last-child(1){
+ margin-right: 0;
+}
+/*提示*/
+#hint{
+ width: 100%;
+ line-height: 70px;
+ background: linear-gradient(-90deg, #9b494d, #bf5853);
+ text-align: center;
+ font-size: 25px;
+ color: #fff;
+ box-shadow: 0 0 20px #733544;
+ display: none;
+ opacity: 0;
+ transition: .5s;
+ position: absolute;
+ top: 0;
+ z-index: 999;
+}
+/* 响应式 */
+@media screen and (max-width:1000px ) {
+ #login_img{
+ display: none;
+ }
+ #login_wrap{
+ width: 490px;
+ margin-right: -245px;
+ }
+ #login{
+ width: 100%;
+
+ }
+}
+@media screen and (max-width:560px ) {
+ #login_wrap{
+ width: 330px;
+ margin-right: -165px;
+ }
+ #login span{
+ margin-left: -125px;
+ }
+ .form input{
+ width: 250px;
+ }
+ .btn{
+ width: 113px;
+ }
+}
+@media screen and (max-width:345px ) {
+ #login_wrap {
+ width: 290px;
+ margin-right: -145px;
+ }
+}
\ No newline at end of file
diff --git a/借贷平台数据结构设计第三版.docx b/借贷平台数据结构设计第三版.docx
new file mode 100644
index 0000000..6ad5c35
Binary files /dev/null and b/借贷平台数据结构设计第三版.docx differ
diff --git a/借贷平台数据结构设计第二版.docx b/借贷平台数据结构设计第二版.docx
new file mode 100644
index 0000000..abff79f
Binary files /dev/null and b/借贷平台数据结构设计第二版.docx differ
diff --git a/公众号图标.png b/公众号图标.png
new file mode 100644
index 0000000..32b843a
Binary files /dev/null and b/公众号图标.png differ
diff --git a/初步原型.docx b/初步原型.docx
new file mode 100644
index 0000000..d2b0b46
Binary files /dev/null and b/初步原型.docx differ
diff --git a/数据库er图.png b/数据库er图.png
new file mode 100644
index 0000000..916e653
Binary files /dev/null and b/数据库er图.png differ
diff --git a/详细原型.docx b/详细原型.docx
new file mode 100644
index 0000000..fd95121
Binary files /dev/null and b/详细原型.docx differ