1. 登录
接口地址: /api/account/login
类型: POST
结构:
{
    "userName": "leocard@gmail.com", 用户名
    "password": "opq8080"            密码
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

2. 获取登录用户
接口地址: /api/account/getLoginUser
类型: GET
返回结果:
{
    "success": true,
    "data": {
        "userId": 1,                用户id
        "userName": "admin",        用户名
        "occupiedSpace": 9999.0,    可用总空间
        "otherInfo": null,          其他信息
        "roleId": 1,                角色id
        "roleName": "admin",        角色名
        "menuList": [               菜单栏列表
            "notice",
            "data_analysis_setup",
            "data_analysis_result",
            "account_setting"
        ]
    },
    "errMsg": null
}

3. 创建用户
地址: /api/account/create
类型: POST
结构:
{
    "userName": "leocard@gmail.com",    用户名
    "password": "opq8080",              密码
    "occupiedSpace": 5000,              占用空间
    "otherInfo": "polito student",      其他信息
    "roleId": 1                         角色，1-visitor 2-user 3-administrator
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

4. 更新用户信息
地址: /api/account/update
类型: POST
结构:
{
    "userId": 2,                        用户id
    "userName": "siqicai7@gmail.com",
    "password": "csq970504",
    "occupiedSpace": 5000,
    "otherInfo": "polito student",
    "roleId": 3
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

5. 删除用户
地址: /api/account/delete
类型: POST
结构:
{
    "userId": 3     用户id
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

6. 获取用户分页
地址: /api/account/getMemberPageList
类型: POST
结构:
{
    "pageIndex": 1,
    "pageSize": 10
}
返回结果:
{
    "success": true,
    "data": {
        "content": [
            {
                "py/object": "entity.LoginUser",
                "userId": 1,
                "userName": "admin",
                "occupiedSpace": 9999.0,
                "otherInfo": null,
                "roleId": 1,
                "roleName": "admin",
                "menuList": [
                    "notice",
                    "data_analysis_setup",
                    "data_analysis_result",
                    "account_setting"
                ]
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

7. 提交申请
地址: /api/account/apply
类型: POST
结构:
{
    "reason": "for course study"  申请原因
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

8. 审批
地址: /api/account/approve
类型: POST
结构:
{
    "applyFormId": "6c4794ab-7505-46ba-a889-ae54eb5d4206", 单据ID
    "action": "agree"                                       agree同意, reject否决
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

9. 获取消息通知分页
地址: /api/notice/getNoticePageList
类型: POST
结构:
{
    "pageIndex": 1,
    "pageSize": 10
}
返回结果:
{
    "success": true,
    "data": {
        "content": [
            {
                "py/object": "entity.Notice",
                "userId": 1,
                "userName": "admin",
                "content": "test message",      内容
                "readFlag": false               是否已读
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

10. 获取单个通知详情
地址: /api/notice/view?id=3
类型: GET
参数: id 消息通知id
返回结果:
{
    "py/object": "entity.ResultEntity",
    "success": true,
    "data": {
        "userId": 1,
        "userName": "admin",
        "content": "test message",
        "readFlag": true
    },
    "errMsg": null
}

12. 获取申请单据分页
地址: /api/account/getApplyPageList
类型: POST
结构:
{
    "pageIndex": 1,
    "pageSize": 10
}
返回结果:
{
    "success": true,
    "data": {
        "content": [
            {
                "applyFormId": "6c4794ab-7505-46ba-a889-ae54eb5d4206", 单据ID
                "userId": 2,            用户ID
                "userName": "siqicai",  用户名
                "reason": "test",       申请原因
                "statusId": 1,          单据状态
                "statusName": "process end",
                "createDateTime": "2022-12-22 16:12:26", 单据创建时间
                "processUserId": 2,             处理人
                "processUserName": "siqicai",
                "processDateTime": "2022-40-24 10:40:30",  处理时间
                "action": "agree"   操作/结果
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

13. 单个上传文件
地址: /api/file/upload
类型: POST
结构: form-data
url: https://dati.regione.campania.it/catalogo/resources/arpac_dati_centraline_Gennaio2019_Avellino.csv
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

14. 批量上传文件
地址: /api/file/batchUpload
类型: POST
结构: form-data
file: veneto_db.txt
返回结果:
{
    "py/object": "entity.ResultEntity",
    "success": true,
    "data": [
        {
            "py/object": "entity.UploadResult",
            "url": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/bdabbf3a-abfd-48b9-be5d-bad3ca92e146.csv", txt文件每行的文件下载地址
            "result": "upload done"                                                                                   上传结果
        },
        {
            "py/object": "entity.UploadResult",
            "url": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/605c8483-cfa4-44d0-a70e-ca4ac8b0de92.csv",
            "result": "upload done"
        },
        {
            "py/object": "entity.UploadResult",
            "url": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/de707d2e-75da-4500-8de3-1fb05f6de7c4.csv",
            "result": "upload done"
        },
        {
            "py/object": "entity.UploadResult",
            "url": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/21aae809-bc58-42d8-aeff-593046fb82d4.csv",
            "result": "upload done"
        }
    ],
    "errMsg": null
}

15. 下载文件
地址: /api/file/download?id=37
类型: GET
参数: id=文件的id

16. 获取文件列表分页
地址: /api/file/getFilePageList
类型: POST
结构: 
{
    "pageIndex": 1,
    "pageSize": 10
}
返回结果:
{
    "success": true,
    "data": {
        "content": [
            {
                "id": 18, 文件id
                "fileName": "bdabbf3a-abfd-48b9-be5d-bad3ca92e146.csv", 文件名
                "filePath": "setup\\0a4c1131-17dc-4e6f-908a-9a53d04ac38f.csv", 文件路径
                "fileUrl": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/bdabbf3a-abfd-48b9-be5d-bad3ca92e146.csv",
                "fileSize": 18.32
            },
            {
                "id": 19,
                "fileName": "605c8483-cfa4-44d0-a70e-ca4ac8b0de92.csv",
                "filePath": "setup\\3e3751e3-4815-4f5c-83da-f5029713f442.csv",
                "fileUrl": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/605c8483-cfa4-44d0-a70e-ca4ac8b0de92.csv",
                "fileSize": 2.68
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 2
    },
    "errMsg": null
}

17. 删除文件
地址: /api/file/delete?fileId=41
类型: GET
结构: fileId=文件id
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

18. 保存分析配置
地址: /api/setup/save
类型: POST
结构:
{
    "setupId": null,        配置id，传值则是更新，不穿值则是新增
    "setupName": "test01",  配置名称
    "fileIdList": [         配置中选中的文件id
        1
    ],
    "selectAll": false,     是否全选文件
    "measures": [           选中的分析维度
        "Can Open",
        "Com-I-DevA",
        "Com-I-5",
        "Acc-I-4",
        "Con-I-3",
        "Con-I-2-DevB",
        "Con-I-4-DevC",
        "Error"
    ]
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

19. 获取分析配置详情
地址: /api/setup/getDetail?setupId=087a0079-ef43-4a1e-964b-7f82e567524c
类型: GET
返回结果:
{
    "success": true,
    "data": {
        "setupId": "087a0079-ef43-4a1e-964b-7f82e567524c",
        "setupName": "test01",
        "createUserId": 1,
        "createUserName": "admin",
        "createDateTime": "2022-58-24 14:58:27",
        "selectAll": false,
        "fileList": [
            {
                "id": 41,
                "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                "filePath": "setup\\7bf38798-bb84-40ee-b03f-12e5cac96f7c.csv",
                "fileUrl": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                "fileSize": 0.93
            }
        ],
        "measureList": [
            "Can Open",
            "Com-I-DevA",
            "Com-I-5",
            "Acc-I-4",
            "Con-I-3",
            "Con-I-2-DevB",
            "Con-I-4-DevC",
            "Error"
        ]
    },
    "errMsg": null
}

20. 删除分析配置
地址: /api/setup/delete?id=087a0079-ef43-4a1e-964b-7f82e567524c
类型: GET
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

21. 获取分析配置分页
地址: /api/setup/getSetupPageList
类型: POST
结构: 
{
    "pageIndex": 1,
    "pageSize": 10
}
返回结果:
{
    "success": true,
    "data": {
        "content": [
            {
                "setupId": "087a0079-ef43-4a1e-964b-7f82e567524c",
                "setupName": "test01",
                "createUserId": 1,
                "createUserName": "admin",
                "createDateTime": "2022-58-24 14:58:27"
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

22. 依据分析配置执行数据分析
地址: /api/setup/analysis
类型: POST
结构: 
{
    "selectAll": false,             是否全选文件
    "fileIdList": [
        41
    ],
    "measures": [
        "Can Open",
        "Com-I-DevA",
        "Com-I-5",
        "Acc-I-4",
        "Con-I-3",
        "Con-I-2-DevB",
        "Con-I-4-DevC",
        "Error"
    ]
}
返回结果:
{
    "success": true,
    "data": {
        "resultByDateset": [
            {
                "fileId": 41, 文件
                "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                "measureList": [ 各个维度的值
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Can Open",
                        "value": "1"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Com-I-DevA",
                        "value": "0.083"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Com-I-5",
                        "value": "1.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Acc-I-4",
                        "value": "0.094"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-3",
                        "value": "0.75"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-2-DevB",
                        "value": "0.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-4-DevC",
                        "value": "1.0"
                    }
                ]
            }
        ],
        "resultByMeasure": [
            {
                "measure": "Can Open", 维度
                "datasetList": [ 各个文件在该维度的值
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "1"
                    }
                ]
            },
            {
                "measure": "Com-I-DevA",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "0.083"
                    }
                ]
            },
            {
                "measure": "Com-I-5",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "1.0"
                    }
                ]
            },
            {
                "measure": "Acc-I-4",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "0.094"
                    }
                ]
            },
            {
                "measure": "Con-I-3",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "0.75"
                    }
                ]
            },
            {
                "measure": "Con-I-2-DevB",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "measure": "Con-I-4-DevC",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "1.0"
                    }
                ]
            }
        ]
    },
    "errMsg": null
}

23. 保存分析结果
地址: /api/result/save
类型: POST
结构: 
{
    "resultName": "test_save_result02", 结果名称
    "resultContent": {                  保存结果内容
        "selectAll": false,             是否全选文件
        "fileList": [                   分析的文件列表
            {
                "id": 1,
                "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                "filePath": "setup\\1363369e-d3e5-43bf-a104-8150a516a5ad.csv",
                "fileUrl": "http://goodpa.regione.marche.it:80/dataset/fc0b0300-c420-4326-941b-c02f9cfc6701/resource/429c9de2-e1f3-4e28-b5df-da7f33d53614/download/comunedicollialmetauroanagrafeimmigratianno.csv",
                "fileSize": 0.78
            }
        ],
        "resultByDateset": [            以文件聚合的结果
            {
                "py/object": "entity.AnalysisResultByDataset",
                "fileId": 1,
                "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                "measureList": [
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Can Open",
                        "value": "1"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Com-I-DevA",
                        "value": "0.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Com-I-5",
                        "value": "1.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Acc-I-4",
                        "value": "0.02"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-3",
                        "value": "0.431"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-2-DevB",
                        "value": "0.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-4-DevC",
                        "value": "1.0"
                    }
                ]
            }
        ],
        "resultByMeasure": [        以文件聚合的结果
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Can Open",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Com-I-DevA",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Com-I-5",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1.0"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Acc-I-4",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.02"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Con-I-3",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.431"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Con-I-2-DevB",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Con-I-4-DevC",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1.0"
                    }
                ]
            }
        ]
    }
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

24. 获取保存的分析结果详情
地址: /api/result/getDetail?resultId=d1831c5f-995c-41a9-9fd8-333ea36c1e20
类型: GET
返回结果:
{
    "py/object": "entity.ResultEntity",
    "success": true,
    "data": {
        "fileList": [
            {
                "id": 1,
                "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                "filePath": "setup\\1363369e-d3e5-43bf-a104-8150a516a5ad.csv",
                "fileUrl": "http://goodpa.regione.marche.it:80/dataset/fc0b0300-c420-4326-941b-c02f9cfc6701/resource/429c9de2-e1f3-4e28-b5df-da7f33d53614/download/comunedicollialmetauroanagrafeimmigratianno.csv",
                "fileSize": 0.78
            }
        ],
        "resultByDateset": [
            {
                "fileId": 1,
                "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                "measureList": [
                    {
                        "measure": "Can Open",
                        "value": "1"
                    },
                    {
                        "measure": "Com-I-DevA",
                        "value": "0.0"
                    },
                    {
                        "measure": "Com-I-5",
                        "value": "1.0"
                    },
                    {
                        "measure": "Acc-I-4",
                        "value": "0.02"
                    },
                    {
                        "measure": "Con-I-3",
                        "value": "0.431"
                    },
                    {
                        "measure": "Con-I-2-DevB",
                        "value": "0.0"
                    },
                    {
                        "measure": "Con-I-4-DevC",
                        "value": "1.0"
                    }
                ]
            }
        ],
        "resultByMeasure": [
            {
                "measure": "Can Open",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1"
                    }
                ]
            },
            {
                "measure": "Com-I-DevA",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "measure": "Com-I-5",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1.0"
                    }
                ]
            },
            {
                "measure": "Acc-I-4",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.02"
                    }
                ]
            },
            {
                "measure": "Con-I-3",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.431"
                    }
                ]
            },
            {
                "measure": "Con-I-2-DevB",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "measure": "Con-I-4-DevC",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1.0"
                    }
                ]
            }
        ]
    },
    "errMsg": null
}

25. 获取保存的分析结果分页列表
地址: /api/result/getAnalysisResultPageList
类型: POST
结构: 
{
    "pageIndex": 1,
    "pageSize": 10
}
返回结果:
{
    "py/object": "entity.ResultEntity",
    "success": true,
    "data": {
        "py/object": "entity.AnalysisResultPageList",
        "content": [
            {
                "py/object": "entity.AnalysisResult",
                "resultId": "d1831c5f-995c-41a9-9fd8-333ea36c1e20",
                "resultName": "test_save_result02",
                "createUserId": 1,
                "createUserName": "admin",
                "createDateTime": "2022-37-24 15:37:38"
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

26. 删除保存的分析结果
地址: /api/result/delete?resultId=d1831c5f-995c-41a9-9fd8-333ea36c1e20
类型: POST
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

27. 登出
地址: /api/account/logout
类型: GET

28. 重命名分析结果
地址: /api/result/rename
类型: POST
结构:
{
    "resultId": "d1831c5f-995c-41a9-9fd8-333ea36c1e20", 分析结果id
    "resultName": "test-result"                         分析结果名称
}
返回结果:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

28. 下载分析结果
地址: /api/result/export?resultId=84f9e7be-ee0f-4336-ac16-deadf561fa7b
类型: GET

29. 下载分析配置
地址: /api/setup/export?setupId=1c6e0726-7f28-478e-977c-5d802f3c2245
类型: GET